Tôi nên chọn mô hình hồi quy bootstrapping nào?


10

Tôi có mô hình hồi quy logistic nhị phân với DV (bệnh: có / không) và 5 yếu tố dự báo (nhân khẩu học [tuổi, giới tính, hút thuốc lá (có / không)], chỉ số y tế (thứ tự) và một điều trị ngẫu nhiên [có / không ]). Tôi cũng đã mô hình hóa tất cả các điều khoản tương tác hai mặt. Các biến chính được đặt ở giữa và không có dấu hiệu của đa cộng đồng (tất cả các VIF <2,5).

Tôi có một số câu hỏi:

  1. Bootstrapping có lợi thế hơn so với mô hình duy nhất của tôi không? nếu vậy,

  2. Tôi nên chọn mô hình bootstrapping nào? Tôi chỉ muốn xem liệu các thuật toán bootstrapping có tuân theo các phương pháp ngẫu nhiên để tạo các mẫu mới hay không, nếu chúng có các thuật toán cứng nhắc. Do đó, tôi đã lấy mẫu lại 1000 lần trong mỗi lần thử (vì vậy tôi có một số mô hình bootstrapping, mỗi mô hình có 1000 thử nghiệm). Tuy nhiên, mỗi lần hệ số của mô hình bootstrapping khác nhau (mặc dù số lượng thử nghiệm liên tục là 1000). Vì vậy, tôi tự hỏi tôi nên chọn cái nào cho báo cáo của tôi? Một số thay đổi rất nhỏ và không ảnh hưởng đến tầm quan trọng của hệ số của tôi, nhưng một số thay đổi làm cho một số hệ số của tôi không đáng kể (chỉ những thay đổi có giá trị P gần 0,05 trong mô hình ban đầu thay đổi thành 0,06 chẳng hạn).

  3. Tôi có nên chọn một số cao hơn như 10.000? Làm thế nào tôi có thể xác định giới hạn này?

  4. Một lần nữa tôi nên bootstrap ở nơi đầu tiên? Nếu kết quả của nó thay đổi mỗi lần, tôi có thể dựa vào kết quả của nó không?

  5. Bạn có ý tưởng nào khác có thể giúp tôi trong trường hợp của tôi không?

Rất rất cảm ơn.

Câu trả lời:


21

Bootstrapping là một phương pháp lấy mẫu lại để ước tính phân phối lấy mẫu của các hệ số hồi quy của bạn và do đó tính toán các lỗi tiêu chuẩn / khoảng tin cậy của các hệ số hồi quy của bạn. Bài này có một lời giải thích tốt đẹp. Để thảo luận về bao nhiêu bản sao bạn cần, xem bài viết này.

  1. nlần Vì vậy, bạn sẽ kết thúc với 10.000 hệ số hồi quy khác nhau. Các hệ số 10.000 này sau đó có thể được sử dụng để tính toán mức độ tin cậy của chúng. Khi trình tạo số giả ngẫu nhiên được sử dụng, bạn chỉ cần đặt hạt giống thành một số tùy ý để đảm bảo rằng bạn có kết quả chính xác giống nhau mỗi lần (xem ví dụ bên dưới). Để thực sự có ước tính ổn định, tôi sẽ đề xuất hơn 1000 lần lặp lại, có thể là 10.000. Bạn có thể chạy bootstrap nhiều lần và xem liệu các ước tính có thay đổi nhiều hay không dù bạn thực hiện sao chép 1000 hay 10.000. Trong tiếng Anh đơn giản: bạn nên thực hiện các bản sao cho đến khi bạn đạt được sự hội tụ. Nếu ước tính bootstrap của bạn khác nhau giữa các ước tính của bạn và mô hình đơn lẻ được quan sát, điều này có thể chỉ ra rằng mô hình quan sát không phản ánh đúng cấu trúc của mẫu của bạn.bootR, ví dụ, đưa ra "độ lệch" là sự khác biệt giữa các hệ số hồi quy của mô hình đơn của bạn và giá trị trung bình của các mẫu bootstrap.
  2. Khi thực hiện bootstrap, bạn không quan tâm đến một mẫu bootstrap duy nhất, nhưng trong việc phân phối số liệu thống kê (ví dụ: hệ số hồi quy) qua, ví dụ, 10.000 mẫu bootstrap.
  3. Tôi muốn nói rằng 10.000 là tốt hơn 1000. Với các Máy tính hiện đại, điều này không gây ra vấn đề gì. Trong ví dụ dưới đây, PC của tôi mất khoảng 45 giây để vẽ 10.000 mẫu. Điều này thay đổi với kích thước mẫu của bạn trong khóa học. Cỡ mẫu của bạn càng lớn, số lần lặp càng cao để đảm bảo rằng mọi quan sát đều được tính đến.
  4. Bạn có ý nghĩa gì "kết quả thay đổi mỗi lần"? Hãy nhớ lại rằng trong mỗi bước bootstrap, các quan sát mới được rút ra với sự thay thế. Do đó, bạn có khả năng kết thúc với các hệ số hồi quy hơi khác nhau vì các quan sát của bạn khác nhau. Nhưng như tôi đã nói: bạn không thực sự quan tâm đến kết quả của một mẫu bootstrap duy nhất. Khi số lượng bản sao của bạn đủ cao, bootstrap sẽ mang lại khoảng tin cậy và ước tính điểm rất giống nhau mỗi lần.

Đây là một ví dụ trong R:

library(boot)

