跳到主要內容跳到頁尾

卡方檢定怎麼做:CHISQ.TEST、CHISQ.DIST.RT 與臨界值

5 分鐘閱讀Lv.3 中級摘要與日期

問卷交叉表看起來年齡層和口味偏好有關,是真的還是巧合?整理 CHISQ.TEST、CHISQ.DIST、CHISQ.DIST.RT、CHISQ.INV、CHISQ.INV.RT 與 CHIDIST、CHIINV、CHITEST 等舊名共 8 個函式,附手算的卡方值與 p 值。

發布 更新

文章目錄

做了一份問卷,200 位客人,分成三個年齡層,問他們比較喜歡奶茶還是果茶。交叉表出來,20 多歲偏果茶、30 多歲偏奶茶,看起來有關係,但到底是真的有關,還是剛好這 200 人抽出來長這樣?今天來看專門回答這個問題的卡方檢定:CHISQ.TEST,以及它背後的 CHISQ.DIST、CHISQ.INV 一整組。

坦白說,我工作上絕大多數時候只用 CHISQ.TEST,其他函式是想弄清楚它怎麼算的時候才翻出來。這篇的重點也是這個:先用 CHISQ.TEST 得到答案,再用其他函式拆開來看。

範例資料

A 欄是年齡層,B、C 欄是各年齡層選奶茶與果茶的人數(觀察值):

年齡層奶茶果茶
20 多歲2238
30 多歲3624
40 歲以上4238

貼到 A1:C4。卡方檢定的邏輯是:如果年齡和口味完全沒關係,每格「應該」有多少人?這叫預期值,算法是 該列總數 × 該欄總數 ÷ 全部人數。E2 這樣寫,往右填到 F2、再往下填到 F4:

Google 試算表公式
fx

E2:預期值(E2:F4 都用這條,往右往下填)

=SUM($B2:$C2)*SUM(B$2:B$4)/SUM($B$2:$C$4)

奶茶總共 100 人、果茶 100 人,各年齡層人數是 60、60、80,所以預期值是:

年齡層預期奶茶預期果茶
20 多歲3030
30 多歲3030
40 歲以上4040

然後把每一格的差距平方,除以預期值,加起來,就是卡方統計量。J2 這樣寫:

Google 試算表公式
fx

J2:卡方統計量

=SUMPRODUCT((B2:C4-E2:F4)^2/E2:F4)

手算:(22−30)²÷30 = 2.1333、(38−30)²÷30 = 2.1333、(36−30)²÷30 = 1.2、(24−30)²÷30 = 1.2、(42−40)²÷40 = 0.1、(38−40)²÷40 = 0.1,加起來 6.8667。自由度是(列數 − 1)×(欄數 − 1)= 2 × 1 = 2,放在 J3:

Google 試算表公式
fx

J3:自由度

=(ROWS(B2:C4)-1)*(COLUMNS(B2:C4)-1)

下面所有函式都是在處理這個 6.8667 和自由度 2。

怎麼選

想做的事用這個備註
直接比觀察與預期,要 p 值CHISQ.TEST不用先算統計量
已有卡方值,要 p 值CHISQ.DIST.RT檢定看右尾
要左尾或畫曲線CHISQ.DIST第三個參數選 TRUE 或 FALSE
給顯著水準,找門檻CHISQ.INV.RT卡方值超過就顯著
給左尾機率,反推CHISQ.INV比較少用

舊名 CHITEST、CHIDIST、CHIINV 各有一節。

CHISQ.TEST

比較觀察值與預期值,直接回傳 p 值。

語法:

兩個範圍的大小要一樣。預期值要自己算好放在另一個範圍,函式不會幫你算。

Google 試算表公式
fx

年齡層和口味偏好有沒有關係

=CHISQ.TEST(B2:C4, E2:F4)

結果是 0.0323。p 值比常用的門檻 0.05 小,所以在 5% 的標準下,年齡層和口味偏好看起來不是毫無關係,這 200 人的差異不太像單純的巧合。但 0.0323 也沒有小到很有把握,樣本再多一些會比較穩。

要注意兩點:

  • 觀察值要是次數(人數),不能是百分比。
  • 預期值太小的時候不準,一般的經驗是每格預期值至少要 5 左右。這份資料最小是 30,沒問題。

