Model regresi bootstrap mana yang harus saya pilih?


10

Saya memiliki model regresi logistik biner dengan DV (penyakit: ya / tidak) dan 5 prediktor (demografi [usia, jenis kelamin, merokok tembakau (ya / tidak)], indeks medis (ordinal) dan satu pengobatan acak [ya / tidak ]). Saya juga telah memodelkan semua istilah interaksi dua sisi. Variabel utama berpusat dan tidak ada tanda multikolinieritas (semua VIF <2,5).

Saya punya beberapa pertanyaan:

  1. Apakah bootstrap lebih menguntungkan daripada model tunggal saya? jika begitu,

  2. model bootstrap mana yang harus saya pilih? Saya hanya ingin melihat apakah algoritma bootstrap mengikuti metode acak untuk membuat sampel baru, atau apakah mereka memiliki algoritma kaku. Oleh karena itu, saya melakukan resampled 1000 kali dalam setiap percobaan (jadi saya memiliki beberapa model bootstrap, masing-masing dengan 1000 percobaan). Namun, setiap kali koefisien dari model bootstrap berbeda (walaupun jumlah percobaan selalu 1000). Jadi saya ingin tahu yang mana yang harus saya pilih untuk laporan saya? Beberapa perubahan kecil dan tidak memengaruhi signifikansi koefisien saya, tetapi beberapa membuat beberapa koefisien saya tidak signifikan (hanya yang dengan nilai P mendekati 0,05 pada model asli yang berubah menjadi 0,06 misalnya).

  3. Haruskah saya memilih angka yang lebih tinggi seperti 10.000? Bagaimana saya bisa menentukan batas ini?

  4. Sekali lagi saya harus bootstrap di tempat pertama? Jika hasilnya bervariasi setiap kali, dapatkah saya mengandalkan hasilnya?

  5. Apakah Anda memiliki ide lain yang dapat membantu saya dengan kasus saya?

Terima kasih banyak.

Jawaban:


21

Bootstrapping adalah metode resampling untuk memperkirakan distribusi sampling dari koefisien regresi Anda dan karenanya menghitung kesalahan standar / interval kepercayaan dari koefisien regresi Anda. Posting ini memiliki penjelasan yang bagus. Untuk diskusi tentang berapa banyak replikasi yang Anda butuhkan, lihat posting ini.

  1. Bootstrap nonparametrik berulang kali secara berulang-ulang dan secara acak menarik pengamatan Anda dengan penggantian (yaitu beberapa pengamatan diambil hanya sekali, yang lain beberapa kali dan beberapa tidak pernah sama sekali), kemudian menghitung regresi logistik dan menyimpan koefisien. Ini diulanginwaktu. Jadi Anda akan berakhir dengan 10'000 koefisien regresi yang berbeda. Koefisien 10'000 ini kemudian dapat digunakan untuk menghitung kepercayaan mereka. Karena generator angka pseudo-acak digunakan, Anda bisa mengatur seed ke nomor arbitrer untuk memastikan bahwa Anda memiliki hasil yang persis sama setiap kali (lihat contoh di bawah). Untuk benar-benar memiliki perkiraan yang stabil, saya akan menyarankan lebih dari 1000 replikasi, mungkin 10'000. Anda dapat menjalankan bootstrap beberapa kali dan melihat apakah perkiraannya banyak berubah apakah Anda melakukan 1000 atau 10'000 replikasi. Dalam bahasa Inggris yang sederhana: Anda harus mengambil replikasi sampai Anda mencapai konvergensi. Jika perkiraan bootstrap Anda bervariasi antara perkiraan Anda dan model tunggal yang diamati, ini dapat menunjukkan bahwa model yang diamati tidak mencerminkan struktur sampel Anda dengan tepat.bootR, misalnya, mengeluarkan "bias" yang merupakan perbedaan antara koefisien regresi model tunggal Anda dan rata-rata sampel bootstrap.
  2. Saat melakukan bootstrap, Anda tidak tertarik pada sampel bootstrap tunggal, tetapi dalam distribusi statistik (misalnya koefisien regresi) di atas, katakanlah, sampel bootstrap 10'000.
  3. Menurut saya 10'000 lebih baik daripada 1000. Dengan Komputer modern, ini seharusnya tidak menimbulkan masalah. Dalam contoh di bawah ini, PC saya membutuhkan waktu sekitar 45 detik untuk menggambar 10'000 sampel. Ini bervariasi dengan ukuran sampel Anda, tentu saja. Semakin besar ukuran sampel Anda, semakin tinggi jumlah iterasi untuk memastikan bahwa setiap pengamatan diperhitungkan.
  4. Apa maksud Anda "hasilnya bervariasi setiap kali"? Ingatlah bahwa dalam setiap langkah bootstrap, pengamatan baru diambil dengan penggantian. Karena itu, Anda cenderung berakhir dengan koefisien regresi yang sedikit berbeda karena pengamatan Anda berbeda. Tapi seperti yang saya katakan: Anda tidak benar-benar tertarik pada hasil sampel bootstrap tunggal. Ketika jumlah replikasi Anda cukup tinggi, bootstrap harus menghasilkan interval kepercayaan dan estimasi titik yang sangat mirip setiap saat.

