A/Btest (A/B测试)的营销策略效果分析
目錄
- 前言
- 一、數據介紹
- 二、觀察數據
- 1.引入庫
- 2.讀入數據
- 3.觀察數據
- 三、計算效果
- 1.簡單比對不同策略點擊率
- 2.觀察樣本容量
- 3.計算(以策略二組和對照組為例)
- 3.1 設定假設
- 3.2 計算方法
- 3.2.1 方法一:公式計算
- 3.2.2 方法二:Python函數計算
- 4.擴展
- 4.1 擴展一:策略一組和對照組對比
- 4.2 擴展二:策略二組和策略一組對比
- 總結
前言
本文分析以支付寶營銷活動為例,通過廣告點擊率指標比較兩組營銷策略的廣告投放效果。
一、數據介紹
來自阿里天池:數據
用到的是:effect_tb.csv: Click/Non-click dataset.
這個csv文件主要用來記錄用戶是否對廣告進行點擊。
二、觀察數據
1.引入庫
# import libraries import pandas as pd import numpy as nppd.set_option('float_format', lambda x: '%.4f' % x)2.讀入數據
# load data data = pd.read_csv('effect_tb.csv',header = None) data.columns = ["試驗后天數","用戶編號","是否點擊","試驗組別"]3.觀察數據
data.info() # table summary data.describe() # distinct count of columns data.nunique() #把重復用戶的用戶編號變成一個list去觀察 dup_userid=data["用戶編號"].value_counts()[data["用戶編號"].value_counts()>1].index.tolist()#查看是否都全部字段都重復的記錄 data[data.duplicated()]
雖然有重復的用戶id,但是可能在不用的時間(試驗后幾天)去做這個測試,也可能被放在不同的組別(實驗組別)、有不同的結果(是否點擊),我們都去驗證一下。
用戶ID和【試驗后天數】、【試驗組別】重復的記錄條數: 0
意味著一個用戶在不同天用了不同版本,簡而言之,沒有一個用戶在同一天用一個版本。
可以不刪除數據,因為如果按照用戶編號去重了,會對整個對比有影響。(之后討論)
data.pivot_table(index = "試驗組別", columns = "是否點擊", values = "用戶編號",aggfunc = "count",margins = True)三、計算效果
1.簡單比對不同策略點擊率
#各組的點擊率: print("對照組點擊率:",data[data["試驗組別"]==1]["是否點擊"].mean())print("一組試驗點擊率:",data[data["試驗組別"]==2]["是否點擊"].mean())print("二組試驗點擊率:",data[data["試驗組別"]==3]["是否點擊"].mean())
策略一組和策略二組都相對于對照組有提升,看起來策略二組提升得更多。
查看策略一組二組相對于參照組來說提升了多少
print("對照組點擊率:",data[data['試驗組別']==1]['是否點擊'].mean())print("策略一相對對照組提升:",round((data[data['試驗組別']==2]['是否點擊'].mean()-data[data['試驗組別']==1]['是否點擊'].mean())*100,3))print("策略二相對對照組提升:",round((data[data['試驗組別']==3]['是否點擊'].mean()-data[data['試驗組別']==1]['是否點擊'].mean())*100,3))策略一提升了0.279%,策略二提升了1.364。
假定我們希望新的營銷策略能讓廣告點擊率至少提升1個百分點才算提升。那么這里策略一不算是提升。我們研究策略二組的點擊率是否在置信區間內有顯著提升。
2.觀察樣本容量
在進行A/B測試前,需檢查樣本容量是否滿足試驗所需最小值。
這里借助Evan Miller的樣本量計算工具:
Evan Miller鏈接
已知對照組點擊率為1.26%,假定我們希望新的營銷策略能讓廣告點擊率至少提升1個百分點才算提升,顯著性水平α取5%,則算得所需最小樣本量為:2167。
data["試驗組別"].value_counts()
兩組營銷活動的樣本量都滿足最小樣本量需求。
3.計算(以策略二組和對照組為例)
3.1 設定假設
接下來需要進行假設檢驗,這里先查看一組點擊率的提升是否顯著。
零假設和備擇假設。記對照組點擊率為p0,策略二組點擊率為p2,則:
零假設 H0: p0 ≥ p2 (對照組的點擊率大于等于策略一組)
備擇假設 H1: p0 < p2 (對照組的點擊率小于策略一組)
分布類型、檢驗類型和顯著性水平樣本服從二點分布,獨立雙樣本,樣本大小n>30,總體均值和標準差未知,所以采用Z檢驗。顯著性水平α取0.05。顯著性水平α取0.05的單尾檢測(左側)對應的z值 = -1.64。
z值可以用python得出或者查看z-score表:
from scipy.stats import norm z_alpha = norm.ppf(0.05) # 若為雙側,則norm.ppf(0.05/2)結果為z_alpha=-1.6448536269514729,統計上一般取-1.645,拒絕域為{z <z_alpha }
3.2 計算方法
獨立雙樣本,樣本大小n>30,總體的均值和標準差未知的Z檢驗的檢驗統計量公式如下:
3.2.1 方法一:公式計算
# 用戶數 n_old = len(data[data["試驗組別"] == 1]) # 對照組 n_two = len(data[data["試驗組別"] == 3]) # 策略二組# 點擊數 c_old = len(data[data["試驗組別"] == 1][data["是否點擊"] == 1]) c_two = len(data[data["試驗組別"] == 3][data["是否點擊"] == 1])# 計算點擊率 r_old = c_old / n_old r_two = c_two / n_two#點擊率標準差 std_old=np.std(data[data["試驗組別"] == 1]["是否點擊"]) std_two=np.std(data[data["試驗組別"] == 3]["是否點擊"])# 總和點擊率 r = (c_old + c_two) / (n_old + n_two)print("轉化率的聯合率::", r)''' 結果: 轉化率的聯合率: 0.014429896833357214 '''按照公式計算:
z_two = (r_old - r_two) / np.sqrt(r * (1 - r)*(1/n_old + 1/n_two)) print("檢驗統計量z:", z_two)''' 結果: 檢驗統計量z: -59.66600946268368 '''z_one = -59.66600946268368 < -1.64,符合拒絕域為{z<z_alpha}。
所以我們可以得出結論:原假設(對照組的點擊率大于策略一組)不成立,策略二點擊率的提升在統計上是顯著的。
3.2.2 方法二:Python函數計算
直接用python statsmodels包計算z值和p值。
proportions_ztest官方鏈接
難點:
alternativestr The alternative hypothesis, H1, has to be one of the
following
- ‘two-sided’: H1: difference in means not equal to value (default)
- ‘larger’ : H1: difference in means larger than value
- ‘smaller’ : H1: difference in means smaller than value
p值約等于0,p < α,與方法一結論相同,拒絕原假設。
4.擴展
4.1 擴展一:策略一組和對照組對比
策略二組點擊率的提升是否顯著。
p1為策略一組,p0為對照組
- 零假設 H0: p1 < p0 (策略二組相比于對照組無提升)
- 備擇假設 H1: p1 ≥ p0 (策略二組相比于對照組有提升)
z_one < -1.64,,p < 0.05,拒絕原假設,即策略一組相比于對照組有提升。
4.2 擴展二:策略二組和策略一組對比
那么策略一和策略二相比呢?
p1為策略一組,p2為策略二組
因為從之前的結果看起來策略二組比策略一組提升更多,那么我們先假設是這樣。
- 零假設 H0: p2 <≥ p1 (策略二組相比于策略一組有提升)
- 備擇假設 H1: p2 ≥ p1 (策略二組相比于策略一組無提升)
看一下樣本容量,算出這兩組對比所需最小樣本量為:2580。
這兩組樣本的容量符合要求。
p值約等于1,p > α(0.05),符合原假設,即策略二組相比于策略一組有提升。
總結
- 策略一和策略二都相對于對照組對廣告點擊率有顯著提升效果。
- 策略二相對于策略一對廣告點擊率有顯著提升效果。
總結
以上是生活随笔為你收集整理的A/Btest (A/B测试)的营销策略效果分析的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 当在浏览器中输入一个域名后,会发生什么
- 下一篇: 强强联手 汇丰银行和IBM合作开发量子金