Pythonで統計-平均-中央値-最頻値-分散-標準偏差
今回勉強したこと。
- 平均:np.mean(データ)
- 中央値:np.median(データ)
- 最頻値:stats.mode(データ)
- 分散:np.var(データ)
- 標準偏差:np.std(データ)
平均
np.random.normalは、平均値mean、標準偏差SDの正規分布から、ランダムにn個の値を格納します。
import numpy as np
#正規分布(mean, SD:standard deviation, n)
incomes = np.random.normal(27000, 15000, 10000)
#平均を求める
means = np.mean(incomes)
print('平均値:{0}' .format(means))
中央値
中央値は、ソートしたデータの真ん中の値です。
import numpy as np
#正規分布(mean, SD:standard deviation, n)
incomes = np.random.normal(27000, 15000, 10000)
#中央値
median = np.median(incomes)
print("中央値:{0}".format(median))
最頻値
最頻値は、最も頻繁に出てくる値のことです。
np.random.randint()は、コメントを見てください。
from scipy import stats
import numpy as np
#18から90まで500個のランダム整数
ages = np.random.randint(18, high=90, size=500)
stats =stats.mode(ages)
print("最頻値:{0}".format(stats))
#result -> 最頻値、度数の順で表示される
分散
import numpy as np
#正規分布(mean, SD:standard deviation, n)
incomes = np.random.normal(27000, 15000, 10000)
var = incomes.var()
#var = np.var(incomes)でも可能
print("分散:{}".format(var))
標準偏差
import numpy as np
#正規分布(mean, SD:standard deviation, n)
incomes = np.random.normal(27000, 15000, 10000)
sd = incomes.std()
#sd = np.std(incomes)でも可能
print("標準偏差:{0}".format(sd))
分散と標準偏差
分散は、標準偏差の2乗(平方)です。
または、標準偏差は、分散の2乗根(平方根)です。
import numpy as np
#正規分布(mean, SD:standard deviation, n)
incomes = np.random.normal(27000, 15000, 10000)
#SD V
sd = incomes.std()
var = incomes.var()
sd1 = var**(1/2)
var1 = sd**2
print("標準偏差:{0}\n分散から求めた標準偏差:{1}".format(sd,sd1))
print("分散:{0}\n標準偏差から求めた分散:{1}".format(var,var1))
共分散と相関係数
共分散
$$S_{xy} = \frac{1}{n}\sum{(x_i – \bar{x})(y_i – \bar{y})}$$
相関係数
$$r_{xy} = \frac{S_{xy}}{S_x S_y}$$
共分散-np.cov(x,y)-
共分散np.cov(x,y)について、
\begin{pmatrix} S_{xx} & S_{xy} \\ S_{yx} & S_{yy} \end{pmatrix}
といった感じに行列として出力されます。
今回、2変数なので右上と、左下の値が共分散です。
左上は、xの分散
右下は、yの分散になります。
ソースコード
import numpy as np
np.random.seed()
x = np.random.normal(3.0, 1.0, 1000)
y = np.random.normal(10.0, 4.0, 1000)
#共分散
covs = np.cov(x, y)
print("xの分散:{0}\nyの分散:{1}\n\
共分散:{2}\n".format(np.var(x),np.var(y),covs))
出力結果

共分散は、分散行列として出力されてますね。
左上は、xの分散・右下は、yの分散になっていることが確認できます。
右上と左下は、同じ値になっていることが確認できます。
相関係数-np.corrcoef(x, y)-
相関係数np.corrcoef(x, y)についても、分散と同様に
\begin{pmatrix} r_{xx} & r_{xy} \\ r_{yx} & r_{yy} \end{pmatrix}
といった感じに行列として出力されます。
ソースコード
%matplotlib inline
import numpy as np
import matplotlib.pyplot as plt
np.random.seed(0)
x = np.random.normal(3.0, 1.0, 1000)
y = np.random.normal(10.0, 4.0, 1000)
#相関係数
cor = np.corrcoef(x, y)
print("相関係数:{0}".format(cor))
#散布図
plt.show(scatter(x, y))
出力結果
![]()
相関係数も、行列として出力されてますね。
対角成分が同じになっていることが確認できます。
右上と左下がxとyの相関係数になっています。
参考