Berikut adalah contoh di 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 menampilkan koefisien regresi asli ("asli") dan biasnya, yang merupakan perbedaan antara koefisien asli dan yang bootstrap. Ini juga memberikan kesalahan standar. Perhatikan bahwa mereka sedikit lebih besar dari kesalahan standar aslinya.

Dari interval kepercayaan, bias-dikoreksi ("bca") biasanya lebih disukai. Ini memberikan interval kepercayaan pada skala asli. Untuk interval kepercayaan untuk rasio odds, cukup beri tahu batas kepercayaannya.


Terima kasih atas jawaban yang sempurna! :) Biarkan saya merespons dengan cara ini: 1. Saya sedikit terbiasa dengan gagasannya (bahwa ia mencoba menghitung nilai rata-rata untuk 1000 koefisien yang berbeda dalam 1000 model yang berbeda (di-resampled)). Terima kasih telah menjelaskan hal "bias" itu dan bahwa variasi seperti itu terjadi dan kita harus meningkatkan jumlah upaya. :) 2.Dengan "model bootstrapped" Saya tidak bermaksud satu model resampled tunggal. Namun, yang saya maksud adalah rata-rata 1000 iterasi itu. Sebenarnya saya telah bootstrap model saya selama 10 kali, masing-masing untuk 1000 iterasi. Jadi saya punya 10 model bootstrap di tangan.
Vic

Masing-masing dari mereka menunjukkan hasil yang "berbeda". Tetapi saya akan mencoba tiga atau empat model bootstrap dengan 10.000 resampling untuk melihat apakah jumlah iterasi adalah 10.000, model bootstrap yang berbeda (masing-masing dengan 10.000) serupa atau haruskah saya menambah 100000 bahkan lebih?
Vic

@Vic, terima kasih atas komentar Anda. Saya tidak akan melakukan 10 bootstraps masing-masing dengan 1000 iterasi, tetapi hanya satu dengan, katakanlah 10'000 atau bahkan lebih iterasi (50'000?). Ini akan memberi Anda perkiraan dan interval kepercayaan yang stabil.
COOLSerdash

3. Yakin itu bukan masalah. Saya hanya ingin tahu atas dasar apa seseorang harus memilih nomor itu? Saya pikir dasar dapat bahwa jika saya menjalankan dua bootstrappings dari 1000 mencoba masing-masing dan melihat bahwa mereka berbeda, itu berarti bahwa saya memerlukan uji coba resampling lebih (misalnya 5000 atau 10000) sebagai gantinya.
Vic

4. "Apa maksud Anda" hasilnya bervariasi setiap kali "? Ketika jumlah replikasi Anda cukup tinggi, bootstrap harus menghasilkan interval kepercayaan yang sangat mirip dan estimasi titik setiap kali."
Vic
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.