【A/B測試】支付寶營銷策略效果分析

【A/B測試】支付寶營銷策略效果分析

A/B測試常用于比較不同設(shè)計衩藤、運營方案的優(yōu)劣叠赦,以輔助決策纲缓。本分析以支付寶營銷活動為例,通過廣告點擊率指標(biāo)比較兩組營銷策略的廣告投放效果仰禽。

1.數(shù)據(jù)來源

本文所用數(shù)據(jù)集來自阿里云天池

該數(shù)據(jù)集包含三張表氮墨,分別記錄了支付寶兩組營銷策略的活動情況:

·emb_tb_2.csv: 用戶特征數(shù)據(jù)集
·effect_tb.csv: 廣告點擊情況數(shù)據(jù)集
·seed_cand_tb.csv: 用戶類型數(shù)據(jù)集
本分析報告主要使用廣告點擊情況數(shù)據(jù),涉及字段如下:
·dmp_id:營銷策略編號(源數(shù)據(jù)文檔未作說明吐葵,這里根據(jù)數(shù)據(jù)情況設(shè)定為1:對照組规揪,2:營銷策略一,3:營銷策略二)
·user_id:支付寶用戶ID
·label:用戶當(dāng)天是否點擊活動廣告(0:未點擊温峭,1:點擊)

2.數(shù)據(jù)處理

2.1 數(shù)據(jù)導(dǎo)入和清洗

import numpy as np
import pandas as pd
#載入數(shù)據(jù)
data=pd.read_csv(r'F:\data\ABtest\effect_tb.csv',header=None)
data.columns=["dt","user_id","label","dmp_id"]

#不需要第一列日志天數(shù)屬性數(shù)據(jù)猛铅,刪除該列
data=data.drop(columns='dt')
data.head(5)
image.png
data.shape
(2645958, 3)
#查看是否有重復(fù)值
data.nunique()
image.png

可以看到數(shù)據(jù)行數(shù)和用戶數(shù)不一致,需要檢查是否存在重復(fù)行

data[data.duplicated(keep=False)].sort_values(by=['user_id'])

有相當(dāng)多的重復(fù)行 需要進(jìn)行去重

data=data.drop_duplicates()

#檢查是否還存在重復(fù)項
data[data.duplicated(keep=False)]
image.png

檢查是否具有空值

data.info(null_counts=True)
image.png

可以看到?jīng)]有空值凤藏,無需進(jìn)行處理

data.describe()
image.png

未發(fā)現(xiàn)有奇異值奸忽,也無需進(jìn)行處理

##查看數(shù)據(jù)類型
data.dtypes
image.png

2.2樣本容量檢驗

在進(jìn)行A/Btest之前需要檢查樣本容量是否滿足最小樣本容量要求

可以借助網(wǎng)上的樣本量計算工具:https://www.evanmiller.org/ab-testing/sample-size.html

首先需要設(shè)定點擊率基準(zhǔn)線以及假設(shè)的提升比例,在這里將對照組的點擊率設(shè)為基準(zhǔn)線

# click rate of control group
data[data["dmp_id"] == 1]["label"].mean()
image.png

對照組的點擊率四舍五入取1.26%揖庄,假設(shè)新的營銷策略可以使點擊率提升一個百分點栗菜。由計算可得至少需要2167個樣本。

image.png
data['dmp_id'].value_counts()
image.png

可以看到兩種營銷策略的樣本量分別為41萬加和31萬加蹄梢,遠(yuǎn)大于所需樣本量的最小值.

# 保存清洗好的數(shù)據(jù)備用
# save it to file
data.to_csv("F:\data\ABtest\output.csv", index = False)

# reload data
# data = pd.read_csv("F:\data\ABtest\output.csv)

3.假設(shè)檢驗

先觀察幾組實驗的點擊率情況

print("對照組:",data[data['dmp_id']==1]['label'].mean())
print("營銷策略一:",data[data['dmp_id']==2]['label'].mean())
print("營銷策略二:",data[data['dmp_id']==3]['label'].mean())
image.png

可以看到策略一和策略二相較對照組在點擊率上都有不同程度提升疙筹。

其中策略一提升0.2個百分點,策略二提升1.3個百分點禁炒,只有策略二滿足了前面我們對點擊率提升最小值的要求而咆。

接下來需要進(jìn)行假設(shè)檢驗,看策略二點擊率的提升是否顯著幕袱。

a.零假設(shè)和備擇假設(shè)
假設(shè)對照組點擊率為p1暴备,策略二的點擊率為p2,則
零假設(shè) H0:p1>=p2; 備擇假設(shè) H1:p1< p2
b.分布類型凹蜂、檢驗類型和顯著性水平
樣本服從二項分布馍驯,樣本相互獨立,樣本量n>>30玛痊,總體均值和方差未知,所以采用z檢驗狂打。顯著性水平取0.01

3.1 方法一:公式計算

# 用戶數(shù)
n_old = len(data[data.dmp_id == 1])  # 對照組
n_new = len(data[data.dmp_id == 3])  # 策略二

# 點擊數(shù)
c_old = len(data[data.dmp_id ==1][data.label == 1])
c_new = len(data[data.dmp_id ==3][data.label == 1])

