BLOG

 

235日のセブIT留学  成長日記「Pythonで統計 」 ( 7/235 days )

15 7月 2018, Posted by keisuke in IT留学, プログラミング, 統計

こんばんわ! Keisukeです!

 

今週は, 主に統計を勉強したのでPythonに軽く実装してみようかと思います!

 

Pythonは, 5~8年くらい前に新しくできたプログラミング言語です。

 

今日は, Pythonを使って平均値, 分散値, 標準偏差を算出したいと思います!

 

取り扱うデータは, 適当に打ち込んだテストの点数です!

 

data = [90点 88点 70点 54点 23点 98点 67点 82点 97点 65点 34点 23点 2点 65点]

 

スプレッドシートで計算すると

平均値 : 61.28571429

分散値 : 920.8351648

標準偏差 : 30.34526594

となりました!

 

上記をPythonで出力しようとすると…

=================================================================

”’

平均値 → 偏差 → 分散値 → 標準偏差

”’

def cal_ave(data): #平均値

   s = sum(data)

   n = len(data)

   ave = s/n

   return ave

def cal_dif(data): #偏差

   ave = cal_ave(data)

   diff = []

   for i in data:

       diff.append( i – ave )

   return diff

def cal_var(data): #分散値

   diff = cal_dif(data)

   sq_diff = []

   for d in diff:

       sq_diff.append(d**2)

   sum_sq_diff = sum(sq_diff)

   vari = sum_sq_diff / len(data)

   return vari

if __name__ == ‘__main__’:

   data = [90,88,70,54,23,98,67,82,97,65,34,23,2,65]

   vari = cal_var(data)

   stv = vari ** 0.5 #標準偏差

   print(‘平均値   : {0}’.format(cal_ave(data)))

   print(‘分散値   : {0}’.format(vari))

   print(‘標準偏差 : {0}’.format(stv))

=================================================================

 

結果

平均値   : 61.285714285714285

分散値   : 855.0612244897958

標準偏差 : 29.241429932371567

 

 

あれ?

結果が違いますね!??

 

 

スプレッドシート

平均値 : 61.28571429

分散値 : 920.8351648

標準偏差 : 30.34526594

 

Python

平均値   : 61.285714285714285

分散値   : 855.0612244897958

標準偏差 : 29.241429932371567

 

分散値と標準偏差の値に相違があるようですね!!

理由は簡単です!

 

スプレッドシート、Excelでは標準偏差と分散値の計算を(n-1)法を用いて行っていますが

Pythonでは(n-1)法を使ってないんですね!

 

Pythonに(n-1)法を適用すると…

 

=================================================================

def cal_var(data): #分散値

   diff = cal_dif(data)

   sq_diff = []

   for d in diff:

       sq_diff.append(d**2)

   sum_sq_diff = sum(sq_diff)

   vari = sum_sq_diff / (len(data) -1) # (n-1)法を適用

=================================================================

 

平均値   : 61.285714285714285

分散値   : 920.8351648351647

標準偏差 : 30.345265937789453

 

だいたい同じになりましたね!

Pythonは今や、ライブラリを使えば理論が分かってなくても

なんでもできちゃう言語になっているんです!

 

ですが、こういった数値計算における理論は知って置くにこした事はないと思っています!

 

数値異常に気づけたり, ライブラリが間違ってる可能性だってありますからね!

 

僕が, 理論好きということもありますが….

 

[今日の達成]

・Pythonで統計処理!

[今日の未消化]

・英語をあまり使わなかった

Post a comment