【統計学】分散・歪度・尖度(R・Python)
今回は分散・歪度・尖度の実装。上記書籍の第1章SECTION2・3に該当。
分散・歪度・尖度
- 分散 データの広がり具合を示す。
- 標準偏差 分散の平方根。分散は2乗しているので、平方根をとることでもとのデータと単位をそろえることができる。
- 歪度(わいど) データの分布の左右へのゆがみを表す。 ・分布が左右対称 →(歪度)=0 ・右にすそが長い分布 →(歪度)>0 ・左にすそが長い分布→(歪度)<0
- 尖度(せんど) データの分布の尖がり具合を表す。 尖度が大きいほど尖った形になる。
Rで実装
x <- c(0, 1 ,1, 2, 2 ,3 ,3 ,3, 4, 5, 6, 7, 8, 9) # 分散 var(x) # ただし、不偏分散 ## [1] 7.67033 # 標準偏差 sd(x) # 不偏標準偏差 ## [1] 2.769536 # 歪度 x_frequency <- table(x) #出現回数を求める #x #0 1 2 3 4 5 6 7 8 9 #1 2 2 3 1 1 1 1 1 1 max(x_frequency)#↑の最大値を求める #[1] 3
Pythonで実装
分散・標準偏差はnumpyを、歪度・尖度はscipyを使用。
import numpy as np import scipy x = [0, 1 ,1, 2, 2 ,3 ,3 ,3, 4, 5, 6, 7, 8, 9] # 分散 var = np.var(x ddof = 1) # ddof:自由度。ddof = 1のときは不偏分散。 # 標準偏差 std = np.std(x, ddof =1) # ddof:自由度。ddof = 1のときは不偏標準偏差。 # 歪度 skew = scipy.stats.skew(x) # 尖度 kurtosis = scipy.stats.kurtosis(x) #表示 print('分散: {0:.2f}'.format(var)) print('標準偏差 {0:.2f}'.format(std)) print('歪度: {0:.2f}'.format(skew)) print('尖度: {0:.2f}'.format(kurtosis))
おまけ(追記6/12)
Pythonの場合、statisticsパッケージでも平均、分散等計算できるらしい。
from statistics import mean, median,variance,stdev x = [0, 1 ,1, 2, 2 ,3 ,3 ,3, 4, 5, 6, 7, 8, 9] #平均 mean(x) #Out[13]: 3.857142857142857 #中央値 median(x) #Out[14]: 3.0 #分散 variance(x) #Out[15]: 7.67032967032967 #標準偏差 stdev(x) #Out[16]: 2.7695360027141134
こちらのほうが型変換しなくていいので便利かも。