時間序列數據如何插補缺失值?


 當然第一步仍然是判斷是Missing at Random 還是Missing Not at Random,一般前者刪除,后者插補。但是插補不一定能帶來更好結果,要先自己根據缺失比例,和原因判斷。

1、就近插補:前推法LOCF, 替換為缺失之前的最后一次觀測值,與后推法NOCB, 使用缺失值后面的觀測值進行填補。這個是時序當中最基本的方法,當然還有用Baseline Observaton, 或者啥Worst observation,目前生科實驗好像有用。

2、線性插值:這個也是歷史悠久方法, 假定時序之間變動有很強的趨勢。早期天文學缺失數據都用這個方法。

3、季節性+線性插值: 經濟數據或者季節波動數據,采用這樣的方法。同時具備季節性和總體趨勢性,很多季節、氣候變動相關數據都可以。

4、均值中位數眾數,沒有考慮時序因素。但是假如你認為時序數據里面基本沒有很強趨勢,也是可以的。當然里面也還有 比如Conditional Mean這樣改進方法。

5、多值插補/機器學習: Multiple Imputation , Expectation-Maximization , Nearest Neighbor ,和 Hot Deck 方法,這些方法都依賴於缺失數據不同屬性間關系,尋找最類似樣本。如果使用R的話,mice, VIM, AMELIA等都可以用來插補,但是這個必須是多變量時序。如果單變量時序,無法找不同屬性關聯,用ImputeTS, 然后zoo, 或者forecast。

6、當然還要區別分類還是數值,如果類別變量,NA直接可以划分新分類。

除了這些統計方法, 我想每個領域里面缺失值都肯定還要借鑒專業知識來判斷。比如以國家軍費缺失數據為例,如果你知道因為戰亂帶來的缺失。那么戰時數據比和平年代數據就更合適,很簡單就近填補。

然后插補不同學科可能都有默認或者建議的方法,比如社會學或者人口學無應答問卷數據,大量采用hotdeck,就是假定類似用戶類似行為,US Census Bureau也在用。

氣候數據,看到有的文章在研究氣候變化時采用Expectation-Maximization algorithm,R里面mtsdi見這篇文章 Imputation of missing data in time series for air pollutants。當然python的話里面也有很多。

最后,插補數據方法上如果你對數據生成機制很熟悉的情況下,可能一些簡單方法就可以。對於本身純粹依賴算法,不能給出解釋機制的插補有疑慮。為什么說要增加專業知識判斷,因為缺失本身表明這些樣本信息不足, 專業知識判斷就相當於額外增補信息。

 

鏈接:

https://www.zhihu.com/question/355799116/answer/1574303138

 

 

 

https://github.com/xinychen/transdim

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM