a b testing for marketing
play

A / B testing for marketing AN ALYZIN G MAR K E TIN G C AMPAIG N - PowerPoint PPT Presentation

A / B testing for marketing AN ALYZIN G MAR K E TIN G C AMPAIG N S W ITH PAN DAS Jill Rosok Data Scientist What is A / B testing ? Prior to r u nning the test determine : What is the desired o u tcome of the test ? What is o u r h y pothesis


  1. A / B testing for marketing AN ALYZIN G MAR K E TIN G C AMPAIG N S W ITH PAN DAS Jill Rosok Data Scientist

  2. What is A / B testing ? Prior to r u nning the test determine : What is the desired o u tcome of the test ? What is o u r h y pothesis ? What is the metric w e are tr y ing to impact ( i . e ., page v ie w s , con v ersions )? Will w e get eno u gh tra � c to o u r site to reach statistical signi � cance and make a decision in a timel y manner ? ANALYZING MARKETING CAMPAIGNS WITH PANDAS

  3. Testing allo w s u s to u nderstand marketing impact ANALYZING MARKETING CAMPAIGNS WITH PANDAS

  4. Ho w long does a test need to r u n ? ANALYZING MARKETING CAMPAIGNS WITH PANDAS

  5. Personali z ed email test ANALYZING MARKETING CAMPAIGNS WITH PANDAS

  6. Test allocation email = marketing[marketing['marketing_channel'] == 'Email' allocation = email.groupby(['variant'])\ ['user_id'].nunique() allocation.plot(kind='bar') plt.title('Personalization test allocation') plt.xticks(rotation = 0) plt.ylabel('# participants') plt.show() ANALYZING MARKETING CAMPAIGNS WITH PANDAS

  7. Allocation plot ANALYZING MARKETING CAMPAIGNS WITH PANDAS

  8. Setting u p o u r data to e v al u ate the test # Group by user_id and variant subscribers = email.groupby(['user_id', 'variant'])['converted'].max() subscribers = pd.DataFrame(subscribers.unstack(level=1)) ANALYZING MARKETING CAMPAIGNS WITH PANDAS

  9. Setting u p o u r data to e v al u ate the test # Drop missing values from the control column control = subscribers['control'].dropna() # Drop missing values from the personalization column personalization = subscribers['personalization'].dropna() ANALYZING MARKETING CAMPAIGNS WITH PANDAS

  10. Con v ersion rates print("Control conversion rate:", np.mean(control)) print("Personalization conversion rate:", np.mean(personalization)) Control conversion rate: 0.2814814814814815 Personalization conversion rate: 0.3908450704225352 ANALYZING MARKETING CAMPAIGNS WITH PANDAS

  11. Let ' s get testing ! AN ALYZIN G MAR K E TIN G C AMPAIG N S W ITH PAN DAS

  12. Calc u lating lift & significance testing AN ALYZIN G MAR K E TIN G C AMPAIG N S W ITH PAN DAS Jill Rosok Data Scientist

  13. Treatment performance compared to the control Calc u lating li �: Treatment conversion rate - Control conversion rate Control conversion rate ANALYZING MARKETING CAMPAIGNS WITH PANDAS

  14. Calc u lating lift # Calcuate the mean of a and b a_mean = np.mean(control) b_mean = np.mean(personalization) # Calculate the lift using a_mean and b_mean lift = (b_mean-a_mean)/a_mean print("lift:", str(round(lift*100, 2)) + '%') lift: 194.23% ANALYZING MARKETING CAMPAIGNS WITH PANDAS

  15. T - distrib u tion 1 Identi � cation of Timed Beha v ior Models for Diagnosis in Prod u ction S y stems . Scienti � c Fig u re on ResearchGate . ANALYZING MARKETING CAMPAIGNS WITH PANDAS

  16. P -v al u es T - statistic of 1.96 is t y picall y statisticall y signi � cant at the 95% le v el Depending on the conte x t of the test , y o u ma y be comfortable w ith a lo w er or higher le v el of statistical signi � cance . ANALYZING MARKETING CAMPAIGNS WITH PANDAS

  17. T - test in P y thon from scipy.stats import ttest_ind t = ttest_ind(control, personalized) print(t) Ttest_indResult(statistic=-2.7343299447505074, pvalue=0.006451487844694175) ANALYZING MARKETING CAMPAIGNS WITH PANDAS

  18. Let ' s practice ! AN ALYZIN G MAR K E TIN G C AMPAIG N S W ITH PAN DAS

  19. A / B testing & segmentation AN ALYZIN G MAR K E TIN G C AMPAIG N S W ITH PAN DAS Jill Rosok Data Scientist

  20. Don ' t forget abo u t segmentation ! ANALYZING MARKETING CAMPAIGNS WITH PANDAS

  21. Personali z ation test segmented b y lang u age for language in np.unique(marketing['language_displayed'].v print(language) ANALYZING MARKETING CAMPAIGNS WITH PANDAS

  22. Isolate the rele v ant data for language in np.unique(marketing['language_displayed'].values): print(language) language_data = marketing[(marketing['marketing_channel'] == 'Email') & (marketing['language_displayed'] == language)] ANALYZING MARKETING CAMPAIGNS WITH PANDAS

  23. Isolate s u bscribers for language in np.unique(marketing['language_displayed'].values): print(language) language_data = marketing[(marketing['marketing_channel'] == 'Email') & (marketing['language_displayed'] == language)] subscribers = language_data.groupby(['user_id', 'variant'])['converted']\ .max() ANALYZING MARKETING CAMPAIGNS WITH PANDAS

  24. Isolate control and personali z ation for language in np.unique(marketing['language_displayed'].values): print(language) language_data = marketing[(marketing['marketing_channel'] == 'Email') & (marketing['language_displayed'] == language)] subscribers = language_data.groupby(['user_id', 'variant'])['converted']\ .max() subscribers = pd.DataFrame(subscribers.unstack(level=1)) control = subscribers['control'].dropna() personalization = subscribers['personalization'].dropna() ANALYZING MARKETING CAMPAIGNS WITH PANDAS

  25. F u ll for loop for language in np.unique(marketing['language_displayed'].values): print(language) language_data = marketing[(marketing['marketing_channel'] == 'Email') & (marketing['language_displayed'] == language)] subscribers = language_data.groupby(['user_id', 'variant'])['converted']\ .max() subscribers = pd.DataFrame(subscribers.unstack(level=1)) control = subscribers['control'].dropna() personalization = subscribers['personalization'].dropna() print('lift:', lift(control, personalization)) print('t-statistic:', stats.ttest_ind(control, personalization), '\n\n') ANALYZING MARKETING CAMPAIGNS WITH PANDAS

  26. Res u lts Arabic lift: 50.0% t-statistic: Ttest_indResult(statistic=-0.58, pvalue=0.58) English lift: 39.0% t-statistic: Ttest_indResult(statistic=-2.22, pvalue=0.03) German lift: -1.62% t-statistic: Ttest_indResult(statistic=0.19, pvalue=0.85) Spanish lift: 166.67% t-statistic: Ttest_indResult(statistic=-2.36, pvalue=0.04) ANALYZING MARKETING CAMPAIGNS WITH PANDAS

  27. Let ' s practice ! AN ALYZIN G MAR K E TIN G C AMPAIG N S W ITH PAN DAS

  28. Wrap -u p AN ALYZIN G MAR K E TIN G C AMPAIG N S W ITH PAN DAS Jill Rosok Data Scientist

  29. Dataset marketing = pd.read_csv('marketing.csv') print(marketing.head()) user_id date_served channel variant conv \ 0 a100000029 2018-01-01 House Ads personalization True 1 a100000030 2018-01-01 House Ads personalization True 2 a100000031 2018-01-01 House Ads personalization True 3 a100000032 2018-01-01 House Ads personalization True 4 a100000033 2018-01-01 House Ads personalization True language_displayed preferred_language age_group 0 English English 0-18 years 1 English English 19-24 years 2 English English 24-30 years 3 English English 30-36 years i i ANALYZING MARKETING CAMPAIGNS WITH PANDAS

  30. Preprocessing Feat u re engineering Resol v ing errors in the data ANALYZING MARKETING CAMPAIGNS WITH PANDAS

  31. Marketing metrics Number of people who convert Conversion rate = Total number of people who we market to Number of people who remain subscribed Retention rate = Total number of people who converted ANALYZING MARKETING CAMPAIGNS WITH PANDAS

  32. C u stomer segmentation marketing.groupby(['channel', 'age_group'])\ ['user_id'].count() ANALYZING MARKETING CAMPAIGNS WITH PANDAS

  33. Dip in con v ersion rate ? house_ads = marketing[marketing['channel'] == 'House Ads'] language = conversion_rate(house_ads, ['date_served', 'language_displayed']) ANALYZING MARKETING CAMPAIGNS WITH PANDAS

  34. Yo u anal yz ed an A / B test Li � T - tests ANALYZING MARKETING CAMPAIGNS WITH PANDAS

  35. Good l u ck ! AN ALYZIN G MAR K E TIN G C AMPAIG N S W ITH PAN DAS

Recommend


More recommend