「ハンバーガー統計学にようこそ!」をPythonでお勉強 3.3まで

こちらのサイトを利用してPython (Anaconda) でデータ解析の勉強をさせてもらおうと思います。
ハンバーガー統計学にようこそ!

3.1 チキンの売り上げは少ないのか

import pandas as pd

url="http://kogolab.chillout.jp/elearn/hamburger/chap3/sec1.html"
dframe_list = pd.io.html.read_html(url,encoding="sjis")
grade_data = dframe_list[0].drop([0])
grade_data.columns = ['','ポテト','チキン','小計'] # indexの変更

waku_potate = float(grade_data.ix[1][1])
mogu_potate = float(grade_data.ix[2][1])
waku_chiken = float(grade_data.ix[1][2])
mogu_chiken = float(grade_data.ix[2][2])

potate = waku_potate + mogu_potate
chiken = waku_chiken + mogu_chiken
pc = potate + chiken
total_df = pd.DataFrame([ ['合計', potate, chiken, pc] ], columns=['','ポテト','チキン','小計'])
grade_data = grade_data.append( total_df )

print('観測度数')
grade_data

観測度数

ポテト チキン 小計
1 ワクワク 435 165 600
2 モグモグ 265 135 400
0 合計 700 300 1000
i_grade_data = dframe_list[1].drop([0])
i_grade_data.columns = ['','ポテト','チキン','小計']

i_waku_potate = (600 / 1000) * 700
i_mogu_potate = (400 / 1000) * 700
i_waku_chiken = (600 / 1000) * 300
i_mogu_chiken = (400 / 1000) * 300
print("期待度数")
i_grade_data['ポテト'][1] = str(i_waku_potate)
i_grade_data['ポテト'][2] = str(i_mogu_potate)
i_grade_data['チキン'][1] = str(i_waku_chiken)
i_grade_data['チキン'][2] = str(i_mogu_chiken)

i_grade_data

期待度数

ポテト チキン 小計
1 ワクワク 420.0 180.0 600
2 モグモグ 280.0 120.0 400
3 合計 700 300 1000

3.3 カイ2乗検定

#  カイ2乗値
kai = (( float(grade_data['ポテト'][1]) - float(i_grade_data['ポテト'][1]) ) **2 / float(i_grade_data['ポテト'][1])) + (( float(grade_data['ポテト'][2]) - float(i_grade_data['ポテト'][2]) ) **2 / float(i_grade_data['ポテト'][2])) + (( float(grade_data['チキン'][1]) - float(i_grade_data['チキン'][1]) ) **2 / float(i_grade_data['チキン'][1])) + (( float(grade_data['チキン'][2]) - float(i_grade_data['チキン'][2]) ) **2 / float(i_grade_data['チキン'][2]))

kai

4.464285714285714

# scipyを使ってカイ2乗値
from scipy import stats

observed = [ waku_potate, mogu_potate, waku_chiken, mogu_chiken ]
expected = [ i_waku_potate, i_mogu_potate, i_waku_chiken, i_mogu_chiken ]

print( observed, expected )
chisq, p = stats.chisquare( observed, expected )

print('カイ二乗統計量= {:0.2f}'.format(chisq))
print('P値 = {:0.2f}'.format(p))

[435.0, 265.0, 165.0, 135.0] [420.0, 280.0, 180.0, 120.0]
カイ二乗統計量= 4.46
P値 = 0.22

url="http://kogolab.chillout.jp/elearn/hamburger/chap3/sec3.html"
dframe_list3 = pd.io.html.read_html(url,encoding="sjis")
# 一般的に、行と列がある二次元の表の場合は、
#   自由度=(行の数-1)×(列の数-1)

# 自由度の計算
free_level = (2-1) * (2-1)
print( "自由度= {}".format(free_level) )

print("カイ2乗分布表")
kai_list = dframe_list3[1].drop([0])
kai_list.columns = [ "↓自由度/確率→", "0.05", "0.01" ]
kai_list

自由度= 1
カイ2乗分布表

↓自由度/確率→ 0.05 0.01
1 1 3.84 6.63
2 2 5.99 9.21
3 3 7.81 11.34
4 4 9.49 13.28
5 5 11.07 15.09
6 …以下続く…

自由度1の0.05と0.01の数値で比較検討するらしい。(未完)


こういうブログもありました。

人気のあるブログ:

コメントを残す

メールアドレスが公開されることはありません。

CAPTCHA


このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください