• ベストアンサー

正規乱数

正規乱数X(平均0、分散1)をN個発生させたとします。 Xの最大値Xmaxの期待値はどのように求めたらよいでしょうか?

noname#108554
noname#108554

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

  • ベストアンサー
  • kony0
  • ベストアンサー率36% (175/474)
回答No.1

標準正規分布の密度関数f(x), 分布関数F(x)としたときに Xmaxの密度関数は、N*F(x)^(N-1)*f(x)となることはよろしいかと思います。 ということで、∫(-∞~+∞)Nx*F(x)^(N-1)*f(x) dx を計算・・・ すればよいのですが、F(x)を求めるだけでもわけわかんないので、あとはExcelかプログラムの力をお借りするのがよろしいかと思います。

noname#108554
質問者

お礼

ありがとうございます! とりあえず、N=2のときは、解析的に出せたのですが、 N>=3では、私の数学の腕では求められませんでした。 N→∞の極限での式を解析的に出したいのですが、 どうでしょうか?

その他の回答 (3)

  • fujeira
  • ベストアンサー率50% (1/2)
回答No.4

N→∞のとき、Xmax→∞です。 箱の中にm個のボールが入っているとします。ボールには0~m-1の数字が書かれています。mとしては大きな数を想定します。 ボールをランダムに取り出す操作をN回繰り返したとき、最も数字の大きかったボールの全m個中の順位の平均は、およそ上位1/(N+1)になります。 数字が0~m-1の整数でなくて、正規分布に従う乱数が書かれているとしても、この順位は同じです。 いま、mがものすごく大きくなったとすると、上位から1/(N+1)のところの値というのは、結局、正規分布の上側確率が1/(N+1)となるところを求めることを意味します。 つまり、f(z)を正規分布の確率密度関数とすると、 ∫(z~∞)f(z)dz=1/(N+1) となるzが、質問のXmaxの期待値となります。

noname#108554
質問者

お礼

いや、まあ、確かにそうなんですが、 いちおう目標はNo.2のお礼にも書いたように 「N→∞で、Xmax~log2(N)/2のオーダー」であることを示すことなんです。 たまに見てますのでよろしければ投稿をお願いします。

noname#108554
質問者

補足

グンベル「極値統計学」によると、 Xmax~√(2log(0.4N)) になるそうです。 お付き合いいただきありがとうございました。

  • fujeira
  • ベストアンサー率50% (1/2)
回答No.3

E(max{xi})i=1...N xiは正規乱数 N=1のとき、0 N=2のとき、0.430727596 N=3のとき、0.674490366 N=4のとき、0.841621386 … ではないでしょうか? G(x):正規分布上側確率関数の逆関数とするとき、 G(1/(N+1))です。 Excelの関数で言うと、  -NORMSINV(1/(N+1)) です。

noname#108554
質問者

お礼

N→∞での振る舞いを知りたいのですが、どうでしょうか?

  • sen-sen
  • ベストアンサー率31% (66/211)
回答No.2

ブートストラップ法でシミュレーションして、その信頼区間を求めるのはいかがでしょうか。

noname#108554
質問者

お礼

解析的に出したいのですが・・・ 実際にシミュレーションを行ったところ、 N→∞で、Xmax~log2(N)/2のオーダーのようです。 この式ぐらいは出したいな、と。

