SPSS操作:搞定病例與對照的1:1匹配
說起病例對照研究(case control study),相信各位小夥伴並不陌生。簡單來說,就是把患有某種疾病的一組病人作為病例組(case),不患該疾病但是可比的另一組個體作為對照組(control),通過比較兩組中我們關心的暴露因素的比例,從而推斷暴露因素和疾病之間的關聯。
講到這裡,就不得不提到確保病例組和對照組可比性的絕招——匹配!一般來說匹配包括頻數匹配和個體匹配,前者只要保證匹配的因素在兩組分佈比例相同,比如說病例組男、女各半,對照組也應該一樣;後者要求病例組每一個研究對象,在對照組中也有一個匹配因素相近或一致的研究對象與之匹配,比如說病例組有一個23歲男性,對照組中應給他匹配一個23歲左右的男性。
本期和大家一起學習如何使用SPSS搞定病例與對照的1:1匹配。
需要注意的是,SPSS22及以上版本才提供病例對照匹配(Case Control Matching)的功能,其他的版本要想使用這個功能,必須安裝相應插件才能實現。本次使用SPSS22為大家演示。
一、問題與數據
目前對於吸煙與高血壓之間關係仍存在爭議,擬採用巢氏病例對照設計(高血壓組與正常組)探討吸煙與高血壓之間的關係,其中對照組按照年齡±2歲,性別相同與病例組進行匹配。已有的隊列數據在匹配前是這個樣子(見表1),可以看到兩組在匹配之前的性別分佈和年齡均有明顯差異。下面一起看看SPSS如何搞定匹配!
表1. 兩組基線情況比較(匹配前)
二、 SPSS分析方法
1. 數據錄入
(1) 變數視圖
(2) 數據視圖
2. 病例對照匹配
選擇Data→Case Control Matching,就進入病例對照匹配的主對話框。
將需要匹配的變數(Age, Sex)放入Variables to Match on中;
Match Tolerance用來設置匹配條件,一般分類變數要求相同,設置為「0」,對於連續變數,可根據具體情況限定一個範圍 ,比如這裡我們限定年齡±2歲,設置為「2」,但是需要注意,設置匹配條件必須與匹配變數放置順序相一致,並且用「空格」隔開;
Group Indicator指定分組,一般病例組賦值為「1」,對照組賦值為「0」;
Case ID確定觀測對象的ID,一般為病例號,調查編碼等;
Names for Match ID Variables設定一個變數,用來明確對照組中匹配成功的ID;
Names for Matchgroup Variables 設定一個變數,用來明確病例組中相同條件的觀測對象,比如有兩個23歲男性。
3. Options設置
Variable for Number of Eligible Cases設定一個變數,用來明確病例組中某一個觀測對象,在對照組中有多少個觀測對象滿足與其匹配的條件,比如說病例組有一個23歲男性,對照組可能有一個24歲男性,一個22歲男性。
Sampling默認為不放回抽樣。
Give priority to exact matches 優先考慮精確匹配,也就說病例組有一個23歲男性,對照組也應該找到一個23歲男性跟他匹配。
Maximize execution performance 執行最優化操作。
Randomize case order when drawing matches 這裡需要大家著重注意一下,整個匹配過程中,如果對照組有多個滿足匹配條件的觀測對象,那麼SPSS會默認隨機將其與病例組觀測對象匹配。問題來了,因為SPSS默認每次操作給對照組的隨機數字不同,所以如果不特殊設定,每次實際匹配成功的對子是不一樣的,也就說這一次對照組A匹配給病例組B,下一次就可能匹配給病例組C。所以需要勾選這裡,並且在Random Number Seed設定一個隨機數種子,確保匹配過程可以重複。
4. Additional Output設置
這裡把匹配成功的對照組中所有觀測對象單獨輸出一個數據集Control。這裡強烈建議大家勾選並設定,有什麼用呢,下面接著聊~
三、匹配結果
1. 匹配過程
如表2所示,精確匹配28對,模糊匹配178對,共計匹配成功206對。
表2. 匹配統計
表3主要是匹配過程。首先是精確匹配(年齡性別均一致),匹配23170次,不到1%匹配成功;其次在精確匹配成功的前提下,進行Age的模糊匹配(年齡±2歲),匹配23142次,大約6.5%匹配成功;最後在上述兩次匹配成功的前提下,進行Sex的模糊匹配(這裡指性別相同),匹配1501次,大約12%匹配成功。
表3. 匹配容許誤差
2. 匹配後資料庫
原始資料庫中出現之前設定的幾個新變數:
E_case表示對照組中有幾個符合匹配條件的觀測對象(如圖,病例組ID=25,有4個對照組觀測對象符合匹配條件);Match_G與E_case不同,Match_G數字相同,代表病例組匹配條件一致,比如有若干23歲男性觀測對象待匹配;match_id表示對照組匹配成功的ID。
下圖輸出僅包含匹配成功的對照組資料庫,Match_G與原始資料庫一致,match_id表示匹配成功、相對應的病例組ID。
3. 資料庫合併
到這裡,有的小夥伴要問了,兩個庫以後怎麼做數據分析呀?重點來了,資料庫的合併!
(1) 生成病例組數據集:在原始資料庫中, 選擇Data→Select Cases→If condition is satisfied:設定match_id≥1,篩選出匹配成功的病例組→Output中輸出新的數據集Case。
(2) 對照組數據集match_id替換:將Control數據集中變數match_id替換成ID編號→Save(3) 病例組與對照組數據集合併:在新生成Case資料庫SPSS界面下,選擇Data→Merge Files→Add Cases→選擇Control組→Continue→OK
(4) 排序&保存:選擇Data→Sort cases→按照匹配標識match_id排序→OK→Save(千萬記得保存勞動成果!!!)
大功告成,不過還要看看匹配效果。見表4,高血壓組全部匹配成功,且性別和年齡在兩組間均衡可比。
表4. 兩組基線情況比較(匹配後)
問題又來了,匹配是成功了,怎麼做數據分析呢?推薦大家去看:SPSS實例教程 | 1:m匹配病例對照Logistic回歸
四、總結和拓展
有的小夥伴可能要問了,你這是1:1的病例對照匹配,那1:M呢?這可就有點難為SPSS大兄弟了!目前SPSS中Case Control Matching只提供1:1的病例對照匹配,不過不用著急,後面我們會結合SAS給大家演示1:M的病例對照匹配,敬請期待~~~
(更多內容可關注「醫咖會」微信公眾號:傳播醫學知識和研究進展,探討臨牀研究方法學。)
推薦閱讀: