Pythonで基本統計量

統計学




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の相関係数になっています。

参考


タイトルとURLをコピーしました