始める無料で始める

Sign up フロー

ここでは、サインアップから始まる eCommerce の広告フローの DGP(データ生成過程)をモデル化します。

ある1日に得られる広告インプレッション数は、ポアソン確率変数(RV)としてモデル化できます。\(\lambda\) は平均 10 万人、標準偏差 2000 の正規分布に従うとします。

サインアップの流れでは、顧客は広告を見て、クリックするかどうか、さらにサインアップするかどうかを決めます。つまり、クリックもサインアップも二値であり、二項分布の RV でモデル化します。では成功確率 \(p\) はどうなるでしょうか。現在の低コストオプションでは、クリック率は 1%、サインアップ率は 20% です。高コストオプションにすると、クリック率とサインアップ率が最大で 20% 向上する可能性がありますが、どの程度改善するかは不確実なため、一様分布の RV としてモデル化します。

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

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

コースを見る

演習の手順

  • ct_ratesu_rate の辞書を初期化し、high の値が low の値からその \(1.2 \times\) までの一様分布に従うようにしてください。
  • impressions を平均 lam のポアソン確率変数としてモデル化します。
  • clickssignups を二項確率変数としてモデル化します。n はそれぞれ impressionsclicksp はそれぞれ ct_rate[cost]su_rate[cost] とします。
  • 最後に、コストオプションが 'high' のときのシミュレーションされたサインアップ数を出力します。

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

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

# Initialize click-through rate and signup rate dictionaries
ct_rate = {'low':0.01, 'high':np.random.uniform(low=0.01, high=1.2*0.01)}
su_rate = {'low':0.2, 'high':____(low=0.2, high=1.2*____)}

def get_signups(cost, ct_rate, su_rate, sims):
    lam = np.random.normal(loc=100000, scale=2000, size=sims)
    # Simulate impressions(poisson), clicks(binomial) and signups(binomial)
    impressions = ____
    clicks = ____
    signups = ____
    return signups

print("Simulated Signups = {}".format(get_signups('high', ct_rate, su_rate, 1)))
コードを編集して実行