さて、"たま"にしている統計学習(というほどのもでもないが)で、習いたての"カイ2乗"のスクリプト書いてみた。
本当は、観測値を与えると、自動的に期待値を計算するようにできるはずだが、よくわからず、そこまで組めていない。σ(^_^;)
でも、とりあえず、カイ2乗値の計算はしてくれる。
役に立つとは思えないが一応掲載。
以下の通り。
# -*- coding: utf-8 -*- # v1.0 2014-07-05 import numpy as np #import matplotlib.mlab as mlab #import matplotlib.pyplot as plt import math # 簡易データ表示 def summary(observed, expected): print '----- summary -----' print 'observed = ' print observed print print 'expected = ' print expected # カイ2乗分析 def chi_test(observed, expected): x2 = 0 shape = observed.shape for i in range(shape[0]): for j in range(shape[1]): x2 = x2 + math.pow(observed[i][j]-expected[i][j], 2) / expected[i][j] print 'x2 = ', x2 def main(): observed = np.array(OBSERVED) expected = np.array(EXPECTED) # while True: print 's)ummary, c)hi_test, q)uit = ?' inp = raw_input() if inp == 's': summary(observed, expected) elif inp == 'c': chi_test(observed, expected) elif inp == 'q': print '***終了しました***' break if __name__ == '__main__': # 観測データ OBSERVED = [[435, 165, 650], [265, 135, 350]] # 期待データ。今のところ、手計算で、提供(^^;) EXPECTED = [[437.5, 187.5, 625], [262.5, 112.5, 375]] # main()
実行結果は、こんな感じ。
今回のデータも、以下のサイト様のデータを拝借。
「ハンバーガーショップで学ぶ、楽しい統計学」
──平均から分散分析まで──
http://kogolab.chillout.jp/elearn/hamburger/
このサイトのおかげで、統計学習がなんとか進められている。
今までの自分が読んだなかで、内容が一番理解できている。
作者の方に感謝。
米 いつものことではありますが、この記事についての正確性といった保証はいたしかねます。もし、ためしてただく際は、「自己責任で」ということでお願いしますね。(^^