Y中缺失数据的回归后的predict.lm
我不明白当因变量Y的某些值缺失时,如何使用Y中缺失数据的回归后的predict.lm,r,missing-data,lm,predict,R,Missing Data,Lm,Predict,我不明白当因变量Y的某些值缺失时,如何使用predict.lm命令从线性回归中生成预测值,即使没有独立的X观测值缺失。从代数上讲,这不是一个问题,但我不知道在R中有什么有效的方法可以做到这一点。我试图在源数据帧中分配预测,但由于缺少一个Y值而无法这样做:我得到一个错误 # Create a fake dataframe x <- c(1,2,3,4,5,6,7,8,9,10) y <- c(100,200,300,400,NA,600,700,800,900,100) df <
predict.lm
命令从线性回归中生成预测值,即使没有独立的X观测值缺失。从代数上讲,这不是一个问题,但我不知道在R中有什么有效的方法可以做到这一点。我试图在源数据帧中分配预测,但由于缺少一个Y值而无法这样做:我得到一个错误
# Create a fake dataframe
x <- c(1,2,3,4,5,6,7,8,9,10)
y <- c(100,200,300,400,NA,600,700,800,900,100)
df <- as.data.frame(cbind(x,y))
# Regress X and Y
model<-lm(y~x+1)
summary(model)
# Attempt to generate predictions in source dataframe but am unable to.
df$y_ip<-predict.lm(testy)
Error in `$<-.data.frame`(`*tmp*`, y_ip, value = c(221.............
replacement has 9 rows, data has 10
#创建一个伪数据帧
实际上,您没有正确使用predict.lm
函数。
无论哪种方式,您都必须输入模型本身作为其第一个参数,即model
,无论是否有新数据。如果没有新数据,它将仅预测训练数据,从而排除NA
行,您需要此解决方法来适应初始数据。框架:
df$y_ip[!is.na(df$y)] <- predict.lm(model)
在R中有内置的功能(但不一定很明显):它是na.action
argument/?na.exclude
函数。设置此选项后,predict()
(以及类似的下游处理函数)将自动在相关点中填写NA
值
设置数据:
df <- data.frame(x=1:10,y=100*(1:10))
df$y[5] <- NA
na.exclude
在拟合前删除不完整的案例,然后在预测向量中恢复它们(填充na
):
mod2 <- update(mod1,na.action=na.exclude)
predict(mod2)
## 1 2 3 4 5 6 7 8 9 10
## 100 200 300 400 NA 600 700 800 900 1000
mod2预测的第一个参数;lm是模型本身,而不是新数据尝试查找帮助文件?predict.lm
,在那里您将看到运行函数所需的参数以及示例。您好@aron如果任何答案解决了您的问题,请将其标记为“已接受”所以其他人可以看到解决我自己问题的一种方法就是使用我的x值指定一个新的数据帧。继续上面的代码,我可以这样做:df$y_ip谢谢Ben!你的代码肯定比我的更节省
mod1 <- lm(y~x+1,data=df)
predict(mod1)
## 1 2 3 4 6 7 8 9 10
## 100 200 300 400 600 700 800 900 1000
mod2 <- update(mod1,na.action=na.exclude)
predict(mod2)
## 1 2 3 4 5 6 7 8 9 10
## 100 200 300 400 NA 600 700 800 900 1000