Haruskah saya melakukan bootstrap di level cluster atau level individu?

10

Saya memiliki model bertahan hidup dengan pasien bersarang di rumah sakit yang mencakup efek acak untuk rumah sakit. Efek acak terdistribusi gamma, dan saya mencoba melaporkan 'relevansi' istilah ini pada skala yang mudah dipahami.

Saya telah menemukan referensi berikut yang menggunakan Rasio Bahaya Median (sedikit seperti Rasio Peluang Median), dan menghitung ini.

Bengtsson T, Dribe M: Metode Sejarah 43:15, 2010

Namun, sekarang saya ingin melaporkan ketidakpastian terkait dengan perkiraan ini menggunakan bootstrap. Data tersebut adalah data kelangsungan hidup, dan karenanya ada beberapa pengamatan per pasien, dan beberapa pasien per rumah sakit. Tampak jelas bahwa saya perlu mengelompokkan pengamatan pasien saat pengambilan sampel ulang. Tetapi saya tidak tahu apakah saya harus mengelompokkan rumah sakit juga (mis. Sampel rumah sakit, bukan pasien?

Saya bertanya-tanya apakah jawabannya tergantung pada parameter minat, dan apakah akan berbeda jika targetnya adalah sesuatu yang relevan di tingkat pasien daripada tingkat rumah sakit?

Saya telah mencantumkan kode stata di bawah untuk berjaga-jaga.

cap program drop est_mhr
program define est_mhr, rclass
stcox patient_var1 patient_var2 ///
    , shared(hospital) ///
    noshow
local twoinvtheta2 = 2 / (e(theta)^2)
local mhr = exp(sqrt(2*e(theta))*invF(`twoinvtheta2',`twoinvtheta2',0.75))
return scalar mhr = `mhr'
end

bootstrap r(mhr), reps(50) cluster(hospital): est_mhr
drstevok
sumber

Jawaban:

2

Bayangkan Anda melakukan penelitian tentang prestasi pendidikan anak-anak. Anda mengambil sampel acak sekolah dari beberapa daerah dan dari setiap sekolah satu kelas dimasukkan dalam penelitian. Anda melakukan analisis dan sekarang ingin menggunakan bootstrap untuk mendapatkan interval kepercayaan untuk perkiraan Anda. Bagaimana cara melakukannya?

Pertama, perhatikan bahwa data Anda bersifat hierarkis, ia memiliki beberapa tingkatan: sekolah, kelas dalam sekolah, dan siswa dalam kelas. Karena hanya ada satu kelas per sekolah, maka level kedua tidak ada dalam data Anda. Kita dapat berasumsi bahwa ada beberapa kesamaan di sekolah dan perbedaan di antara sekolah. Jika ada kesamaan dalam sekolah maka jika Anda mengambil sampel siswa secara acak, tanpa mempertimbangkan keanggotaan sekolah mereka, Anda mungkin dapat menghancurkan struktur hierarki data Anda.

Secara umum, ada beberapa opsi:

  1. sampel siswa dengan pengganti,
  2. sampel seluruh sekolah dengan penggantian,
  3. sekolah sampel pertama dengan pengganti dan kemudian sampel siswa (a) dengan pengganti, atau (b) tanpa penggantian.

Tampaknya pendekatan pertama adalah yang terburuk. Ingat bahwa bootstrap sampling entah bagaimana harus meniru proses pengambilan sampel dalam studi Anda dan Anda mengambil sampel sekolah daripada siswa secara individu. Memilih antara (2) dan (3) lebih rumit, tetapi mudah-mudahan Anda dapat menemukan makalah penelitian mempertimbangkan topik ini (misalnya Rena et al. 2010, Field and Welsh, 2007). Umumnya opsi (2) atau (3b) lebih disukai karena tampaknya termasuk terlalu banyak tingkat pengambilan sampel dengan penggantian mengarah ke hasil yang bias. Anda dapat menemukan informasi lebih lanjut tentang topik ini juga dalam buku-buku karya Efron dan Tibshirani (1994) dan Davison and Hinkley (1997). Perhatikan bahwa kami memiliki masalah serupa dengan data deret waktu bootstrapdan dalam hal ini kami juga lebih suka sampel seluruh blok seri (misalnya seluruh musim jika kita mengasumsikan musiman) daripada pengamatan individu karena jika tidak, struktur waktu akan hancur. Dalam prakteknya tidak ada solusi satu ukuran untuk semua tetapi dengan struktur data yang rumit Anda harus memilih skema pengambilan sampel bootstrap yang paling sesuai dengan data Anda dan masalah Anda dan jika mungkin gunakan studi simulasi untuk membandingkan solusi yang berbeda.


Davison, AC dan Hinkley, DV (1997). Metode Bootstrap dan Penerapannya. Cambridge.

Efron, B. dan Tibshirani, RJ (1994). Pengantar Bootstrap . CRC Tekan.

Ren, S., Lai, H., Tong, W., Aminzadeh, M., Hou, X., & Lai, S. (2010). Bootstrap nonparametrik untuk data hierarkis. Jurnal Statistik Terapan, 37 (9), 1487-1498.

Field, CA, & Welsh, AH (2007). Bootstrap data berkerumun. Jurnal Masyarakat Statistik Kerajaan: Seri B (Metodologi Statistik), 69 (3), 369-390.

Tim
sumber
1
Terima jawaban Anda (terima kasih), tetapi untuk yang lain saya sekarang telah mengimplementasikan fungsi dalam R untuk melakukan ini dalam jawaban
drstevok
3

Jawabannya tampaknya proses resampling perlu memperhitungkan struktur data. Ada penjelasan yang bagus di sini (bersama dengan beberapa kode R untuk mengimplementasikan ini).

http://biostat.mc.vanderbilt.edu/wiki/Main/HowToBootstrapCorrelatedData

Berkat pointer dari Kelompok Konsultasi Statistik UCLA .

Saya telah menulis versi potongan kode yang lebih cepat (tetapi kurang fleksibel) yang ditautkan ke atas - periksa di sini untuk pembaruan dan perincian.

rsample2 <- function(data=tdt, id.unit=id.u, id.cluster=id.c) {
require(data.table)

setkeyv(tdt,id.cluster)
# Generate within cluster ID (needed for the sample command)
tdt[, "id.within" := .SD[,.I], by=id.cluster, with=FALSE]

# Random sample of sites
bdt <- data.table(sample(unique(tdt[[id.cluster]]), replace=TRUE))
setnames(bdt,"V1",id.cluster)
setkeyv(bdt,id.cluster)

# Use random sample of sites to select from original data
# then
# within each site sample with replacement using the within site ID
bdt <- tdt[bdt, .SD[sample(.SD$id.within, replace=TRUE)],by=.EACHI]

# return data sampled with replacement respecting clusters
bdt[, id.within := NULL] # drop id.within
return(bdt)
}
drstevok
sumber