Bisakah bootstrap dilihat sebagai "obat" untuk ukuran sampel yang kecil?

71

Pertanyaan ini telah dipicu oleh sesuatu yang saya baca di buku teks statistik tingkat pascasarjana ini dan juga (secara independen) didengar selama presentasi ini di seminar statistik. Dalam kedua kasus, pernyataan itu sepanjang garis "karena ukuran sampel cukup kecil, kami memutuskan untuk melakukan estimasi melalui bootstrap daripada (atau bersamaan dengan) metode parametrik ".X

Mereka tidak masuk ke dalam rincian, tapi mungkin alasan itu sebagai berikut: Metode mengasumsikan data mengikuti distribusi parametrik tertentu . Pada kenyataannya, distribusinya tidak sepenuhnya , tetapi itu boleh saja asalkan ukuran sampelnya cukup besar. Karena dalam kasus ini ukuran sampel terlalu kecil, mari beralih ke bootstrap (non-parametrik) yang tidak membuat asumsi distribusi. Masalah terpecahkan!XDD

Menurut pendapat saya, bukan itu gunanya bootstrap. Begini cara saya melihatnya: bootstrap dapat memberikan keunggulan pada satu orang ketika lebih atau kurang jelas bahwa ada cukup data, tetapi tidak ada solusi bentuk tertutup untuk mendapatkan kesalahan standar, nilai-p dan statistik serupa. Contoh klasik adalah mendapatkan CI untuk koefisien korelasi yang diberikan sampel dari distribusi normal bivariat: solusi bentuk tertutup ada, tetapi sangat berbelit-belit sehingga bootstrap lebih sederhana. Namun, tidak ada yang menyiratkan bahwa bootstrap dapat membantu seseorang untuk lolos dengan ukuran sampel yang kecil.

Apakah persepsi saya benar?

Jika Anda menemukan pertanyaan ini menarik, ada pertanyaan lain, bootstrap yang lebih spesifik dari saya:

Bootstrap: masalah overfitting

PS Saya tidak dapat membantu berbagi satu contoh mengerikan dari "pendekatan bootstrap". Saya tidak mengungkapkan nama penulisnya, tetapi dia adalah salah satu dari "quants" generasi tua yang menulis buku tentang Keuangan Kuantitatif pada tahun 2004. Contohnya diambil dari sana.

Pertimbangkan masalah berikut: misalkan Anda memiliki 4 aset dan 120 pengamatan pengembalian bulanan untuk masing-masing. Tujuannya adalah untuk membangun cdf bersama 4 dimensi dari pengembalian tahunan. Bahkan untuk satu aset, tugas tersebut tampaknya sulit dicapai dengan hanya 10 pengamatan tahunan, apalagi estimasi cdf 4 dimensi. Tetapi tidak perlu khawatir, "bootstrap" akan membantu Anda: ambil semua pengamatan 4 dimensi yang tersedia, sampel ulang 12 dengan penggantian dan gabungkan mereka untuk membangun satu vektor 4-dimensi "bootstrapped" dari pengembalian tahunan. Ulangi 1000 kali dan, lihatlah, Anda mendapatkan "sampel bootstrap" untuk diri sendiri dari pengembalian tahunan. Gunakan ini sebagai sampel pertama ukuran 1000 untuk keperluan estimasi cdf, atau kesimpulan lain yang dapat diambil dari sejarah seribu tahun.

James
sumber
18
Saya mendengar atau membaca sentimen serupa dengan paragraf pertama Anda, tetapi saya cenderung tidak setuju. Saya biasanya tidak melihat bootstrap sebagai berguna dalam sampel kecil. Pembenarannya adalah asimptotik / sampel besar, dan dalam banyak kasus dalam praktiknya kinerja sampel kecilnya bermasalah; cakupan interval, misalnya, seringkali sangat berbeda dari kurs nominal. Ini alat lain yang bermanfaat, tetapi seperti banyak orang lain yang telah digembar-gemborkan selama bertahun-tahun, itu bukan obat mujarab yang dibayangkan sebagian orang. Saya benar-benar tidak berpikir itu solusi untuk sampel yang sangat kecil.
Glen_b
Dalam buku Simon Sheather (Gambar 3.40) ada diagram alir untuk regresi yang menyarankan bootstrap untuk inferensi ketika ukuran sampel tidak besar dan kesalahan tidak terdistribusi secara normal.
Tony Ladson
2
Jawaban atas pertanyaan di paragraf keempat adalah ya (atau setidaknya Anda akan mendapat pujian atas argumen Anda jika Anda memberikan jawaban ini pada ujian di kelas saya). Sudahkah Anda memeriksa diskusi ini ? Dalam jawaban saya , saya memberikan penjelasan tentang perkiraan yang dibuat oleh bootstrap, dan memberikan referensi ke kertas blow-your-mind yang harus dibaca oleh setiap bootstrapper untuk mengetahui keterbatasan metode ini. Akan menyenangkan untuk melihat referensi ke buku / makalah / presentasi yang memicu pertanyaan Anda
StasK
Bukankah bootstrap hanya memberi Anda istilah tambahan dalam ekspansi yang disingkat - seperti perkiraan normal dengan istilah koreksi?
probabilityislogic

