如何使用R的multinom来估算缺失值

时间:2013-01-10 02:40:06

标签: r

假设我的数据框DF有两个列$A$B。始终存在$A。当值缺失时,$B有时会编码为NaN。我想预测$B.predicted$B的缺失值,并创建一个新列$B.complete$B.complete[i] $B.predicted如果$B[i]$B[i] NaN,否则为DF$B.factor <- factor(DF$B) model.results <- multinom(formula=B.factor ~ A, data=DF[!is.na(DF$B),]) B.predicted <- predict(model.result, newdata=DF, type="class")

我使用multinom,它需要一个因子作为因变量,使用以下方法来预测我有完整观察的B:

B.predicted

变量DF$B是一个因素。

我的DF$B列不是一个因素。

Mu问题是我如何合并B.predictedB.complete来创建B.predicted?特别是,由于DF$B是一个因素而B.complete <- ifelse(is.na(DF$B), $B.predicted, DF$B) 不是,因此此代码是否会获取正确的值?

{{1}}

1 个答案:

答案 0 :(得分:1)

使用replace

set.seed(1)

DF <- data.frame(A = factor(sample(letters[1:5],30, TRUE)), 
 B = sample(c(letters[1:3],NA), 30 , TRUE, prob = rep(c(0.3,0.1),c(3,1))), 
 stringsAsFactors = F)

DF$B.factor <- factor(DF$B)

# no need to include is.na(DF$B) as multinom will omit anyway
model <- multinom(B.factor ~ A, data = DF)

# use replace to replace the NA values (converting to character when necessary)
DF$B.complete <- replace(DF$B, is.na(DF$B),  as.character(predict(model, newdata = DF[is.na(DF$B),])))