Pythonで対応のあるt検定をやってみる【心理統計】

こんにちは、ヒロムです。

心理統計でお馴染みt検定ですが、今回はPythonで「対応のあるt検定」をやっていきたいと思います。

※ちなみに「対応のある」「対応のない」の違いは、簡潔に言うと郡内比較 or 群間比較かの違いです。「対応のある」場合、1人の被験者に2つのテストを行った場合のように、変数間に相関がありますが、「対応のない」場合はありません。対応のあるなしでt値の求め方も若干異なります。今回は対応のある場合で検定していきます。

 

Pythonで対応のあるt検定を実施する

前提

前提として、等分散制が仮定できるとします。

また、今回のサンプルサイズについて、心理学実験では「大体12人〜20人くらい取ればとりあえずいいんじゃね?」みたいな風潮があるので、とりあえず12人のデータを取ることにします。

有意水準は5%とし、両側検定をします。

 

対応のあるt検定を実施する

ではPythonで対応のあるt検定を実施しましょう。

まずはデータをアップロード。

import numpy as np
import pandas as pd

data = {"実験条件":  [43, 29, 50, 40, 45, 53, 39, 45, 35, 42, 50, 51], 
        "統制条件": [29, 27, 34, 43, 37, 43, 48, 44, 29, 31, 40, 45]}
df = pd.DataFrame(data, index = ["ID" + str(i+1) for i  in np.arange(12)])

df.head(3)

 

このデータをもとに、実験条件と統制条件の得点の間に差があるのかどうかを調べてみます。

公式をプログラムで実装することもできますが、scipyというライブラリにはt検定ができるメソッドがあるので、そちらで簡単に実装したいと思います。

from scipy import stats as ss
t, p = ss.ttest_rel(df["実験条件"], df["統制条件"])

print( "t値 = %(t)s" %locals() )
print( "p値 = %(p)s" %locals() )

出力結果:

t値 = 2.906

p値 = 0.014

 

p < .05 なので、実験条件と統制条件の得点の間に有意な差があった (t (11) = 2.906, p = .014) と解釈できますね。

i.e. 実験条件の得点の方が統制条件の得点よりも高いことが示されました。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です