• ベストアンサー

Monte Carlo法 (ガウシアンノイズの付加)

Monte Carlo法とやらで、あるデータ解析の時に下記の 手順で解析を行なっているという研究論文がありました。 こうすることの利点とは何なのでしょうか? また、 この手法についてはどの本などで紹介されていますでしょうか? ------------------------------------------------------ ある複数のパラメータで変化するデータがあります。 そのデータにガウシアンノイズ(分布分散シグマ)を与えて 1000セットのデータを作ります。 1000セットのそれぞれのデータからInverse methodにて もとのパラメータのセットを別々に1000個求めて、これを 平均します。 ------------------------------------------------------

質問者が選んだベストアンサー

  • ベストアンサー
  • stomachman
  • ベストアンサー率57% (1014/1775)
回答No.2

 直接測れないものx(ご質問で言うところのパラメータのひとつ)を x= g(y[1],y[2],…,y[k]) という関係にあるy[1],y[2],…,y[k]を測定することで推定したい。ただし、y[1],y[2],…,y[k]の測定にも誤差(これらは互いに無相関)があって、そのせいでg(y[1],y[2],…,y[k])を計算した結果にも誤差が出る。  このとき、もし測定誤差が十分小さくて、その範囲ではg( )が一次式で近似できるというのなら、∂g/∂y[j]を計算すれば、y[j]の誤差がxの推定値にどれだけの影響を与えるかを見積もれる。(感度分析)  けれども、yの誤差が十分小さいかどうかを検討することや、∂g/∂y[j]を計算することが結構難しいような場合(例えば、gの式が複雑だったり、gがアルゴリズムとしてしか与えられていないなど)に、もし、g( )の非線形性があまり強くなくて、y[1],y[2],…,y[k]それぞれの分散σ[1]^2, σ[2]^2, …, σ[k]^2がおおよそ分かっているなら、 y[j] = (平均Y[j]、分散σ[j]^2 の正規分布に従う乱数) によってデータを沢山(ご質問では1000個)作り、xを計算して分布を調べる という手は確かに有効です。これによって、難しい検討など一切抜きにして、「g( )で計算したxの推定値にはどれぐらいの誤差があるか」が見積もれる。xの推定値の(平均ではなく)分散の方にこそ興味がある訳です。  もっときちんと言うと、「この計算に使ったY[1],Y[2],…,Y[k]の値に近いy[1],y[2],…,y[k]が与えられたときに、g( )で計算したxの推定値が持つ誤差の程度」が分かる訳です。だから、何通りかY[1],Y[2],…,Y[k]のセットについてこの計算をしてみれば、「ある範囲内のy[1],y[2],…,y[k]において、g( )で計算したxの推定値の誤差は高々いくら」ということも言えるでしょう。

noname#29127
質問者

お礼

上記説明で良く分かりました。ありがとうございました。

その他の回答 (3)

  • stomachman
  • ベストアンサー率57% (1014/1775)
回答No.4

 ご質問について再度考えてみましたが、やはりANo.2の通り、感度分析を目的とした計算であって、どうもブートストラップ法とは違うように思うんです。  ブートストラップ法だとすると、「パラメータが未知の分布」に従う標本をいっぱい集める必要があるでしょう。分布全体からまんべんなくサンプルを取るわけです。  でもご質問では、あるデータがあって、それにガウシャンノイズを加えたサンプルを作ることになっている。これで得られるのは、その「あるデータ」(実現値)の近辺における情報だけです。こういう、局所的なサンプリングだけでブートストラップのようなことができるものでしょうか。  しかも、その局所的サンプルからパラメータがinversionできるという。ならばご質問で言う「パラメータ」とは、「分布のパラメータ」のことではなくて、そのパラメータを決めればデータの「実現値」が(多少のノイズはあるかも知れないが)一意的に決まるという話だろうと考えられます。

noname#29127
質問者

お礼

回答ありがとうございました。返事が遅くなりました。

回答No.3

これはブートストラップ法だと思います。ブートストラップ法は標本のリサンプリングを繰り返して情報を徹底的に絞り出すような方法です。 パラメータθを持つ分布Fθからの標本をX1, X2,…,Xn 、θの推定量を θ推定(X1,…,Xn) とします。 例)  平均θの分布で標本平均Xbar=(X1+‥+Xn)を考えると  θ = E[Xbar] = ∫Xbar d Fθ …(1) X1,…,Xn の実現値をx1,…,xn として経験分布を  F経験(x) = (1/n)Σ Θ(xi - x) で定義します。ここでΘ(x)は階段関数です。θは(1)のように推定量と 分布Fθで表わされますが、Fθは未知なので経験分布で代用するのが通常の点推定の方法です。これに対し経験分布からモンテカルロ法で標本x1*, …xn* を抽出して(1)のようにパラメータを推定し、さらに平均をB回のリサンプリングで置き換えることが考えられます。これがブートストラップ法です。ブートストラップ法の利点は(1)のような期待値が解析的に計算が難しい時にも容易に適用できることです。nが大きければ中心極限定理により   T= √n(θ推定 - θ)/σ推定 の分布は標準正規分布で近似できるので、経験分布をこれで近似したものがご質問の方法だと思います 参考書) Efron, Tibshirani;An Introduction to the Bootstrap,(1993) 汪金芳、田栗正章「統計科学のフロンティア11巻 計算統計1」(2003)

noname#29127
質問者

お礼

回答ありがとうございました。返事が遅くなりました。

noname#21330
noname#21330
回答No.1

y=f(x) という関数があり、yがガウス分布に従う場合に、xの出現の平均を求める場合に本方式は有効では? Monte Carlo法、モンテカルロ法は、乱数を使う方式で、ある程度収束が早いとされています。例えば、ある変数f(x)の積分を求める場合、台形公式で、細かい精度で端から順に計算すると、最後まで計算しないと答えはわかりませんが、xを一様乱数にし、ランダムに面積を求めていくと、少ないサンプルでなんとなく面積が見えてきます。

関連するQ&A