趣味の統計

心理統計のはなし(偏差への偏愛ともいう)。Web上に散らばっている「アンケート」へのつっこみ。その他。

サイコロのシミュレーション その3

アニメーションによる統計学

このところサイコロシミュレーションのことばかり書いていますが、前回(というか本日の午前中に)書いた記事で紹介したシミュレーションに、「目によって出る確率が異なるサイコロ」をシミュレートできる機能をつけてみました。
こんな感じ。

ん? 何それ?

イカサマサイコロのシミュレーション

少し前にこの書籍を紹介しました。
almondfish.hatenablog.com
この書籍の3章(3.1.1節)で、「1~4の出目:出にくい(それぞれ確率0.1)、5~6の出目:出やすい(それぞれ確率0.3)」というイカサマサイコロの目の出方を、Rのsample()関数で試してみる、という課題が紹介されています。
これ自体は、sample()関数の使い方の練習みたいな感じで、とくにイカサマサイコロの確率分布やその期待値などを解説しているわけではありません。が、いつも一様分布のサイコロだけではつまらないので、確率を変えてイカサマサイコロにしてみたとき、期待値や分散がどうなるのか、計算してみても面白そうだと思いました。

実装

実装の方法ですが、それぞれの出目の確率を小数で指定し、合計がちゃんと1になるようにユーザに要求することも考えたのですが、あとの処理が面倒そうだな、と思いました。そこで、それぞれの出目の「確率の比」を、整数で指定してもらうことにしました。前掲の例だと、確率比は「1:1:1:1:3:3」ということになりますね。
これなら、整数の比で簡単に指定できますし、たとえば「2:1:1:1:1:1」とすれば、1の出目の確率が7分の2、その他の出目の確率が7分の1、という、妙なサイコロをシミュレートすることもできます。
乱数を使ったシミュレートなので、指定の確率比から少々ずれた結果になりますが、平均値は、理論的な期待値にわりと近いものが出るようです。(上に示した画像では、奇跡的に、ほぼぴったりでした!)
遊んでみてください!
almondfish.starfree.jp