2014-09-26 53 views
2

假设您有一个要测量的值的代理。代理的数据比您的度量更多。在这种情况下,您可能希望根据您的代理插入度量值。例如,根据R中的代理内插缺失值

set.seed(0) ## so we can share the example 
tv <- round(rnorm(10),3) 
df <- data.frame(kept=round(tv,1), proxy=tv) 
df$kept[3] <- NA; df$proxy[6] <- NA 
t(df) 
     [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] 
kept 1.300 -0.300 NA 1.300 0.400 -1.5 -0.900 -0.300 0.000 2.400 
proxy 1.263 -0.326 1.33 1.272 0.415 NA -0.929 -0.295 -0.006 2.405 

该计划是使用已知代理的第三个观察“修补”变量。

我们首先运行一个回归来理解我们如何使用我们的代理进行分析。na.action = na.exclude确保我们的残差和拟合变量的长度保持为10。

r <- lm(kept ~ proxy, na.action=na.exclude) 
coef(r) 
(Intercept)  proxy 
-0.00009099 1.00054561 

解决方案并不明显,因为预测函数为缺少的X变量返回NA。

predict(r) 
     1  2  3  4  5  6  7  8  9  10 
1.3338 -1.2663  NA 0.3859 -0.9228  NA -1.7789 0.9991 0.7733 0.2960 

该解决方案在回答帖中显示。

回答

1

这里是难题的解决方案

predict(r, newdata= df) 
     1   2   3   4   5   6   7   8   9  10 
1.263598 -0.326269 1.330635 1.272603 0.415135  NA -0.929598 -0.295252 -0.006094 2.406221 

使用newdata参数的预测功能。这可以方便地选取正确的变量名称。