関連するQ&A

  • 任意の標準偏差で正規分布の乱数を発生させたい

    2次元の正規分布の乱数を発生させたいんですが、 調べたところ、 平均0、分散1の正規分布の乱数の発生方法アルゴリズムが以下のものになることがわかりました。 「Box-Maller法:区間(0,1)の2個の一様乱数x1,x2と2個の量y1,y2との間の変換 y1=sqrt(-2*ln(x1))*cos(2*Pi*x2) y2=sqrt(-2*ln(x1))*sin(2*Pi*x2)」 ここで、平均0、分散0.2の正規分布の乱数を発生させたいのですが、どうすればよいでしょうか? 単純にy1,y2に0.2を掛けるだけでもできますが、これは数学的に正しいのでしょうか?

  • 標準正規分布の乱数

    RAND()関数は ((double)rand() / (1.0 + RAND_MAX))と定義します。 中心極限定理により、一様乱数を足し合わせると正規分布に近づくことから、 x = 分散 * (Σ[1~12]RAND() - 6) + 平均 で正規乱数が作れる。標準正規分布は分散1、平均0なのでその乱数は x = Σ[1~12]RAND() - 6 ですよね。この乱数を例えば100個羅列するにはどうしたらいいのでしょうか? もし間違ってたら指摘してください。 参考文献「Cによるシミュレーションプログラム 石川宏」 #include <stdio.h> #include <stdlib.h> #define RAND() ((double)rand() / (1.0 + RAND_MAX)) #define NUMBER 10000 /* 発生させる乱数の数 */ main(void) { int j; double u, x; srand(5); for (j = 0; j <= 11; j++) { u = u + RAND(); } x = u - 6.0; }

  • 多次元正規乱数が正しく生成されているか確認するには?

    多次元正規乱数に従うサンプルを生成したく,以下の資料を参考にし,プログラムを作成しました。生成したサンプルが本当に要求した多次元正規乱数にしたがっているか確認したいのですが,以下の手順で正しいといえるでしょうか? 例: 平均μ=[1; 2] 分散協分散行列 Σ=[1,0;    0,1]; に従う多次元正規乱数y=[y1,y2]を全部でn=100サンプル生成した. このとき,n=100個のy1の平均が1,n=100個のy2の平均が2となり, n=100個のy1の分散が1,n=100個のy2の分散が1,y1とy2の共分散が0となれば正しく生成できているといってよいでしょうか? この方法で確認したのですが,生成したサンプルが元の平均,共分散から0.1~0.2のずれがあり正しいのか不安です。 参考にした資料: 「多次元正規乱数の作成法」 http://ci.nii.ac.jp/naid/110001186428/ja 「共分散の計算の仕方」 http://www.ge.fukui-nct.ac.jp/~nagamizu/f-3-s.pdf

  • 正規乱数とは

    学校の宿題ですがまず正規乱数の発生は2つの方法があるというのですが、意味がわかりません。 正規乱数でなんですか。 なぜ12個足して6をひくのですか。 また逆関数法の=NORMSINV(RAND()) てどういう意味ですか。 正規乱数の発生 1 一様乱数を12個足して6を引く方法 =RAND()+RAND()+・・・・+RAND() - 6 12個分 2 逆関数法 =NORMSINV(RAND())

  • 正規分布に従う乱数

    C言語で平均,標準偏差を指定して正規分布に従う乱数を発生させるにはどうしたらよいのでしょうか?

  • 正規分布の発生の仕方

    正規分布の発生の仕方について悩んでいます。 正規分布に従った平均と分散が違う乱数を独立に複数発生させて、 発生させた乱数を全て合わせるとそれも正規分布に従っているというものを作りたいのですがいい方法知っている方いらっしゃるでしょうか? これがものすごく必要で困っています。。。 よろしくお願いします。

  • 正規分布の乱数生成

    C言語で正規分布の乱数を発生させたいのですがどうすればいいのでしょうか? 自分なりにネットで検索して調べたのですが void gaussrand() { static double V1, V2, S; static int phase = 0; double X; if(phase == 0) { do { double U1 = (double)rand() / RAND_MAX; double U2 = (double)rand() / RAND_MAX; V1 = 2 * U1 - 1; V2 = 2 * U2 - 1; S = V1 * V1 + V2 * V2; } while(S >= 1 || S == 0); X = V1 * sqrt(-2 * log(S) / S); } else X = V2 * sqrt(-2 * log(S) / S); phase = 1 - phase; } こうありました。 例えば平均50の分散9の正規分布の乱数を1000個発生させて、配列seiki[1000]に代入したいときは、このプログラミングをどのようにすればいいのでしょうか? もちろん、このソースではなく、他のもので説明していただけても全然構いません。 また、もしよろしければ、正規分布の他に、二項分布など他の分布でのデータの生成方法もお教えいただけたら幸いです。 よろしくお願いいたします。

  • 規則に従った乱数

    一様乱数を発生させるプログラムはネット上でも入手できます。ある種の確率密度分布に従った乱数を発生させるにはどうしたらいいでしょうか。 例えば0から1の乱数ですが、平均が0.5で分散が0.2のガウス分布に従った乱数を発生させるとしたら0.5に近いところの値が多く出て、0.9のあたりはあまり出ないということになります。そういう乱数です。 そういうものを乱数というのかどうかわかりませんが。 しかし、物理現象は何らかの分布に従う乱数のようなものと考えることができるのではないでしょうか。 よろしくお願いします。

  • 正規乱数、標準偏差

    株価の1年あたりの期待収益率と標準偏差が求められているときに、1日あたりの正規乱数の平均や標準偏差はどうやったら求められるのでしょうか? 365で割るだけでいいのでしょうか?

  • 中心極限定理について

    中心極限定理で理解できないところがあります。 多分、何か勘違いをしているところがあると思うので、分かる方は教えてください。 平均値 μ*,分散 σ2* をもつ,任意の分布に従う乱数列 x1,x2, … ,xnがあるとき,その平均値 ave(xn) = (x1+X2+・・・+xn)/n の確率分布は,n が大きくなるとき,平均値 μ*,分散 σ2* / n である正規分布に収束する。  すなわち, (ave(xn) - μ*)/(σ*/√n) は,n が大きいとき,平均値 0,分散 1 の標準正規分布に従うとみなしてよい。 はどうやって証明するのでしょうか? また、12個の乱数rand()を発生させた場合、分散は12*1/12=1になるようですが、これは中心極限定理から分散がσ2/nの正規分布に近づくという結果(こちらは1/12を12で割っている)に矛盾しているように思うのですが、どこが勘違いしているのでしょうか? よろしくお願い致します。