Pandas で t 検定を実行する方法 (3 つの例)


次の例は、pandas DataFrame を使用して 3 つの異なる t 検定を実行する方法を示しています。

  • 独立した 2 サンプルの t 検定
  • ウェルチの 2 サンプル t 検定
  • 対応のあるサンプルの t 検定

例 1: pandas での独立した 2 サンプル t 検定

独立した 2 サンプルの t 検定を使用して、2 つの母集団の平均が等しいかどうかを判断します。

たとえば、教授が 2 つの異なる勉強方法によって試験の平均点が異なるかどうかを知りたいと考えているとします。

これをテストするために、方法 A を使用する生徒を 10 名、方法 B を使用する生徒を 10 名ずつ募集します。

次のコードは、各生徒のスコアを pandas DataFrame に入力し、 SciPyライブラリのttest_ind()関数を使用して独立した 2 サンプルの t 検定を実行する方法を示しています。

 import pandas as pd
from scipy. stats import ttest_ind

#create pandas DataFrame
df = pd. DataFrame ({'method': ['A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A',
                              'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B'],
                   'score': [71, 72, 72, 75, 78, 81, 82, 83, 89, 91, 80, 81, 81,
                             84, 88, 88, 89, 90, 90, 91]})

#view first five rows of DataFrame
df. head ()

  method score
0 to 71
1 To 72
2 To 72
3 to 75
4 to 78

#define samples
group1 = df[df[' method ']==' A ']
group2 = df[df[' method ']==' B ']

#perform independent two sample t-test
ttest_ind(group1[' score '], group2[' score '])

Ttest_indResult(statistic=-2.6034304605397938, pvalue=0.017969284594810425)

結果から次のことがわかります。

  • t 検定統計量: – 2.6034
  • p値: 0.0179

p 値は 0.05 未満であるため、t 検定の帰無仮説は棄却され、2 つの方法が異なる試験平均点につながることを示す十分な証拠があると結論付けられます。

例 2: pandas でのウェルチの t 検定

ウェルチの t 検定は、サンプルの抽出元となった 2 つの母集団の分散が等しいと仮定しないことを除いて、独立した 2 サンプルの t 検定に似ています。

前の例とまったく同じデータセットに対してウェルチの t 検定を実行するには、次のようにttest_ind () 関数でqual_var=Falseを指定するだけです。

 import pandas as pd
from scipy. stats import ttest_ind

#create pandas DataFrame
df = pd. DataFrame ({'method': ['A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A',
                              'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B'],
                   'score': [71, 72, 72, 75, 78, 81, 82, 83, 89, 91, 80, 81, 81,
                             84, 88, 88, 89, 90, 90, 91]})

#define samples
group1 = df[df[' method ']==' A ']
group2 = df[df[' method ']==' B ']

#perform Welch's t-test
ttest_ind(group1[' score '], group2[' score '], equal_var= False )

Ttest_indResult(statistic=-2.603430460539794, pvalue=0.02014688617423973)

結果から次のことがわかります。

  • t 検定統計量: – 2.6034
  • p値: 0.0201

p 値は 0.05 未満であるため、ウェルチの t 検定の帰無仮説は棄却され、2 つの方法が異なる試験平均点につながることを示す十分な証拠があると結論付けられます。

例 3: Pandas での対応のあるサンプルの t 検定

対応のあるサンプルの t 検定は、 2 つの母集団平均が等しいかどうかを判断するために使用され、一方のサンプルの各観測値がもう一方のサンプルの観測値と関連付けられます。

たとえば、教授が 2 つの異なる勉強方法によって試験の平均点が異なるかどうかを知りたいと考えているとします。

これをテストするために、方法 A を使用してテストを受ける 10 人の学生を募集しました。次に、方法 B を使用した同じ 10 人の生徒に、同様の難易度の別のテストを準備させ、受験させます。

すべての生徒が両方のサンプルに含まれるため、このシナリオでは対応のあるサンプルの t 検定を実行できます。

次のコードは、各生徒のスコアを pandas DataFrame に入力し、 SciPyライブラリのttest_rel()関数を使用して、対応のあるサンプルの t 検定を実行する方法を示しています。

 import pandas as pd
from scipy. stats import ttest_rel

#create pandas DataFrame
df = pd. DataFrame ({'method': ['A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A',
                              'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B'],
                   'score': [71, 72, 72, 75, 78, 81, 82, 83, 89, 91, 80, 81, 81,
                             84, 88, 88, 89, 90, 90, 91]})

#view first five rows of DataFrame
df. head ()

  method score
0 to 71
1 To 72
2 To 72
3 to 75
4 to 78

#define samples
group1 = df[df[' method ']==' A ']
group2 = df[df[' method ']==' B ']

#perform independent two sample t-test
ttest_rel(group1[' score '], group2[' score '])

Ttest_relResult(statistic=-6.162045351967805, pvalue=0.0001662872100210469)

結果から次のことがわかります。

  • t 検定統計量: – 6.1620
  • p値: 0.0001

p 値は 0.05 未満であるため、対応のあるサンプルの t 検定の帰無仮説は棄却され、2 つの方法が異なる試験平均点につながることを示す十分な証拠があると結論付けられます。

追加リソース

次のチュートリアルでは、Python で他の一般的なタスクを実行する方法について説明します。

Python でカイ二乗独立性検定を実行する方法
Python で一元配置分散分析を実行する方法
Python でフィッシャーの正確テストを実行する方法

コメントを追加する

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