利用python进行假设假设检验
這篇文章通過一個(gè)實(shí)列來介紹如何利用python來進(jìn)行假設(shè)檢驗(yàn)。上一篇文章中,我們介紹了假設(shè)檢驗(yàn)就是將所要驗(yàn)證的假設(shè)分成兩個(gè)對(duì)立的假設(shè),然后驗(yàn)證哪一個(gè)假設(shè)成立的概率要大一點(diǎn)。這里我將會(huì)介紹專業(yè)人員驗(yàn)證假設(shè)的兩種方法:
數(shù)據(jù)介紹和確立假設(shè)
本文利用的數(shù)據(jù)是一份關(guān)于人們喝咖啡的數(shù)據(jù),包含每一個(gè)人的身高、是否喝咖啡等信息。這里展示了頭部的5條數(shù)據(jù):
我們好奇的一個(gè)問題是這些喝咖啡人的平均身高是否大于70英寸(1.75米),也就是我們想驗(yàn)證這個(gè)總體中的身高均值是否大于70英寸。所以我們可以設(shè)立假設(shè)有(μ代表身高的平均值):
利用置信區(qū)間
為了驗(yàn)證關(guān)于總體參數(shù)的假設(shè),我們需要從總體中抽取樣本進(jìn)行檢驗(yàn)。第一個(gè)方法是通過構(gòu)造統(tǒng)計(jì)量的抽樣分布,查看置信區(qū)間,并與假設(shè)進(jìn)行對(duì)比。具體過程可以概括為:
具體代碼實(shí)現(xiàn)過程如下:
low和high分別代表置信區(qū)間的下限和上限
結(jié)果為:
可以看到,抽樣分布大致為正太分布。為什么會(huì)服從正太分布呢?因?yàn)楦鶕?jù)中心極限定理,在樣本量趨于無限的時(shí)候,樣本均值服從正態(tài)分布。上面的圖像是在進(jìn)行10000次自助抽樣時(shí)候的狀態(tài),隨著抽樣次數(shù)的增加,圖像會(huì)越來越趨近正太分布。
另外,95%的置信度下,置信區(qū)間的范圍大致為67-68.25之間。因此我i們看到,抽樣分布95%以上的值都小于70,所以我們應(yīng)該接受零假設(shè),也就是認(rèn)為總體的平均身高小于70英寸。
模擬零假設(shè)
上一部分我們采用置信區(qū)間,判斷樣本計(jì)算的統(tǒng)計(jì)量值是否在置信區(qū)間里面,以此來判斷是否接受原假設(shè)。這里我們采用另外一種方式來判斷是否接受原假設(shè)。我們知道當(dāng)樣本容量足夠大時(shí),樣本均值服從均值為總體均值,方差為樣本均值方差的正態(tài)分布。那么我們就可以,模擬零假設(shè)成立下的統(tǒng)計(jì)量的抽樣本分布,并根據(jù)這個(gè)分布計(jì)算P值,以此來判斷是否接受零假設(shè)。關(guān)于P值,可以參看我的另一篇文章《一文詳解假設(shè)檢驗(yàn)、兩類錯(cuò)誤和p值》。下面我介紹具體的實(shí)現(xiàn)方法:
同樣首先導(dǎo)入相應(yīng)的包和數(shù)據(jù):
接著從數(shù)據(jù)中抽取150個(gè)樣本,這是把原數(shù)據(jù)當(dāng)成總體,而對(duì)總體進(jìn)行抽樣的過程:
np.random.seed(42) sample_df=df.sample(150)對(duì)樣本進(jìn)行10000次自助抽樣,并計(jì)算均值:
means=[] #存儲(chǔ)每一次計(jì)算得到的均值 for _ in range(10000):bootsample=sample_df.sample(150,replace=True) #replace=True時(shí)為自助抽樣,也就是有放回的抽樣means.append(bootsample.height.mean())計(jì)算樣本統(tǒng)計(jì)量的方差,并在假設(shè)零假設(shè)成立下,模擬正態(tài)的抽樣分布:
null_vals=np.random.normal(70,np.std(means),10000)可視化圖形:
plt.hist(null_vals)
計(jì)算抽樣得到的樣本均值:
計(jì)算p值,p值其實(shí)就是基于備擇假設(shè),比樣本統(tǒng)計(jì)量更極端值的比例:
(null_vals>sample_mean).mean()在該例的假設(shè)中,H1的假設(shè)為:
H1: μ>70所以在基于H1的假設(shè)下,更偏向極端值的就是抽樣分布中大于樣本計(jì)算出來的統(tǒng)計(jì)量值的比例。這就是p值,值越大我們?cè)讲荒芫芙^零假設(shè)。上面計(jì)算的值為1,所以我們無法拒絕原假設(shè)。這個(gè)結(jié)果也和上部分利用置信區(qū)間得到的結(jié)論一樣。這里我們給出通過模擬零假設(shè)進(jìn)行假設(shè)檢驗(yàn)的一般過程:
總結(jié)
以上是生活随笔為你收集整理的利用python进行假设假设检验的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: yii2中发送手机号验证码
- 下一篇: Python爬取曾今的K歌