Jawaban:

34

Saya ingat pernah membaca bahwa menggunakan interval kepercayaan persentil untuk bootstrap setara dengan menggunakan interval Z bukannya interval T dan menggunakan sebagai ganti untuk penyebut. Sayangnya saya tidak ingat di mana saya membaca ini dan tidak dapat menemukan referensi dalam pencarian cepat saya. Perbedaan ini tidak terlalu menjadi masalah ketika n besar (dan keuntungan dari bootstrap lebih besar daripada masalah kecil ini ketika besar), tetapi dengan kecil ini dapat menyebabkan masalah. Berikut ini beberapa kode R untuk disimulasikan dan dibandingkan:nn1nn

simfun <- function(n=5) {
    x <- rnorm(n)
    m.x <- mean(x)
    s.x <- sd(x)
    z <- m.x/(1/sqrt(n))
    t <- m.x/(s.x/sqrt(n))
    b <- replicate(10000, mean(sample(x, replace=TRUE)))
    c( t=abs(t) > qt(0.975,n-1), z=abs(z) > qnorm(0.975),
        z2 = abs(t) > qnorm(0.975), 
        b= (0 < quantile(b, 0.025)) | (0 > quantile(b, 0.975))
     )
}

out <- replicate(10000, simfun())
rowMeans(out)

Hasil saya untuk sekali jalan adalah:

     t      z     z2 b.2.5% 
0.0486 0.0493 0.1199 0.1631 

Jadi kita dapat melihat bahwa menggunakan uji-t dan uji-z (dengan standar deviasi populasi yang sebenarnya) keduanya memberikan tingkat kesalahan tipe I yang pada dasarnya seperti yang dirancang. Uji z yang tidak benar (membaginya dengan standar deviasi sampel, tetapi menggunakan nilai kritis Z alih-alih T) menolak nol lebih dari dua kali lebih sering dari yang seharusnya. Sekarang untuk bootstrap, ia menolak nol 3 kali lebih sering dari seharusnya (melihat apakah 0, mean sebenarnya, dalam interval atau tidak), jadi untuk ukuran sampel kecil ini bootstrap sederhana tidak berukuran dengan benar dan karena itu tidak tidak memperbaiki masalah (dan ini adalah saat data normal secara optimal). Interval bootstrap yang ditingkatkan (BCa dll.) Mungkin akan melakukan lebih baik, tetapi ini harus meningkatkan kekhawatiran tentang penggunaan bootstrap sebagai obat mujarab untuk ukuran sampel kecil.α

Greg Snow
sumber
6
Kalimat terakhir Anda membuat saya penasaran, jadi saya mencoba ini dengan contoh Anda. Saya menggunakan bootpaket dan menyediakannya semua interval yang mungkin: interval perkiraan normal urutan pertama, interval bootstrap dasar, interval bootstrap mahasiswa, interval persentasi bootstrap (yang sudah disediakan kode Anda), dan persentil bootstrap yang disesuaikan (BCa) selang. Hasilnya pada dasarnya semua sama (tingkat penolakan sekitar 0,16 - .17), kecuali untuk interval pelajar, yang memiliki tingkat penolakan nominal (0,05) (yang masuk akal, karena lebih mirip dengan uji-t standar).
Wolfgang
2
@ Wolfgang, terima kasih telah melakukan simulasi tambahan. Saya sedikit terkejut bahwa interval lain tidak melakukan sedikit lebih baik, tetapi tidak terkejut bahwa mereka tidak memenuhi level 0,05.
Greg Snow
1
Ya, saya sedikit terkejut juga! Kadang intuisi kita gagal. Itu sebabnya sangat bagus untuk dapat menulis naskah kecil dalam R dalam beberapa menit, menjalankannya 10,000 \times 10,000iterasi (yang membutuhkan beberapa menit untuk menyelesaikannya), dan dapat memeriksa berbagai hal. Dan contoh Anda dengan baik menunjukkan bahwa bootstrap dapat berkinerja sangat buruk dengan sampel kecil bahkan ketika hal-hal "bagus" (yaitu, data sebenarnya normal).
Wolfgang
Sebenarnya, masalah yang terlihat dalam simulasi ini adalah persis yang saya tanyakan di sini dan dijawab dalam komentar oleh @whuber: stats.stackexchange.com/questions/323455/… . Oleh karena itu, saya tidak berpikir masalahnya adalah ukuran sampel, tetapi pelanggaran independensi untuk inferensi parametrik dalam setiap sampel.
setengah lulus
2
Komentar Anda tentang interval kepercayaan persentil yang setara dengan menggunakan bukannya berasal dari sini , hanya sebagai catatan. zt
Daeyoung Lim
14

