900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > python做t检验_Python实现--假设检验:T检验

python做t检验_Python实现--假设检验:T检验

时间:2020-05-03 06:43:47

相关推荐

python做t检验_Python实现--假设检验:T检验

为什么要写假设检验?因为在工作中经常会遇到ABTest就不可避免的要进行假设检验,进行结果的有效性分析。

假设检验的方法有很多比如T检验、卡方检验、方差分析等。这些方法在Excel、Python、R、Spss里都是可以实现的。

本篇文章主要写代码层面的实现,本着在工作中学以致用来写本文,所以会少一些原理性的讲解。原理性的讲解后期补。

一、假设检验——T检验

T检验有2种,一种叫单样本T检验、另一种两样本T检验。

工欲善其事必先利其器,用Python进行假设检验前我们需要把必备的包给安装好。

#必备安装包

pip install scipy numpy

1.1两样本T检验(ttest_ind)

scipy.stats.ttest_ind(a, b, axis=0, equal_var=True, nan_policy='propagate'

参数解释:

a、b:待检验的数据集

equal_var:方差齐性判断

nan_policy:执行代码检验,返回结果的状态。

这个参数有3种状态:{‘propagate’, ‘raise’, ‘omit’},分别返回{nan、报错、忽略}方差齐性定义:两样本总体方差相等,当两总体方差相等时,即具有“方差齐性”,可以直接检验。

设:

H0(原假设):两列数据没有显著性差异。以95%的置信区间进行判定。

数据集:

#均值为5,方差为10的两列数据

rvs1 = stats.norm.rvs(loc=5,scale=10,size=500)

rvs2 = stats.norm.rvs(loc=5,scale=10,size=500)

#均值为5,方差为20的500个数据

rvs3 = stats.norm.rvs(loc=5, scale=20, size=500)

#均值为5,方差为10的100个数据

rvs4 = stats.norm.rvs(loc=5, scale=20, size=100)

#均值为8,方差为20的100个数据

rvs5 = stats.norm.rvs(loc=8, scale=20, size=100)

1.1.1检验rvs1和rvs2之间是否有显著性差异。

因为:样本方差,均值相同,数据量相同,可以直接套代码进行检验

stats.ttest_ind(rvs1,rvs2)

#输出:Ttest_indResult(statistic=0.9208589021990001, pvalue=0.35734663412126055)

1.1.2检验rvs1和rvs3之间是否有显著性差异。

因为:样本方差不同,均值相同,数据量相同,需要设置equal_var = False

rvs1 = stats.norm.rvs(loc=5,scale=10,size=500)

rvs3 = stats.norm.rvs(loc=5, scale=20, size=500)

stats.ttest_ind(rvs1, rvs3, equal_var = False)

1.1.3检验rvs1和rvs4之间是否有显著性差异。

因为:样本均值相同,方差不同,样本量不同。需要设置equal_var = False,如果默认True(不设置),结果的P值会变大。

rvs1 = stats.norm.rvs(loc=5,scale=10,size=500)

rvs4 = stats.norm.rvs(loc=5, scale=20, size=100)

stats.ttest_ind(rvs1, rvs4, equal_var = False) #If equal_var =True,则P值差异会比较大

1.1.4检验rvs1和rvs5之间是否有显著性差异。

rvs1 = stats.norm.rvs(loc=5,scale=10,size=500)

rvs5 = stats.norm.rvs(loc=8, scale=20, size=100)

stats.ttest_ind(rvs1, rvs5, equal_var = False) #If equal_var =True,则P值差异会比较大

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。