投稿

1月, 2017の投稿を表示しています

「データの見えざる手」の図が分かりにくかったので、Rで一次元プロット

イメージ
↓この記事を書いていて思ったのですが、 「データの見えざる手」の正規分布の図が一様分布に見えたのでRで試した 一日の生活の900分は一次元的であるのに、それを30×30の二次元のマスで表現しているところが、そもそも分かりにくい。 人が理解するときのモデルとしても分かりにくいし、二次元になっているせいで、シミュレーションのスクリプトを書くときもいろいろと面倒な処理が必要になったりして(上記のリンクのinteractionのくだりとか)。 素直に、一次元的な図を載せた方が、読者の理解も進むのではと思って、Rで書いてみました。(点やマスの数は見た目がほどよくなるように減らしてあります) n <- 80 # 点の数 m <- 10 # マスの数 x <- runif(n, min=0, max=m) stripchart(x, pch=1, xlab="1分ごとのマス") abline(v=0:m) legend("topright", legend="手の動きのあった時点", pch=1, bg="white")  こういう図の方が分かりやすいと思うけどなあ。

「データの見えざる手」の正規分布の図が一様分布に見えたのでRで試した

イメージ
「 データの見えざる手 」は読んでいて、引っ掛かりまくりでした。 読んだかた、「U分布」ってピンときました? どこで躓いたかというと、こんな感じでコンピュータシミュレーションの結果が紹介されていたのですが、上の「正規分布(ポアソン分布)」と書かれている図↓の見た目が一様分布っぽいんですよね。 正規分布(ポアソン分布)とU分布 (「データの見えざる手」より) 本文を見てみると、 コンピュータシミュレーションでこれを実行するには、玉の位置をランダムに生成すればよい。横方向の位置(x)を決める1~30の乱数と縦方向の場所(y)を決める1~30の乱数を発生させ、(x,y)の位置に玉を置くのだ。 とあります。う~ん、xとyを一様分布に従って発生させて2次元にプロットしている、ってだけだよなー。 ・・・(考え中)・・・ で、しばらく考えてみて、やっと分かりました。こうやって発生させたデータだと、マスの中の点の個数が正規分布になるのね。 実際に、一つずつやってみましょう。 n <- 1000 # 点の個数 m <- 10   # マスの区切りの数 # 座標は一様分布で従って発生させ、プロット x <- runif(n, min=0, max=m) y <- runif(n, min=0, max=m) plot(x, y, pch="・") # マスを書く abline(h=0:m) abline(v=0:m) 一様分布で発生させた点(マス内の個数は正規分布になる) はい、本に載っているのと似たような絵になりました。 マスに入る個数を調べるには、引数を越えない整数を返すceilingが使えますね。 > interaction( ceiling(x), ceiling(y), sep="," )    [1] 4,1   9,3   10,1  1,5   3,1   1,6   8,1   8,3   10,6  5,7   2,6   [12] 2,5   2,7   7,6   6,10  4,9   3,3   1,1   2,4   9,6   10,10 2,3   ... マスが、(1,1), (1,2)