Jika Anda diberi ukuran sampel kecil (sebagai sampingan, apa yang "kecil" tampaknya bergantung pada beberapa aturan adat yang mendasari di setiap bidang penelitian), tidak ada bootstrap yang akan melakukan keajaiban. Dengan asumsi database berisi tiga pengamatan untuk masing-masing dari dua variabel yang diselidiki, tidak ada kesimpulan yang masuk akal. Dalam pengalaman saya, bootstrap non-parametrik (1.000 atau 10.000 replikasi) bekerja dengan baik dalam mengganti uji-t ketika distribusi sampel (setidaknya masing-masing 10-15 pengamatan) miring dan oleh karena itu prasyarat untuk uji-t yang biasa tidak terpenuhi. Selain itu, terlepas dari jumlah pengamatan, bootstrap non-parametrik mungkin menjadi pilihan wajib ketika data condong positif, karena selalu terjadi untuk biaya perawatan kesehatan.

Carlo Lazzaro
sumber
1
bootstrap mungkin merupakan pilihan wajib ketika data condong positif - mengapa tidak menggunakan distribusi condong lognormal atau serupa? SAS dan R punya banyak pilihan.
James
1
Jawaban James patut dipertimbangkan. Namun, masalah yang biasa saya hadapi dengan data biaya logging adalah transformasi kembali ke metrik asli sebelum menyajikan hasilnya kepada pembuat keputusan. Anda dapat menghindari masalah ini dengan bootstrap non-parametrik.
Carlo Lazzaro
Carlo, karena Anda memiliki pengalaman dengan transformasi log, Anda mungkin ingin menjawab pertanyaan saya yang lain (ada hadiah 50 poin): stats.stackexchange.com/a/111932/54099
James
James, saya telah memberikan jawaban yang menggoda untuk pertanyaan Anda beberapa menit yang lalu.
Carlo Lazzaro
χ 2 1t -tests dapat diperbaiki untuk populasi miring, melihat jstor.org/stable/2286597 - koreksi yang diusulkan bekerja dengan baik dengan populasi cukup miring seperti dengan 10 pengamatan. χ12
StasK
13

Jawaban lain mengkritik kinerja interval kepercayaan bootstrap , bukan bootstrap itu sendiri. Ini masalah yang berbeda.

Jika konteks Anda memenuhi kondisi keteraturan untuk konvergensi distribusi bootstrap (konvergensi dalam hal jumlah sampel bootstrap), maka metode ini akan berfungsi jika Anda menggunakan sampel bootstrap yang cukup besar.

Jika Anda benar - benar ingin menemukan masalah dalam menggunakan bootstrap nonparametric, berikut adalah dua masalah:

(1) Masalah dengan resampling.

Salah satu masalah dengan bootstrap, baik untuk sampel kecil atau besar, adalah langkah resampling. Tidak selalu mungkin untuk melakukan sampel ulang sambil menjaga struktur (ketergantungan, temporal, ...) dari sampel. Contoh dari ini adalah proses superposed .

Misalkan ada sejumlah sumber independen di masing-masing peristiwa terjadi dari waktu ke waktu. Interval antara peristiwa berturut-turut pada salah satu sumber diasumsikan sebagai variabel acak independen semua dengan distribusi yang sama, sehingga masing-masing sumber merupakan proses pembaruan dari jenis yang akrab. Output dari sumber digabungkan menjadi satu output yang terkumpul.

Bagaimana Anda melakukan resample sambil menjaga struktur ketergantungan yang tidak diketahui ?

(2) Sampel bootstrap sempit dan interval kepercayaan bootstrap untuk sampel kecil .