mydata <- read.csv("http://www.ats.ucla.edu/stat/data/binary.csv")

head(mydata)

mydata$rank <- factor(mydata$rank)

my.mod <- glm(admit ~ gre + gpa + rank, data = mydata, family = "binomial")

summary(my.mod)

Coefficients:
             Estimate Std. Error z value Pr(>|z|)    
(Intercept) -3.989979   1.139951  -3.500 0.000465 ***
gre          0.002264   0.001094   2.070 0.038465 *  
gpa          0.804038   0.331819   2.423 0.015388 *  
rank2       -0.675443   0.316490  -2.134 0.032829 *  
rank3       -1.340204   0.345306  -3.881 0.000104 ***
rank4       -1.551464   0.417832  -3.713 0.000205 ***
---
Signif. codes:  0***0.001**0.01*0.05 ‘.’ 0.1 ‘ ’ 1

# Set up the non-parametric bootstrap

logit.bootstrap <- function(data, indices) {

  d <- data[indices, ]
  fit <- glm(admit ~ gre + gpa + rank, data = d, family = "binomial")

  return(coef(fit))
}

set.seed(12345) # seed for the RNG to ensure that you get exactly the same results as here

logit.boot <- boot(data=mydata, statistic=logit.bootstrap, R=10000) # 10'000 samples

logit.boot

Bootstrap Statistics :
        original        bias    std. error
t1* -3.989979073 -7.217244e-02 1.165573039
t2*  0.002264426  4.054579e-05 0.001146039
t3*  0.804037549  1.440693e-02 0.354361032
t4* -0.675442928 -8.845389e-03 0.329099277
t5* -1.340203916 -1.977054e-02 0.359502576
t6* -1.551463677 -4.720579e-02 0.444998099

# Calculate confidence intervals (Bias corrected ="bca") for each coefficient

boot.ci(logit.boot, type="bca", index=1) # intercept
95%   (-6.292, -1.738 )  
boot.ci(logit.boot, type="bca", index=2) # gre
95%   ( 0.0000,  0.0045 ) 
boot.ci(logit.boot, type="bca", index=3) # gpa
95%   ( 0.1017,  1.4932 )
boot.ci(logit.boot, type="bca", index=4) # rank2
95%   (-1.3170, -0.0369 )
boot.ci(logit.boot, type="bca", index=5) # rank3
95%   (-2.040, -0.629 )
boot.ci(logit.boot, type="bca", index=6) # rank4
95%   (-2.425, -0.698 )

Bootstrap-ouput hiển thị các hệ số hồi quy ban đầu ("gốc") và độ lệch của chúng, đó là sự khác biệt giữa các hệ số ban đầu và các hệ số khởi động. Nó cũng đưa ra các lỗi tiêu chuẩn. Lưu ý rằng chúng lớn hơn một chút so với các lỗi tiêu chuẩn ban đầu.

Từ các khoảng tin cậy, độ lệch được hiệu chỉnh ("bca") thường được ưu tiên. Nó cung cấp cho các khoảng tin cậy trên quy mô ban đầu. Đối với khoảng tin cậy cho tỷ lệ cược, chỉ cần lũy thừa giới hạn độ tin cậy.


CẢM ƠN bạn đã có câu trả lời hoàn hảo! :) Hãy để tôi trả lời theo cách này: 1. Tôi đã hơi quen với khái niệm của nó (rằng nó cố gắng tính giá trị trung bình cho 1000 hệ số khác nhau trong 1000 mô hình (được ghép lại) khác nhau). Cảm ơn đã làm rõ điều "thiên vị" và những biến thể như vậy xảy ra và chúng ta nên tăng số lần thử. :) 2.By "mô hình bootstrapping" Tôi không có nghĩa là một mô hình được ghép lại duy nhất. Tuy nhiên, ý tôi là ý nghĩa của 1000 lần lặp đó. Trên thực tế, tôi đã bootstrapping mô hình của mình trong 10 lần, mỗi lần cho 1000 lần lặp. Vì vậy, tôi có 10 mô hình bootstrapping trong tay.
Vic

Mỗi người trong số họ cho thấy một kết quả "khác nhau". Nhưng tôi sẽ thử ba hoặc bốn mô hình bootstrapping với 10.000 lần thay đổi để xem số lần lặp là 10.000, các mô hình bootstrapping khác nhau (mỗi mô hình 10000) có giống nhau không hay tôi có nên tăng thêm 100000 nữa không?
Vic

@Vic Cảm ơn bình luận của bạn. Tôi sẽ không thực hiện 10 bootstraps mỗi lần với 1000 lần lặp, nhưng chỉ một lần với, lặp lại 10.000 hoặc thậm chí nhiều lần lặp hơn (50'000?). Điều này sẽ cung cấp cho bạn ước tính ổn định và khoảng tin cậy.
COOLSerdash

3. Chắc chắn đó không phải là vấn đề. Tôi chỉ muốn biết trên cơ sở nào nên chọn số đó? Tôi nghĩ rằng cơ sở có thể là nếu tôi chạy hai bootstrappings 1000 lần thử và thấy chúng khác nhau, điều đó có nghĩa là tôi cần thử nghiệm lấy mẫu nhiều hơn (ví dụ 5000 hoặc 10000).
Vic

4. "Ý bạn là gì" kết quả thay đổi mỗi lần "? Khi số lần sao chép của bạn đủ cao, bootstrap sẽ mang lại khoảng tin cậy và ước tính điểm rất giống nhau mỗi lần."
Vic
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.