ABTtest样本量计算

ABTtest样本量计算

一:两个总体只差的样本量计算

目的:测试组比对照组提升30%的活跃度(DAU均值)

H0: μ0 - μ1<=30%

H1:μ0 - μ1>30%

计算公式:
n A = k n B   a n d   n B = ( 1 + 1 k ) ( σ z 1 − α / 2     + z 1 − β μ A − μ B ) 2 n_A = kn_B\ and\ n_B = (1 + \frac{1}{k})(\sigma\frac{z_{1- \alpha/2} \ \ \ + z_{1-\beta}}{\mu_A - \mu_B} )^2 nA=knB and nB=(1+k1)(σμAμBz1α/2   +z1β)2
数据来源: 对照组数据

α = 0.05 (置信度可以调整)

β = 0.2 (一般默认20%)

K = 1 (代表:组件样本均衡)

μA-μB = 均值*0.3 (代表均值需要提高的程度)

σ 代表:对照组标准差

1.数据准备

import pandas as pd
import numpy as np
import datetime

###数据准备##################################################################################
data = pd.DataFrame(
    data=np.random.randint(1,100,size=(20,3)),
    columns=['组','店铺类型','下单量']
)
data['日期']=pd.date_range('2021-01-01',periods=20,freq='D')
data['日期'] = data['日期'].map(lambda x : datetime.datetime.strftime(x, '%Y-%m-%d')) 
print(data.head())
print("========================")
for i in data.index:
    if i%2==0:
        data.iloc[i,3]=np.nan
data['日期'].fillna(method='bfill',inplace=True)
print(data.head())

data['组'] = data['组'].map(lambda x :'A' if x%2==0 else 'B' )
data['店铺类型'] = data['店铺类型'].map(lambda x :'C' if x%2==0 else 'D' )
print("========================")
print(data)

####项目资料################################################################################
#目的:提升C类店铺的平均下单量30%
#组A:对照组
#组B:测试组
###分组数据#########################################################
data_AC=data.loc[(data.=='A')&(data.店铺类型=='C'),('日期','下单量')]
data_BC=data.loc[(data.=='B')&(data.店铺类型=='C'),('日期','下单量')]
print('对照数据',data_AC)
print('======================')
print('测试数据',data_BC)
2.计算样本量
####计算样本量############################################################
#样本量计算的数据使用的是对照组的数据
import pandas as pd
import numpy as np
from scipy import stats
#基础参数
α=0.05
β=0.2
k=1
#计算Z值
z_α = stats.norm.ppf(1-α/2)
z_β = stats.norm.ppf(1-β)
print(z_α) #1.959963984540054
print(z_β) #0.8416212335729143

#计算标准差
σ = data_AC['下单量'].std()
print('标准差:',σ) #标准差: 27.051802158081816

#μA-μB
mean = data_AC.groupby('日期')['下单量'].mean().mean()*0.3
print('μA-μB:',mean) #μA-μB: 13.92

#样本量
n = (1+1/k)*np.power(σ*(z_α+z_β)/mean,2)
print('最小样本量:',n) #最小样本量: 7.179762736995828


二:汇总样本量计算公式

在这里插入图片描述

三:样本量计算url

样本量计算工具:

http://powerandsamplesize.com/Calculators/Compare-2-Means/2-Sample-Equality

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值