Dalam sampel kecil minimum dan maksimum estimator untuk setiap subsampel dapat menentukan interval sempit, maka titik akhir kanan dan kiri dari setiap interval kepercayaan akan sangat sempit (yang berlawanan dengan intuisi mengingat sampel kecil!) Dalam beberapa model.

Misalkan , di mana adalah kurs. Dengan menggunakan kemungkinan profil Anda dapat memperoleh interval kepercayaan perkiraan (interval kepercayaan perkiraan 95% adalah interval kemungkinan profil tingkat 0.147) sebagai berikut:λ > 0x1,x2Exp(λ)λ>0

set.seed(1)
x <- rexp(2,1)
# Maximum likelihood estimator
1/mean(x)

# Profile likelihood: provides a confidence interval with right-end point beyond the maximum inverse of the mean
Rp <- Vectorize(function(l) exp(sum(dexp(x,rate=l,log=T))-sum(dexp(x,rate=1/mean(x),log=T))))

curve(Rp,0,5)
lines(c(0,5),c(0.147,0.147),col="red")

Metode ini menghasilkan kurva terus menerus dari mana Anda dapat mengekstrak interval kepercayaan. Pengukur kemungkinan maksimum dari adalah . Dengan melakukan resampling, hanya ada tiga nilai yang mungkin yang dapat kita peroleh untuk penaksir ini, yang maksimum dan minimumnya menentukan batas-batas untuk interval kepercayaan bootstrap yang sesuai. Ini mungkin terlihat aneh bahkan untuk sampel bootstrap besar (Anda tidak mendapatkan banyak dengan meningkatkan jumlah ini):λ = 2 / ( x 1 + x 2 )λλ^=2/(x1+x2)

library(boot)
set.seed(1)
x <- rexp(2,1)
1/mean(x)
# Bootstrap interval: limited to the maximum inverse of the mean
f.boot <- function(data,ind) 1/mean(data[ind])
b.b <- boot(data=x, statistic=f.boot, R=100000)
boot.ci(b.b, conf = 0.95, type = "all")
hist(b.b$t)

Dalam kasus ini, semakin dekat dan adalah, semakin sempit distribusi bootstrap, dan akibatnya semakin sempit interval kepercayaan (yang mungkin terletak jauh dari nilai sebenarnya). Contoh ini sebenarnya terkait dengan contoh yang disajikan oleh @GregSnow, meskipun argumennya lebih empiris. Batasan yang saya sebutkan menjelaskan kinerja buruk semua interval kepercayaan bootstrap yang dianalisis oleh @ Wolfgang.x 2x1x2

Troilo
sumber
6

Bootstrap bekerja dengan baik dalam ukuran sampel kecil dengan memastikan kebenaran pengujian (mis. Tingkat signifikansi nominal 0,05 dekat dengan ukuran sebenarnya dari pengujian), namun bootstrap tidak secara ajaib memberi Anda kekuatan ekstra. Jika Anda memiliki sampel kecil, Anda memiliki sedikit kekuatan, akhir cerita.

Regresi parametrik (model linier) dan semiparametrik (GEE) cenderung memiliki sifat sampel kecil yang buruk ... yang pertama sebagai konsekuensi dari ketergantungan besar pada asumsi parametrik, yang terakhir karena perbesaran estimasi kesalahan standar yang kuat dalam sampel kecil. Bootstrap (dan tes berbasis resampling lainnya) berkinerja sangat baik dalam keadaan tersebut.

Untuk prediksi, bootstrap akan memberi Anda perkiraan validitas internal yang lebih baik (lebih jujur) daripada validasi sampel split.

Bootstrapping sering kali memberi Anda lebih sedikit daya sebagai konsekuensi dari mengoreksi prosedur imputasi / hotdecking secara tidak sengaja (seperti pada fuzzy matching). Bootstrap telah secara keliru dimaksudkan untuk memberikan kekuatan lebih dalam analisis yang cocok di mana individu di-resample untuk memenuhi ukuran cluster yang cukup, memberikan set data yang sesuai dengan bootstrap dengan lebih besar daripada dataset analisis.n

AdamO
sumber
2
(mis. tingkat signifikansi nominal 0,05 dekat dengan ukuran sebenarnya dari tes), - tetapi dalam kode R di atas kita hanya melihat bahwa bootstrap tidak mempertahankan ukuran tes, kan?
James
Saya melihat Anda merujuk pada jawaban yang diberikan oleh Greg Snow. Saya terkejut dengan hasil itu. Saya perlu memeriksa ulang fakta saya dan mengedit jawaban saya. Terima kasih.
AdamO