2013-07-10 113 views
0

我想根據變量的其他值的分佈來推測數據集中的缺失值。缺失值的插補

想象的值= 1,20%= 2和50%= 3是30%,實際上我想做到以下幾點:

impute(var,1) # for 30 % of the NA occurrences # 
impute(var,2) # for 20 % of the NA occurrences # 
impute(var,3) # for 50 % of the NA occurrences # 

任何人可以幫助?

約翰

回答

2

如果我理解正確的話,你想:

var[is.na(var)] <- sample(1:3, sum(is.na(var)), replace=TRUE, prob=c(0.3,0.2,0.5)) 
+0

這將返回值2,1,2,2,1,2,2,1,2,2和以下警告:在var [is.na(var)] < - sample(1:3,replace = TRUE,prob = c(0.3,: 要替換的項目數不是替換長度的倍數 – user2568648

+0

@ user2568648請參閱編輯 – James

+0

感謝James,這仍然看起來不能正常運行。 (1)= 0.4,p(2)= 0.18和p(3)= 0.42的概率分別爲20 x 1,9 x 2和21 x 3,可能運行足夠多的重複,概率將收斂到期望的水平。 – user2568648

2

我想基於變量的其他值的分佈的數據集,以填補缺失值。

我很高興與Tibshirany包pamr包。它基於缺失數據點的k個最近鄰居的估計。只需撥打:

imputed.matrix <- pamr.knnimpute(list(x==matrix.with.missing.data))[['x']] 

通常工作正常。

請注意,pamr.knnimpute是非確定性的;雖然所有估算對的典型相關性> 0.9。