Up

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にまとめた。

 

 

Up