ブートストラップ、モンテカルロ


12

宿題の一部として次の質問が設定されました。

データの1変量サンプルの平均で95%の信頼区間を取得するためのブートストラップのパフォーマンスを調べるシミュレーションスタディを設計および実装します。RまたはSASで実装できます。

確認したいパフォーマンスの側面は、信頼区間カバレッジ(つまり、信頼区間に真の平均が含まれる割合)とモンテカルロ変動(つまり、シミュレーション間で信頼限界の上限と下限がどれだけ変化するか)です。

誰かがこれのモンテカルロ変動の側面に取り組む方法を知っていますか?アルゴリズムなど何も考えられないようです。それはモンテカルロ統合と関係がありますか?ありがとう!

回答:


18

ブートストラップ手順とモンテカルロ手順の間のこの混乱は繰り返し発生し続けるので、おそらくこれはそれに対処するのに最適な場所です。(Rコードの例は宿題にも役立ちます。)

のブートストラップのこの実装を検討してくださいR

boot <- function(x, t) { # Exact bootstrap of procedure t on data x
    n <- length(x)       # Must lie between 2 and 7 inclusive.
    if (n > 7) {
        stop("Sample size exceeds 7; use an approximate method instead.")
    }
    p <- c(n, 1:(n-1))
    a <- rep(x, n^(n-1))
    dim(a) <- rep(n, n)
    y <- as.vector(a)
    while (n > 1) {
        n <- n-1
        a <- aperm(a, p)
        y <- cbind(as.vector(a), y)
    }
    apply(y, 1, t)
}

ざっと見てみると、これは確定的な計算であることが確認できます。ランダムな値は生成または使用されません。(その内部の仕組みの詳細は、興味のある読者が自分で理解できるように残しておきます。)

への引数bootは、配列内の数値データのバッチと、単一の数値を返す関数へのx参照t(配列とまったく同じように適用できますx)です。つまり、t統計です。可能なすべてのサンプルを生成し、それぞれにx適用tして適用することで、そのようなサンプルごとに1つの数値を生成します。つまり、簡単に言えば、ブートストラップです。戻り値は、サンプルのの正確なブートストラップ分布を表す配列です。tx

小さな例として、サンプルの平均をブートストラップしてみましょうx= c(1,3)

> boot(c(1,3), mean)
> [1] 1 2 2 3

2(1,3)(1,1)(1,3)(3,1)(3,3)boottt1223、出力に示されているように、それぞれ。

(1,3,3,4,7)

hist(boot(c(1,3,3,4,7), sd))

SDのヒストグラム

5

> set.seed(17)
> quantile(boot(runif(5, min=0, max=10), sd), .95)[1]
     95% 
3.835870 

この特定のランダムサンプルの結果は3.83587です。これは明確です。同じデータセットでboot再度電話をかけたとしても、答えはまったく同じです。しかし、ランダムなサンプルが異なると、答えはどのように変わるでしょうか?このプロセスを数回繰り返し、結果のヒストグラムを描画することで確認します。

> boot.sd <- replicate(100, quantile(boot(runif(5, min=0, max=10), sd), .95)[1])
> hist(boot.sd)

シミュレーションのヒストグラム

01010/122.887

> length(boot.sd[boot.sd >= 10/sqrt(12)]) / length(boot.sd)
[1] 0.75

しかし、それは私たちが指定した(そして期待していた)名目上の95%にはほど遠いです!これはシミュレーションの1つの価値です。これは、私たちの期待と実際に起こっていることを比較します。(なぜ不一致なのでしょうか?SDのブートストラップは本当に小さなサンプルではうまく機能しないためです。)

レビュー

  • ブートストラップ統計は、概念的には平均や標準偏差などの他の統計とまったく同じです。計算に時間がかかる傾向があるだけです。(bootコードの警告メッセージを参照してください!)

  • モンテカルロシミュレーションは、サンプル取得のランダム性が原因でブートストラップ統計がどのように変化するかを調べるのに役立ちます。このようなシミュレーションで観察された変動は、サンプルの変動によるものであり、ブートストラップの変動によるものではありません

  • nnn


