1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

基礎からやる数理統計 確率変数

Posted at

確率変数とサイコロ

まず最初はゆがみのない1~6サイコロ:game_die:の例で考えてみましょう。

1から6のサイコロの目はそれぞれ同様に確からしい(それぞれの出方に偏りがない)ことから、それぞれの目の出方は以下のような確率で与えることがでます。

$
P(1 の目が出る確率) = \frac{1}{6}\qquad
P(2 の目が出る確率) = \frac{1}{6}\qquad
P(3 の目が出る確率) = \frac{1}{6}\
P(4 の目が出る確率) = \frac{1}{6}\qquad
P(5 の目が出る確率) = \frac{1}{6}\qquad
P(6 の目が出る確率) = \frac{1}{6}
$

ここでの確率変数$X$以下のように定義すると

$
X = \left\{
\begin{array}{ll}
1 & (1の目が出たとき)\
2 & (2の目が出たとき)\
3 & (3の目が出たとき)\
4 & (4の目が出たとき)\
5 & (5の目が出たとき)\
6 & (6の目が出たとき)\
\end{array}\right.
$

となります。ここでの $X$のように確率的に変動する変数を確率変数と呼びます。また、ここでの確率変数が実際に取る値を実現値といいます。

$
P(X = x) = \frac{1}{6}, \qquad x = 1,2,3,4,5,6
$

ではpythonで実際にサイコロを振ってみましょう。

import numpy as np
import matplotlib as mpl

np.random.seed()

prob_dice = np.array([])
dice = np.array([1,2,3,4,5,6])
dice_data = np.random.choice(dice, dice_times)
dice_times = 10000

for i in range(1,7):
    p = len(dice_data[dice_data == i]) / dice_times
    print(i, "の出る確率", p)
    prob_dice = np.append(prob_dice, len(dice_data[dice_data == i]) / dice_times)
    
plt.bar(dice, prob_dice)
plt.grid(True)

以下が結果になってます。今回は10000回サイコロを転がし,その確率を出しています。結果が示しているようにそれぞれの目は $\frac{1}{6} = 0.1666...$に近似しています。

image.png

確率関数と累積分布関数

確率変数には様々なものがあり、$X$が離散確率変数であるとは $X$の取りうる値が有限個または加算無限個の場合(1,2,3,4,5...のようにとびとびになっている値)をいい、$X$が連続確率変数であるとは密度関数を持つ場合のことをいいます。
離散確率の場合、先ほどのサイコロと同様に各 $x$で確率を考え、それを $x$の関数としたものを確率関数といい、以下のように表すことができます。

$
p(x) = P(X = x)\
$

また確率関数は以下ような性質をもちます。なお、ここでの $\sum$は確率の総和を表しています。

$
p(x) \ge 0, \qquad \forall x \
\sum_{x}^{} p(x) = 1
$

確率関数の累積和をとったものを累積分布関数、もしくは分布関数といいます。なお分布関数には以下のような性質があり、単調性や右連続性などの性質を持ちます。

$
F(x) = P(X \le x) = \sum_{y \le x} p(y)\
(1) \quad \lim_{n \to -\infty}F(x) = 0\
(2) \quad \forall x,y \in \mathbb{R}(実数)ならば\\
\qquad F(x) \ge F(y), \quad F(x) = \lim_{\varepsilon \to 0}F(x + \varepsilon)\
(3) \quad \lim_{n \to +\infty}F(x) = 1
$

ここで $ \forall x$において$F(X)$は右連続( $F(X+) = F(X)$と表す。)であり、$x_n$は単調に減少して収束する数列とすると $\lim_{x_n \to +\infty}F(x_n) = F(x)$ となります。ここでの $x+$は正の方向から単調に減少して $x$に収束することを示しています。すると以下のように $X$の累積分布関数の差をとれば確率関数を求めることができます。

$
p(x) = F(x) - \lim_{x_n \to x-} F(x_n) = F(x) - F(x-)
$

pythonで累積分布を実装すると以下のようになります。

import numpy as np
import matplotlib as mpl
from scipy.stats import norm
import matplotlib.pyplot as plt

x = np.arange(0,3000)
y = norm.cdf(x, loc=1500, scale=500)

plt.plot(x,y)
plt.grid(True)
plt.xlabel("value")
plt.ylabel("possibility")

コメント 2020-01-31 151132.png

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?