# 計算點擊率
r_old = c_old / n_old
r_new = c_new / n_new

# 總和點擊率
r = (c_old + c_new) / (n_old + n_new)

print("總和點擊率:", r)
image.png
# 計算檢驗統(tǒng)計量z
z = (r_old - r_new) / np.sqrt(r * (1 - r)*(1/n_old + 1/n_new))

print("檢驗統(tǒng)計量z:", z)
image.png
# 查α=0.05對應(yīng)的z分位數(shù)
from scipy.stats import norm
z_alpha = norm.ppf(0.05)
z_alpha
image.png

z_alpha = -1.64擂煞, 檢驗統(tǒng)計量z = -59.44,該檢驗為左側(cè)單尾檢驗趴乡,拒絕域為{z<z_alpha}对省。

所以我們可以得出結(jié)論:原假設(shè)不成立蝗拿,策略二點擊率的提升在統(tǒng)計上是顯著的。

3.2 方法二:python函數(shù)計算

直接用python statsmodels包計算z值和p值

import statsmodels.stats.proportion as sp
z_score, p = sp.proportions_ztest([c_old, c_new],[n_old, n_new], alternative = "smaller")
print("檢驗統(tǒng)計量z:",z_score,"蒿涎,p值:", p)
image.png

檢驗統(tǒng)計量z: -59.44168632985996 哀托,p值: 0.0

p值約等于0,p < α劳秋,與方法一結(jié)論相同仓手,拒絕原假設(shè)。

作為補(bǔ)充玻淑,我們再檢驗下策略一的點擊率提升是否顯著嗽冒。

# 策略一檢驗
z_score, p = sp.proportions_ztest([c_old, len(data[data.dmp_id ==2][data.label == 1])],[n_old, len(data[data.dmp_id == 2])], alternative = "smaller")
print("檢驗統(tǒng)計量z:",z_score,",p值:", p)
image.png

p值約等于7.45e-46补履,p < α添坊,但因為前面我們設(shè)置了對點擊率提升的最小值要求,這里仍只選擇第二組策略進(jìn)行推廣箫锤。

4.結(jié)論

綜上所述贬蛙,兩種營銷策略中,策略二對廣告點擊率有顯著提升效果谚攒,且相較于對照組點擊率提升了近一倍速客,因而在兩組營銷策略中應(yīng)選擇第二組進(jìn)行推廣。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末五鲫,一起剝皮案震驚了整個濱河市溺职,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌位喂,老刑警劉巖浪耘,帶你破解...
    沈念sama閱讀 217,406評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異塑崖,居然都是意外死亡七冲,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,732評論 3 393
  • 文/潘曉璐 我一進(jìn)店門规婆,熙熙樓的掌柜王于貴愁眉苦臉地迎上來澜躺,“玉大人,你說我怎么就攤上這事抒蚜【虮桑” “怎么了?”我有些...
    開封第一講書人閱讀 163,711評論 0 353
  • 文/不壞的土叔 我叫張陵嗡髓,是天一觀的道長操漠。 經(jīng)常有香客問我,道長饿这,這世上最難降的妖魔是什么浊伙? 我笑而不...
    開封第一講書人閱讀 58,380評論 1 293
  • 正文 為了忘掉前任撞秋,我火速辦了婚禮,結(jié)果婚禮上嚣鄙,老公的妹妹穿的比我還像新娘吻贿。我一直安慰自己,他們只是感情好哑子,可當(dāng)我...
    茶點故事閱讀 67,432評論 6 392
  • 文/花漫 我一把揭開白布舅列。 她就那樣靜靜地躺著,像睡著了一般赵抢。 火紅的嫁衣襯著肌膚如雪剧蹂。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,301評論 1 301
  • 那天烦却,我揣著相機(jī)與錄音宠叼,去河邊找鬼。 笑死其爵,一個胖子當(dāng)著我的面吹牛冒冬,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播摩渺,決...
    沈念sama閱讀 40,145評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼简烤,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了摇幻?” 一聲冷哼從身側(cè)響起横侦,我...
    開封第一講書人閱讀 39,008評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎绰姻,沒想到半個月后枉侧,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,443評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡狂芋,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,649評論 3 334
  • 正文 我和宋清朗相戀三年榨馁,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片帜矾。...
    茶點故事閱讀 39,795評論 1 347
  • 序言:一個原本活蹦亂跳的男人離奇死亡翼虫,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出屡萤,到底是詐尸還是另有隱情珍剑,我是刑警寧澤,帶...
    沈念sama閱讀 35,501評論 5 345
  • 正文 年R本政府宣布灭衷,位于F島的核電站次慢,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏翔曲。R本人自食惡果不足惜迫像,卻給世界環(huán)境...
    茶點故事閱讀 41,119評論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望瞳遍。 院中可真熱鬧闻妓,春花似錦、人聲如沸掠械。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,731評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽猾蒂。三九已至均唉,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間肚菠,已是汗流浹背舔箭。 一陣腳步聲響...
    開封第一講書人閱讀 32,865評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留蚊逢,地道東北人层扶。 一個月前我還...
    沈念sama閱讀 47,899評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像烙荷,于是被迫代替她去往敵國和親镜会。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,724評論 2 354

推薦閱讀更多精彩內(nèi)容