独立双样本检验是检验两个独立样本平均值之差是否等于目标值。

案例介绍:这是两款键盘布局不一样的手机(A版本,B版本),你作为公司的产品经理,想在正式发布产品之前知道,哪个键盘布局对用户体验更好呢?

首先,我们需要设置目标,用来衡量各个版本的优劣,如果是电商网站,目标可以是点击率,注册率,页面停留时间等。在这个键盘布局案例里,如果一个键盘布局对用户打字时拼错产生的影响较小,那么这个布局是符合用户体验习惯的。所以我们将目标定为用户打字时拼错字产生的影响。

有了目标以后,下一步就是采集数据。在这一部分,用户会随机分配到不同版本中,通过他们的交互行为会被直接检测,并收集起来作为以后分析的重要数据。我们随机抽取实验者,将实验者分成2组,每组25人,A组使用键盘布局A,B组使用键盘布局B。让他们在30秒内打出标准的20个单词文字消息,然后记录打错字的数量。我们将数据记录在Excel中,A列是使用键盘布局A打错字的数量,B列是使用键盘布局B打错字的数量。

描述统计分析:

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
fileNameStr=C:eamon统计概率思维:推论统计分析假设检验键盘AB测试.xlsx

xls = pd.ExcelFile(fileNameStr)
data = xls.parse(Sheet1)
data.head()

#样本平均值
a_mean=data[A].mean()
b_mean=data[B].mean()

print(A版本平均值=,a_mean,单位:打错字数量)
print(B版本平均值=,b_mean,单位:打错字数量)

a_std=data[A].std()
b_std=data[B].std()

print(A版本样本大小25,样本标准差=,a_std,单位:打错字数量)
print(B版本样本大小25,样本标准差=,b_std,单位:打错字数量)

A版本平均值= 5.08 单位:打错字数量

B版本平均值= 7.8 单位:打错字数量A版本样本大小25,样本标准差= 2.05993527406405 单位:打错字数量B版本样本大小25,样本标准差= 2.6457513110645907 单位:打错字数量

推断统计分析:

提出问题:

1.零假设和备选假设

零假设:A版本和B版本没有差别,也就是A版本平均值=B版本平均值。

备选假设:A版本和B版本有差别,也就是A版本平均值 不等于 B版本平均值。

零假设总是表述为研究没有改变,没有效果,不起作用等,这里就是两版效果相同。

2.检验类型

这里有2组样本,是不同的人,所以选择双独立样本检验。

3.抽样分布类型

在这个案例中,样本大小是25(小于30),属于小样本。

import seaborn as sns

#查看数据集分布
sns.distplot(data[A])
plt.title(A版本数据集分布)
plt.show()

sns.distplot(data[B])
plt.title(B版本数据集分布)
plt.show()

两个样本数据集都近似正态分布,满足t分布的使用条件,所以抽样分布是t分布。

4.检验方向

备选假设是A版本和B版本有差别,也就是A版本平均值 不等于 B版本平均值,所以我们使用双尾检验。

寻找证据

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_twoTail,,df=,df)

t= -4.05593853686 p_two= 0.000194574553072 df= 45.2781333114

判断标准

#判断标准(显著水平)使用alpha=5%
alpha=0.05

双尾检验的两端区域各占α/2.

做出结论


双尾判断条件:p < 判断标准(显著水平)alpha/2 时,拒绝零假设,有统计显著,也就是有显著差异

#做出结论
if(p_two< alpha/2):
print(拒绝零假设,有统计显著,也就是接受备选假设)
print(备选假设:A版本和B版本有差异)
else:
print(接受零假设,没有统计显著)
print(零假设:A版本和B版本没有差异)

拒绝零假设,有统计显著,也就是接受备选假设

备选假设:A版本和B版本有差异

得出结论:拒绝零假设,有统计显著,也就是汽车引擎排放满足标准

置信区间

对于独立双样本的置信区间,我们使用两个样本的差值。

t_ci=2.0141

#样本大小n
a_n = 25
b_n = 25

numpy.square 平方
numpy.sqrt开方
标准误差计算公式:
https://en.wikipedia.org/wiki/Student%27s_t-test#Independent_two-sample_t-test

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

置信区间

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 )

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]

置信区间是[-4.070699,-1.369301],平均下来,使用A键盘的错误数量要比B键盘的要少大约4到1个.

效应量

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

print(d=,d)

d= -1.3204298378918027

数据分析报告

1、描述统计分析

A版本打错字数量 平均是5.08个,标准差是2.06个

B版本打错字数量 平均是7.8个,标准差是2.65个

2、推论统计分析 1)假设检验 独立双样本t(45)=-4.05 , p=.00019 (α=5%) , 双尾检验

拒绝零假设,统计显著。

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

3)效应量 d= - 1.32,效果显著。


推荐阅读:
相关文章