今回は、検定が適切に行われていることを評価するための指標である検定力、効果量について紹介します。
検定力とは
検定力(power)とは、統計的な検定が正しく効果を検出できる能力を指します。
検定力が高いほど、実際の効果を見逃さず検出ことができているといえます。
ただし、検定力は高ければよいというわけではなく、適切な検定力にする必要があります。
検定力は以下の3つの要因に影響されます。
- サンプルサイズ: サンプルサイズが大きいほど、検定力は大きくなります
- 効果量: 効果量が大きいほど、検定力は大きくなります
- 有意水準: 有意水準が高いほど検定力は大きくなります
効果量について以降で説明します。
効果量とは
効果量(effect size)とは、観測された効果や関係の大きさを数値化した指標です。
p値が「効果があるか」を示すのに対し、効果量は「その効果がどれほどあるのか」を示します。
主な効果量の指標
効果量の指標は検定により、いくつかあります。
今回は代表的は指標を紹介します。
Cohen’s d
Cohen’s dは、2つの集団間の平均の差を標準偏差で割ったものです。
t検定において使用されます。
計算式は以下の通りです。
$$ d = \frac{M_1 – M_2}{\sigma} $$
一般的には以下のように解釈されます。
0.2 | 0.4 | 0.8 |
---|---|---|
効果 小 | 効果 中 | 効果 大 |
検定力分析
検定力に影響する要因には、サンプルサイズ、効果量、有意水準の3つがあると、上記で説明しました。
この3つのうち、効果量と有意水準は過去のデータなどから決定します。
そのため、検定力が適切な値になるようにサンプルサイズを検定する必要があります。
検定力は0.8程度が適切だといわれるため、検定力が0.8になるようにサンプルサイズを決定させます。
このようにサンプルサイズを適切に設定する作業を検定力分析といいます。
Pythonで検定力分析
それでは、実際にPythonを用いて、検定力分析を実施してみましょう。
Pythonで検定力分析を実施するには、statsmodelsのライブラリのstats.powerモジュールのTTestIndPlowerクラスを使用します。
- statsmodels.stats.power.TTestIndPower
- .solve_power(effect_size, nobs1, alpha, power, ratio)
effect_size
: 効果量 nobs1
: 標本1のサイズalpha
: 有意水準power
: 検定力ratio
: 標本1に対する標本2の大きさ
求めたいパラメータの引数をNone
して使用します。
from statsmodels.stats.power import TTestIndPower
# TTestIndPowerオブジェクトの作成
analysis = TTestIndPower()
# 効果量 (Cohen's d)
effect_size = 0.4 # 中程度の効果サイズ
# 有意水準 (α)
alpha = 0.05
# 検定力
power = 0.8 # 検定力80%
sample_size = analysis.solve_power(effect_size=effect_size, nobs1=None, alpha=alpha, power=power)
print(f"必要なサンプルサイズ: {sample_size:.1f}")
実行結果
必要なサンプルサイズ: 99.1
この結果、検定力を0.8にするために必要なサンプルサイズは100(99.1を切り上げ)であることがわかります。
まとめ
検定力、効果量について解説しました。
また、検定力と効果量を用いて、検定力分析を実施する方法を紹介しました。
検定力分析は、適切に検定するために、検定前に実施する必要があります。
ここまで読んでくださりありがとうございます。
参考
おすすめ教材
米国データサイエンティストが教える統計学超入門講座【Pythonで実践】 【世界で55万人が受講】データサイエンティストを目指すあなたへ〜データサイエンス25時間ブートキャンプ〜他のUdemyの講座が気になる方はこちら