便利な数を100億個の乱数から算出

13
いいいいいいいいいいいい いいいいいいいいいいい 「」 いいいいいいいいい いい ( いいいいい ) いい 100 いいいいいい いいいいいいいいいいいいい 2013-12-03 いい いいいい (JAPAN.R 2013 @Yahoo! LT いいい ) "いいい" N いいいい 中中中 いいいい 中中中 4 0.998 1.02 10 1.498 1.53 30 1.998 2.04 (い い い い い い いい い い いい)

Upload: toshiyuki-shimono-

Post on 26-Jan-2015

450 views

Category:

Education


0 download

DESCRIPTION

A consideration about picking up the `best' values from N times experiences. Mathematically, the author considered "how the maximum value of N values that are distributed normally distributes?". The median values are 0.998, 1.498, 1.998 for N=4,10,30, respectively. This proposition would be useful because everybody quite often is in need of choosing something best from multiple candidates in their daily or social life. The figures shown above are easy to remember so you can utilize them with ease.

TRANSCRIPT

Page 1: 便利な数を100億個の乱数から算出

いくつかの物や話の中から「ベスト」を取り出すとは

どういうことなのか乱数 ( ガウス分布 ) を約 100 億個取り出し

便利そうな数を算出してみた

2013-12-03 作成 下野寿之 (JAPAN.R 2013 @Yahoo! LT 発表用 )

" "経験数N

最大値の中央値

最大値の期待値

4 0.998 1.0210 1.498 1.5330 1.998 2.04

( )端数処理は切り捨てによる

Page 2: 便利な数を100億個の乱数から算出

Statement :

Page 3: 便利な数を100億個の乱数から算出

「乱数 N 個の最大値」はどんな分布だろうか ?N 個の乱数 ( ~標準ガウス分布 ) から最大値を取り出す。この値はどんな分布だろうか ? 特に中央値はいくらであろうか ? ← これに答えます。

10 個の乱数を標準ガウス分布から取り出して最大値を取り出すことを 10万回反復。 1 万回ごとにヒストグラムを描いて 10 コマの動画にした。中央値はほぼ 1.5 。

― その正確な値はいくらであろうか ?― N=10 個という数を変えたらどうなる ?

何を考えようとしたか

Page 4: 便利な数を100億個の乱数から算出

上記の変数 l ( エル ) を 1 万から 1 億程度に増やしてできるだけ中央値を正確に計算する。計算上の工夫として、 1000 万個ずつ乱数を発生して、中央値を計算して、 csvファイルとして出力して、推定誤差も見積もれるようにする。

Page 5: 便利な数を100億個の乱数から算出

4 回 : +1.0σ; 10 回 : +1.5σ ; 30回 : +2.0σ

意味が分かれば、記憶しやすく、便利な数。   ― 近似するとキリの良い数である。  ― どの 3 個の値も、その近似値マイナス 0.002 の操作で、さらに精度が高まる。応用例 :    「 30 回の経験を知っている人の話は、     +2σ 盛られた話だから、 2σ 差し引いて話を聞いた方が良い。」

やや日常的な解釈 : ガウス分布 (μ,σ は所与 ) から、30 個の乱数を取り出す。「その最大値はぴったり 50%の確率で、 μ + 1.998.. σ 」以上になる。同様に 「~」以下になる。

各 N について、 M 個の乱数を N 個ずつに分けて、それぞれの最大値を算出する。それら (M÷N) 個の数の中央値と平均値が、それぞれ第 3 列と第 4列である。この 2 個の数は、 0.03 程度の差がある。

結論" "経験数

N算出に用いた

乱数の個数 M最大値の中央値

[ 2 (SD)]下 桁の標準誤差最大値の期待値

1 ― 0 0

4 41億 0.998 147 [22] 1.02 93

10 41億 1.498 802 [29] 1.53 67

30 51億 1.998 224 [40] 2.04 27

Page 6: 便利な数を100億個の乱数から算出

ここからは補足事項予備知識、背景、計算や結果の考察など

Page 7: 便利な数を100億個の乱数から算出

予備知識 : ガウス分布とは

[0,1] 区間から取り出した一様乱数を 2 回、 3回、 4 回と足し合わせたものをヒストグラムにすると、その形は次第に、一定の形になる( ベルカーブ , 左の図 ) 。 その究極の形の分布を、「ガウス分布」と呼ぶ。正規分布とも呼ぶ。

平均値 μ を 0 、散らばりの尺度である標準偏差 σ を 1 になるように調整したものを特に、「標準ガウス分布」と呼ぶ。標準正規分布とも呼ぶ。

ガウス分布は、多くの分布をよく近似する。たとえば、身長の分布、体重の分布、測定誤差を伴う観測の結果の分布などを、ガウス分布で近似できる。

Histogram of runif(1e+06)

runif(1e+06)

Fre

quen

cy

0.0 0.2 0.4 0.6 0.8 1.0

010

000

3000

050

000

Histogram of runif(1e+06) + runif(1e+06)

runif(1e+06) + runif(1e+06)

Fre

quen

cy

0.0 0.5 1.0 1.5 2.0

020

000

6000

0

Histogram of runif(1e+06) + runif(1e+06) + runif(1e+06)

runif(1e+06) + runif(1e+06) + runif(1e+06)

Fre

quen

cy

0.0 0.5 1.0 1.5 2.0 2.5 3.0

050

000

1000

0015

0000

Histogram of runif(1e+06) + runif(1e+06) + runif(1e+06) + runif(1e+06)

runif(1e+06) + runif(1e+06) + runif(1e+06) + runif(1e+06)

Fre

quen

cy

0 1 2 3 4

040

000

8000

012

0000

Histogram of rnorm(1e+06)

rnorm(1e+06)

Fre

qu

en

cy

-4 -2 0 2 4

02

00

00

40

00

06

00

00

80

00

0

Page 8: 便利な数を100億個の乱数から算出

予備知識 : 標準偏差 σ とは○ 標準偏差 σ は、データの各値と平均値の差を 2 乗したものの平均値に平方根の操作を加えたものである。

• ( 平均値- 2σ) は、偏差値 30 に相当する。• ( 平均値- σ) は、偏差値 40 に相当する。• 平均値は、偏差値 50 に相当する。• ( 平均値+ σ) は、偏差値 60 に相当する。• ( 平均値+ 2σ) は、偏差値 70 に相当する。

Histogram of rnorm(1e+06, 50, 10)

rnorm(1e+06, 50, 10)

Fre

qu

en

cy

0 20 40 60 80 100

02

00

00

40

00

06

00

00

80

00

0

ガウス分布から乱数 X を取り出した場合、μ – σ < X < μ + σ となる確率は、 68.27%

μ + σ < X となる確率は 15.87%

μ + 2 σ < X となる確率は、 2.275%

μ + 3 σ < X となる確率は、 0.135%

μ + 4.5 σ < X となる確率は、 100 万分の 3.4

μ + 6 σ < X となる確率は、 10 億分の 0.99

― 上記の値は R 言語の pnorm 関数で求まる。

Page 9: 便利な数を100億個の乱数から算出

知らないことは数回反復して経験して分かる• 1 回だけの経験では分からないから。• せいぜい 3 回も経験したら分かってしまった気になることもあ

る。 ( 例 : 引越し、旅行、就職活動や結婚など )• いくつかの物品から欲しいものを探すときも、その行為に、数理的にどういう意

味があるのだろうか ?

• しかし、 N=1,2,3 程度は統計学的な意味を成しているのだろうか ?

• そして、 N=1 の人と、 N=30 の経験を知っている人とは、どれだけ有利 / 不利の差があると言えるだろうか ?

• etc.

― 以上が本発表の問題意識 ( 上記の問いに、全て答える訳では無いです。 )

背景

Page 10: 便利な数を100億個の乱数から算出

考察 1   :

• R 言語が生成する乱数は、メルセンヌツイスターを使っているので、 ( おそらく ) 精度が良い ( はず ) 。

• 今回は 100 億個超の乱数を発生させた。• R 言語による計算は、 30 分程度以下の作業の繰り返し。• 中央値を求める median 関数に時間がかかったようだ。

• 今回見つけた数は、たまたまキリが良かった。ひょっとしたら、何か法則性があるかもしれない。

• [要考察 ] コルモゴロフ = スミルノフの検定を用いると、大抵の分布は、数十個の点をサンプリングしても、ガウス分布となかなか区別がつかない。考えようによっては、何か考えたいことをガウス分布に近似させることは、十分に意味がある。

Page 11: 便利な数を100億個の乱数から算出

考察 2 : • 日常生活や社会生活の上で、反復経験のご利益

がなぜあるか、ひとつの視点を与える、と考えられる。 ( 例 : 4 回くらい経験のありそうな人の話は 1σ 話を差し引いて聞いた方が良い )

• 「便利」な訳 : 記憶しやすい。知ってしまうと、 1週間に 1 回程度は、日常生活などで出会う ( と思われる ) ため。

― 半分冗談で、半分本気です !! • 標準偏差 σ を推定する問題、そもそも何を尺度にする

かという問題については説明していないが、妥当で適切な理屈はおそらく存在する。そして、未解決予想を生み出す可能性を秘めている。

Page 12: 便利な数を100億個の乱数から算出

参考 1 : 本資料に用いた元の数表

• “最大値の中央値” を 0.5刻みで変化させたときの N がどうなるかを考えようとして、たまたま発見した。• ちょうど 0.5 の整数倍にはならないので、それに最も近い数を追求していたら、上記のような数表となった。• 意味が解釈可能であって、たまたま、 N が 2桁以下のときは全て、 N が記憶のしやすい数であった (4,10,30) 。• そのときの中央値も小数点以下第 3位で切り捨てると、 0.5 の整数倍から 0.002 少ない数であった (0.998, 1.498, 1.998) 。• N=111, 511 の場合は、小数点以下第 3位で切り捨てると、 0.5 の整数倍から 0.001 少ない数であった。

• 上記の表の誤差の可能性について• メモリの制約があったため、上記の数は、各 N について、 M 個の乱数を、約 1000 万個ずつに分けて、さらに N 個ずつに分けて最大値を求めて

中央値と平均値を求めて、さらにそれぞれ平均を求める、という複雑な操作を加えた。これに伴う誤差については、まだ正確に評価はしていない。

" "経験数N

算出に用いた 乱数の個数 M最大値の中央値

[ 2 (SD)]下 桁の標準誤差最大値の期待値

1 ― 0 0

4 41億 0.998 147 [27] 1.02 93

10 41億 1.498 802 [35] 1.53 67

30 51億 1.998 224 [46] 2.04 27

110 44億 2.495 892 [79] 2.54 15

111 44.4億 2.499 135 [84] 2.54 47

510 122.4億 2.998 102 [86] 3.04 27

511 174.5億 2.998 797 [63] 3.04 27

512 102.4億 2.999 237 [96] 3.04 27

513 513億 2.999 884 [43] 3.04 44

514 102.8億 3.000 461 [97] 3.04 50

515 103億 3.001 152 [99] 3.04 56

Page 13: 便利な数を100億個の乱数から算出

参考 2: 本資料に現れた N= 4, 10, 30, 111, 513 の数をそもそも、どうやって思いつくかについては、下記の R 言語による計算がひとつのヒントになる。

> log(2)/(1-pnorm( seq(1,4,0.5)) ) [1] 4.368889 10.375336 30.467831 111.623919 513.481140 2979.623972 21885.696311> -qnorm(log(2)/c(4,10,30,111,513))[1] 0.9412562 1.4809142 1.9934718 2.4980137 2.9997144