+1これはとてもいいです。私はそれをもっと上手くやれたとは思いません!エラーレートの推定におけるブートストラップのパフォーマンスと、分散を推定するときの信頼区間に関する論文があることを付け加えます。これらの結果は、第二私のブートストラップ法の本の版とR.へのアプリケーションとブートストラップの私の本の中で見つけることができます
マイケルR. Chernick


既知の分布からのデータをシミュレートすることが目的のブートストラップ手順(パラメーターの信頼区間や分類器のエラー率の推定など)を適用することをシミュレートすることであり、真実を知っているので、それがどれだけうまく機能するかを評価できます。
Michael R. Chernick

5

ブートストラップはモンテカルロ技術であり、ある種のランダムサンプリングが含まれます。同じデータセットに対してブートストラップを2回実行すると、異なる答えが返されます。ブートストラップで使用するサンプルが多いほど、得られるバリエーションは少なくなります。

カバレッジとは、同じ仮想サンプリング分布からの異なるデータセットの結果の変動を指します。


おかげで、シミュレーション間で信頼限界が異なるかどうかを確認するためのコードを作成することは、単なる手段だと思います!
サラ、

7
正確に言うと(詳細は?)、ブートストラップ自体がモンテカルロ法ではないことを明確にする必要があります。ただし、対象となる特定の量を計算することが難しい場合があるため、通常はモンテカルロシミュレーションを使用して近似されます。問題の文言も誤解されやすいと思います!一つは区別することに注意する必要があり標本誤差からモンテカルロ近似エラー。後者は、指摘するように、同じサンプルでMCブートストラップ近似を何度も繰り返すことによってのみ、賢明に推定されます。:)
枢機卿

1

モンテカルロバリエーション」それ自体が正確に何を意味するのかもよくわかりません。確かに、上限(または下限)の値(ヒントなど)のようなものの反復間にどれだけのばらつきがあるかを調べることが可能であるべきです。おそらく、彼らはあなたにモンテカルロのためだけにこれをしてもらい、ブートストラップのためにそうしてほしくないのでしょうか?しかし、それは私が演習に必要とする要件ではありません。その語句が何を意味するかを尋ねるのが最善の場合があります。


ご協力いただきありがとうございます!多分私は今のところ上限と下限の間の変動を見て、後でモンテカルロについて尋ねます。さて、私がそれについてどうするかを
サラ

ここにはいくつかの可能性があります。1つは上下(つまり、違い)です。質問の言い回しの私の解釈は、上限の変動と下限の変動(つまり、2つの異なる変動)ですが、確信が持てないと思います。別の言い方をすると、RでMCシミュレーションを実行する方法についての質問の一部ですか?
ガン-モニカの復活

2種類のバリエーションも探しているという結論に至ったので、やってみようと思います!
サラ

1
結局のところ、私が今疑問に思っていることは、この時点で行ってもいいですか、それとも質問が求めていると私たちが推測したことへのアプローチ方法について追加のヒントが必要ですか?
gung-モニカの復活

1
それで、各反復で、上限と下限(ヒント)を保存していますか?
ガン-モニカの復活

1

この宿題の割り当てについての私の理解は、特定の統計的手法についてモンテカルロシミュレーションを行うように求めているということです。つまり、ランダムなデータセットの束をシミュレートし、この手法をこれらのデータセットに適用し、数値を保存して後で便利な方法で要約します(手段、シミュレートされた確率など)。

現在、問題となっている手法はブートストラップであり、その中にモンテカルロシミュレーションが含まれています(whuberが示しているように、正確なブートストラップを実行するように求められている場合を除きます)。したがって、シミュレーションの結果として、サンプル平均、サンプル標準偏差、およびブートストラップによって取得された平均の信頼区間の限界を格納している可能性があります。

n=10


3
正確なブートストラップを使用して学んだことの1つは、標準の通常の理論のCIは、サンプルが歪んでいる場合でも、小さいサンプルを使用すると多くの場合はるかにうまく機能することです。ブートストラップは大量のサンプルを使用して独自に作成されます。理論は漸近的なものであり、正確なものではありません。
whuber

2
@whuber、それは興味深い観察です。私は通常、ブートストラップの漸近的な性質を強調します(理由を理解するには、Peter HallのThe Bootstrap and Edgeworth Expansionsの本を参照してください)が、今回は失敗しました。
StasK 2012
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.