t間隔をブートストラップ間隔と比較し、両方のカバレッジ確率を計算するクラスのデモを行いたいと思いました。歪んだ分布からデータを取得したいのでexp(rnorm(10, 0, 2)) + 1
、シフトした対数正規分布からサイズ10のサンプルとしてデータを生成することにしました。1000個のサンプルを描画するスクリプトを作成し、各サンプルについて、1000回の繰り返しに基づいて95%のt間隔と95%のブートストラップパーセンタイル間隔の両方を計算しました。
スクリプトを実行すると、両方の方法の間隔は非常に似ており、両方のカバレッジ確率は50〜60%です。ブートストラップの間隔の方が良いと思ったので驚きました。
私の質問は
- コードを間違えた?
- 間隔の計算を間違えましたか?
- ブートストラップ間隔がより良いカバレッジプロパティを持つことを期待することでミスを犯しましたか?
また、この状況でより信頼性の高いCIを構築する方法はありますか?
tCI.total <- 0
bootCI.total <- 0
m <- 10 # sample size
true.mean <- exp(2) + 1
for (i in 1:1000){
samp <- exp(rnorm(m,0,2)) + 1
tCI <- mean(samp) + c(1,-1)*qt(0.025,df=9)*sd(samp)/sqrt(10)
boot.means <- rep(0,1000)
for (j in 1:1000) boot.means[j] <- mean(sample(samp,m,replace=T))
bootCI <- sort(boot.means)[c(0.025*length(boot.means), 0.975*length(boot.means))]
if (true.mean > min(tCI) & true.mean < max(tCI)) tCI.total <- tCI.total + 1
if (true.mean > min(bootCI) & true.mean < max(bootCI)) bootCI.total <- bootCI.total + 1
}
tCI.total/1000 # estimate of t interval coverage probability
bootCI.total/1000 # estimate of bootstrap interval coverage probability