Theo dõi từ bài đăng của Stephan Kolassa (Tôi không thể thêm nhận xét này dưới dạng nhận xét), tôi có một số mã thay thế cho mô phỏng. Điều này sử dụng cùng một cấu trúc cơ bản, nhưng được phát nổ hơn một chút, vì vậy có lẽ nó dễ đọc hơn một chút. Nó cũng dựa trên mã của Kleinman và Horton để mô phỏng hồi quy logistic.
nn là số trong mẫu. Hiệp phương sai phải được phân phối bình thường liên tục và được chuẩn hóa thành 0 và sd 1. Chúng tôi sử dụng rnorm (nn) để tạo ra điều này. Chúng tôi chọn một tỷ lệ cược và lưu trữ nó trong odds.ratio. Chúng tôi cũng chọn một số cho đánh chặn. Sự lựa chọn của con số này chi phối tỷ lệ của mẫu trải nghiệm "sự kiện" (ví dụ 0,1, 0,4, 0,5). Bạn phải chơi xung quanh với con số này cho đến khi bạn có được tỷ lệ đúng. Đoạn mã sau cung cấp cho bạn tỷ lệ 0,1 với cỡ mẫu là 950 và OR là 1,5:
nn <- 950
runs <- 10000
intercept <- log(9)
odds.ratio <- 1.5
beta <- log(odds.ratio)
proportion <- replicate(
n = runs,
expr = {
xtest <- rnorm(nn)
linpred <- intercept + (xtest * beta)
prob <- exp(linpred)/(1 + exp(linpred))
runis <- runif(length(xtest),0,1)
ytest <- ifelse(runis < prob,1,0)
prop <- length(which(ytest <= 0.5))/length(ytest)
}
)
summary(proportion)
tóm tắt (tỷ lệ) xác nhận rằng tỷ lệ là ~ 0,1
Sau đó, sử dụng cùng một biến, công suất được tính trên 10000 lần chạy:
result <- replicate(
n = runs,
expr = {
xtest <- rnorm(nn)
linpred <- intercept + (xtest * beta)
prob <- exp(linpred)/(1 + exp(linpred))
runis <- runif(length(xtest),0,1)
ytest <- ifelse(runis < prob,1,0)
summary(model <- glm(ytest ~ xtest, family = "binomial"))$coefficients[2,4] < .05
}
)
print(sum(result)/runs)
Tôi nghĩ rằng mã này là chính xác - tôi đã kiểm tra nó so với các ví dụ được đưa ra trong Hsieh, 1998 (bảng 2) và dường như nó đồng ý với ba ví dụ được đưa ra ở đó. Tôi cũng đã thử nghiệm nó với ví dụ trên trang 342 - 343 của Hosmer và Lemeshow, nơi nó tìm thấy sức mạnh 0,75 (so với 0,8 trong Hosmer và Lemeshow). Vì vậy, có thể trong một số trường hợp, cách tiếp cận này đánh giá thấp sức mạnh. Tuy nhiên, khi tôi chạy ví dụ tương tự trong máy tính trực tuyến này , tôi đã thấy rằng nó đồng ý với tôi và không phải là kết quả trong Hosmer và Lemeshow.
Nếu bất cứ ai có thể cho chúng tôi biết lý do tại sao lại như vậy, tôi rất muốn biết.