前回のおさらいと今回のイントロ

  前回はコイントスに代表される表、裏など離散の値に対する確率の定義を与え、その後にベイズの定理などを学んだ。今回は連続な値に対する確率の概念を導入する。加えて、期待値という重要な概念を導入する。

前回の演習課題の主な回答

2: コイントスしたとき、表が出る確率が \(p\in[0, 1]\)、裏が出る確率が \(1 - p\) となるコインがある。


回答:
\(p(n; k) \ge 0\)は明白。

\[\begin{equation} \sum_{k = 1}^n p(n; k) = \sum_{k = 1}^n \frac{n!}{(n - k)!k!}p^k(1-p)^{n-k} = (p + [1-p])^n = 1 \end{equation}\]

よって、\(p(n; k)\)は確率の定義を満たす。

確率変数

  表が出る確率が \(p \in [0, 1]\) 、裏が出る確率が \(1-p\) のコインがある。これを投げて出た目を \(x\) とする。 ただし、\(x = 1\) は表、\(x = 0\) は裏を意味するとしよう。

  このとき、\(x\) という値は、どのような値を取りうるだろうか?当然、0か1であろう。 しかし、\(x\) の値は、\(p\neq 0\)\(p\neq 1\) であれば、毎回コインを投げるたびに変わる。 すなわち、\(t\) 回目に出るコインの目を便宜的に \(x_t\) とすると、確率 \(p\) で、\(x_t = 1\)、確率 \(1-p\) で、\(x_t = 0\) となる。 つまり、コインを投げる前には \(x_t\) の値は決定せず、確率的にのみ値を知ることができる。 このような変数を、確率変数と呼び、確率変数 \(X\)\(X = x_t\) と書くことができる。

確率分布

  上記のコイントスにおいて、\(p(X = x_t) = f(x_t)\) と書くことができる。つまり、\(x_t = 1\) のとき、\(f(x_t = 1) = p\) とすると、\(p(X = 1) = p\)。同様に、\(x_t = 0\) のとき、\(f(x_t = 0) = 1 - p\) とすると、\(p(X = 0) = 1 - p\)\(f(x_t)\ge 0\)かつ\(\sum_{x_t}f(x_t) = 1\)ならば(すべての起こりうる\(x_t\)は互いに排反な事象を想定)、\(f(x_t)\) を確率分布と呼ぶ。

  (重要な点であるため、前パラグラフの繰り返し)確率分布は、\(f(x_t) \ge 0\) かつ、\(x_t\) の取りうる場合の数すべての足し算 \(\sum_{x_t}\) に対して、\(\sum_{x_t} f(x_t) = 1\) を満たす。つまり、必ず0より大きく、場合の数すべての確率分布を足し算したときに1になるものを確率分布と呼ぶ。先程のコイントスの例では、\(f(x_t = 1) + f(x_t = 0) = p + 1-p = 1\) であり、\(p \in [0, 1]\) にて確率分布の定義を満たす。

確率分布の例

  しばしば利用される確率分布の例を挙げる。以下、表記を少し変更して確率分布を \(p(x)\)、コイントスに関わる確率を \(q \in [0, 1]\) とする。表 \((x=1)\) が出る確率を \(q\) とすると、上記のコイントスにて利用した確率分布をベルヌーイ分布と呼び、

\(p(x) = q^x (1-q)^{1-x}\)

として定義される。例えば \(p(x=1) = q\)\(p(x=0) = 1 - q\) となり、たしかに確率分布の定義を満たす。

  ベルヌーイ分布に従う確率変数は、Rにおいては、

remove(list = ls()) # 変数初期化

q = 0.1 # 確率
nobs = 10 # 何回コインをふるか
A = rbinom(nobs, 1, q)
A
##  [1] 0 0 0 0 0 1 0 0 1 0

でベルヌーイ分布に従う確率変数を生成することができる (乱数のシードごとに答えは変わる)。

(プログラミング得意な人向けなため、講義では割愛)ベイズの定理の数値計算

  \(A\), \(B\) を、\(\{0, 1\}\) の2値のいずれかをとるものとする。加えて、

\(p(A=1) = 0.01\) (i.e., \(p(A=0) = 0.99\))、

\(p(B=1 | A=1) = 0.99\) (i.e., \(p(B=0 | A=1) = 0.01\))、

\(p(B=0 | A=0) = 0.99\) (i.e., \(p(B=1 | A=0) = 0.01\))

が条件として与えられているものとする。このとき、\(p(A = 1 | B = 1)\) を計算してみる。

解析計算の詳細は、前回の講義スライドや、演習の答えを参照のこと。

remove(list = ls()) # 変数初期化

## ディレクトリ適当に合わせてください

numobs = 10000 # 観測数
A = matrix(0, 1, numobs) # 初期化
B = matrix(0, 1, numobs) # 初期化

