多分この質問は与えられたデータに依存しますが、他のものより「より良い」ブートストラップ方法はありますか?私は単に1つの変数のデータセットを使用しています(これは、過去15週間のフットボールのスコア(2チーム)の違いで構成されています)。
最初にこのデータの正しいスキューに注意してください。これは、データの表現に「より良い」または最も正確であると私が推奨するブートストラップを考慮に入れるように感じます。
まず、標準のブートストラップ間隔です
N <- 10^4
n <- length(Differences)
Differences.mean <- numeric(N)
for(i in 1:N)
{
x <- sample(Differences, n, replace = TRUE)
Differences.mean[i]<- mean(x)
}
lower = mean(Differences.mean)-1.96*sd(Differences.mean) #Lower CI
upper = mean(Differences.mean)+1.96*sd(Differences.mean) #Upper CI
= (8.875, 10.916)
mean(Differences.mean)-m #The bias is fairly small also
= -.0019
これがブートストラップ百分位間隔です
quantile(Differences.mean,c(.025,.975)
= (8.893, 10.938)
最後に、ここにブートストラップT間隔があります
Tstar = numeric(N)
for(i in 1:N)
{
y =sample(Differences, size = n, replace = TRUE)
Tstar[i] = (mean(y)-m) / (sd(y)/sqrt(n))
}
q1 = quantile(Tstar,.025) #empirical quantiles for bootstrap t (lower)
q2 = quantile(Tstar,.975) #empirical quantiles for bootstrap t (upper)
mean(Differences)-(q2*sd(Differences/sqrt(n)))
mean(Differences)-(q1*sd(Differences/sqrt(n)))
= (8.925, 10.997)
さらに、t信頼区間もかなり正確に見えます
t.test(Differences, conf.level = .95, alternative = "two.sided")
= (8.867, 10.928)
私の結論は、ブートストラップt間隔を選択することです。これは、データの正しいスキューを反映し、他のどの間隔よりもさらに右に引き伸ばされているためです。私のサンプルサイズは224です。サンプルサイズは私の結論に大きな役割を果たしていると思いますが、最初の質問は「他より優れたブートストラップ方法はありますか?」でした。多分それは本当にデータとサンプルサイズに依存します。うまくいけば、これは広すぎません。