การคำนวณช่วงการทำนายสำหรับการถดถอยโลจิสติก


20

ฉันต้องการที่จะเข้าใจวิธีการสร้างช่วงเวลาการทำนายสำหรับการประมาณการการถดถอยโลจิสติก

ฉันได้รับคำแนะนำให้ทำตามขั้นตอนในการสร้างแบบจำลองข้อมูลไบนารีของ Collett , 2nd Ed p.98-99 หลังจากนำขั้นตอนนี้มาใช้และเปรียบเทียบกับ R ของpredict.glmจริง ๆ แล้วฉันคิดว่าหนังสือเล่มนี้แสดงขั้นตอนการคำนวณช่วงความเชื่อมั่นไม่ใช่ช่วงเวลาทำนาย

การปฏิบัติตามขั้นตอนจาก Collett โดยเปรียบเทียบกับpredict.glmแสดงไว้ด้านล่าง

ฉันต้องการทราบว่า: ฉันจะไปจากที่นี่เพื่อสร้างช่วงการทำนายแทนช่วงความมั่นใจได้อย่างไร

#Derived from Collett 'Modelling Binary Data' 2nd Edition p.98-99
#Need reproducible "random" numbers.
seed <- 67

num.students <- 1000
which.student <- 1

#Generate data frame with made-up data from students:
set.seed(seed) #reset seed
v1 <- rbinom(num.students,1,0.7)
v2 <- rnorm(length(v1),0.7,0.3)
v3 <- rpois(length(v1),1)

#Create df representing students
students <- data.frame(
    intercept = rep(1,length(v1)),
    outcome = v1,
    score1 = v2,
    score2 = v3
)
print(head(students))

predict.and.append <- function(input){
    #Create a vanilla logistic model as a function of score1 and score2
    data.model <- glm(outcome ~ score1 + score2, data=input, family=binomial)

    #Calculate predictions and SE.fit with the R package's internal method
    # These are in logits.
    predictions <- as.data.frame(predict(data.model, se.fit=TRUE, type='link'))

    predictions$actual <- input$outcome
    predictions$lower <- plogis(predictions$fit - 1.96 * predictions$se.fit)
    predictions$prediction <- plogis(predictions$fit)
    predictions$upper <- plogis(predictions$fit + 1.96 * predictions$se.fit)


    return (list(data.model, predictions))
}

output <- predict.and.append(students)

data.model <- output[[1]]

#summary(data.model)

#Export vcov matrix 
model.vcov <- vcov(data.model)

# Now our goal is to reproduce 'predictions' and the se.fit manually using the vcov matrix
this.student.predictors <- as.matrix(students[which.student,c(1,3,4)])

#Prediction:
this.student.prediction <- sum(this.student.predictors * coef(data.model))
square.student <- t(this.student.predictors) %*% this.student.predictors
se.student <- sqrt(sum(model.vcov * square.student))

manual.prediction <- data.frame(lower = plogis(this.student.prediction - 1.96*se.student), 
    prediction = plogis(this.student.prediction), 
    upper = plogis(this.student.prediction + 1.96*se.student))

print("Data preview:")
print(head(students))
print(paste("Point estimate of the outcome probability for student", which.student,"(2.5%, point prediction, 97.5%) by Collett's procedure:"))
manual.prediction
print(paste("Point estimate of the outcome probability for student", which.student,"(2.5%, point prediction, 97.5%) by R's predict.glm:"))    
print(output[[2]][which.student,c('lower','prediction','upper')])

คำถามพื้นฐานทำไม sqrt (ผลรวม (model.vcov * square.student)) ถือว่าเป็นข้อผิดพลาดมาตรฐานหรือไม่ ไม่ใช่ค่าเบี่ยงเบนมาตรฐานและต้องหารด้วย sqrt (n) ใช่ไหม ถ้าเป็นเช่นนั้นควรใช้ n ใดใช้ n เพื่อให้พอดีกับโมเดลหรือ n ของเฟรมข้อมูลใหม่ที่ใช้ในการทำนาย?
Rafael

คำตอบ:


6

