胡純嚴 ,胡良平 ,2*
(1.軍事科學院研究生院,北京 100850;2.世界中醫藥學會聯合會臨床科研統計學專業委員會,北京 100029*通信作者:胡良平,E-mail:lphu927@163.com)
在整理臨床資料時,若結果變量為定性變量,為了使資料看起來簡潔、直觀、明了,人們常采取一種特定的表達形式,即“列聯表”。若原因變量只有1個,就可以將其整理成“二維列聯表資料”;若原因變量有2個,就可以將其整理成“三維列聯表資料”;依此類推,若原因變量有k-1個時,就可以將其整理成“k維列聯表資料”。一般來說,當k>3時,人們很少采用列聯表形式呈現資料,而借用表達結果變量為定量變量時的形式,其常被稱為“數據庫”格式,即每行代表一個個體的全部信息,而每列代表一個變量(包括一般變量、原因變量和結果變量)及其全部取值。本文著重介紹除四格表資料之外的其他三種雙向無序二維列聯表資料的形式、適于進行χ2檢驗的前提條件、基于SAS和R軟件實現統計分析的方法。
所謂“二維列聯表資料”,就是將兩個變量(通常都是定性的)分別放置在表格的“橫向”與“縱向”(稱為兩個“維度”)上,設它們分別有“R”個與“C”個水平,它們的全部水平組合數就有“R×C”個,于是,就很自然地將表格(可將其視為一個“二維平面”)劃分成“R×C”個“網格”,根據每個個體同時在兩個變量上的取值情況,就可以將其歸類到某一個“網格”之中,數出各“網格”內的個體數(稱其為“頻數”),此時的資料就被稱為“二維列聯表資料”。由此可知,“四格表資料”就是“二維列聯表資料”的特例。
設危險因素A有R個水平,結果變量B有C個不同取值,則雙向無序二維列聯表資料(常簡稱為R×C表資料)的表達模式見表1。

表1 雙向無序R×C表資料的表達模式
在表 1中,當R=2、C>2,就簡稱為“2×C表資料”;當R>2、C=2,就簡稱為“R×2表資料”;所以,它們都是“R×C表資料”的特例。
1.3.1 雙向無序R×2表資料的實例
【例1】文獻[1]中有一個雙向無序R×2表資料,見表2。

表2 影響青少年焦慮癥狀的一個可疑因素的調查結果
1.3.2 雙向無序2×C表資料的實例
【例2】文獻[2]中有一個雙向無序2×C表資料,見表3。

表3 患者與家屬對疾病的主要知曉途徑調查結果
1.3.3 雙向無序R×C表資料的實例
【例3】文獻[3]中有一個雙向無序R×C表資料(說明:不考慮“時間”的有序性),見表4。

表4 基層精防醫護人員K6評定結果
對于上述呈現的三種雙向無序二維列聯表資料而言,一般來說,其分析目的是相同的,即檢驗“兩屬性變量之間是否獨立”。與此分析目的對應的統計分析方法為“χ2檢驗”(注意:選用此方法時,資料需滿足特定的前提條件,見下文)和“Fisher’s精確檢驗”。
2.1.1 檢驗假設
H0:兩屬性變量之間互相獨立;
H1:兩屬性變量之間存在關聯性。
設置顯著性水平為:α=0.05。
2.1.2 檢驗統計量
Pearson’sχ2檢驗[4]的檢驗統計量見下式:

在上式中,Oij、Tij分別代表第(i,j)網格上的觀察頻數與理論頻數;基于概率論中條件概率的計算原理,理論頻數Tij可按下式計算:

在式(1)中,為服從自由度為df=(R-1)(C-1)的χ2分布。
若基于式(1)進行計算,首先需要計算各網格上的“理論頻數”,顯然,利用手工計算是極不方便的。事實上,將式(2)代入式(1)后經過變形,可以推導出不依賴“理論頻數”的計算公式,見式(3):

