R上での様々な確率分布での計算について概説する.
二項分布 \(B(n,p)\) の確率計算をしてみよう. 確率 \(p=0.3\) で成功する試行を \(n=10\) 回行いちょうど 2 回成功する確率 \(f(2)=P(X=2)\) は,dbinom
関数を用いて次のように計算できる.
dbinom(2, 10, 0.3)
## [1] 0.2334744
成功が5回以下である確率 \(F(5)=P(X \leq 5)\) は以下のようにする.
pbinom(2, 10, 0.3)
## [1] 0.3827828
この2つの関数名はよく似ている. 実際,1文字目の d
は確率関数,p
は累積分布関数を意味し, binom
は二項分布(Binomial Distribution)を意味する.
同様に,他の離散分布についても確率計算が可能である. d
や p
と分布名を組み合わせた関数を用いる.
binom
geom
pois
確率関数をグラフにすることもできる.
xx <- c(0:10)
plot(dbinom(xx, 10, 0.3), type="h")
xx に 0 から 10 までの整数値を入れておき, 横軸をそれらの値で動かして dbinom
関数で確率を次々計算して plot
関数でグラフにしている.type="h"
で線のグラフにしている.
連続分布についても同様である. d
が確率密度関数,p
が累積分布関数を意味する.
例えば,標準正規分布 \(N(0,1)\) で 1.96 以下の確率 \(\Phi(1.96)=P(X \leq 1.96)\) は以下のように求められる.
pnorm(1.96)
## [1] 0.9750021
norm
が正規分布に対応している. あるいは,平均50,標準偏差10の正規分布 \(N(50,10^2)\) で70以上の確率 \(P(X \geq 70)=1-F(70)\) は以下のように求められる.
pnorm(70, 50, 10, lower.tail=FALSE)
## [1] 0.02275013
lower.tail=FALSE
を指定することにより上側確率が求まる. このオプションは離散分布でも使用可能であるが, 「\(\leq\)」ではなく「\(<\)」を意味するので十分注意されたい.
また,q
で累積分布関数の逆関数を計算できる (すなわち,下側確率を指定して,確率変数の値を逆算できる). 例えば,平均50,標準偏差10の正規分布 \(N(50,10^2)\) で,下側確率が0.10となる点は以下のように求める.
qnorm(0.10, 50, 10)
## [1] 37.18448
他の連続分布は以下の通りである.
exp
unif
確率密度関数のグラフも plot
で描くことが可能であるが, curve
関数を用いたほうが簡単かもしれない.
curve(dnorm(x, 50, 10), xlim=c(0,100))
curve
関数では x を含む関数を一つ目の引数に入れる. また,描画する x の最小値,最大値を xlim
で指定する.
各分布に従う乱数を発生させたい場合には先頭の文字を r
にすればよい. random の頭文字である.
例えば,標準正規分布 \(N(0,1)\) に従う乱数を30個得たい場合は次のようにすればよい.
rnorm(30, 50, 10)
## [1] 40.69939 53.01153 41.41433 50.29874 37.85111 58.23607 21.85653
## [8] 75.10455 50.80389 58.22395 39.85045 33.13546 50.06682 59.58891
## [15] 49.50141 43.10477 48.27229 55.53328 33.29914 45.61947 48.66883
## [22] 29.15556 51.37516 73.15820 42.18911 43.24982 44.86466 35.94622
## [29] 34.41840 54.92380