ช่วงเวลาการทำนายจะทำนายว่าค่าของข้อมูลการตอบสนองที่แท้จริงนั้นคาดว่าจะลดลงเมื่อมีความน่าจะเป็น ตั้งแต่ค่าที่เป็นไปได้ของการตอบสนองของรูปแบบโลจิสติกจะถูก จำกัด ให้เป็น 0 และ 1, ช่วงทำนาย 100% ดังนั้นจึงเป็น1 ไม่มีช่วงเวลาอื่นที่เหมาะสมสำหรับการทำนายด้วยการถดถอยโลจิสติก เนื่องจากเป็นช่วงเวลาเดียวกันเสมอโดยทั่วไปจึงไม่น่าสนใจพอที่จะสร้างหรือพูดคุย0<=Y<=1


6
ฉันกำลังมองหาช่วงเวลาการทำนาย 95% ของการทำนายซึ่งอยู่ในพื้นที่ว่างของบันทึก หลังจากนั้นฉันเปลี่ยนเป็นพื้นที่น่าจะเป็น ช่วงการคาดคะเน 100% จะไม่น่าสนใจสำหรับกระบวนการใด ๆ ใช่ไหม? ตัวอย่างเช่นช่วงเวลาการทำนาย 100% สำหรับการถดถอยเชิงเส้นจะรวมถึง -Inf ถึง Inf ... ไม่ว่าในอัตราใดก็ตามที่คุณเห็นในรหัสของฉันช่วงเวลาการทำนายจะถูกคำนวณในพื้นที่ว่างของอัตราต่อรองซึ่งจะเปลี่ยนเป็นพื้นที่ความน่าจะเป็นภายหลัง . ดังนั้นฉันไม่คิดว่าคำถามของฉันไม่มีประโยชน์
carbocation

2
อัตราต่อรองสามารถถูกแปลงเป็นความน่าจะเป็นและคุณสามารถคำนวณช่วงความมั่นใจในความน่าจะเป็น (หรืออัตราต่อรอง) แต่ช่วงการทำนายนั้นอยู่ที่ตัวแปรตอบสนองซึ่งเป็น 0 หรือ 1 ถ้าผลลัพธ์ของคุณคือการเอาตัวรอดด้วย 0 = ตายและ 1 = มีชีวิตคุณสามารถทำนายความน่าจะเป็นที่จะมีชีวิตอยู่สำหรับชุด covariates และคำนวณช่วงความมั่นใจ ความน่าจะเป็นนั้น แต่ผลลัพธ์คือ 0/1 คุณไม่สามารถมีผู้ป่วยที่มีชีวิต 62% ที่ต้องเป็น 0 หรือ 1 ดังนั้นช่วงเวลาการทำนายที่เป็นไปได้เพียงอย่างเดียวคือ 0-0, 0-1 และ 1-1 (ซึ่งก็คือ ทำไมคนส่วนใหญ่ยึดติดกับช่วงความมั่นใจ)
เกร็กสโนว์

8
หากคุณมีสถานการณ์ที่การตอบสนองเป็นแบบทวินาม (ซึ่งอาจรวมกันเป็น 0-1 วินาทีภายใต้เงื่อนไขเดียวกัน) ช่วงเวลาการทำนายอาจสมเหตุสมผล
Glen_b -Reinstate Monica

7
การถดถอยแบบลอจิสติกคือการถดถอยของความน่าจะเป็นพยายามจำลองความน่าจะเป็นของเหตุการณ์บางอย่างในฐานะฟังก์ชันของตัวแปรตัวถดถอย ช่วงเวลาการทำนายในการตั้งค่านี้ถูกใช้เป็นช่วงเวลาในสเกลความน่าจะเป็นหรือมาตราส่วนอัตราการบันทึกข้อมูลดังนั้นจึงทำให้เซนสมบูรณ์แบบ
kjetil b halvorsen

2
@Cesar สูตรการทำนายช่วงเวลานั้นมาจากการสมมติว่า Y กระจายตามปกติเกี่ยวกับบรรทัด แต่ในการถดถอยโลจิสติกเราไม่ได้มีการแจกแจงแบบปกติเรามี Bernoulli หรือ Binomial การใช้สูตรในหน้านั้นจะนำไปสู่ช่วงความเชื่อมั่น (สามารถทำได้) หรือช่วงความมั่นใจที่กว้างขึ้นซึ่งไม่ตรงกับคำจำกัดความของช่วงเวลาการทำนาย (ทำนายผลลัพธ์ที่แท้จริงในระดับผลลัพธ์ดั้งเดิม) เช่นเดียวกับที่ Glen_b พูดไว้ช่วงเวลาการทำนายอาจสมเหตุสมผลถ้าผลลัพธ์นั้นเป็นทวินามอย่างแท้จริง
เกร็กสโนว์
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.