卡方檢驗作為一種非常著名的非參數檢驗方法(不受總體分布因素的限制),在工程試驗、臨床試驗、社會調查等領域被廣泛應用。但是也正是因為使用的便捷性,造成時常被誤用。本文參閱相關的文獻,對卡方檢驗的適用性進行粗淺的論述。
首先,從技術角度來看,(1)卡方檢驗的樣本涉及的因素(也就是變量)需要兩個(含)以上,而且是定性變量(分類變量,定類變量),其值可以是數字,也可以符號,但是即使是數字也不具備數量的含義,只是用于區分。比如性別變量,它的值可以是男或女,也可以是0或1,A或B;(2)其樣本數據是由多個因素在不同水平(取值)情況下共同決定的數據,直觀上表現為列聯表(交互分類表,交叉表),形如下表。
北京 | 上海 | |
滿意 | 600 | 480 |
一般 | 120 | 150 |
不滿意 | 80 | 70 |
上表涉及的因素(變量)有兩個,分別是地區和滿意度,其值分別是[北京,上海]和[滿意,一般,不滿意]。而樣本是由兩個變量的不同取值作用下的統計數據,可以是總和,也可以是平均數,或者其他統計量。
其次,從應用的角度來看,我們的目的是要進行無差異推斷,或者不相關推斷(無差異等價于不相關)。比如上述問題可以回答北京、上海兩地對該產品的滿意度是否無差異,或者說對該產品的滿意度是否與上述地區不相關。通過即調用卡方檢驗函數,獲得p=0.00472,在顯著性水平0.05下,兩地滿意度無差異(或與地區不相關)的假設被拒絕。于是我們可以認為“兩地對某產品的滿意度是有差異的”或“某產品的滿意度與地區有相關性”。代碼如下:
#chi2_contingency是卡方檢驗函數
from scipy.stats import chi2_contingency
import numpy as np
#定義樣本數據
X= np.array([[600,120,80],[480,150,70]])
chi2_contingency(X)
結果:(10.714285714285714, 0.004714356473549276, 2, array([[576., 144., 80.],[504., 126., 70.]]))。這些數值分別為卡方值、p值、自由度和理論值。
還有一種特殊情況,就是樣本數據只有一組,也就是說表面上看因素只有一個,這種情況實際是進行“試驗值(實際值,經驗值)與理論值的無差異”推斷。如下例:
進行拋硬幣試驗,進行七輪,每輪拋20次,數據如下表所示。是否可以認為硬幣正面與反面(只有這兩種情況)朝上的概率相同。
硬幣正面向上的頻數 第一輪 第二輪 第三輪 第四輪 第五輪 第六輪 第七輪 8 12 10 7 9 8 9
乍一看,此樣本只有一組數據,而結合要解答的問題,實際上還有一組數據,即理論值。該理論值是等概率條件下硬幣正面向上的次數,也就是每輪都是10。于是樣本就變成了
硬幣正面向上的頻數 第一輪 第二輪 第三輪 第四輪 第五輪 第六輪 第七輪 8 12 10 7 9 8 9 10 10 10 10 10 10 10
通過將上述樣本數據帶入卡方檢驗函數,p=0.98928。即在顯著性水平0.05下,我們接受“硬幣正面與反面朝上的概率相同”這一假設。
再來看一個例子,某餐廳對一年內每周內每天的營業額進行統計(均值),看看營業情況是否存在時間方面的差異,數據如下。
一周的營業額統計(萬元)
周一 周二 周三 周四 周五 周六 周日 9 11 6 7 8 15 10
該問題同樣是一種“試驗值(實際值,經驗值)與理論值的無差異”推斷問題。只不過理論值的與上例不同。如果我們認為營業額與時間無關,也就意味的每天營業額是相同的,于是理論值將由每天營業額的均值來體現。即樣本數據為:
一周的營業額統計(萬元)
周一 周二 周三 周四 周五 周六 周日 9 11 6 7 8 15 10 9.42 9.42 9.42 9.42 9.42 9.42 9.42
通過將上述樣本數據帶入卡方檢驗函數,p=0.85073。即在顯著性水平0.05下,我們接受“營業額不存在時間方面的差異”這一假設。盡管從表面來看,該結果不太容易被接受,似乎周末營業情況更好,但是放眼總體(更長的時間范圍),并不能支持直觀感受。
***********************接下來劃重點,舉一個非常有代表性的誤用卡方檢驗的例子***************
某調查機構調查了不同收入水平話費支出的情況,試圖分析收入水平是否與話費支出水平相關。數據如下
收入 3000
4000 5000 6000 7000 8000 10000 話費 90 100 150 180 200 300 400
然后對兩組數據進行了卡方檢驗,p=0.000006。結論:拒絕兩者不相關的假設。也就是說收入水平與話費支出水平是相關的。從結果來看是沒有問題的,兩組數據確實是顯著正相關的,其皮爾遜相關系數corr=0.9758。但是從樣本數據本身來看,不符合使用卡方檢驗的適用條件。因為:
(1)收入和話費兩個因素不是定性變量,而是定量變量。
(2)樣本值也不是兩個因素共同確定的數值,而是歸屬于每個因素本身。
對于此類問題使用相關系數才是合理的。
如果上述調查結果改為不同收入水平和話費支出水平下的用戶數量,則可以應用卡方檢驗。比如數據轉換為
3000 4000 5000 6000 7000 8000 10000 <=90 85 30 24 7 18 12 3 90-100 7 100 11 29 12 9 5 100-150 15 20 75 14 10 6 8 150-200 5 4 5 90 19 16 1 200-250 6 9 8 3 50 11 3 250-300 3 16 15 14 15 80 6 >300 2 9 4 19 13 20 90
使用卡方檢驗后<0.05,于是我們可以拒絕收入水平與話費支出水平不相關的假設,也就是說收入水平會影響(或決定)話費支出水平。