Python の 2 サンプル T 検定
世界中のほとんどのプログラマーは、プログラミングに Python 言語を使用しています。 Python は、インタープリター型の高水準プログラミング言語として非常に人気があります。
ほとんどのプログラマーはオブジェクト指向プログラミングで Python を使用しているため、Web 開発、データ視覚化、人工知能や機械学習などの分野、バックエンド開発、およびスクリプト言語として Python を使用しています。
Python が提供する 1つの機能は、2 サンプル t 検定を実行できることです。 この記事では、2 サンプル t 検定とは何か、および Python を使用してそれを実行する方法について説明します。
Python での 2 サンプル T 検定
2 サンプル t 検定は、2つのデータ グループの 2つの未知の母平均が等しいかどうかを判断するために実行できる検定の一種です。 独立標本の t 検定とも呼ばれます。
あるグループが別のデータ グループに関係していてはなりません。
2 標本 t 検定を実行する前に、データ グループに関する 3つの仮定を考慮する必要があります。
- テストに使用する 2つのデータ グループは独立しています。
- 均一性の仮定: ここでは、2つのデータ グループの分散が同じであると仮定します。
- 最後の仮定は、データ グループ内のデータ分布が異なるかどうかです。
これらの仮定を使用して、2 サンプル t 検定を実行できます。
2 標本 t 検定の結果を分析するとき、2つの仮説を立てることができます。
H0
-dataGroup1 母集団平均 = dataGroup2 母集団平均
. 帰無仮説とも呼ばれます。HA
-dataGroup1 母集団平均 != dataGroup2 母集団平均
.
このテストを実行するには、主に 3つの方法があります。
scipy
の使用pingouin
の使用statsmodels
の使用
SciPy
ライブラリを使用する
Scientific Python ライブラリとしても知られる SciPy
は、科学的および数学的な問題を解決するオープンソースの Python ライブラリです。 SciPy
ライブラリ内のデータを操作および視覚化するために、いくつかの高レベルの Python コマンドを使用できます。
SciPy
ライブラリにはいくつかのサブパッケージがあります。 それらのいくつかは次のとおりです。
scipy.stats
- 統計と乱数に使用できます。scipy.io
- ファイルの入出力に使用できます。scipy.linalg
- 線形代数演算に使用できます。scipy.signal
- 信号処理に使用できます。
2 サンプル t 検定を実行するには、この SciPy
ライブラリを使用できます。
2 サンプル t 検定の構文は次のとおりです。
ttest_ind(dataGroup1, dataGroup2, equal_var=True / False)
ここで、ttest_ind
は、テストを実行する scipy.stats
サブパッケージによって提供される関数です。 その中には、作成したデータ グループである dataGroup1
と dataGroup2
があります。
equal_var
が true
に等しい場合、2 標本 t 検定は母分散が等しいと見なして実行されます。 false
の場合、母分散が等しくないことを考慮してウェルチの t 検定が行われます。
デフォルトでは、equal_var
は true
です。
データ グループの分散が等しいことを確認する
テストを実行する前に、データ グループの分散が同じかどうかを確認する必要があります。 大きなデータ グループと小さなデータ グループの比率が 4:1 未満の場合、両方のデータ グループの分散が等しいと言えます。
それを確認するには、以下の構文を使用できます。
np.var(dataGroup1), np.var(dataGroup2)
例を使用して t 検定を実行してみましょう。
2つのサンプル データ グループがあり、各グループに特定の科目の 10 人の生徒の採点が含まれているとします。 2つのグループの生徒が同じ教科の平均点を持っていることを明確にする必要があります。
最初のステップとして、pip
コマンドを使用して SciPy
および NumPy
ライブラリをインストールする必要があります。
$ pip install scipy
$ pip install numpy
次に、scipy.stats
サブライブラリと NumPy
を環境にインポートする必要があります。 前述のように、scipy.stats
はテストの実行に役立ち、NumPy
はデータ グループの作成に役立ちます。
これら 2つのモジュールを次のようにインポートできます。
import scipy.stats as stats
import numpy as np
次に、次のように、いくつかのデータを使用して 2つのグループを作成できます。
dataGroup1 = np.array([17, 16, 14, 19, 20, 21, 15, 13, 14, 12])
dataGroup2 = np.array([19, 19, 14, 17, 22, 24, 16, 18, 15, 13])
まず、次のように、データ グループの分散が等しいことを確認できます。
print(np.var(dataGroup1), np.var(dataGroup2))
コードを実行すると、下の画像に示すような出力が得られます。
ご覧のとおり、比率は 10.809/8.49
で、4:1 未満です。 したがって、データ グループの分散は等しいと言えます。
それでは、テストを実行しましょう。
print(stats.ttest_ind(dataGroup1, dataGroup2, equal_var=True))
出力:
ここで取得した p-value
は 0.2889
で、alpha
値の 0.05 よりも大きい値です。 したがって、2つのグループの生徒の平均点に違いはないと言えます。これが帰無仮説です (前述の 2つの仮説によると)。
完全なコード:
# Importing the libraries
import scipy.stats as stats
import numpy as np
# Defining the data groups
dataGroup1 = np.array([17, 16, 14, 19, 20, 21, 15, 13, 14, 12])
dataGroup2 = np.array([19, 19, 14, 17, 22, 24, 16, 18, 15, 13])
# Check the equality of the variances of the data groups
print(np.var(dataGroup1), np.var(dataGroup2))
# Executing the test
print(stats.ttest_ind(dataGroup1, dataGroup2, equal_var=True))
pingouin
ライブラリを使用する
2 サンプル t 検定を実行する別の方法は、pingouin
パッケージを使用することです。 これは、統計機能を備えた NumPy
と pandas
に基づくオープン ソース パッケージです。
pingouin
を使用するには、pip
コマンドを使用してインストールする必要があります。
$ pip install pingouin
次に、以下の構文を使用して t 検定を実行できます。
ttest(dataGroup1, dataGroup2, correction=True / False)
ここで、ttest
関数は pingouin
パッケージによって提供されます。 dataGroup1
と dataGroup2
は、テストするグループです。
修正
が 真
の場合、テストは均一性の仮定を考慮して実行されます。 偽
の場合は、前述のように、均一性の仮定を考慮せずにウェルチの t 検定を実行します。
前の例を使って t 検定を実行してみましょう。 まず、NumPy
と pingouin
パッケージをインポートできます。
import pingouin as pg
import numpy as np
次に、データ グループを定義します。
dataGroup1 = np.array([17, 16, 14, 19, 20, 21, 15, 13, 14, 12])
dataGroup2 = np.array([19, 19, 14, 17, 22, 24, 16, 18, 15, 13])
これでテストを実行できます。
print(pg.ttest(dataGroup1, dataGroup2, correction=True))
出力:
ご覧のとおり、p-value
として 0.2891
があり、0.05
である alpha
値よりも大きくなっています。 これにより、2つのグループの平均点に統計的な差がないと判断されます。
完全なコード:
# Importing the libraries
import pingouin as pg
import numpy as np
# Defining the data groups
dataGroup1 = np.array([17, 16, 14, 19, 20, 21, 15, 13, 14, 12])
dataGroup2 = np.array([19, 19, 14, 17, 22, 24, 16, 18, 15, 13])
# Executing the test
print(pg.ttest(dataGroup1, dataGroup2, correction=True))
statsmodels
モジュールを使用する
Statsmodels
は SciPy
、NumPy
、Matplotlib
に基づいて構築された Python モジュールです。 統計テストと推定を実行するための関数とクラスをユーザーに提供します。
statsmodels
モジュールを使用して、2 サンプル t 検定を実行することもできます。 これを使用するには、pip
コマンドを使用してモジュールをインストールする必要があります。
$ pip install statsmodels
以下の構文を使用して、t 検定を実行できます。
ttest_ind(dataGroup1, dataGroup2)
ttest_ind
はテストを実行するために使用する関数であり、dataGroup1
と dataGroup2
はテストに使用するグループです。
前の例を使用してテストしてみましょう。
まず、statsmodels
から ttest_ind
関数をインポートする必要があります。 次に、numpy
ライブラリをインポートできます。
from statsmodels.stats.weightstats import ttest_ind
import numpy as np
これで、前に行ったようにデータ グループを定義できます。
dataGroup1 = np.array([17, 16, 14, 19, 20, 21, 15, 13, 14, 12])
dataGroup2 = np.array([19, 19, 14, 17, 22, 24, 16, 18, 15, 13])
次に、以下のテストを実行できます。
print(ttest_ind(dataGroup1, dataGroup2))
出力:
ご覧のとおり、p-value
として 0.2889
を受け取りましたが、これは alpha
値よりも大きくなっています。 したがって、学生グループの平均点は、統計的に他と差がないと言えます。
完全なコード:
# Importing libraries
from statsmodels.stats.weightstats import ttest_ind
import numpy as np
# Definig the data groups
dataGroup1 = np.array([17, 16, 14, 19, 20, 21, 15, 13, 14, 12])
dataGroup2 = np.array([19, 19, 14, 17, 22, 24, 16, 18, 15, 13])
# Executing the test
print(ttest_ind(dataGroup1, dataGroup2))
まとめ
この記事では、2 サンプル t 検定とは何か、Python でそれを実行する方法について説明しました。 学んだように、テストを行う主な方法は 3つあります。SciPy
、pingouin
、および statsmodels
を使用します。
これら 3つの方法では、テストを行うために異なるライブラリと関数が必要です。
概念を理解するために例を取り上げ、それをすべての方法に適用しました。 次に、仮説と仮定を使用して結果を分析しました。
Nimesha is a Full-stack Software Engineer for more than five years, he loves technology, as technology has the power to solve our many problems within just a minute. He have been contributing to various projects over the last 5+ years and working with almost all the so-called 03 tiers(DB, M-Tier, and Client). Recently, he has started working with DevOps technologies such as Azure administration, Kubernetes, Terraform automation, and Bash scripting as well.