私は統計学者ではありません。ですから、もしあれば、私の失敗に耐えてください。
シミュレーションがどのように行われるかを簡単な方法で説明していただけますか?正規分布からランダムなサンプルを選び、シミュレーションに使用することは知っています。しかし、明確に理解しないでください。
私は統計学者ではありません。ですから、もしあれば、私の失敗に耐えてください。
シミュレーションがどのように行われるかを簡単な方法で説明していただけますか?正規分布からランダムなサンプルを選び、シミュレーションに使用することは知っています。しかし、明確に理解しないでください。
回答:
統計学では、シミュレーションはメソッドのパフォーマンスを評価するために使用されます。通常、理論的な背景がない場合に使用されます。シミュレーションでは、統計学者は真実を知り、制御します。
シミュレーションは、多くの状況で有利に使用されます。これには、サンプリング分布の経験的推定の提供、統計的手順における仮定の誤った仕様の調査、仮説検定における検出力の決定などが含まれます。
シミュレーション研究は多くの厳密さで設計されるべきです。バートン等。(2006)彼らの論文「医療統計におけるシミュレーション研究の設計」で非常に素晴らしい概観を与えました。さまざまな状況で行われたシミュレーション研究が参考文献に記載されています。
簡単な実例 線形モデルについて考えてみましょう
> #------settings------
> n <- 100 #sample size
> mu <- 5 #this is unknown in practice
> beta <- 2.7 #this is unknown in practice
> sigma <- 0.15 #this is unknown in practice
> #--------------------
>
> #------set the seed so that this example can be replicated------
> set.seed(937)
> #---------------------------------------------------------------
>
> #------generate 1000 data sets and store betaHat------
> betaHat <- numeric(1000)
> for(i in 1:1000)
+ {
+ #generate the binary covariate --> n Bernoulli trials
+ x <- sample(x=c(0, 1), size=n, replace=TRUE, prob=c(0.5, 0.5))
+ #generate the errors
+ epsilon <- rnorm(n=n, mean=0, sd=sigma)
+ #form the response variable
+ y <- mu + beta * x + epsilon
+ #the ith generated data set
+ data_i <- data.frame(y=y, x=x)
+ #fit the model
+ mod <- lm(y~x, data=data_i)
+ #store the estimate of beta
+ betaHat[i] <- as.numeric(coef(mod)[2])
+ }
> #-----------------------------------------------------
>
> #------E(betaHat) = beta?------
> mean(betaHat)
[1] 2.698609
> #------------------------------
注:上記で参照した論文の編集者への手紙があります。
まず、統計にはさまざまな種類のシミュレーションがあり、さらに周辺の分野にもシミュレーションがあります。「シミュレーション」と言っても、「モデル」と同じくらい便利です。つまり、それほど多くはありません。
残りの質問に基づいて、モンテカルロシミュレーションを意味すると思いますが、それでも少しあいまいです。基本的に、既知のランダムな特性を持つ人工母集団に対して統計分析を行うために、分布(正常である必要はありません)からサンプルを繰り返し描画します。
この目的は、次の2つのカテゴリに分類される傾向があります。
私のメソッドはXを処理できますか?:基本的には、既知の「正しい」答えで一連の多数のランダムな母集団をシミュレートして、新しい手法で正しい答えが返されるかどうかを確認します。基本的な例として、XとYの2つの変数間の相関を測定する新しい方法だと考えたものを開発したとします。Yの値がXの値に依存する2つの変数をシミュレーションします。ランダムノイズ。たとえば、Y = 0.25x +ノイズ。次に、Xのランダムな値、Yのいくつかの値が0.25x +乱数、おそらく数千回である母集団を作成し、平均して、新しい手法がその数を出力することを示します。 Y = 0.25xであることを正しく示します。
何が起こるか?シミュレーションは、既存のスタディの感度分析として実行できます。たとえば、私がコホート研究を行ったとしましょう。しかし、私の暴露測定値があまり良くないことを知っています。それは、不適切なときに30%の私の被写体を露出として分類し、不適切なときに私の被写体の10%を非露出として分類します。問題は、私にはもっと良いテストがないので、どちらが正しいかわかりません。
私は自分の母集団を取り、露出した各被験者に30%の確率で非露出に切り替え、露出していない各被験者に10%の確率で露出に切り替えます。次に、何千もの新しい母集団を作成し、どの被験者が切り替わるかをランダムに決定して、分析を再実行します。これらの結果の範囲は、すべての人を正しく分類できた場合、私の研究結果がどの程度変化するかを正確に推定するのに役立ちます。
もちろん、いつものように、どれだけ掘り出したいかに応じて、シミュレーションの複雑さ、ニュアンス、およびユーティリティが大きくなります。
シミュレーションを使用して、理論的な条件下で実際のプロセスを調べることもできます。これらのプロセスには非線形入力があります。たとえば、製造会社は生産ラインの追加が費用対効果に優れているかどうかに関心があり、コールセンターはオペレーターの周りに通話をルーティングして、発信者の待機時間とバルキングレートを削減する方法に関心がある場合があります。スタッフを名簿に入れて患者を転送するのに最適な方法に興味がある、または出荷港がコンテナの操作をレイアウトする最も効率的な方法に興味があるかもしれません。離散イベントシミュレーションを使用してこれらのプロセスをモデル化でき、「what if」タイプの質問に答えるためにパラメーターを調整できます。
シミュレーションのもう1つの関心領域は、複雑なシステムです。特に社会科学では、エージェントベースのシミュレーションは、より多くの支持者を集め始めている興味深いタイプのシミュレーションです。エージェントベースのシミュレーションでは、エージェント(たとえば、個々の人々)にパーソナリティなどの属性が与えられ、相互に作用するため、カオスシステムをモデル化します。エージェントベースのシミュレーションは、周囲のエージェントが互いに及ぼす影響を調べ、距離による影響を含めることができます。私はエージェントベースのシミュレーションを自分で行ったことはありませんが、先史時代のコミュニティにおける人口規模の地理的な広がりなどのシステムをモデル化するために使用されるのを見てきました。