最新閲覧日:

モンテカルロ法を使って計算を行う際に、
ある方法を用いて乱数列を発生させ、それを用いて行いました。

この乱数列は50の区分に分けた後、
カイ2乗分布による危険率1%の頻度検定
に合格したものを用いたのですが、
これではモンテカルロ法による計算を行うには
正しいとはいえないとのことでした。

これはなぜなのでしょうか。

確かに、50区分の頻度検定だけでは、
極端な話、周期50の数列がちょうど50区分に分かれて発生していて
結果として一様乱数となっているような場合も考えられます。

それでは、周期が計算に必要な乱数の数に対して十分に大きいとき、
モンテカルロ法として正しいと言えるようになるのでしょうか?

解説をよろしくお願いします。

A 回答 (1件)

最も極端な話、arguistさんの作った「(疑似)乱数列」r[n] が


1,2,3,4,.......,50, 1.5,2.5,3.5, ...., 50.5, 1.25,2.25, ....., 50.25, 1.75,2.75, ...., 50.75, 1.125, ....
だったとしましょうか。
χ二乗検定は完璧にパスしそうですね。周期はない。十分周期が長いわけです。
で、これを使って、50個の要素からなる列x[j] (j=1,2,...,50)から二つのサンプルを取り出すのに
x[r[n]の整数部分], x[r[n+1]の整数部分]
という風にやったとすると、ほとんどいつも、列xの中から隣り合う二つの要素を拾い出すことになります。
x[j]がjに多少とも依存するものであったとすれば、(たとえば、最も極端な場合 x[j] = j だったとすれば)選ばれた二つのサンプルには相関がある。
 そういうわけで、一連の部分列r[n],r[n+1],...,r[n+m-1]に相関があってはまずいわけです。m=2の場合ならX[n]=r[n], Y[n]=r[n+1] として、(X[n],Y[n])を2次元のグラフにプロットしてみれば一目瞭然でしょう。

もちろん、「乱数列」をどう使うかにも依ります。滑らかな関数f(x)の定積分をするためにこの乱数列を用いても多分問題はない。単に等間隔にサンプルを採って平均を求めるんですから、丁度50の倍数の個数のサンプルを採るか、あるいはうんと沢山のサンプルを採れば、大抵正解に近い値が得られるでしょう。
しかし、2変数関数f(x,y)の定積分をしたくてx,yを選ぶのにこの「乱数列」を使っちゃうとダメなのはもうお分かりですね。

 一般に、モンテカルロ法というのは相手にしている関数が多変数である場合、とくにその変数の数が多くて等間隔にサンプリングしてたんじゃとても計算が終わらないや、って場合にこそ有用な方法ですから、部分列r[n],r[n+1],...,r[n+m-1]の無相関性が非常に重要になります。
    • good
    • 0
この回答へのお礼

 なるほど。よくわかりました。
 例えば、1本の乱数列から交互に要素をとって(A列:2n-1番目の数、B列:2n版目の数など)計算をする場合には、A列とB列が無相関であることが重要なわけですね。
 そういえば、連の検定とか系列相関検定とかあったのを思い出しました。
 ありがとうございました。

お礼日時:2001/05/29 16:56

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード


人気Q&Aランキング

おすすめ情報