Tính toán các khoảng dự đoán cho hồi quy logistic


20

Tôi muốn hiểu làm thế nào để tạo ra các khoảng dự đoán cho các ước tính hồi quy logistic.

Tôi được khuyên nên làm theo các quy trình trong Dữ liệu nhị phân mô hình hóa của Collett , 2nd Ed p.98-99. Sau khi thực hiện quy trình này và so sánh nó với R predict.glm, tôi thực sự nghĩ rằng cuốn sách này đang hiển thị quy trình tính toán khoảng tin cậy , không phải là khoảng dự đoán.

Việc thực hiện thủ tục từ Collett, với sự so sánh với predict.glm, được hiển thị dưới đây.

Tôi muốn biết: làm thế nào để tôi đi từ đây để tạo ra một khoảng dự đoán thay vì khoảng tin cậy?

#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')])

Một câu hỏi cơ bản, tại sao sqrt (sum (model.vcov * vuông.student)) được coi là lỗi tiêu chuẩn? Đây có phải là độ lệch chuẩn và cần được chia cho sqrt (n) không? Nếu vậy, n nên được sử dụng, n được sử dụng để phù hợp với mô hình hoặc n của khung dữ liệu mới được sử dụng để dự đoán?
Rafael

Câu trả lời:


6

Khoảng dự đoán dự đoán nơi các giá trị dữ liệu phản hồi thực tế được dự đoán sẽ giảm với xác suất nhất định. Do các giá trị có thể có của phản hồi của mô hình logistic bị giới hạn ở 0 và 1, do đó, khoảng dự đoán 100% là . Không có khoảng thời gian khác thực sự có ý nghĩa cho dự đoán với hồi quy logistic. Vì nó luôn luôn là cùng một khoảng nên nó thường không đủ thú vị để tạo hoặc thảo luận.0<=y<=1


6
Tôi đang tìm kiếm một khoảng dự đoán 95% của một dự đoán trong không gian tỷ lệ cược. Sau này tôi biến đổi nó thành không gian xác suất. Một khoảng dự đoán 100% sẽ không bao giờ thú vị cho bất kỳ thủ tục, phải không? Ví dụ: khoảng dự đoán 100% cho hồi quy tuyến tính sẽ bao gồm -Inf đến Inf ... Ở bất kỳ tỷ lệ nào, như bạn có thể thấy trong mã của tôi, khoảng dự đoán được tính trong không gian tỷ lệ cược log, sau đó được chuyển thành không gian xác suất . Vì vậy, tôi không nghĩ rằng câu hỏi của tôi là vô nghĩa.
carbocation

2
Tỷ lệ cược log có thể được chuyển đổi thành xác suất và bạn có thể tính khoảng tin cậy theo xác suất (hoặc tỷ lệ cược log). Nhưng một khoảng dự đoán nằm trên biến phản hồi là 0 hoặc 1. Nếu kết quả của bạn là sống sót với 0 = chết và 1 = còn sống, thì bạn có thể dự đoán xác suất sống cho một tập hợp số đã cho và tính khoảng tin cậy xác suất đó Nhưng kết quả là 0/1, bạn không thể có một bệnh nhân còn sống 62%, đó là 0 hoặc 1, do đó, các khoảng dự đoán duy nhất có thể là 0-0, 0-1 và 1-1 (đó là tại sao hầu hết mọi người dính vào khoảng tin cậy).
Greg Snow

8
Nếu bạn có một tình huống trong đó phản hồi là nhị thức (có thể là tổng của 0-1 trong cùng điều kiện), thì khoảng dự đoán có thể có ý nghĩa.
Glen_b -Reinstate Monica

7
Hồi quy logistic là hồi quy của một xác suất, cố gắng mô hình hóa xác suất của một số sự kiện như là một hàm của các biến hồi quy. Các khoảng dự đoán trong cài đặt này được lấy là các khoảng trên thang xác suất hoặc thang tỷ lệ cược log, do đó tạo ra các sen hoàn hảo.
kjetil b halvorsen

2
@Cesar, công thức khoảng dự đoán được bắt nguồn bằng cách giả sử rằng Y thường được phân phối về dòng, nhưng trong hồi quy logistic chúng ta không có phân phối bình thường, chúng ta có Bernoulli hoặc Binomial. Áp dụng các công thức trên trang đó sẽ dẫn đến khoảng tin cậy (có thể thực hiện được điều này) hoặc khoảng tin cậy được mở rộng giả tạo không đáp ứng định nghĩa về khoảng dự đoán (dự đoán kết quả thực tế trên thang kết quả ban đầu). Giống như Glen_b đã đề cập, một khoảng dự đoán có thể có ý nghĩa nếu kết quả thực sự là nhị thức.
Greg Snow
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.