Pythonの練習3

統計量の計算や,検定も可能な「scipy」を使って練習をしてみる

import scipy as sp
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
#2つのクラス(50人ずつ)のある科目の点数の分布を比較してみる
class1 = np.random.randint(0,100,50)
class2 = np.random.randint(0,100,50)
#ヒストグラムも描いてみる
fig = plt.figure()
ax = fig.add_subplot(111)
ax.hist(class1,bins=50, color='red', alpha = 1)
ax.hist(class2,bins=50, color='blue',alpha = 1)
ax.set_xlabel('tensu')
ax.set_ylabel('relative frequency')
ax.set_xlim(0,100,10)
plt.savefig('./fig/hist.png')
赤:クラス1,青:クラス2
#平均を出力させて予想してみる
ave_cls1 = np.mean(class1)
ave_cls2 = np.mean(class2)
print(ave_cls1,ave_cls2)

出力結果は,クラス1では45.00点
      クラス2では56.22点

点数は独立したものなので,対応のない検定を行う.
有意水準は5%,帰無仮説は「2つのクラス間に平均の差はない」とする
res = sp.stats.ttest_ind(class1,class2,equal_var=False)
print(res)

結果:
Ttest_indResult(statistic=-1.8883673077867298, pvalue=0.06195728760398108)
p=0.06>0.05 #かなり微妙な数値だが・・・
ということで,2つのクラスの平均点は有意に等しいといえる.

コメントを残す

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