日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

A/Btest (A/B测试)的营销策略效果分析

發(fā)布時間:2023/12/20 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 A/Btest (A/B测试)的营销策略效果分析 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

目錄

  • 前言
  • 一、數(shù)據(jù)介紹
  • 二、觀察數(shù)據(jù)
    • 1.引入庫
    • 2.讀入數(shù)據(jù)
    • 3.觀察數(shù)據(jù)
  • 三、計算效果
    • 1.簡單比對不同策略點擊率
    • 2.觀察樣本容量
    • 3.計算(以策略二組和對照組為例)
      • 3.1 設(shè)定假設(shè)
      • 3.2 計算方法
        • 3.2.1 方法一:公式計算
        • 3.2.2 方法二:Python函數(shù)計算
    • 4.擴展
      • 4.1 擴展一:策略一組和對照組對比
      • 4.2 擴展二:策略二組和策略一組對比
  • 總結(jié)


前言

本文分析以支付寶營銷活動為例,通過廣告點擊率指標比較兩組營銷策略的廣告投放效果。


一、數(shù)據(jù)介紹

來自阿里天池:數(shù)據(jù)

用到的是:effect_tb.csv: Click/Non-click dataset.

這個csv文件主要用來記錄用戶是否對廣告進行點擊。


二、觀察數(shù)據(jù)

1.引入庫

# import libraries import pandas as pd import numpy as nppd.set_option('float_format', lambda x: '%.4f' % x)

2.讀入數(shù)據(jù)

# load data data = pd.read_csv('effect_tb.csv',header = None) data.columns = ["試驗后天數(shù)","用戶編號","是否點擊","試驗組別"]

3.觀察數(shù)據(jù)

data.info()

# table summary data.describe()

# distinct count of columns data.nunique()

#把重復(fù)用戶的用戶編號變成一個list去觀察 dup_userid=data["用戶編號"].value_counts()[data["用戶編號"].value_counts()>1].index.tolist()#查看是否都全部字段都重復(fù)的記錄 data[data.duplicated()]


雖然有重復(fù)的用戶id,但是可能在不用的時間(試驗后幾天)去做這個測試,也可能被放在不同的組別(實驗組別)、有不同的結(jié)果(是否點擊),我們都去驗證一下。

print("有重復(fù)用戶編號的記錄條數(shù):",data[data["用戶編號"].isin(dup_userid)].shape[0])print("用戶編號和【在第幾天試驗】重復(fù)的記錄條數(shù):",data[data["用戶編號"].isin(dup_userid)].duplicated(["用戶編號","試驗后天數(shù)"]).sum())print("用戶編號和【是否點擊】重復(fù)的記錄條數(shù):",data[data["用戶編號"].isin(dup_userid)].duplicated(["用戶編號","是否點擊"]).sum())print("用戶編號和【試驗組別】重復(fù)的記錄條數(shù):",data[data["用戶編號"].isin(dup_userid)].duplicated(["用戶編號","試驗組別"]).sum())print("用戶編號和【試驗后天數(shù)】、【是否點擊】重復(fù)的記錄條數(shù):",data[data["用戶編號"].isin(dup_userid)].duplicated(["用戶編號","試驗后天數(shù)","是否點擊"]).sum())print("用戶編號和【試驗后天數(shù)】、【試驗組別】重復(fù)的記錄條數(shù):",data[data["用戶編號"].isin(dup_userid)].duplicated(["用戶編號","試驗后天數(shù)","試驗組別"]).sum())


用戶ID和【試驗后天數(shù)】、【試驗組別】重復(fù)的記錄條數(shù): 0

意味著一個用戶在不同天用了不同版本,簡而言之,沒有一個用戶在同一天用一個版本。

可以不刪除數(shù)據(jù),因為如果按照用戶編號去重了,會對整個對比有影響。(之后討論)

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個百分點才算提升。那么這里策略一不算是提升。我們研究策略二組的點擊率是否在置信區(qū)間內(nèi)有顯著提升。

2.觀察樣本容量

在進行A/B測試前,需檢查樣本容量是否滿足試驗所需最小值。
這里借助Evan Miller的樣本量計算工具:

Evan Miller鏈接

已知對照組點擊率為1.26%,假定我們希望新的營銷策略能讓廣告點擊率至少提升1個百分點才算提升,顯著性水平α取5%,則算得所需最小樣本量為:2167。

data["試驗組別"].value_counts()


兩組營銷活動的樣本量都滿足最小樣本量需求。

3.計算(以策略二組和對照組為例)

3.1 設(shè)定假設(shè)

