python t检验_A or B A/B测试-python独立双样本t检验

一、简单介绍A/B测试

A/B测试为同一个目标制定两个版本,一部分用户使用A版本,另一部分用户使用B版本,记录用户使用数据,比较各个版本对于改进目标的转化效果,选择更好的版本。

二、数据集介绍

有两种键盘的布局A版和B版,给随机抽取的用户A组和B组使用,这是独立的双样本。两组人数均为25人,记录各组实验者在规定时间内记录打错字的数量。

python t检验_A or B A/B测试-python独立双样本t检验_第1张图片

三、描述统计分析

#A/B测试
import numpy as np
import pandas as pd 
import matplotlib.pyplot as plt 
import seaborn as sns
data=pd.read_excel('key.xlsx',sheetname='Sheet1')
data.describe()

python t检验_A or B A/B测试-python独立双样本t检验_第2张图片
数据统计信息
#样本平均值
a_mean =data['A'].mean()
b_mean =data['B'].mean()
#样本标准差
a_std =data['A'].std()
b_std =data['B'].std()
print('A组平均值=',a_mean,'  B组平均值=',b_mean)
print('A组标准差=',a_std,'  B组平均值=',b_std)

0fadb8c2524dc716be74671a9724e02f.png

从平均值及标准差来看,A组的错误数量小于B组。

四、统计推论分析

1.问题

python t检验_A or B A/B测试-python独立双样本t检验_第3张图片

1)提出假设

零假设:A组和B组本没有差别,即A组平均值=B组平均值

备选假设:A组平均值≠B组平均值

2)样本检验类型

为独立双样本检验

3)抽样分布类型

ax=plt.subplot(1,2,1)
sns.distplot(data['A'],ax=ax)
plt.title('A组用户错字分布')
ax1=plt.subplot(1,2,2)
sns.distplot(data['B'],ax=ax1)
plt.title('B组用户错字分布')
plt.show()#近似正态分布,选择使用t分布

python t检验_A or B A/B测试-python独立双样本t检验_第4张图片

两组用户的错字分布均呈现出近似正态分布,在小样本的前提下,符合t分布。

4)检验方向

根据备选假设,选择双尾检验。

2.证据

#Scipy的双独立样本t检验不能返回自由度,在此利用statsmodels包
import statsmodels.stats.weightstats as st
t,p_two,df=st.ttest_ind(data['A'],data['B'],
                        usevar='unequal')
print('t=',t,'p_two=',p_two,',df=',df)

6bc11a802a9e6242383b43252aa9ad3e.png

独立双样本t(45)=-4.06(45为自由度df取整) , p=.00019,双尾检验。

3.判断标准

这里设置显著水平alpha=0.05。

4.做出结论

if(p_two< alpha): 
    print('拒绝零假设,有统计显著,接受备选假设')
    print('A版本和B版本有差异')
else: 
    print('接受零假设,没有统计显著')
    print('零假设:A版本和B版本没有差异')

结论:拒绝零假设,有统计显著,接受备选假设
A版本和B版本有差异。

5.置信区间

t_ci=2.0141
#样本大小n
a_n = 25
b_n = 25
#计算标准误差
se=np.sqrt( np.square(a_std)/a_n + np.square(b_std)/b_n )
'''
对于双独立样本检验
置信区间的样本平均值=A版本平均值 - B版本平均值
'''
sample_mean=a_mean - b_mean
#置信区间上限
a=sample_mean - t_ci * se
#置信区间下限
b=sample_mean + t_ci * se
print('两个平均值差值的置信区间,95置信水平 CI=(%f,%f)' % (a,b))

两个平均值差值的置信区间,95%置信水平 CI=(-4.070699,-1.369301)。

6.效应量

差异指标Cohen's d

Cohen's d = (样本平均值1-样本平均值2) / 标准差

因为是两个独立样本,所以要用合并标准差。

#合并标准差
sp=np.sqrt(((a_n-1)*np.square(a_std) + (b_n-1)* np.square(a_std) ) / (a_n+b_n-2))
#效应量Cohen's d
d=(a_mean - b_mean) / sp

最终得到d为-1.32,效果差异显著。

五、数据分析报告

1.描述统计分析

A组平均打错字数为5.08,标准差为2.06;

B组平均打错字数为7.8,标准差为2.65.

2.推论统计分析

1)假设检验

独立双样本t(45)=-4.06 , p=.00019(α=5%),双尾检验。

拒绝零假设,统计显著。

2)置信区间

两个平均值差值95%置信区间水平,CI=(-4.070699,-1.369301)

3)效应量

d=-1.32,效果显著。

你可能感兴趣的:(python,t检验)