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值差異會比較大
總結
以上是生活随笔為你收集整理的python做t检验_Python实现--假设检验:T检验的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 计算机知识演讲稿,乔布斯的演讲稿 我们的
- 下一篇: python+百度云orc识别身份证信息