插值法补齐缺失数据_一种挽救你缺失数据的好方法——多重补插
原標題:一種挽救你缺失數據的好方法——多重補插
缺失數據——研究中的絆腳石
在醫學研究中,我們經常會碰到缺失數據。無論是因為實驗設計的問題,或是檢測手段精度,又或是醫學實驗中的不可抗力因素。一旦數據沒有被記錄下來,就會產生數據缺失的情況。之所以缺失數據會成為我們研究的絆腳石,其原因在于缺失會產生數據信息的損失,而常規的分析方法與統計學均建基于無缺數據的基礎上,因此數據缺失處理是醫學研究中必須首先解決的問題。
缺失數據的處理是有一定難度的,其根源在于缺失的原因、數量比例與分布均會對我們的處理方法的選擇產生影響。缺失的類型已經有不少著作進行了詳細的研究,一般可分為完全隨機缺失(MCAR)、隨機缺失(MAR)與其它缺失(NMAR)。具體說明可以參考之前醫學方相關的文章。
一般而言,所有數據缺失的處理方法僅適合于MCAR與MAR的處理,而對于NMAR最好是能重新設計實驗或獲取數據;而且缺失值的數據處理方法僅適用于客觀數據的查漏補缺,對于主觀的數據補缺的準確性沒有保證。此外,缺失數據的類型與數量、分布也會影響我們處理方法的選擇。當數量較少時(如小于5%)我們可以考慮刪除或成對刪除的方式處理,好處是方便簡單,代價是損失了信息,對于重要的指標最好不使用此方法;而當缺失的數據較多時,就需要輪到我們今天的主角“數據補插”法大展身手了。數據補插可以分為以下幾類:均值/眾值補插、模型補插、多重補插等。幾種方法各有特點,今天我們就先談談“多重補插”及其使用方式。
1
什么是多重補插法?
多重插補(Multiple Imputation,MI)的是基于各種模型(如回歸、決策樹、貝葉斯估計等方法)。簡單而言:該方法認為缺失值是隨機的,它的值可以通過已觀測到的值進行預測與插值。
多重插補方法分為三個步驟:
(1)通過已知數值建立插值函數,估計出待插補的值,然后在數值上再加上不同的偏差,形成多組可選插補值,形成多套待評估的完整的數據集;
(2)對所產生的數據集進行統計分析;
(3)評價每個數據集的結果,根據模型的評分選擇最佳的補插值。由于在分析中引入多個模擬的數據集,因此被稱為“多重補插”。因此,多重補插威力巨大,可以滿足常見的缺失值處理的需要。下面就跟著我們一步一步實現這個技術。
2
數據的準備及預處理
本次分析使用R語言進行。缺失值處理一般位于數據清洗的前端,首先還是讀取數據與加載包。這次準備了一個數據集nhanes,該數據來源于文獻,屬于既有數值型數據缺失又有因子類型的缺失的情況。數據集包含四個變量,分別為年齡分組(age,沒有缺失),體重指數(bmi, Body mass index (kg/m2),有缺失),是否高血壓(hyp ,Hypertensive (1=no,2=yes),有缺失),總膽固醇(chl,Total serum cholesterol (mg/dL),有缺失)。在R語言中使用NA(缺失)代表缺失值,NaN(不是一個數)代表不可能值。另外,符號Inf和-Inf分別代表正無窮和負無窮。一般而言這三類均要分別進行處理才能進行下一步分析。缺失值的處理還包括缺失值的識別,缺失原因的分析與理解,缺失補插三步。本文僅著眼與第三步的實現,有機會我們再談談缺失值的完整處理過程。
然后是數據的預覽。
我們發現本數據集包括27個缺失數據,其它的暫時沒有發現。
通過VIM包的圖形命令,非常方便的展示缺失值的數量比例、分布與影響。圖中的紅色為缺失值。此數據集缺失的數據比例較高,而且出現三個指標同時缺失的情況,因此,不適宜使用刪除法處理。
3
數據補插我們一起做
當了解清楚數據缺失的情況后,我們可以開展數據補插的工作,請注意多重補插會與后面分析的過程緊密相連,請先設定好分析的目標。本數據集可產生兩個推測,(1)血總膽固醇會與年紀、bmi等因素相關,按典型的最小二乘法回歸(OLS)進行分析,同時,血壓高低是否情況似乎能通過其它指標相關,此假設按廣義回歸進行分析。而多重補插的具體分析過程如下:
mice命令是多重補插過程的核心,需要研究一下其參數。其中data、m、method、seed是比較重要的參數。data需要輸入帶NA的數據框,m代表生成的數據集數目,seed代表偽隨機數設定,方便重現操作。Method為指定補插的方法,mice補插支持20種以上的模型,還支持自定義模型,可謂十分人性化。下表列出醫學研究部分常用的補插方法,pmm是通過均值進行預測,cart是決策樹預測、rf采用隨機森林補缺(其原理可參考之前決策樹以及今后的相關文章)。
首先,我們對數據進行補插工作,生成一系列數據集。mice包的mice命令要求數據中的缺失值以NA表示,這一點請稍微注意一下。
然后,我們選定線性回歸與logistic回歸回歸進行分析,最終合并分析結果完成補插及分析過程。
n.fit1與n.fit2包含所有插補數據集的擬合結果,pool()函數將結果合并到一起。顯然,僅從分析來看的話,兩個模型各項均統計不顯著。為了大家熟練掌握,我們再引入一個空氣質量的數據集,請大家自行練習。
分析發現,各項指標相對于臭氧濃度(Ozone)而言是顯著的。
4
數據補插的對比
通過補插我們可以獲得完整的數據集,我們可以通過以下命令獲得任意一個補插后完整的數據。下面來看一些常用掉出補插數據的命令與用法。
我們也可以進一步對比補插前后的數據差別。圖中看到的是洋紅點(插補值)跟藍色點(觀測值)呈現出的形狀是接近的。表明插補的值的確是“近似于實際值”。
5
結 論
通過我們以上的分享,我們可以掌握多重補插的操作與基本步驟。為了挽救我們的實驗數據,靈活利用多重補插,可以將確實的數據補回,同時獲得基于多套補插數據的綜合分析,因此,掌握多重補插,缺失數據沒有怕。由于,缺失數據的補插是一個復雜的過程,假若要獲得理想的效果,最好能在源頭防止缺失,今后有機會,我們會繼續講講基于缺失值分析與補回的其它問題。
延伸閱讀
除了R語言的基礎操作外,醫學方面的應用案例與方法能讓我們進一步的掌握相關內容。我們尋找了一些多重補插應用及方法學的論文供各位參考。
https://www.bmj.com/content/338/bmj.b2393
這篇文章從方法學上討論了如何在流行病學研究中應用多重補插,以及對一些問題進行探討,是很好的概念、方法入門材料。
http://www.pnas.org/content/115/37/9204
http://www.pnas.org/content/112/39/12069
以上兩文均在相關研究中應用多重補插完成實際數據的補完與分析,有一定借鑒作用,尤其第二篇文章應用了lattice繪圖工具對數據進行分析。
最后這篇文章,在醫學上應用補插技術完成血壓缺失值,并與生存分析相結合。
征 稿 啟 事
「醫學方」現正式向粉絲們公開征稿!內容須原創首發,與科研相關,一經采用,會奉上豐厚稿酬(300-2000元),詳情請戳。
“醫學方”始終致力于服務“醫學人”,將最前沿、最有價值的臨床、科研原創文章推送給各位臨床醫師、科研人員。返回搜狐,查看更多
責任編輯:
總結
以上是生活随笔為你收集整理的插值法补齐缺失数据_一种挽救你缺失数据的好方法——多重补插的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 向量空间 vector space
- 下一篇: 城市公交查询系统android