最近,有人問我如何向外行人簡單地解釋 p 值。我發現這很難做到。
即使對了解 p 值的人,解釋 p 值總是一個令人頭疼的問題,更不用說對不懂統計學的人了。
我去維基百科找了一些東西,這是它的定義:
在統計假設檢驗中,對於給定的統計模型,p 值或概率值是在原假設為真時,統計值(如兩組間的樣本均值差)與實際觀察結果相等或更大的概率。
我的第一個想法是,可能他們這樣寫,所以沒有人能理解它。這裡的問題在於統計學家喜歡使用的大量術語。
這篇文章是關於用一種容易理解的方式解釋 p 值,而不是統計學家們的方式。
一個現實生活中的問題在我們的生活中,我們對一件事的相信程度勝過另一件事。
地球是圓的。或者地球繞著太陽轉。太陽從東方升起。
對於那些有著不同程度不確定因素的不太明顯的人來說 —— 鍛鍊可以減肥?還是說川普會在下次選舉中贏/輸?或者某種特定的藥物有效?還是說睡 8 個小時對你的健康有好處?
前一類是事實,後一類則因人而異。
那麼,如果我找到你說鍛鍊不會影響體重呢?
所有去健身房的人都可能對我說不好聽的話。但是否存在一種數學和邏輯結構,可以證明我是錯的?
這就引出了假設檢驗的概念。
假設檢驗鍛鍊不能減肥?所以我在上面的例子中所說的鍛鍊不會影響體重。這是我的假設。我們暫時稱它為零假設。就目前而言,我們認為這種現狀是正確的。
那些發誓要鍛鍊的人的替代假設是 —— 鍛鍊確實能減肥。
但我們如何驗證這些假設呢?我們收集的數據。我們收集了 10 個經常鍛鍊超過 3 個月的人的減肥數據。
樣本減重均值 = 2 kg
樣本標準差 = 1 kg
這能證明運動確實能減肥嗎?粗略一看,似乎鍛鍊確實有好處,因為鍛鍊的人平均減重 2 公斤。
但你會發現,當你進行假設檢驗時,這種清晰的發現並不總是如此。如果做運動的人減掉的體重只有 0.2 公斤呢?你還會那麼肯定運動能減肥嗎?
那麼,我們如何量化這一點,並在背後進行一些數學計算呢?
我們來做個實驗。
實驗讓我們再回到我們的假設:
Hº:鍛鍊不影響體重。或者說 𝜇= 0
Hᴬ:鍛鍊減肥。或者說 𝜇> 0
我們看了 10 個人的數據樣本,我們試著找出
觀察平均值(運動的人減重的值) = 2 公斤
觀測樣本標準差 = 1 kg
我們可以問自己一個問題假設零假設成立,觀察到樣本均值為 2 千克或更極端情況的概率是多少假設零假設成立,觀察到樣本均值為 2 千克或更極端情況的概率是多少
假設我們可以計算這個— 如果這個概率值很低(小於閾值),我們就拒絕零假設。否則,我們不拒絕零假設。**為什麼不拒絕?**我稍後會回答這個問題。
這個概率值實際上是 p 值。簡單地說,它就是我們假設零假設成立時觀察到的結果或極端結果的概率。
統計學家把這個閾值稱為顯著性水平(𝜶),在大多數的情況下,取 𝜶=0.05。
**那麼我們怎麼回答這個問題呢:**假設零假設成立,減肥 2 公斤或 2 公斤以上的值的概率是多少?
現在,我們來聊聊我們最喜歡的正態分布。
正態分布假設零假設成立,我們創建一個減肥樣本均值的抽樣分布。中心極限定理: 中心極限定理簡單地指出,如果你有一個分布,均值 μ 和標準差 σ,從這個分布中隨機抽樣,得到的樣本分布也是近似正態分布的,均值和原來的分布一樣,標準差為 σ/√n,其中 σ 是樣本的標準差,n 觀測樣本的數量。
根據零假設,我們已經知道總體均值了,於是,我們有了正態分布的均值是 0,標準差是 1/√10。
抽樣分布是樣本均值的分布。
採樣的樣本分布的均值來自於總體分布。我們觀察到一個特定的平均值,即 Xobserved = 2kg。
現在我們可以使用一些統計軟體來找到這條曲線下的面積:
from scipy.stats import norm
import numpy as np
p = 1-norm.cdf(2, loc=0, scale = 1/np.sqrt(10))
print(p)
--
1.269814253745949e-10
可以看到,這是個非常小的概率 p 值(< 0.5 的顯著性水平),意味著減肥超值過平均 2kg 的概率非常小。
我們可以拒絕零假設。我們可以稱我們的結果在統計上是有意義的,因為它們不是偶然發生的。
Z 統計量當你讀到假設檢驗的時候,你可能也聽說過 Z 統計量。就像我說的,術語。這是上面基本相同思想的延伸,我們使用均值為 0,方差為 1 的標準正態分布作為抽樣分布,使用下面的方式將觀測值 x 進行轉化:
這樣用統計表格更容易。在我們運行的例子中,我們的 z 統計量是:
z = (2-0)/(1/np.sqrt(10))
print(z)
----
6.324555320336758
只要看>6 的 Z 統計量就能知道觀測值至少有 6 個標準差遠,p 值應該更小。我們仍然可以找到 p 值,使用:
from scipy.stats import norm
import numpy as np
p = 1-norm.cdf(z, loc=0, scale=1)
print(p)
----
1.269814253745949e-10
正如你所看到的,我們使用 Z 統計量得到了相同的結果。
一個重要的區別我們的陪審員永遠無法確定,所以他們不會接受,他們只是拒絕。我們之前說過我們拒絕零假設因為我們有足夠的證據來證明零假設是錯誤的。
但是如果 p 值高於顯著性水平呢?那麼我們說我們沒有拒絕零假設。為什麼不接受零假設呢?
最直觀的例子就是使用初審法院。在初審法庭上,原假設是被告無罪。然後我們看到一些證據來反駁零假設。
如果我們不能反駁無效假設,法官就不會說被告沒有犯罪。法官只說根據所給的證據,我們不能給被告定罪。
再舉一個例子:假設我們正在探索外星生命。零假設是那個星球上就沒有生命。我們漫遊了幾英裡,尋找那個星球上的人/外星人。如果我們看到任何外星人,我們可以拒絕零假設,支持另一種選擇。
但是,如果我們沒有看到任何外星人,我們能確定地說在這個星球上沒有外星生命或者接受我們的零假設嗎?也許我們需要更多的探索,也許我們需要更多的時間,也許我們已經發現了一個外星人。在這種情況下,我們不能接受零假設,我們只能拒絕它。或者,我們可以說**「我們沒有學到任何有趣的東西」**。
在 STAT101 課程中,他們會教你如何在這種情況下寫出令人費解的段落。(「我們沒有拒絕零假設,也沒有得出沒有足夠的統計證據支持這個星球上存在外星生命的結論。」)我總是允許我的本科生這樣寫:我們沒有學到任何有趣的東西。
Riddikulus:使用p值進行假設檢驗可以使原假設看起來很荒謬本質上,假設檢驗就是檢查我們的觀測值是否使原假設看起來很荒謬。如果是,我們拒絕零假設,稱我們的結果具有統計顯著性。除此之外,我們沒有學到任何有趣的東西,我們繼續維持現狀。