如何應對缺失值帶來的分佈變化?探索填充缺失值的最佳插補演算法

deephub發表於2024-06-10

本文將探討了缺失值插補的不同方法,並比較了它們在復原資料真實分佈方面的效果,處理插補是一個不確定性的問題,尤其是在樣本量較小或資料複雜性高時的挑戰,應選擇能夠適應資料分佈變化並準確插補缺失值的方法。

我們假設存在一個潛在的分佈P,從中得出觀察值X。此外,還繪製了一個與X相同維數的0/1向量,我們稱這個向量為M,實際觀測到的資料向量X被M掩碼為X。我們觀測到聯合向量(X,M)的n個獨立同分布(i.i.d)副本。如果我們把它寫成一個資料矩陣,它可能看起來像這樣:

較小的x,m表示“觀察到的”,而較大的值則表示隨機數量。大家討論的缺失機制就是對(X*,M)的關係或聯合分佈的假設:

完全隨機缺失(MCAR):一個值丟失的機率就像拋硬幣一樣,與資料集中的任何變數無關。缺失值只是一件麻煩事。你可以忽略它們,只關注資料集中完全觀察到的部分,這樣就不會有偏差。在數學中,對於所有m和x:

隨機缺失(MAR):缺失的機率現在可以依賴於資料集中觀察到的變數。一個典型的例子是兩個變數,比如收入和年齡,其中年齡總是被觀察到,但收入可能會因為年齡的某些值而丟失。這可能聽起來很合理,但這裡可能會變得複雜。在數學中,對於所有m和x:

非隨機缺失(MNAR):這裡一切皆有可能,我們不能籠統地概括。但是最終我們需要學習給定一個模式m '中觀測值的缺失值的條件分佈,以便在另一個模式m中推算。

實現這一點的著名的方法稱為鏈式方程多重插補(Multiple Imputation by Chained Equations, MICE):首先使用簡單的插補方法填充值,例如均值插補。然後對於每一次迭代t,對每一個變數j,根據所有其他已插補的變數進行迴歸分析(這些變數已被插補)。然後將這些變數的值填入已學習的插補器中,用於所有未觀察到的X_j。在R語言中,可以方便地使用mice包來實現。我這種方法在實際應用中效果非常好,MICE中重現某些例項的底層分佈的能力非常驚人。我們下面會用一個非常簡單的例子(只有一個變數缺失,因此我們可以手動編碼),模擬MICE通常會迭代執行的過程,以更好地瞭解他的工作原理。

https://avoid.overfit.cn/post/9f66c5f8cd204ed685af0744b935ddd5

相關文章