這個檢定只說「有關」,不說「怎麼有關」。要知道是哪個年齡層貢獻最大,看每格 (觀察 − 預期)² ÷ 預期:20 多歲兩格各 2.1333、30 多歲各 1.2、40 歲以上各 0.1,所以主要的差異來自 20 多歲和 30 多歲,40 歲以上跟預期幾乎一樣。

CHITEST

CHISQ.TEST 的舊名,參數一樣。

語法:

Google 試算表公式
fx

舊名寫法

=CHITEST(B2:C4, E2:F4)

結果同樣是 0.0323。

只有一列或一欄資料的時候,也可以用這個函式做「適合度」檢定:例如一週七天的來客數是不是平均分布。把 7 個觀察值放一欄、7 個預期值(總數 ÷ 7)放另一欄就能用。這時自由度是 n − 1,也就是 7 − 1 = 6,和 Excel 的算法一致;想對照的話,可以用 CHISQ.DIST.RT(統計量, 6) 算一次,結果會和 CHISQ.TEST 相同。

CHISQ.DIST.RT

卡方分布的右尾機率:卡方值大於 x 的面積。檢定看的就是這一邊。

語法:

Google 試算表公式
fx

用統計量與自由度算 p 值

=CHISQ.DIST.RT(J2, J3)

結果是 0.0323,跟 CHISQ.TEST 一樣。這就是 CHISQ.TEST 在做的事:先算統計量,再查右尾。

為什麼是右尾?卡方值是差距平方加總,永遠不會是負的,越大代表觀察與預期差越多,所以「差距這麼大算不算稀奇」只看右邊。

CHIDIST

CHISQ.DIST.RT 的舊名,參數一樣。

語法:

Google 試算表公式
fx

舊名寫法

=CHIDIST(J2, J3)

結果是 0.0323。

CHISQ.DIST

左尾累積機率,或曲線的高度。

語法:

  • 累積:TRUE 是卡方值小於等於 x 的機率,FALSE 是機率密度。
Google 試算表公式
fx

左尾累積機率

=CHISQ.DIST(J2, J3, TRUE)

結果是 0.9677,加上右尾 0.0323 剛好是 1。

密度的例子:自由度 4、x = 3, 是 0.1673,只是曲線上的高度,不是機率; 是 0.4422。

CHISQ.INV.RT

給右尾機率,反推卡方臨界值。

語法:

Google 試算表公式
fx

顯著水準 5%、自由度 2 的門檻

=CHISQ.INV.RT(0.05, 2)

結果是 5.9915,跟課本卡方表自由度 2、0.05 那格一樣。意思是:卡方值超過 5.9915,p 值就會小於 0.05。這份資料的 6.8667 超過了,結論和 p = 0.0323 一致。

要更嚴格的 1% 標準, 是 9.2103,6.8667 沒超過,所以在 1% 的標準下不顯著。同一份資料,用的標準不同,結論就不一樣,這也是為什麼我習慣把 p 值直接寫出來,不只寫「顯著」兩個字。

CHIINV

CHISQ.INV.RT 的舊名,參數一樣。

語法:

Google 試算表公式
fx

舊名寫法

=CHIINV(0.05, 2)

結果是 5.9915。

CHISQ.INV

給左尾機率,反推卡方值。

語法:

Google 試算表公式
fx

左尾 95% 對應的卡方值

=CHISQ.INV(0.95, 2)

結果是 5.9915,因為左尾 95% 和右尾 5% 是同一個位置,所以 CHISQ.INV(0.95, 2) 和 CHISQ.INV.RT(0.05, 2) 的答案相同。

這個函式用的機會比較少。需要的時候記得:INV.RT 的機率是「超過的面積」,INV 的機率是「不到的面積」,兩個機率加起來是 1。

回到問卷

p 值小只代表「應該不是巧合」,不代表年齡層「造成」口味不同,也沒說差距有多大。這份問卷的下一步我會做的是回去看那幾格的差距,想想 20 多歲偏果茶有沒有別的解釋(例如那批人多半在假日來)。要檢定的是兩組的離散程度,換成 F 檢定;離散的計次機率在 二項與卜瓦松。

分享:
#卡方檢定#交叉表#問卷分析#p 值
喜特先生 Mr. Sheet

喜特先生 Mr. Sheet

數據分析師/商業分析師

八年工作經驗,跨不同業界解決數據需求。做過的案例都整理在作品集。

接下來可以

相關文章

查看所有文章

留言討論

共 0 則留言

訂閱電子報,新文章上線就通知你

免費,隨時可取消。

送出即表示同意服務條款與隱私權政策。