knaka Tech-Blog

AI, IoT, DIYエレクトロニクス, データサイエンスについて投稿予定です。

確率

index:

必要なimport

import numpy as np
import numpy.random as random
import scipy as sp
import pandas as pd
from pandas import Series, DataFrame

import matplotlib.pyplot as plt
import matplotlib as mpl

データの準備

#
dice_data = np.array([1, 2, 3, 4, 5, 6])

抽出します

#
from numpy import random
random.seed(0)

# 抽出します
print( random.choice(dice_data, 1))

結果

[5]

この試行結果を根元事象(基本事象)といいます

統計的確率

抽出した、各値の出現する確率を求める。

# 試行、1000回行う。
calc_steps = 1000

# seedの固定
random.seed(0)

# 1〜6のデータの中から、抽出を実施
count_all_dice = random.choice(dice_data, calc_steps)
count_all_dice

#
# 計算結果を入れる
prob_data = np.array([])

#
prob_data = np.array([])
for i in range(1, 7):
    n= float(len(count_all_dice[count_all_dice==i]) ) / float(calc_steps )
    print(i, "ritu=",  n )
    prob_data = np.append(prob_data ,n)

print(prob_data)

結果

(1, 'ritu=', 0.171)
(2, 'ritu=', 0.157)
(3, 'ritu=', 0.157)
(4, 'ritu=', 0.183)
(5, 'ritu=', 0.161)
(6, 'ritu=', 0.171)
[0.171 0.157 0.157 0.183 0.161 0.171]

ほぼ1/6に近いのがわかります。これは

統計的確率

という。

確立変数

ある変数の値をとる確率が存在する変数のことです。例えば、
さいころを投げて出る目は{1, 2, 3, 4, 5, 6}のいずれかであり、
それぞれの目が出る確率はであることから、さいころを投げて出る目は確率変数であると言えます。

確率分布:

確率変数がとる値とその値をとる確率の対応の様子を「確率分布」と言います。
https://bellcurve.jp/statistics/course/6596.html

ベルヌーイ分布:

結果が2種類しかない試行をベルヌーイ試行といいます。
1回のベルヌーイ試行において各事象が生じる確率の分布

prob_be_data = np.array([])
coin_data = np.array([0, 0, 0, 0, 0, 1, 1, 1])
#
for i in np.unique(coin_data):
    n= (float(len(coin_data[coin_data==i]) ) / float(len(coin_data) ))
    print(i, " = ",                 n)
    prob_be_data = np.append(prob_be_data, n )

結果

(0, ' = ', 0.625)
(1, ' = ', 0.375)

二項分布:

独立なベルヌーイ試行をn回繰り返します。
パラメータは順に、試行回数(n)、確率(p)、サンプル数
を示しています。
https://ja.wikipedia.org/wiki/%E4%BA%8C%E9%A0%85%E5%88%86%E5%B8%83

# 二項分布
random.seed(0)
x = random.binomial(30, 0.5, 1000)
plt.hist(x)
plt.grid(True)
plt.show()


f:id:knaka0209:20180512181313p:plain

ポアソン分布:

稀な事象が起きる確率の時、使われます。
https://bellcurve.jp/statistics/course/6984.html

# ポアソン分布
x = random.poisson(7, 1000)
plt.hist(x)
plt.grid(True)

f:id:knaka0209:20180512181622p:plain