支付宝营销策略效果分析 A/Btest
文章目錄
- 一、項目背景
- A/B test的流程
- 二、分析過程
- 2.1 數(shù)據(jù)預(yù)處理
- 2.2 計算樣本量是否滿足最小樣本數(shù)
- 2.3 實驗評估-假設(shè)檢驗
- 方案2的點擊率是否顯著提升
- 三、結(jié)論
一、項目背景
A/B test在評估不同項目的效果和優(yōu)劣時由非常大的作用,在目前的互聯(lián)網(wǎng)領(lǐng)域得到了廣泛的應(yīng)用,本分析以支付寶某次營銷活動為例,分別統(tǒng)計兩組營銷方案的點擊率,通過A/B測試計算比較兩種策略的投放效果。
數(shù)據(jù)來源于阿里云天池
Audience Expansion Dataset
在本次分析中,我們只使用到effect_tb.csv文件,它包含了用戶參與的營銷方案及點擊情況,數(shù)據(jù)介紹如下:
| dmp_id | 營銷方案編號,1:對照組,2:營銷方案1;3:營銷方案2 |
| user_id | 支付寶用戶ID |
| label | 用戶當(dāng)天是否點擊營銷活動,0:未點擊,1:點擊 |
A/B test的流程
- 1 明確目的(eg.提高gmv,增加轉(zhuǎn)化率,降低用戶取消率…),確認(rèn)是否有進(jìn)行A/B test的必要性,確定A/B 版本;
- 2 選取指標(biāo),1,2,3級指標(biāo);如dd:人均呼叫,司機(jī)/乘客取消率,司機(jī)接單數(shù)…
- 3 確定實驗分組方式:尾號分桶&取模分桶,并進(jìn)行流量分配;
- 4 計算最小樣本量;
- 5 AB灰度測試:在abtest正式上線之前進(jìn)行小規(guī)模的測試,再放量至覆蓋所有用戶,根據(jù)數(shù)據(jù)進(jìn)行反饋測試,以便及時發(fā)現(xiàn)問題并修改;
- 6 ABtest 上線;
- 7 回收數(shù)據(jù),實驗評估:計算均值及方差,計算z-stat,計算p-value,與a比較,得出是否有顯著意義。
本次分析主要是回收數(shù)據(jù)后的假設(shè)檢驗。
二、分析過程
2.1 數(shù)據(jù)預(yù)處理
讀取數(shù)據(jù)
import pandas as pd import numpy as npeffect = pd.read_csv('effect_tb.csv',header=None,names=['dt','user_id','label','dmp_id']) effect.head() # 刪除無用列 effect = effect.drop(columns='dt') effect.head() user_id label dmp_id 0 1 0 1 1 1000004 0 1 2 1000004 0 2 3 1000006 0 1 4 1000006 0 3查看數(shù)據(jù)信息
print(effect.info()) print('總用戶數(shù):',effect['user_id'].unique().size) print('______________________') print('是否存在空值:') print(effect.isnull().sum()) print('______________________') print('是否存在重復(fù)值') print(effect[effect.duplicated()]) # 刪除重復(fù)值 effect.drop_duplicates(inplace=True) effect[effect.duplicated()] # 是否存在異常值 主要關(guān)注label和dmp_id有沒有異常值 print('label的值:') print(effect['label'].value_counts()) print('dmp_id的值:') print(effect['dmp_id'].value_counts()) label的值: 0 2594479 1 38496 Name: label, dtype: int64 dmp_id的值: 1 1905663 2 411107 3 316205 Name: dmp_id, dtype: int642.2 計算樣本量是否滿足最小樣本數(shù)
由之前的數(shù)據(jù)統(tǒng)計可知,樣本數(shù)遠(yuǎn)遠(yuǎn)大于30,可以利用中心極限定理認(rèn)為用戶點擊率的均值符合正態(tài)分布,本次分析中可以使用Z檢驗,同時我們希望比較哪個方案更好,因此是單尾檢驗。
最小樣本量是根據(jù)統(tǒng)計功效來計算的,主要是為了規(guī)避第二類錯誤。最小樣本量也跟顯著性水平、指標(biāo)歷史均值、指標(biāo)提升的絕對值有關(guān)。在本次分析中,我們選擇的指標(biāo)是點擊率,這是一個比率類指標(biāo),因此,最小樣本的計算公式為:
樣本量 n=2σ2(Z1?α2+Z1?β)2Δ2n=\frac{2 \sigma^{2}\left(Z_{1-\frac{\alpha}{2}}+Z_{1-\beta}\right)^{2}}{\Delta^{2}}n=Δ22σ2(Z1?2α??+Z1?β?)2?
- σ2\sigma^{2}σ2 是歷史數(shù)據(jù)的方差, σ2=p(1?p)\sigma^{2} = p(1-p)σ2=p(1?p) ,p是歷史效果指標(biāo)均值
- Δ2\Delta^{2}Δ2 是我們希望提升的效果指標(biāo)與指標(biāo)基線差值的絕對值
- α\alphaα 代表顯著性水平, 1?β1-\beta1?β 代表規(guī)避第二類錯誤的功效
計算過程:
- 由于缺少歷史數(shù)據(jù),我們將對照組的點擊率均值作為指標(biāo)基線值,計算得 p=0.0126,σ2=p(1?p)=0.0124p = 0.0126, \sigma^{2} = p(1-p) = 0.0124p=0.0126,σ2=p(1?p)=0.0124
- 我們希望能至少提升30%的點擊率,計算得Δ=0.0126?0.3=0.00378,Δ2=0.000014288\Delta= 0.0126 * 0.3 = 0.00378,\Delta^{2} = 0.000014288Δ=0.0126?0.3=0.00378,Δ2=0.000014288
- 給定α=0.05,1?β=0.80\alpha=0.05,1-\beta=0.80α=0.05,1?β=0.80 ,Z1?α2=1.959964,Z1?β=0.8416212Z_{1-\frac{\alpha}{2}} = 1.959964, Z_{1-\beta} = 0.8416212Z1?2α??=1.959964,Z1?β?=0.8416212
- 計算得n = 13669
python計算過程如下:
# 計算最小樣本量 p = 0.0126 #歷史均值 delta = 0.3 #希望提升的百分比 sigma = p * (1-p) #方差 alpha = 0.05 #顯著性水平 beta = 0.20 #第二類錯誤 z1 = norm.ppf(1 - alpha/2) z2 = norm.ppf(1-beta)n = 2 *sigma*((z1+z2)**2)/((p*delta)**2) print('最小樣本量為:',n) 最小樣本量為: 13668.401851316208也可以使用網(wǎng)站計算:evan’s sample-size
得到的結(jié)果比較相似,證明我們的計算過程沒有問題。每個實驗組最少需要14260人,1組的數(shù)據(jù)有1905663條,2組有411107條,3組有316205條,均超過最小樣本量,可以認(rèn)為本次數(shù)據(jù)有意義,可以進(jìn)行假設(shè)檢驗。
2.3 實驗評估-假設(shè)檢驗
先計算每組的平均點擊率,再計算每組提升的點擊率
effect.groupby(['dmp_id'])['label'].mean()# dmp_id # 1 0.012551 # 2 0.015315 # 3 0.026192 # Name: label, dtype: float64print('方案1提升',effect[effect['dmp_id']==2]['label'].mean()-effect[effect['dmp_id']==1]['label'].mean()) print('方案2提升',effect[effect['dmp_id']==3]['label'].mean()-effect[effect['dmp_id']==1]['label'].mean()) 方案1提升 0.0027637353122772403 方案2提升 0.0136408567689845可以發(fā)現(xiàn)方案1并沒有滿足我們希望提高的點擊率要求,而方案2滿足了,我們可以認(rèn)為方案1達(dá)不到我們的預(yù)計效果,只對方案2的數(shù)據(jù)進(jìn)行假設(shè)檢驗。
方案2的點擊率是否顯著提升
- 原假設(shè):p0≥p2
- 備擇假設(shè):p0<p2
樣本大小大于>30,可以認(rèn)為符合正態(tài)分布,使用z檢驗,根據(jù)備擇假設(shè),為左側(cè)單尾檢驗。
計算z值
Z=p2?p1σ22n2+σ12n1=p2?p1p2?(1?p2)n2+p1?(1?p1)n1Z=\frac{p_{2}-p_{1}}{\sqrt{\frac{\sigma_{2}^{2}}{n_{2}}+\frac{\sigma_{1}^{2}}{n_{1}}}}=\frac{p_{2}-p_{1}}{\sqrt{\frac{p_{2} *\left(1-p_{2}\right)}{n_{2}}+\frac{p_{1} *\left(1-p_{1}\right)}{n_{1}}}}Z=n2?σ22??+n1?σ12???p2??p1??=n2?p2??(1?p2?)?+n1?p1??(1?p1?)??p2??p1??
p<αp< \alphap<α,拒絕原假設(shè),基于我們選取的樣本,我們有理由拒絕原假設(shè),策略二點擊率的提升在統(tǒng)計學(xué)上是顯著的。
z_score_1,p_1 = proportions_ztest([c_control,c_test1],[n_control,n_test1])print("方案1檢驗統(tǒng)計量z:",z_score_1,",p值:", p_1) 方案1檢驗統(tǒng)計量z: -14.165873564308429 ,p值: 1.4900243485475164e-45不能拒絕原假設(shè),策略一的點擊率提升不顯著。
三、結(jié)論
-
總體描述:
在支付寶的某次營銷活動中,為了檢驗兩種營銷方案的提升效果,設(shè)計了AB測試,將用戶分為對照組,方案一組,方案二組共三組,其中,
對照組的人數(shù): 1905663 對照組的點擊人數(shù):23918
方案1的人數(shù): 411107 方案2的點擊人數(shù):6296
方案2的人數(shù): 316205 方案2的點擊人數(shù):8282 -
假設(shè)檢驗:
獨立雙樣本檢驗(對照組與方案2組):
單尾檢驗(左尾),z: -59.44, p值: 0.0 (α = 0.05),p < α,拒絕原假設(shè),方案二點擊率的提升在統(tǒng)計上是顯著的。獨立雙樣本檢驗(對照組與方案1組):
屬單尾檢驗(左尾),z: -14.17 ,p值: 7.45(α = 0.05),p > α,無法拒絕原假設(shè),策略一對廣告點擊率的提升效果不顯著。 -
總結(jié):
在兩種方案中,可以認(rèn)為方案2對點擊率有顯著提高,后續(xù)可以考慮成本、對其他轉(zhuǎn)化率的影響,再決定是否正式推廣使用。 -
本次分析中可以補(bǔ)充的內(nèi)容:
- 未進(jìn)行AA測試,AA測試可以進(jìn)一步保證用戶流量的隨機(jī)性,是用AB測試的方法檢驗兩個完全一樣的版本,可以確定實驗平臺或工具的結(jié)果是否是統(tǒng)計上的無差異性;
- 在本次分析中,方案1的點擊率提升并沒有達(dá)到我們設(shè)定的MDE,因此在假設(shè)檢驗中,我們只針對對照組和方案2進(jìn)行了假設(shè)檢驗,如果方案1的點擊率也滿足了我們的期望,那么應(yīng)該使用卡方檢驗,因為在多個總體的情況下,兩兩之間的z檢驗和t檢驗要比較多次,可能會增加犯第一類錯誤的原因,所以需要使用單因素方差分析,卡方檢驗。可以參考:AB測試-方差分析與卡方檢驗
總結(jié)
以上是生活随笔為你收集整理的支付宝营销策略效果分析 A/Btest的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Unity 加载资源
- 下一篇: oracle_查询sql执行剩余时间