スポンサーリンク

Pythonで正規分布の乱数を生成させて統計情報を算出

NumPyで正規分布の乱数を生成

まずはNumPyで正規分布の乱数を発生させます。
例えば、平均が100、標準偏差が20の乱数を500個生成するには、下記のように書きます。

import numpy as np
npData = np.random.normal(100, 20, 500)

スポンサーリンク

平均を算出

mean()で平均を算出できます。

print("平均=", np.mean(npData))

分散を算出

var()で分散を算出できます。

print("分散=", np.var(npData))

最大値を算出

max()で最大値を算出できます。

print("最大値=", np.max(npData))

中央値を算出

median()で中央値を算出できます。

print("中央値=", np.median(npData))

最小値を算出

min()で最小値を算出できます。

print("最小値=", np.min(npData))

標準偏差を算出

std()で標準偏差を算出できます。

print("標準偏差=", np.std(npData))

スポンサーリンク

歪度を算出

scipy.statsをimportして、skew()で歪度を算出できます。

import scipy.stats as stats
print("歪度=", stats.skew(npData))

尖度を算出

kurtosis()で尖度を算出できます。

print("尖度=", stats.kurtosis(npData))

ヒストグラムを出力

matplotlib.pyplotをimportして、hist()でヒストグラムを出力できます。
ビンの数を40に設定しています。

import matplotlib.pyplot as plt
plt.hist(npData, bins=40)
plt.show()

サンプルコード

下記がサンプルコードになります。

 $ cat sample.py 
#!/usr/bin/env python3
# coding: UTF-8

import numpy as np
import matplotlib.pyplot as plt
import scipy.stats as stats

npData = np.random.normal(100, 20, 500)

print("平均=", np.mean(npData))
print("分散=", np.var(npData))
print("最大値=", np.max(npData))
print("中央値=", np.median(npData))
print("最小値=", np.min(npData))
print("標準偏差=", np.std(npData))
print("歪度=", stats.skew(npData))
print("尖度=", stats.kurtosis(npData))

plt.hist(npData, bins=40)
plt.show()

下記が実行結果になります。
 $ ./sample.py 
平均= 99.7832373982
分散= 461.719222021
最大値= 169.492533716
中央値= 99.8611189891
最小値= 29.2712085181
標準偏差= 21.4876527806
歪度= 0.08149277834971708
尖度= -0.1863572771136317

正規分布のヒストグラム

スポンサーリンク