分布

Julia である分布から乱数を生成したり、分布関数を利用して計算したりする場合は Distributions パッケージを利用する。

using Distributions

乱数の生成

乱数を生成するには、まず乱数を生成する分布のモデルを作成し、次にそのモデルから乱数をランプリングするの順で行う。例えば、平均 0、分散 1 の正規分布から、10 個の乱数を生成するには以下のようにする。

m = Normal(0, 1.0)
rand(m, 10)
## 10-element Array{Float64,1}:
##  -2.25447
##  -0.32047
##   0.322367
##   1.38136
##   0.266203
##   0.0461543
##   0.339885
##   0.824139
##   0.526617
##  -1.15089

正規分布ではなく、他の分布から乱数を生成する場合は、モデルを作成するときの関数を変更すればよい。

m = Bernoulli(0.5)               # ベルヌーイ分布
m = Binomial(10, 0.5)            # 二項分布
m = Geometric(0.5)               # 幾何分布
m = NegativeBinomial(1, 0.5)     # 負の二項分布
m = Poisson(1)                   # ポアソン分布

m = Beta(1, 1)                   # ベータ分布
m = Exponential(1)               # 指数分布
m = Gamma(1, 1)                  # ガンマ分布
m = Logistic(0, 1)               # ロジスティクス分布
m = LogNormal(0, 1)              # 対数正規分布
m = Normal(0, 1)                 # 正規分布
m = Uniform(0, 1)                # 一様分布

分布に関する関数

確率密度関数を利用したい場合は pdf を利用する。

m = Normal()

pdf(m, -3:3)
## 7-element Array{Float64,1}:
##  0.00443185
##  0.053991
##  0.241971
##  0.398942
##  0.241971
##  0.053991
##  0.00443185

累積分布関数を利用したい場合は cdf を利用する。

cdf(m, 0)
## 0.5

References