セグメント別A/Bテスト関数の作成
前のレッスンでは、パーソナライゼーションの実験が統計的に非常に有意であることを確認しました。ただし、実験を行う際には、新機能が特定の属性層にどのような影響を与えているかを確認することが重要です。あるグループにはとても魅力的でも、別のグループにはそうでもないことがあります。
データを何度もセグメント化して確認したいので、A/Bテストの影響をセグメントごとに分析し、同様の分析を行うたびに再利用できる関数 ab_segmentation() を作成します。
この関数は列名を受け取り、その列に含まれる各一意の値について、リフトと統計的有意性を計算します。
この演習はコースの一部です
pandasで学ぶマーケティングキャンペーン分析
演習の手順
- 入力された列名
segmentに含まれる各一意の値を走査する、ab_segmentation()関数内の for ループを作成してください。 - マーケティングチャネルが
'Email'で、かつ入力列segmentがsubsegmentに等しい行のみを marketing から抽出してください。 lift()とstats.ttest_ind()の結果を出力してください。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
def ab_segmentation(segment):
# Build a for loop for each subsegment in marketing
for subsegment in ____:
print(subsegment)
# Limit marketing to email and subsegment
email = marketing[(marketing['marketing_channel'] == ____) & (marketing[segment] == ____)]
subscribers = email.groupby(['user_id', 'variant'])['converted'].max()
subscribers = pd.DataFrame(subscribers.unstack(level=1))
control = subscribers['control'].dropna().astype(float)
personalization = subscribers['personalization'].dropna().astype(float)
print('lift:', ____)
print('t-statistic:', ____, '\n\n')