接下來需要進行假設(shè)檢驗,這里先查看一組點擊率的提升是否顯著。

  • 零假設(shè)和備擇假設(shè)。記對照組點擊率為p0,策略二組點擊率為p2,則:
    零假設(shè) H0: p0 ≥ p2 (對照組的點擊率大于等于策略一組)
    備擇假設(shè) H1: p0 < p2 (對照組的點擊率小于策略一組)

  • 分布類型、檢驗類型和顯著性水平樣本服從二點分布,獨立雙樣本,樣本大小n>30,總體均值和標準差未知,所以采用Z檢驗。顯著性水平α取0.05。顯著性水平α取0.05的單尾檢測(左側(cè))對應(yīng)的z值 = -1.64。

  • z值可以用python得出或者查看z-score表:

    from scipy.stats import norm z_alpha = norm.ppf(0.05) # 若為雙側(cè),則norm.ppf(0.05/2)

    結(jié)果為z_alpha=-1.6448536269514729,統(tǒng)計上一般取-1.645,拒絕域為{z <z_alpha }

    3.2 計算方法

    獨立雙樣本,樣本大小n>30,總體的均值和標準差未知的Z檢驗的檢驗統(tǒng)計量公式如下:

    3.2.1 方法一:公式計算

    # 用戶數(shù) n_old = len(data[data["試驗組別"] == 1]) # 對照組 n_two = len(data[data["試驗組別"] == 3]) # 策略二組# 點擊數(shù) 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("轉(zhuǎn)化率的聯(lián)合率::", r)''' 結(jié)果: 轉(zhuǎn)化率的聯(lián)合率: 0.014429896833357214 '''

    按照公式計算:

    z_two = (r_old - r_two) / np.sqrt(r * (1 - r)*(1/n_old + 1/n_two)) print("檢驗統(tǒng)計量z:", z_two)''' 結(jié)果: 檢驗統(tǒng)計量z: -59.66600946268368 '''

    z_one = -59.66600946268368 < -1.64,符合拒絕域為{z<z_alpha}。

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

    3.2.2 方法二:Python函數(shù)計算

    直接用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
    import statsmodels.stats.proportion as spz_two_score, p = sp.proportions_ztest([ c_two,c_old],[ n_two,n_old], alternative = "la") print("檢驗統(tǒng)計量z_two:",z_two_score,",p值:", p)#alternative 默認 ='two-sided' #alternative='smaller'代表左尾 #用p值判斷與用檢驗統(tǒng)計量z判斷是等效的''' 結(jié)果: 檢驗統(tǒng)計量z_two: -59.66600946268368 ,p值: 0.0 '''

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

    4.擴展

    4.1 擴展一:策略一組和對照組對比

    策略二組點擊率的提升是否顯著。

    p1為策略一組,p0為對照組

    • 零假設(shè) H0: p1 < p0 (策略二組相比于對照組無提升)
    • 備擇假設(shè) H1: p1 ≥ p0 (策略二組相比于對照組有提升)
    # 用戶數(shù) n_old = len(data[data["試驗組別"] == 1]) # 對照組 n_one = len(data[data["試驗組別"] == 2]) # 一組# 點擊數(shù) c_old = len(data[data["試驗組別"] == 1][data["是否點擊"] == 1]) c_one = len(data[data["試驗組別"] == 2][data["是否點擊"] == 1])# 計算點擊率 r_old = c_old / n_old r_one = c_one / n_one# 總和點擊率 r = (c_old + c_one) / (n_old + n_one)print("轉(zhuǎn)化率的聯(lián)合率:", r)z_one_score, p = sp.proportions_ztest([c_old, c_one],[n_old, n_one], alternative = "smaller") print("檢驗統(tǒng)計量z_one:",z_one_score,",p值:", p)''' 結(jié)果: 轉(zhuǎn)化率的聯(lián)合率:0.01298700183320143 檢驗統(tǒng)計量z_one: -14.362726203811503 ,p值: 4.433468512724253e-47(P值約等于0) '''

    z_one < -1.64,,p < 0.05,拒絕原假設(shè),即策略一組相比于對照組有提升。

    4.2 擴展二:策略二組和策略一組對比

    那么策略一和策略二相比呢?
    p1為策略一組,p2為策略二組

    因為從之前的結(jié)果看起來策略二組比策略一組提升更多,那么我們先假設(shè)是這樣。

    • 零假設(shè) H0: p2 <≥ p1 (策略二組相比于策略一組有提升)
    • 備擇假設(shè) H1: p2 ≥ p1 (策略二組相比于策略一組無提升)

    看一下樣本容量,算出這兩組對比所需最小樣本量為:2580。

    這兩組樣本的容量符合要求。

    z_one_two_score, p = sp.proportions_ztest([ c_two,c_one],[ n_two,n_one], alternative = "smaller") print("檢驗統(tǒng)計量z:",round(z_one_two_score,4),",p值:", round(p,4))''' 結(jié)果: 檢驗統(tǒng)計量z: 32.818 ,p值: 1.0 '''

    p值約等于1,p > α(0.05),符合原假設(shè),即策略二組相比于策略一組有提升。


    總結(jié)

    • 策略一和策略二都相對于對照組對廣告點擊率有顯著提升效果。
    • 策略二相對于策略一對廣告點擊率有顯著提升效果。

    總結(jié)

    以上是生活随笔為你收集整理的A/Btest (A/B测试)的营销策略效果分析的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。