python做t检验_Python实现--假设检验:T检验
為什么要寫假設(shè)檢驗(yàn)?因?yàn)樵诠ぷ髦薪?jīng)常會(huì)遇到ABTest就不可避免的要進(jìn)行假設(shè)檢驗(yàn),進(jìn)行結(jié)果的有效性分析。
假設(shè)檢驗(yàn)的方法有很多比如T檢驗(yàn)、卡方檢驗(yàn)、方差分析等。這些方法在Excel、Python、R、Spss里都是可以實(shí)現(xiàn)的。
本篇文章主要寫代碼層面的實(shí)現(xiàn),本著在工作中學(xué)以致用來寫本文,所以會(huì)少一些原理性的講解。原理性的講解后期補(bǔ)。
一、假設(shè)檢驗(yàn)——T檢驗(yàn)
T檢驗(yàn)有2種,一種叫單樣本T檢驗(yàn)、另一種兩樣本T檢驗(yàn)。
工欲善其事必先利其器,用Python進(jìn)行假設(shè)檢驗(yàn)前我們需要把必備的包給安裝好。
#必備安裝包
pip install scipy numpy
1.1兩樣本T檢驗(yàn)(ttest_ind)
scipy.stats.ttest_ind(a, b, axis=0, equal_var=True, nan_policy='propagate'
參數(shù)解釋:
a、b:待檢驗(yàn)的數(shù)據(jù)集
equal_var:方差齊性判斷
nan_policy:執(zhí)行代碼檢驗(yàn),返回結(jié)果的狀態(tài)。
這個(gè)參數(shù)有3種狀態(tài):{‘propagate’, ‘raise’, ‘omit’},分別返回{nan、報(bào)錯(cuò)、忽略}方差齊性定義:兩樣本總體方差相等,當(dāng)兩總體方差相等時(shí),即具有“方差齊性”,可以直接檢驗(yàn)。
設(shè):
H0(原假設(shè)):兩列數(shù)據(jù)沒有顯著性差異。以95%的置信區(qū)間進(jìn)行判定。
數(shù)據(jù)集:
#均值為5,方差為10的兩列數(shù)據(jù)
rvs1 = stats.norm.rvs(loc=5,scale=10,size=500)
rvs2 = stats.norm.rvs(loc=5,scale=10,size=500)
#均值為5,方差為20的500個(gè)數(shù)據(jù)
rvs3 = stats.norm.rvs(loc=5, scale=20, size=500)
#均值為5,方差為10的100個(gè)數(shù)據(jù)
rvs4 = stats.norm.rvs(loc=5, scale=20, size=100)
#均值為8,方差為20的100個(gè)數(shù)據(jù)
rvs5 = stats.norm.rvs(loc=8, scale=20, size=100)
1.1.1檢驗(yàn)rvs1和rvs2之間是否有顯著性差異。
因?yàn)?#xff1a;樣本方差,均值相同,數(shù)據(jù)量相同,可以直接套代碼進(jìn)行檢驗(yàn)
stats.ttest_ind(rvs1,rvs2)
#輸出:Ttest_indResult(statistic=0.9208589021990001, pvalue=0.35734663412126055)
1.1.2檢驗(yàn)rvs1和rvs3之間是否有顯著性差異。
因?yàn)?#xff1a;樣本方差不同,均值相同,數(shù)據(jù)量相同,需要設(shè)置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檢驗(yàn)rvs1和rvs4之間是否有顯著性差異。
因?yàn)?#xff1a;樣本均值相同,方差不同,樣本量不同。需要設(shè)置equal_var = False,如果默認(rèn)True(不設(shè)置),結(jié)果的P值會(huì)變大。
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值差異會(huì)比較大
1.1.4檢驗(yàn)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值差異會(huì)比較大
總結(jié)
以上是生活随笔為你收集整理的python做t检验_Python实现--假设检验:T检验的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 计算机知识演讲稿,乔布斯的演讲稿 我们的
- 下一篇: If you are using Web