報告結果成敗前,先決定要用哪個檢定!Z-test & T-test 一次搞清楚
我最喜歡資料分析的部分,就是透過資料想出好的行動方案而創造正向的影響力,因此在想出好的行動方案後,都會迫不急待的確認結果,但在向主管報告前,務必要先進行「檢定」,確認這次的好結果是不是只是「運氣好」!
舉例來說,如果我們根據客人的消費行為,重新分配店家業務的客人名單,並預期下個月的業績會優於這個月。即是結果真的如預期,業績提升了,但有可能只是季節性的影響,領了年終,客人更願意消費,因此無法歸功於重新分配客人名單。
於是下結論前,我們可以透過統計檢定,來幫助我們判斷結果的顯著性與否,本篇主要介紹的就是檢定樣本資料是否和群體資料平均值相同的 Z-test 和 T-test(改變後的平均是否真的顯著性地高於改變前的平均),但在理解檢定方法前,我們需要先知道一個統計上的重要理論:中央極限定理。
中央極限定理(Central Limit Theorem, CLT)
中央極限定理告訴我們,當樣本數足夠大(N ≥ 30)時,可以利用樣本表示群體的資訊:
- 不論群體的機率分配為何種型式,大量統計獨立的樣本平均數的抽樣分配會近似常態分布
- 樣本平均等於群體平均
常態分佈是一個常見、方便的模型,分佈中有 68% 值會落在平均值的左右一個標準差內;95% 的值落在兩個標準差內。在自然科學、現實生活中,許多事情發生的機率都為常態分佈,例如:學生的期末考成績,諸多統計模型和機器學習模型也都假設資料呈常態分佈。
它的重要性在於:我們不需要得到群體的全部資料,就可以得到群體平均。如果我們能夠獲得群體資料,直接算出不同數值的標準差和平均,當然是最準確的,但計算和蒐集全部的數據,需要的成本和時間太高,因此利用中央極限定理就能事半功倍!
接著我們可以把中央極限定理運用在檢定上。
Z-檢定(Z-test)
如果你想要知道,班上籃球隊的身高是否高於全班平均、班上單數號跟雙數號的身高是否有顯著差異,就可以運用 Z-test。當我們有一組資料後,可以利用 Z-test 檢定這組資料是否來自某一群體,或是,可以檢定兩組資料的平均是否相同。
以 Z-test 來說,我們需要符合的前提有:
- 常態分佈為連續機率分佈圖,因此變數必須是連續變數
- 抽樣的樣本必須是獨立的,也就是不會重複抽到同一個樣本
- 群體的變異數必須是已知,或是樣本數夠大(N ≥ 30)
大樣本(N ≥ 30)
常態分佈有兩個重要參數:平均數、變異數,我們需要在進行 Z-test 獲得這兩個資訊,但當樣本數足夠大時(N ≥ 30),可以根據中央極限定理以樣本變異數代替群體變異數,因此沒有區別。
小樣本(N < 30)
但實際情況下,我們不一定每次都夠獲得大樣本,因此在對種情況,如果抽樣的群體本身是常態分配且標準差已知,我們仍可以使用 Z-test,但如果不是就需要使用另一種檢定方式,稱為 T-檢定(T-test)。
T-檢定(T-test)
因為群體標準差未知,因此在檢定前我們需要先對樣本進行常態分佈的檢定,確認樣本在常態分佈,接著以樣本標準差來進行 T-test,舉例來說:導師想知道自己教學上的改變,是否會對一個 28 人的班級期中考和期末考有顯著進步,此時兩組樣本的比較所於小樣本。
兩種檢定,三種情況
根據上述情況,我們可以兩種檢定各自分別可以運用在三種情況,以下範例以 R 示範:
One-Sample Test
用於比較一組數據和另一個數值是否有顯著差異。假設班上有 8 個同學參加籃球隊,而班上平均身高為 170 cm,假設班上同學身高呈常態分佈,且標準差為 4,此時可以使用 Z-test。
> library(PASWR)
> height <-c(180, 162, 162, 165, 170, 172, 172, 172)
> z.test(sample_A, alternative="two.sided", mu=170, sigma.x=4, conf.level=0.95)One-sample z-Testdata: height
z = -0.44194, p-value = 0.6585
alternative hypothesis: true mean is not equal to 170
95 percent confidence interval:
166.6032 172.1468
sample estimates:
mean of x
169.375
若不知道標準差,且抽樣人數少於 30 人,則使用 T-test
> t.test(height, alternative="two.sided", mu=170, conf.level=0.95)One Sample t-testdata: height
t = -0.28902, df = 7, p-value = 0.7809
alternative hypothesis: true mean is not equal to 170
95 percent confidence interval:
164.2615 174.4885
sample estimates:
mean of x
169.375
Paired-Samples Test
用來看一組樣本在特定事件前後有無差異。假設你想知道班上籃球隊這經過特訓後,身高有無顯著差異,就需要用 Paired-Samples T-test。因樣本不獨立,要求嚴格配對,每個個人的訓練前身高和訓練後身高需要構成一對。
> height_before <-c(180, 162, 162, 165, 170, 172, 172, 172)
> height_after <-c(188, 165, 163, 167, 170, 177, 178, 179)
> t.test(height_before, height_after, "two.sided", paired=TRUE, conf.level=0.9)Paired t-testdata: height_before and height_after
t = -3.8644, df = 7, p-value = 0.006177
alternative hypothesis: true difference in means is not equal to 0
90 percent confidence interval:
-5.961075 -2.038925
sample estimates:
mean of the differences
-4
Independent Test
用來檢定兩組獨立樣本的平均值有無差異。例如,A 班籃球隊的身高,和 B班籃球隊的身高有無差異,則可以根據標準差已知與否,分別使用 Z-test & T-test。
> height_A <-c(180, 162, 162, 165, 170, 172, 172, 172)
> height_B <-c(188, 165, 163, 167, 170, 177, 178, 179)
> z.test(height_A, height_B, "two.sided", mu=0, sigma.x=4, sigma.y=4, conf.level=0.9)Two-sample z-Testdata: height_A and height_B
z = -2, p-value = 0.0455
alternative hypothesis: true difference in means is not equal to 0
90 percent confidence interval:
-7.2897073 -0.7102927
sample estimates:
mean of x mean of y
169.375 173.375> t.test(height_A, height_B, "two.sided", var.equal=TRUE, conf.level=0.9)Two Sample t-testdata: height_A and height_B
t = -1.0775, df = 14, p-value = 0.2995
alternative hypothesis: true difference in means is not equal to 0
90 percent confidence interval:
-10.53853 2.53853
sample estimates:
mean of x mean of y
169.375 173.375
結論
Z-test & T-test 是非常實用且重要的概念,也是眾多科技業愛用的 A/B Testing 的基礎,根據樣本數量和母體的變異數已知與否可以分為:
- One-Sample Z-test
- Independent Z-test
- One-Sample T-test
- Paired-samples T-test
- Independent T-test
💡 我是 Ryan,目前在新加坡讀商業分析碩士,歡迎 follow 我的 Medium,如果有任何問題都歡迎和我聯繫,同時謝謝你閱讀本篇文章,如果喜歡這篇文章,請幫我拍手,你的鼓勵是我很大的激勵!