Page List

Search on the blog

2013年11月30日土曜日

Rで確率分布を扱う

 勉強会で、Rで確率分布を扱う方法を教えてもらった。かなり便利だなと思った。
自分なりに問題を設定して、解いてみた。

問題1
日本では1年間(※1)に交通事故が平均80万件起こる。
  1. 今日(※2)、日本で交通事故がちょうど2200件起こる確率を求めよ。
  2. 今日、日本で交通事故が2200件以下起こる確率を求めよ。
  3. 今日、日本で交通事故が2200件より多く起こる確率を求めよ。
  4. 「1日の間で交通事故が起こる件数はx以下である。」という主張が99.9%の確率で信用できるxの値を求めよ。
  5. 1週間にわたる1日の交通事故件数を乱数で生成せよ。
(※1) 1年=365日とすること。
(※2)  休日か平日で状況が違うのではとかは考えなくてよいものとする。

解答1
ある期間内に事象が平均何回起こるか分かっているので、ポアソン分布を使って解きます。
> # problem 1.1
> dpois(2200, 800000/365)
[1] 0.008375249
>
> # problem 1.2
> ppois(2200, 800000/365)
[1] 0.5752186
>
> # problem 1.3
> ppois(2200, 800000/365, lower.tail=FALSE)
[1] 0.4247814
>
> # problem 1.4
> qpois(0.999, 800000/365)
[1] 2338
>
> # problem 1.5
> rpois(7, 800000/365)
[1] 2151 2202 2146 2110 2169 2197 2196

問題2
あるプロジェクトでは、バグが発見されてから次のバグが発見されるまでの期間が平均1カ月(※3)であった。不運なことに、今日バグが発見された。
  1. プロジェクトマネージャはお客様に謝罪にした。「今後半年間は決してバグを出しません。もしバグが出たら罰金をお支払いします。」罰金を支払わなければならない確率を求めよ。
  2. プロジェクトマネージャは無謀な宣言をしないように細心の注意を払った。「今後x日間は決してバグを出しません。もしバグが出たら罰金をお支払いします。」これは90%以上の確率で実現可能だという。xの値を求めよ。
(※3)この問題では一律で1カ月=30日とすること。

解答2
繰り返し起こる事象の到着時間が分かっているので、指数分布を使って解きます。
> # problem 2.1
> pexp(30*6, rate=1/30)
[1] 0.9975212
> # problem 2.2
> floor(qexp(0.9, rate=1/30, lower.tail=F))
[1] 3

0 件のコメント:

コメントを投稿