始める無料で始める

検出力分析 - パート I

ここからは検出力分析に取り組みます。実験やA/Bテストを行うときは、少なくとも80%の検出力を確保するのが一般的です。その一つの方法は、80%の検出力を達成するために必要なサンプルサイズを計算することです。

あなたがニュース系メディアサイトの担当者で、ユーザーがサイトで過ごす時間を増やしたいとします。現在、ユーザーの滞在時間は平均1分、標準偏差0.5分の正規分布に従っています。ページの読み込みを高速化する新機能を導入し、サイト滞在時間が5%増加したことを検出するのに必要なサンプルサイズを知りたいとします。

この演習では、1回のシミュレーションを実行する枠組みを作り、t検定を実行し、p値を計算します。

この演習はコースの一部です

Pythonで学ぶ統計シミュレーション

コースを見る

演習の手順

  • effect_size を5%、control_mean を1、control_sd を0.5に初期化します。
  • np.random.normal() を使い、初期化した値を用いて control_time_spenttreatment_time_spent を1回分シミュレーションします。
  • st はすでにインポート済みの scipy.stats です。st.ttest_ind() を使って、treatment_time_spentcontrol_time_spent に対して t検定を実行します。
  • 統計的有意性 stat_sig は、p_value が 0.05 未満なら True、それ以外は False にします。

実践的なインタラクティブ演習

このサンプルコードを完成させて、この演習に挑戦してみましょう。

# Initialize effect_size, control_mean, control_sd
effect_size, sample_size, control_mean, control_sd = ____, 50, ____, ____

# Simulate control_time_spent and treatment_time_spent, assuming equal variance
control_time_spent = np.random.normal(loc=control_mean, scale=____, size=sample_size)
treatment_time_spent = np.random.normal(loc=____*(1+effect_size), scale=control_sd, size=____)

# Run the t-test and get the p_value
t_stat, p_value = st.ttest_ind(____, ____)
stat_sig = p_value < ____
print("P-value: {}, Statistically Significant? {}".format(p_value, stat_sig))
コードを編集して実行