beer2011のブログ

田舎の日常、釣りや、ネット、Apple関係などの内容をカキコします。(特に)プログラミング関係はど素人ですので、あまり当てにされませぬように・・。(^^;) 「次ページ」や「過去記事」などのリンクは、下の方にあります。

カイ2乗分析、試行錯誤

さて、"たま"にしている統計学習(というほどのもでもないが)で、習いたての"カイ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()

実行結果は、こんな感じ。


f:id:beer2011:20140706081413j:plain


今回のデータも、以下のサイト様のデータを拝借。

「ハンバーガーショップで学ぶ、楽しい統計学
──平均から分散分析まで──
http://kogolab.chillout.jp/elearn/hamburger/

このサイトのおかげで、統計学習がなんとか進められている。
今までの自分が読んだなかで、内容が一番理解できている。
作者の方に感謝。

米 いつものことではありますが、この記事についての正確性といった保証はいたしかねます。もし、ためしてただく際は、「自己責任で」ということでお願いしますね。(^^