Pythonを用いた仮説検定について解説します.
仮説検定の選び方や,使用するライブラリなども紹介しています.
仮説検定の選び方
代表的な検定方法の選び方は,以下のフローチャートになります.
検定方法を選ぶ際の主な観点は4つになります.より詳しい選び方は以下のページで解説しています.
・データの種類
・対応のある・対応のない
・正規性のある・ない
・標本数
主な検定手法の考え方やExcelを用いた計算方法は,以下のページで解説しています.
仮説検定の実行方法(ウェルチのt検定)
Pythonで仮説検定を行うための記述例を紹介します.
具体例として,対応のない2群に対して行うウェルチのt検定で解説します.記述例は以下になります.
# ライブラリのインポート
from scipy import stats
# データの定義
x = [50, 71, 85, 63, 43, 34, 54, 93, 77, 45]
y = [45, 88, 93, 93, 74, 92, 79, 68, 74, 80]
# 検定の実行
result = stats.ttest_ind(x, y, equal_var=False)
# 結果の出力
print(result)
① ライブラリ・モジュールのインポート
必要なライブラリ・モジュールをインポートします.仮説検定では,主に数値解析用ライブラリであるSciPyのstatsモジュールを用います.
from ライブラリ名 import モジュール名 の形式で記述します.
※ ライブラリとは複数のプログラムファイル群で,モジュール(部品)はライブラリ内の1ファイルを意味します.
② データの定義
仮説検定を行う標本の定義を行います.基本的にはデータは配列形式で定義します.
事前に作成したcsvファイルなどからデータを読み込み,定義することもできます.
③ 検定の実行
①でインポートしたモジュールの関数を用いて仮説検定を実行します.配列データを引数として指定することで,対象のデータとして計算されます.
モジュール名.関数名(データA, データB) の形式で記述します.
検定結果は新しい変数(result)に格納します.
④ 結果の出力
検定結果を画面上に出力します.print関数を用いて出力することができます.
検定結果は以下のように出力されます.statisticは検定統計量,pvalueはp値を示しています.
Ttest_indResult(statistic=-2.2065995919387995, pvalue=0.04159065447065379)
以上がPythonを用いた仮説検定の実行例となります.
仮説検定の使用するライブラリ一覧
主な仮説検定で使用するライブラリ・モジュール・関数の一覧になります.
検定手法 | ライブラリ | モジュール | 関数 | 備考 |
カイ二乗検定 | SciPy | stats | chi2_contingency | データはクロス集計表(表形式) |
フィッシャーの正確確率検定 | SciPy | stats | fisher_exact | データはクロス集計表(表形式) |
対応のないt検定 | SciPy | stats | ttest_ind | |
ウェルチのt検定 | SciPy | stats | ttest_ind | 引数で「equal_var=False」を指定 |
一元配置分散分析 | SciPy | stats | f_oneway | |
マンホイットニーのU検定 | SciPy | stats | mannwhitneyu | |
クラスカル・ウォリス検定 | SciPy | stats | kruskal | |
対応のあるt検定 | SciPy | stats | ttest_rel | |
対応のある一元配置分散分析 | statsmodels | stats.anova | AnovaRM | |
ウィルコクソンの符号順位検定 | Scipy | stats | wilcoxon | |
フリードマン検定 | Scipy | stats | friedmanchisquare |
カイ二乗検定やフィッシャーの正確確率検定は,クロス集計表の検定方法であるため配列形式ではなく表形式でデータを渡す必要があります.Pythonを用いたクロス集計表の作成方法は補足②で解説しています.
補足① PyCharmを用いた実行環境の構築
Pythonを初めて使う方や,自分のPCにPython・PyCharmが入っていない方は,以下のページで解説している手順で実行環境の構築を行ってください.
初めて触る方にもわかりやすいようにPyCharmを用いた手順となっています.仮説検定では,”SciPy”というライブラリを使用します.インストール方法が分からない方は,ライブラリのインストールを参考にしてください.
》実行環境の構築方法【Pycharm使用】
》ライブラリのインストール方法【Pycharm使用】
補足② Pythonを用いたクロス集計表の作り方
PythonのPandasライブラリを用いたクロス集計表の作成方法について解説します.以下のようなデータからクロス集計表作成する例とします.
記述例は以下になります.
# ライブラリのインポート
import pandas as pd
# データフレームの読み込み
df = pd.read_csv(sample.csv)
# クロス集計表の作成
table = pd.crosstab(df["side_job"], df["sex"])
事前に作成したCSVファイルをデータフレームに格納して,crosstab関数を用いて作成します.作成されたクロス集計表は以下のようなデータフレームになります.
side_job No Yes Total
sex
man 5 1 6
woman 2 2 4
Total 7 3 10