離散一様分布では、取り得る値と確率を分かりやすく対応付けることができました。しかし、連続一様分布ではそうは行きません。無限の精度を求めると、いくらでも数字を細かくできます。これは、2つの数字を考えたとき、その間から必ず別の数字を選べるという意味でもあります。例えば、5.41と5.42を考えると、5.415を選べます。
そう考えると、連続一様分布では、取り得る値の個数nが無限大になります。そうなると、確率は1/∞になってしまうので、0です。これでは話が始まりませんので、連続分布で確率を考えるときは、1点ではなく、領域を考えます。これを分かり易くするために、例を交えながら、さらに見ていくことにしましょう。
離散一様分布では、f(x)=1/n でしたが、連続一様分布では、最小値aと最大値bの間で定義される領域を考えます。
分布の平均は単純です。
分散は次のように定義されます。
ニューヨーク市での平均的なタクシーの乗車時間は22分くらいであることが知られています。調査の結果、この乗車時間が、19分から27分の間の連続的な一様分布に従うことが分かったとします。タクシー乗車時間の確率密度関数を求めてみましょう。
# 乗車時間の下限
a = 19
# 上限
b = 27
# 連続一様分布の確率密度関数です。
fx = 1.0/(b-a)
print('確率密度関数は、{}'.format(fx))
# 分散
var = ((b-a)**2 )/12
print('分散={}'.format(var))
乗車時間が少なくとも25分続く確率を計算してみましょう。
# これは、全体から、乗車時間が25分より短い場合を引けばよいので、次のようにして求めることができます。
# 乗車時間が27分までに収まる確率は全体なので1です。
# 一方、乗車時間が25分までに収まる確率は、
f25 = (25-19)/(b-a)
ans = 1-f25
print('乗車時間が少なくとも25分かかる確率は{}%'.format(100*ans))
scipyを使って便利に連続一様分布を作ってみます。
from scipy.stats import uniform
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
# 最小と最大を作ります。
A=0
B=5
# AからBまで100ポイントを作っておきます。
x = np.linspace(A,B,100)
# 連続一様分布は、uniform(loc=start point,scale=endpoint)で作れます。
rv = uniform(loc=A,scale=B)
# 確率密度関数(PDF)と累積分布関数(Cumulative Distribution Function)を描いてみます。
plt.plot(x,rv.pdf(x))
plt.plot(x,rv.cdf(x))
青い線は、0.2のところにありますが、1/(5-0) が 1/5 で 0.2なので、すぐに確かめられます。
1.)https://ja.wikipedia.org/wiki/%E9%80%A3%E7%B6%9A%E4%B8%80%E6%A7%98%E5%88%86%E5%B8%83
2.)http://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.uniform.html