作者|SUBHASH MEENA 編譯|VK 來源|Analytics Vidhya
概述
假設檢驗是統計學、分析學和數據科學中的一個關鍵概念
瞭解假設檢驗的工作原理、Z檢驗和t檢驗之間的區別以及其他統計概念
介紹
冠狀病毒大流行使我們大家都成了一個統計學家。我們不斷地核對數字,對大流行將如何發展做出自己的假設,並對何時出現“高峯”提出假設。
不僅是我們在進行假設構建,媒體也在這方面蓬勃發展。
幾天前,我讀到一篇新聞文章,其中提到這次疫情“可能是季節性的”,在溫暖的環境下會有所緩解:
所以我開始想,關於冠狀病毒,我們還能假設什麼呢?
- 成人是否更容易受到冠狀病毒爆發的影響?
- 相對溼度如何影響病毒的傳播?
有什麼證據支持這些說法,我們如何檢驗這些假設呢?
作爲一個統計愛好者,所有這些問題都挖掘了我對假設檢驗基本原理的舊知識。本文將討論假設檢驗的概念以及Z檢驗與t檢驗的區別。
然後,我們將使用COVID-19案例研究總結我們的假設檢驗學習。
目錄
假設檢驗基礎
- 基本概念-零假設、替代假設、類型1錯誤、類型2錯誤和顯著性水平
- 進行假設檢驗的步驟
- 定向假設
- 非定向假設檢驗
什麼是Z檢驗?
- 單樣本Z檢驗
- 雙樣本Z檢驗
什麼是t檢驗?
- 單樣本t檢驗
- 雙樣本t檢驗
Z檢驗和t檢驗的決定
案例研究:Python冠狀病毒的假設檢驗
假設檢驗基礎
讓我們舉一個例子來理解假設檢驗的概念。
一個人因刑事犯罪正在接受審判,法官需要對他的案件作出判決。現在,在這種情況下有四種可能的組合:
第一種情況:此人是無辜的,法官認定此人是無辜的
第二種情況:此人無罪,法官認定此人有罪
第三種情況:此人有罪,法官認定此人無罪
第四種情況:此人有罪,法官認定此人有罪
正如你可以清楚地看到的,在判決中有兩種類型的錯誤。
- 第一種錯誤:當判決是針對無辜的人時
- 第二種錯誤:當判決是有利於有罪的人時
根據無罪推定,該人在被證明有罪之前被視爲無罪。這意味着法官必須找到使他“毫無疑問”的證據。
這種“毫無疑問”的現象可以理解爲概率(法官判定有罪|人無罪)應該很小。
假設檢驗的基本概念實際上相當類似於這種情況。
我們認爲零假設是正確的,直到我們找到有力的證據反對它。那麼。我們接受另一種假設。
我們還確定了顯著性水平(⍺),這可以理解爲(法官判定有罪|人是無罪的)在前面的例子中的概率。
因此,如果⍺較小,則需要更多的證據來拒絕零假設。別擔心,我們稍後會用一個案例來討論所有這些。
進行假設檢驗的步驟
進行假設檢驗有四個步驟:
設定假設
設定決策的重要程度和標準
計算測試統計
做決策
步驟1到步驟3是非常不言而喻的,但是我們可以根據什麼在步驟4中做出決定?這個p值表示什麼?
我們可以把這個p值理解爲衡量辯護律師論點的標準。如果p值小於⍺,則拒絕零假設;如果p值大於⍺,則不拒絕零假設。
臨界值,p值
讓我們用正態分佈的圖形表示來理解假設檢驗的邏輯。
通常,我們將顯著性水平設置爲10%、5%或1%。
如果我們的測試分數在可接受範圍內,我們就不能拒絕零假設。如果我們的測試分數在臨界區,我們拒絕零假設,接受替代假設。
臨界值是驗收區和拒收區之間的截止值。我們將我們的測試分數與臨界值進行比較,如果測試分數大於臨界值,則意味着我們的測試分數位於拒絕區域,我們拒絕零假設。
另一方面,如果測試分數小於臨界值,則意味着測試分數位於接受區,我們無法拒絕零假設。
但是,當我們可以根據測試分數和臨界值拒絕/接受假設時,爲什麼我們需要p值?
p值的好處是我們只需要一個值就可以對假設做出決定。我們不需要計算兩個不同的值,比如臨界值和測試分數。
使用p值的另一個好處是,我們可以通過直接將其與顯著性水平進行比較,在任何期望的顯著性水平上進行測試。
這樣我們就不需要計算每個顯著性水平的考試分數和臨界值。我們可以得到p值,並直接與顯著性水平進行比較。
定向假設
在定向假設中,如果測試分數太大(右尾的測試分數太小,左尾的測試分數太小),則會拒絕零假設。因此,這種測試的拒絕區域由一個部分組成。
非定向假設
在非定向假設檢驗中,如果檢驗分數太小或太大,則拒絕零假設。因此,這種測試的拒絕區域由兩部分組成:一部分在左側,一部分在右側。
什麼是Z檢驗?
Z檢驗是檢驗假設的統計方法,當:
我們知道人口的變化,或者
我們不知道總體方差,但我們的樣本量很大n≥30
如果樣本量小於30且不知道總體方差,則必須使用t檢驗。
單樣本Z檢驗
當我們想比較樣本均值和總體均值時,我們執行單樣本Z檢驗。
下面是一個瞭解單樣本Z檢驗的示例
假設我們需要確定女生在考試中的平均分是否高於600分。
- 我們得到的信息是女生成績的標準差是100。
- 因此,我們採用隨機抽樣的方法收集了20名女生的數據,並記錄她們的成績。
- 最後,我們還將⍺值(顯著性水平)設置爲0.05。
在本例中:
女生的平均分是641分
樣本的大小是20
平均是600
標準差爲100
由於P值小於0.05,我們可以拒絕零假設,並根據我們的結果得出結論,女孩平均得分高於600。
雙樣本Z檢驗
當我們想要比較兩個樣本的平均值時,我們執行兩個樣本的Z檢驗。
下面是一個瞭解雙樣本Z檢驗的示例
這裏,假設我們想知道女生的平均分是否比男生高出10分。
- 我們得到的信息是,女生成績的標準差是100,男生成績的標準差是90。
- 然後採用隨機抽樣的方法收集20名女生和20名男生的數據,記錄她們的成績。
- 最後,我們還將⍺值(顯著性水平)設置爲0.05。
在本例中:
女孩的平均分(樣本平均值)是641
男孩的平均分(樣本平均值)爲613.3
女生標準差爲100
男生標準差是90
男女樣本量均爲20
平均分差異是10
因此,我們可以根據P值得出結論,我們不能拒絕零假設。我們沒有足夠的證據得出這樣的結論:女生的平均分比男生高出10分。很簡單,對吧?
什麼是t檢驗?
t檢驗是檢驗假設的一種統計方法,當:
我們不知道總體方差
我們的樣本量很小,n < 30
一個樣本的t檢驗
當我們想要比較樣本均值和總體均值時,我們執行一個單樣本t檢驗。與Z檢驗的不同之處在於,我們這裏沒有關於總體方差的信息。
在這種情況下,我們使用樣本標準差代替總體標準差。
下面是一個瞭解單樣本t檢驗的示例
假設我們想確定女生平均考試成績是否超過600分。我們沒有與女孩分數的方差(或標準差)相關的信息。爲了進行t檢驗
- 我們隨機收集了10名有分數的女孩的數據
- 選擇我們的⍺值(顯著性水平)爲0.05進行假設檢驗。
在本例中:
女生的平均分是606.8分
樣本大小是10
平均分是600
樣本的標準差爲13.14
我們的P值大於0.05,因此我們無法拒絕零假設,也沒有足夠的證據來支持這樣的假設:平均來說,女孩在考試中的得分超過600分。
雙樣本t檢驗
當我們想要比較兩個樣本的平均值時,我們執行雙樣本t檢驗。
下面是一個理解雙樣本t檢驗的例子
這裏,假設我們想確定,在考試中,男生的平均分數是否比女生高出15分。我們沒有與女孩或男孩分數的方差(或標準差)相關的信息。爲了進行t檢驗
- 我們隨機收集了10名男女學生的成績數據
- 我們選擇⍺值(顯著性水平)爲0.05作爲假設檢驗的標準
在本例中:
男生的平均分是630.1
女生的平均分是606.8分
平均相差15分
男生成績的標準差是13.42
女生成績的標準差爲13.14
因此,P值小於0.05,因此我們可以拒絕零假設,並得出結論:在考試中,男孩平均比女孩多15分。
Z檢驗和T檢驗的決定
那麼我們什麼時候應該做Z檢驗,什麼時候應該做t檢驗呢?如果我們想掌握統計學,這是我們需要回答的一個關鍵問題。
如果樣本量足夠大,那麼Z檢驗和t檢驗將得出相同的結果。對於大樣本,樣本方差是對總體方差的較好估計,因此即使總體方差未知,我們也可以使用樣本方差的Z檢驗。
同樣,對於大樣本,我們有很高的自由度。由於t分佈接近正態分佈,z分和t分之間的差異可以忽略不計。
案例研究:用Python對冠狀病毒進行假設檢驗
現在讓我們爲冠狀病毒數據集實現兩個樣本Z測試。讓我們把理論知識付諸實踐,看看能不能做好。你可以在這裏下載數據集。
https://drive.google.com/file/d/1SJHiTq9QH3GX4CHKtODY3pcmmtxx0bB9/view?usp=sharing
這個數據集取自John Hopkin的存儲庫,你可以在這裏找到它的鏈接。
此數據集具有以下特徵:
- Province/State
- Country/Region
- Last Update
- Confirmed
- Deaths
- Recovered
- Lattitude
- Longitude
我們還使用Python的Weather API-Pyweatherbit添加了緯度和經度的溫度和溼度特性。
關於COVID-19的一個普遍看法是,溫暖的氣候對日冕爆發更有抵抗力,我們需要通過假設檢驗來驗證這一點。那麼,我們的零假設和替代假設是什麼呢?
零假設:溫度不影響COV-19的爆發
替代假設:溫度確實影響COV-19的爆發
注:在我們的數據集中,溫度低於24表示寒冷氣候,高於24表示炎熱氣候。
import pandas as pd
import numpy as np
corona = pd.read_csv('Corona_Updated.csv')
corona['Temp_Cat'] = corona['Temprature'].apply(lambda x : 0 if x < 24 else 1)
corona_t = corona[['Confirmed', 'Temp_Cat']]
def TwoSampZ(X1, X2, sigma1, sigma2, N1, N2):
from numpy import sqrt, abs, round
from scipy.stats import norm
ovr_sigma = sqrt(sigma1**2/N1 + sigma2**2/N2)
z = (X1 - X2)/ovr_sigma
pval = 2*(1 - norm.cdf(abs(z)))
return z, pval
d1 = corona_t[(corona_t['Temp_Cat']==1)]['Confirmed']
d2 = corona_t[(corona_t['Temp_Cat']==0)]['Confirmed']
m1, m2 = d1.mean(), d2.mean()
sd1, sd2 = d1.std(), d2.std()
n1, n2 = d1.shape[0], d2.shape[0]
z, p = TwoSampZ(m1, m2, sd1, sd2, n1, n2)
z_score = np.round(z,8)
p_val = np.round(p,6)
if (p_val<0.05):
Hypothesis_Status = 'Reject Null Hypothesis : Significant'
else:
Hypothesis_Status = 'Do not reject Null Hypothesis : Not Significant'
print (p_val)
print (Hypothesis_Status)
0.180286
Do not reject Null Hypothesis : Not Significant
因此。我們沒有證據否定我們的零假設,即溫度不影響COV-19的爆發。
雖然我們無法找到溫度對COV-19的影響,但這個問題只是作爲我們在本文中所學的概念性理解。COVID-19數據集的Z檢驗有一定的侷限性:
樣本數據可能不能很好地代表人口數據
樣本方差可能不是總體方差的好估計量
一個州應對這種流行病的能力的變化
社會經濟原因
某些地方的早期突破
一些國家可能出於地緣政治原因而隱瞞這些數據
因此,我們需要更加謹慎,進行更多的研究,以確定這種流行病的模式。
結尾
本文采用逐步迴歸的方法,對假設檢驗、1型誤差、2型誤差、顯著性水平、臨界值、p值、非定向假設、定向假設、Z檢驗和t檢驗的基本原理進行了研究,並對一個冠狀病毒病例進行了兩樣本Z檢驗。
原文鏈接:https://www.analyticsvidhya.com/blog/2020/06/statistics-analytics-hypothesis-testing-z-test-t-test/
歡迎關注磐創AI博客站: http://panchuang.net/
sklearn機器學習中文官方文檔: http://sklearn123.com/
歡迎關注磐創博客資源彙總站: http://docs.panchuang.net/