2.1.3 前提條件
R×C表資料χ2檢驗的前提條件是理論頻數不宜太小,如果太小則有可能產生偏性。關于理論頻數小的“界限”說法不一,例如,Cochran將理論頻數太小的界定為:有1/5的格子中理論頻數小于5,或至少有一個格子中理論頻數小于1;Roscoe和Byars認為:若當設定α=0.05時,平均理論頻數[即N/(R×C)]小于6,屬于理論頻數太小;若當設定α=0.01時,平均理論頻數小于10,屬于理論頻數太小[5]。
如果理論頻數太小,可采取以下方法進行處理:①增大樣本含量,以達到增大理論頻數的目的,此屬首選方法;②刪除理論頻數太小的格子所對應的行或列,但此方法會不可避免地損失信息及樣本的隨機性;③合并相鄰的行或列,此法僅當行變量或列變量是有確定順序的情形才可以。
【說明】當可選用χ2檢驗時,也可選用Fisher’s精確檢驗;一般來說,當列聯表中理論頻數小于5的格子數超過了總格子數的1/5時,應盡可能選用Fisher’s精確檢驗(因篇幅所限,此法的計算原理和公式從略)。
2.2.1 分析例1資料
【例4】沿用例1的資料,試檢驗兩屬性變量之間是否存在獨立性。
【分析與解答】回答兩屬性變量之間是否存在獨立性的統計分析方法可選用χ2檢驗,設所需要的SAS程序如下[6]:


【說明】若希望采用Fisher’s精確檢驗,需在前述的FREQ過程步中的“TABLES語句”之后增加一句,即“exact fisher;”。
【SAS輸出結果及解釋】

【專業結論】第一次了解此次疫情的途徑不同,發生焦慮的比例是不同的,具體地說,發生焦慮比例從高到低依次為“雜志”>“社交平臺”>“親朋好友或老師”>“社交軟件”>“網站”>“電視”。值得一提的是:“雜志”所對應的樣本含量為2,樣本過小,抽樣誤差很大,應將該行數據刪除重新計算。
2.2.2 分析例2資料
【例5】沿用例2的資料,試檢驗兩屬性變量之間是否存在獨立性。
【分析與解答】回答兩屬性變量之間是否存在獨立性的統計分析方法可選用χ2檢驗,設所需要的SAS程序如下:

【說明】因篇幅所限,用SAS軟件分析例3數據從略,讀者可借助前面的SAS程序自己去完成,但需要修改原始數據的“行數”與“列數”(位于SAS程序中兩個“DO語句”)。
【例6】沿用例3的資料,試檢驗兩屬性變量之間是否存在獨立性。
【分析與解答】回答兩屬性變量之間是否存在獨立性的統計分析方法可選用χ2檢驗,設所需要的R程序如下[7-8]:
遺憾的是:R軟件給出了“警告信息”,表明此資料不符合進行χ2檢驗的前提條件(具體地說,資料中小于5的理論頻數的個數超過了總格子數的1/5),故χ2近似算法給出的結果可能不準確。
將上面R程序中的最后一行換成下面的語句,就可對此資料進行Fisher’s精確檢驗:

以上輸出內容表明:經過2000次重復模擬計算,得到P=0.0004998,說明該列聯表資料中兩個屬性變量之間不獨立,結論同上,此處不再贅述。
本文所介紹的三種雙向無序列聯表資料的檢驗假設是相同的,具體內容見“第2.1.1節”;當檢驗結果為拒絕“H0”、接受“H1”時,其統計結論也是相同的,即“表中兩屬性變量之間不獨立”,更確切地表述為:“各行或各列上的頻數分布規律是不同的”。在實踐中,人們可能會提出更具體的要求,例如,究竟哪些行或列上的頻數分布規律是不同的、哪些行或列上的頻數分布規律是相同的?對這個問題的回答涉及兩方面的內容,其一,列聯表資料的多重比較問題[9];其二,χ2值的非精確分割與精確分割問題[10-11]。因篇幅所限,此處從略。
若用SAS軟件對本文中例3資料進行“Fisher’s精確檢驗”,計算的時間可能需要數個小時;但采用R軟件進行計算(見本文例6),大約只需要2秒鐘。之所以會產生如此大差距的根本原因是兩種統計軟件所采用的計算方法不同,前者是基于超幾何分布原理推算出來的計算方法;而后者采用的是蒙特卡羅模擬計算方法。
本文呈現了三種雙向無序二維列聯表資料的實例,介紹了基于Pearson’s χ2檢驗的計算原理和采用SAS與R軟件實現獨立性檢驗的具體方法和結果解釋。最后,提出了兩個與“χ2檢驗”有關且有待進一步討論的問題。