はじめに
教育心理学系の学部の方から対応の無いt検定をPythonで行いたいという質問をいただきました。
今回紹介する対応の無いt検定は実際の分析でも使用することも多く、統計的仮説検定を実務に活用するというとっかかりとしても勉強しておいて損はないと思います。
また、2標本t検定の中でも等分散性を仮定できない場合に実行するウェルチのt検定を中心に解説しようと思います。(汎用性が高く、例えばRではデフォルトの設定がウェルチのt検定です。)
※最後にでも記載しましたが、統計的仮説検定そのものに対する問題点やp値についての議論はここでは行いません。
主に使用する関数
# 両側検定(SciPyのデフォルト)
stats.ttest_ind(data1, data2, equal_var=False)
# 片側検定
stats.ttest_ind(data1, data2, equal_var=False, alternative="less")
# または、
stats.ttest_ind(data1, data2, equal_var=False, alternative="greater")
データを所有しており、すぐにでも実行したいという方向けに先に関数だけ紹介しておきます。
data1, data2には配列を入れてください。
データ生成
サンプルデータを作成します。
group1 = np.array([82, 82, 80, 78, 81, 76, 80])
group2 = np.array([83, 80, 83, 83, 84, 83, 83, 83])
# それぞれのデータの平均値
np.mean(group1)
np.mean(group2)
出力
>>> group1
array([82, 82, 80, 78, 81, 76, 80])
>>> group2
array([83, 80, 83, 83, 84, 83, 83, 83])
>>> np.mean(group1)
79.85714285714286
>>> np.mean(group2)
82.75
平均値が79.86と82.75でこの違いに意味があるのかを見ることがt検定の目的です。
また、group1のサンプルサイズは7で、group2のサンプルサイズは8です。サンプルサイズが違うことにより対応がないこともお分かりいただけるかと思います。
(教育分野のお話でしたので、指導法別にグループを分けて、なんらかのテストを行ったことを想定しています。)
対応の無いt検定(両側検定)の実行
ウェルチ(Welch)のt検定を行います。
有意水準をα=0.05と設定し、帰無仮説を「2グループ間の平均値に差がないこと」とします。
こちらの式で検定統計量を計算します。
t_0 = \frac{| \overline{x}_1 - \overline{x}_2 |}
{\sqrt{\frac{s_1^2}{n_1} + \frac{s_2^2}{n_2}}}
stats.ttest_ind(group1, group2, equal_var=False)
出力
Ttest_indResult(statistic=-3.125418086176548, pvalue=0.012436368672610056)
p値を(pvalue)を見ると p < 0.05 なので帰無仮説は棄却されます。
対応の無いt検定(片側検定)
両側検定のみで片側検定のやり方が記載されていない記事が多かったので、片側検定のやり方についても共有しようと思います。
SciPyの古いバージョン(version 1.6.0以前)では、パラメータを変更するだけで実行することができなかったということが関係しているのかもしれません。
対応の無いt検定(片側検定)の実行
有意水準をα=0.05と設定し、帰無仮説を「2グループ間の平均値に差がないこと」とします。
上記両側検定との違いは、片側検定なので対立仮説が「group1はgroup2より平均値が小さい」というようなものになります。
stats.ttest_ind(group1, group2, equal_var= False, alternative="less")
出力
Ttest_indResult(statistic=-3.125418086176548, pvalue=0.006218184336305028)
p < 0.05 なので帰無仮説は棄却されます。
最後に
本記事では、対応のない2標本t検定の実行方法について紹介しました。実行だけであれば一行のコードで済むのは便利に感じます。
また、統計的仮説検定そのものに対する問題点やp値についての議論はここでは行わないようにしますのでご了承くださいませ。
この記事は以下の情報を参考にして執筆しました。