單因子變異數分析 — Python實戰:如何決定多廣告的優化策略?(附Python 程式碼)

Photo by: Shopify Partners

一、事前檢驗

import scipy.stats as st
st.shapiro(alist)
st.shapiro(blist)
st.shapiro(clist)
ShapiroResult(statistic=0.9915865659713745,pvalue=0.6819638013839722)
ShapiroResult(statistic=0.9929247498512268,pvalue=0.805463969707489)
ShapiroResult(statistic=0.9802003502845764,pvalue=0.07433854043483734)
st.levene(alist, blist, clist, center='mean')
LeveneResult(statistic=0.6891243668404422,pvalue=0.5026819827621525)

二、變異數分析

f_value, p_value = st.f_oneway(alist, blist, clist)
p_value
0.0955577857122512

三、事後檢定

from pingouin import pairwise_tukey
m_comp = pairwise_tukey(data=data, dv='消費金額', between='廣告')
圖 1 事後比較表
table = m_comp.drop(columns = ['mean(A)', 'mean(B)', 'T', 'p-tukey', 'hedges'])
圖 2 整理後事後比較表

四、進階資料處理

# 「A」欄反轉資料
add_A = table['B'].tolist()
# 「B」欄反轉資料
add_B = table['A'].tolist()
# 「diff」欄反轉資料
diff = (table['diff'] - 2 * table['diff']).tolist()
# 「se」欄反轉資料
se = table['se'].tolist()
# 將反轉資料合併
table2 = pd.DataFrame(zip(add_A, add_B, diff, se), columns = ['A', 'B', 'diff', 'se'])
圖 3 反轉後事後比較表-table2
new_table = pd.concat([table, table2], ignore_index=True)
圖 4 完整比較表
new_table['上界'] = new_table['diff'] + new_table['se']*1.96
new_table['下界'] = new_table['diff'] - new_table['se']*1.96
圖 5 加入上下界後的比較表
import numpy as np
np.sign(12)
np.sign(-5.6)
1
-1.0
justice = []
for i in range(0,new_table.shape[0]):
a = np.sign(new_table.iloc[i,4]) # 上界正負數判斷
b = np.sign(new_table.iloc[i,5]) # 下界正負數判斷
if a == b:
justice.append('Yes')
else:
justice.append('No')
圖 6 new_table中每一列的平均消費金額是否顯著有差異的比較結果-「justice」
new_table['是否顯著'] = justice
圖 7 更新後比較表

五、資料視覺化

import plotly.offline as py
import plotly.graph_objects as go
fig = go.Figure()
for i in range(0, new_table.shape[0]):
if new_table.iloc[i,6] == 'Yes':
color = 'firebrick'
name = '顯著'
else:
color = 'green'
name = '不顯著'
fig.add_trace(go.Scatter(
x = [new_table.iloc[i,5], new_table.iloc[i,2], new_table.iloc[i,4]],
y = [new_table.iloc[i,0] + '-' + new_table.iloc[i,1], new_table.iloc[i,0] + '-' + new_table.iloc[i,1], new_table.iloc[i,0] + '-' + new_table.iloc[i,1]],
mode = "lines+markers",
textfont=dict(
family="sans serif",
size=16,
color=color),
line=dict(color=color, width=2),
name = name,
legendgroup = name,
))
fig.update_layout(
title={
'text': "<b>One-Way ANOVA 廣告效益分析</b>",
'y':0.95,
'x':0.5,
'xanchor': 'center',},
width=1800,
height=960,
boxmode='group',
font=dict(
family="Courier New, monospace",
size=20,
color="lightslategrey"
)
)
# 另存互動式網頁
py.plot(fig, filename='One-Way ANOVA 廣告效益分析', auto_open=True)
# 另存.png圖檔
fig.write_image("C:/Users/user/Desktop/單因子變異數分析1.5/One-Way ANOVA 廣告效益分析.png")
圖 8 單因子變異數分析-廣告成效比較圖
  1. 平均消費金額在不同廣告推播下的差異區間,紅線代表顯著有差異,綠色代表顯著無差異。
  2. 而圖中唯一有顯著差異的組合為廣告1以及廣告2,可看出廣告1帶來的平均消費金額顯著地大於廣告2。

但請思考看看,這樣的結果是否就代表我們可以完全捨棄廣告2,專放於投放廣告1呢?

答案是:這可不一定哦~~

歡迎加入我們的Telegram獲取即時訊息!https://t.me/marketingdatascience
歡迎加入我們的Line@獲取即時訊息!https://line.me/R/ti/p/%40cde8265r

--

--

--

Marketing data science. 台灣第一個行銷資料科學(MDS)知識部落,本粉絲專頁在探討行銷資料科學之基礎概念、趨勢、新工具和實作,讓粉絲們瞭解資料科學的行銷運用,並開啟厚植數據分析能力之契機。粉絲專頁:https://www.facebook.com/MarketingDataScienceTMR

Love podcasts or audiobooks? Learn on the go with our new app.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store
行銷資料科學

行銷資料科學

Marketing data science. 台灣第一個行銷資料科學(MDS)知識部落,本粉絲專頁在探討行銷資料科學之基礎概念、趨勢、新工具和實作,讓粉絲們瞭解資料科學的行銷運用,並開啟厚植數據分析能力之契機。粉絲專頁:https://www.facebook.com/MarketingDataScienceTMR

More from Medium

The Sibling Effect Ⅱ- Woodmam

Setting off (Week 10)

Omniverse — A brief view

Project QuadCare