実験計画:検出力分析

Pythonで学ぶA/Bテスト

Moe Lotfy, PhD

Principal Data Science Manager

効果量

  • 平均差の効果量(Cohen's d) Cohen's d の効果量の式
  • 比率差の効果量(Cohen's h)

Cohen's h の効果量の式

  • 目安
    • 小さい効果 = 0.2
    • 中程度の効果 = 0.5
    • 大きい効果 = 0.8
# 標準化効果量を計算
from statsmodels.stats.proportion import proportion_effectsize
effect_size_std = proportion_effectsize(.33, .3)
print(effect_size_std)
0.0645
# 標準化効果量を計算
from statsmodels.stats.proportion import proportion_effectsize
effect_size_std = proportion_effectsize(p_B, p_A)
print(effect_size_std)
0.0716
Pythonで学ぶA/Bテスト

比率のサンプルサイズ推定

# 検出力モジュールをインポート
from statsmodels.stats import power
# サンプルサイズを計算
sample_size = power.TTestIndPower().solve_power(effect_size=effect_size_std,
                                                power=.80,
                                                alpha=.05,
                                                nobs1=None)
print(sample_size)
3057.547
Pythonで学ぶA/Bテスト

サンプルサイズとMDEの検出力への影響

# t検定の検出力パッケージをインポート
from statsmodels.stats.power import TTestIndPower
# 検出力分析のパラメータを指定
sample_sizes = array(range(10, 120))
effect_sizes = array([0.2, 0.5, 0.8])
# 検出力曲線をプロット
TTestIndPower().plot_power(nobs=sample_sizes, effect_size=effect_sizes)
plt.show()

検出力曲線(サンプルサイズと検出力・効果量の関係)

Pythonで学ぶA/Bテスト

平均のサンプルサイズ推定

# 基準の平均注文額を計算
mean_A = checkout[checkout['checkout_page']=='A']['order_value'].mean()
print(mean_A)
24.9564
std_A = checkout[checkout['checkout_page']=='A']['order_value'].std()
print(std_A)
2.418
# 目標とする最小平均注文額を設定
mean_new = 26
# 標準化効果量を計算
std_effect_size=(mean_new-mean_A)/std_A
Pythonで学ぶA/Bテスト

平均のサンプルサイズ推定

sample_size = power.TTestIndPower().solve_power(effect_size=std_effect_size,
                                                power=.80,
                                                alpha=.05,
                                                nobs1=None)
print(sample_size)
85.306
Pythonで学ぶA/Bテスト

Passons à la pratique !

Pythonで学ぶA/Bテスト

Preparing Video For Download...