p = 0.01 # 確率の定義
A = rbinom(numobs, 1, p) # Aの生成 (二項分布に従う確率変数 → 意味は後述)
for(i in 1:numobs){
  if(A[i] == 0){
    B[i] = rbinom(1, 1, p) # A = 0ならば、B = 1となる確率は0.01
  }
  else if(A[i] == 1){
    B[i] = rbinom(1, 1, 1-p) # A = 1ならば、B = 1となる確率は0.99
  }
}
length(which(A==1))/length(A) # A = 1となる確率
## [1] 0.009
numseq = which(B == 1) # B = 1となっている番号
length(which(A[numseq] == 1))/length(A[numseq]) # B = 1の中で、A = 1となっているものの数
## [1] 0.4292683

確率分布の例その2

  ベルヌーイ分布と同様の条件において、\(N \in \mathbb{N}\)\(k(\le N) \in \mathbb{N}\) のとき、

\(p(k| N, q) = _NC_k q^k (1-q)^{N-k}\)

を二項分布と呼ぶ。これは、\(N\) 回コイントスを行い \(k\) 回表がでる確率を意味する。以下は\(q = 0.1\)にて4回コイントスを行い、0~4回表が出る確率を理論計算/数値計算したもの。

remove(list = ls()) # 変数初期化

q = 0.1 # 確率
N = 4 # 何回コイントスを行うか(Nに相当)
tri = 10000 # 何回繰り返すか
A = rbinom(tri, N, q) # 二項分布からのサンプリングをtri回繰り返す。
count = matrix(0, N, 1) # 初期化

# 数値解の計算と理論解
for(i in 1:(N+1)){
  count[i] = length(which(A == (i-1)))
  print(choose(N, (i-1))*(q^(i-1))*((1-q)^(N-(i-1))))
}
## [1] 0.6561
## [1] 0.2916
## [1] 0.0486
## [1] 0.0036
## [1] 1e-04
# 数値解
t(count)/tri #t()はベクトルの転置
##        [,1]   [,2]   [,3]   [,4]  [,5]
## [1,] 0.6604 0.2879 0.0477 0.0038 2e-04

連続値の確率分布

  確率分布の概念はコイントスなどの離散値(表か裏か、など飛び飛びの整数など)のみではなく、連続値(0.00001, 0.01, …などの実数全体)にも拡張可能である (かなり不正確な議論ではあるが、実用上は下記の理解でおおよそ問題ない)。このとき、確率分布 \(p(x)\) を、下記のように定義する。

  確率変数 \(X\) が、\(X \in (x, x + \Delta x)\) に含まれる確率は、 \(p(x)\Delta x\) で与えられる( \(\Delta x \ll 1\) )。このとき、\(p(x)\) を確率変数 \(x\) の確率分布(確率密度関数)と呼ぶ。 ただし、\(p(x) \ge 0\) かつ、\(x\) の定義域 \(D\) 全体での積分 \(\int_D\) に対して \(\int_D p(x)dx = 1\) を満たすものとする。離散での確率分布から、積分になったものである。

  例えば、\(x \in (0, 1)\) において一定の値をとり(i.e., この範囲にて満遍なく値を取りうる)、その他の範囲では0になる確率分布は、

curve(dunif, -1, 2, xlim = c(-1, 2), ylim = c(0, 1), asp = 1) # 確率密度関数

と表現される。この確率分布の積分値が1になることは容易に確認可能である(横と縦の長さが1の正方形の面積)。 また、このような、とある領域においてどのような値も満遍なく実現される確率分布を、一様分布と呼ぶ。

  加えて、 \(F(x) = P(X\le x) = \int_{-\infty}^x p(z)dz\) となる \(F(x)\) を分布関数と呼ぶ。つまり、\(F(x)\)は実現する確率変数が\(x\)よりも小さくなる確率を表している。分布関数を微分したものは確率分布になる。 \(a \le x \le b\)において\(p(x) = \frac{1}{b-a}\) となる一様分布の場合であれば、 \(F(x) = 0 \ (x < a), \frac{x-a}{b-a} \ (a\le x \le b), 1 \ (x \ge b)\) である。下記が\(x \in (0, 1)\)にて等しい確率分布の値をもつ一様分布の分布関数である。

curve(punif, -1, 2, xlim = c(-1, 2), ylim = c(0, 1), asp = 1)

乱数の生成

  これまたベルヌーイ分布や二項分布と同様に、確率分布に従う乱数を生成可能 (実用的にかなり頻繁に使われる)。一様分布であれば、

par(mfrow=c(1,2)) 
hist(runif(1000,0,1))

として、一様乱数を生成することができる。例えば機械学習・信号処理の分野ではモンテカルロ法と呼ばれる手法に用いられ、様々な工学の分野では確率的な要素を含むシミュレーションにおいて、確率分布に従う乱数生成が用いられる。