Sign up フロー
ここでは、サインアップから始まる eCommerce の広告フローの DGP(データ生成過程)をモデル化します。
ある1日に得られる広告インプレッション数は、ポアソン確率変数(RV)としてモデル化できます。\(\lambda\) は平均 10 万人、標準偏差 2000 の正規分布に従うとします。
サインアップの流れでは、顧客は広告を見て、クリックするかどうか、さらにサインアップするかどうかを決めます。つまり、クリックもサインアップも二値であり、二項分布の RV でモデル化します。では成功確率 \(p\) はどうなるでしょうか。現在の低コストオプションでは、クリック率は 1%、サインアップ率は 20% です。高コストオプションにすると、クリック率とサインアップ率が最大で 20% 向上する可能性がありますが、どの程度改善するかは不確実なため、一様分布の RV としてモデル化します。
この演習はコースの一部です
Pythonで学ぶ統計シミュレーション
演習の手順
ct_rateとsu_rateの辞書を初期化し、highの値がlowの値からその \(1.2 \times\) までの一様分布に従うようにしてください。impressionsを平均lamのポアソン確率変数としてモデル化します。clicksとsignupsを二項確率変数としてモデル化します。nはそれぞれimpressionsとclicks、pはそれぞれ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)))