1変量統計量Pythonプログラミング
1変量統計量としての平均値、分散、標準偏差を求めるプログラムOneVar.pyを、まず、クラス型の宣言は行わずに、以下のように作成した。
なお、統計についての解説は、岡本安晴「データ分析のための統計学入門」を参照されたい。
=============== OneVar.py ==============
import math
data = [1, 7, 3, 6,
2]
def sqr( x ):
return x * x
n = len(data)
sum = 0.0
for v in data:
sum += v
mean = sum / n
print("mean =
%f"%mean)
ssum = 0.0
for v in data:
ssum += sqr(v - mean)
var = ssum / n
sd = math.sqrt(var)
print("Variance
= %f"%var)
print("sd =
%f"%sd)
====================================
平均、分散、標準偏差の計算式は以下のとおりである。
、 、
上のプログラムでは、データはリストdataに設定されている。実行結果は図1のようになる。
図1
上のプログラムにおいて、統計計算の部分をクラス型CalcStatにまとめて、以下のように書き直した。
================ OneVarC.py ================
import math
def sqr( x ):
return x * x
class CalcStat:
def __init__(self):
pass
def calc(self, data):
n =
len(data)
sum
= 0.0
for
v in data:
sum += v
mean
= sum / n
ssum
= 0.0
for
v in data:
ssum += sqr(v - mean)
var
= ssum / n
sd =
math.sqrt(var)
return mean, var, sd
data = [1, 7, 3, 6,
2]
stat = CalcStat()
mean, var, sd =
stat.calc(data)
print("mean =
%f"%mean)
print("Variance
= %f"%var)
print("sd =
%f"%sd)
=======================================
プログラムOneVarC.pyの実行結果は、クラス型を用いないプログラムOneVar.pyと同じで、図2に示すとおりである。
図2
上の2つのプログラムは圧縮ファイルOneVarPrgs.zipにまとめた。