Saya memiliki pertanyaan berikut untuk kursus yang sedang saya kerjakan:
Lakukan studi Monte Carlo untuk memperkirakan probabilitas cakupan interval kepercayaan bootstrap normal standar dan interval kepercayaan bootstrap dasar. Sampel dari populasi normal dan periksa tingkat cakupan empiris untuk rata-rata sampel.
Probabilitas cakupan untuk CI bootstrap normal standar mudah:
n = 1000;
alpha = c(0.025, 0.975);
x = rnorm(n, 0, 1);
mu = mean(x);
sqrt.n = sqrt(n);
LNorm = numeric(B);
UNorm = numeric(B);
for(j in 1:B)
{
smpl = x[sample(1:n, size = n, replace = TRUE)];
xbar = mean(smpl);
s = sd(smpl);
LNorm[j] = xbar + qnorm(alpha[1]) * (s / sqrt.n);
UNorm[j] = xbar + qnorm(alpha[2]) * (s / sqrt.n);
}
mean(LNorm < 0 & UNorm > 0); # Approximates to 0.95
# NOTE: it is not good enough to look at overall coverage
# Must compute separately for each tail
Dari apa yang telah saya pelajari untuk kursus ini, interval kepercayaan bootstrap dasar dapat dihitung seperti ini:
# Using x from previous...
R = boot(data = x, R=1000, statistic = function(x, i){ mean(x[i]); });
result = 2 * mu - quantile(R$t, alpha, type=1);
Itu masuk akal. Yang tidak saya mengerti adalah bagaimana menghitung probabilitas cakupan untuk CI bootstrap dasar. Saya memahami bahwa probabilitas cakupan akan mewakili berapa kali CI berisi nilai sebenarnya (dalam kasus ini mu
). Apakah saya hanya menjalankan boot
fungsi berkali-kali?
Bagaimana saya bisa mendekati pertanyaan ini secara berbeda?
sumber
size=100
salah ketik? Saya tidak percaya Anda mendapatkan batas kanan atas dan bawah karena ukuran sampel implisit tampaknya 1000 ketika Anda menghitung CI Anda dalam loop (karena Anda gunakansqrt.n
dalam perhitungan). Juga, mengapa Anda membandingkanmu
dan bukan 0 secara langsung (yang terakhir menjadi mean sebenarnya)?smpl = x[sample(1:n, size = 100, replace = TRUE)];
dapat disederhanakan menjadismpl = sample(x, size=100, replace=TRUE)
.mu
menjadi 0. CI normal berfungsi dengan baik, itu adalah bootstrap CI dasar yang saya mengalami kesulitan.Jawaban:
Terminologi ini mungkin tidak digunakan secara konsisten, jadi berikut ini hanya bagaimana saya memahami pertanyaan aslinya. Dari pemahaman saya, CI normal yang Anda hitung bukanlah yang diminta. Setiap set replikasi bootstrap memberi Anda satu interval kepercayaan, tidak banyak. Cara untuk menghitung berbagai tipe CI dari hasil satu set replikasi bootstrap adalah sebagai berikut:
Karena saya ingin membandingkan perhitungan dengan hasil dari paketM⋆ μ σ 2 M tS2⋆M σ2M t
boot
, saya pertama-tama mendefinisikan fungsi yang akan dipanggil untuk setiap ulangan. Argumennya adalah sampel asli, dan vektor indeks menentukan kasus untuk satu ulangan. Ia mengembalikan , estimasi plug-in untuk , serta , estimasi plug-in untuk varian mean . Yang terakhir hanya diperlukan untuk bootstrap -CI. μ STanpa menggunakan paket,
boot
Anda cukup menggunakanreplicate()
satu set replikasi bootstrap.Tapi mari kita tetap dengan hasil dari
boot.ci()
memiliki referensi.Dasar, persentil, dan -CI bergantung pada distribusi empiris dari estimasi bootstrap. Untuk mendapatkan kuantil dan , kami menemukan indeks yang sesuai dengan vektor yang diurutkan dari perkiraan bootstrap (perhatikan bahwa akan melakukan interpolasi yang lebih rumit untuk menemukan kuantil empiris ketika indeks bukan bilangan alami) .α / 2 1 - α / 2t α/2 1−α/2
boot.ci()
Untuk -CI, kita membutuhkan estimasi bootstrap untuk menghitung nilai- kritis . Untuk CI normal standar, nilai kritis hanya akan menjadi nilai dari distribusi normal standar.t ⋆ t zt t⋆ t z
Untuk memperkirakan probabilitas cakupan tipe-CI ini, Anda harus menjalankan simulasi ini berkali-kali. Hanya membungkus kode menjadi suatu fungsi, mengembalikan daftar dengan hasil-CI dan menjalankannya dengan
replicate()
seperti yang ditunjukkan dalam inti ini .sumber
computeCIs
dan memanggilresults = replicate(500, computeCIs());
. Pada akhirnyacomputeCIs
kembalic(ciBasic, ciPerc)
. Untuk menguji probabilitas cakupan, bukankah sebaiknya saya menguji untukmean(results[1, ] < 0 & results[2, ] > 0)
menguji untuk semua Basic CI yang mengandung mean yang sebenarnya (probabilitas cakupan)? Ketika saya menjalankan ini, saya mengerti1
ketika saya pikir saya harus mendapatkannya0.95
.pastebin.com/qKpNKK0D
rusak. Sangat menghargai jika Anda memperbaruinya dan menyediakan fungsi lengkap dan simulasi penuh. Terima kasih