工匠数据分析

假设检验?在AB测试场景下的应用实践

2020-08-18  本文已影响0人  弗兰克工匠

小明:一家短视频APP的运营同学,主要负责提高用户播放时长
老陈:小明的老板
用户人均播放时长维持在25分钟,近期没有很大的波动。小明辛辛苦苦联(gui)系(tian)PM姐姐、开发大大上线了一个AB实验,对照组是目前线上的APP版本,实验组是新设计的视频切换交互UI,啊哈,果然实验组的人均播放时长26.5分钟(VS对照组提升6%),他马上把这个结果送到了老陈面前,老陈问道:“这个结果有统计学上的显著性吗?”

小明内心OS:“What?什么是统计学显著?怎么计算呢?”


这时,“假设检验”、T检验、P-value等等更加懵逼的词汇浮出水面,但还是不知道如何快速落地解决问题。别慌,安排上!

问题决策树

什么是假设检验

“假设检验”,使我们研究随机变量时,对其性质进行假设,然后通过证据来验证假设是否为真。以小明的case为例,这里有几个逃脱不了需要了解的定义:

本文旨在能够快速🔜提升应用实践,假设检验更多详细解读可以参看假设检验的逻辑是是什么?

连续变量解决方案

原始数据

user_id:用户ID,group:对照组base 实验组exp,play_duration_mins:播放时长(分钟)

数据探索EDA

import pandas as pd
from scipy import stats
df = pd.read_csv('play_duration_data.csv')
# 根据group分组查看播放时长均值、中位数等
df['play_duration_mins'].groupby(df['group']).describe() 

方差齐性检验

# 方差齐性检验
base = df.loc[df['group']=='base','play_duration_mins'] # 对照组每人播放时长
exp = df.loc[df['group']=='exp','play_duration_mins'] # 实验组每人播放时长
test_res = stats.levene(base, exp, center='median')
print('w-value=%6.4f,p-value=%6.4f' % test_res)

双样本T检验

stats.stats.ttest_ind(base, exp, equal_var=True)

二元分类变量解决方案

这里我们换一个场景,假设我们的数据依旧是区分base和exp,不同的是数据指标为:是否留存(简单的说是次日留存,即昨日活跃的用户中今天还在活跃的用户为留存用户)。原始数据会变更为:


我们先进行数据的探查,看下base和exp分别有多少用户留存/流失:
cross_table

卡方检验的原理简述

以上图cross_table为例:

print('chisq = %6.4f\n p-value = %6.4f \n dof = %i \n expected_fred = %s' % stats.chi2_contingency(cross_table))
上一篇 下一篇

猜你喜欢

热点阅读