gpt4 book ai didi

r - 在 Y 中丢失数据的回归后预测.lm

转载 作者:行者123 更新时间:2023-12-04 11:44:41 26 4
gpt4 key购买 nike

我不明白如何使用 predict.lm 从线性回归中生成预测值命令当因变量 Y 的某些值丢失时,即使没有独立的 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

我通过使用代数生成预测来解决这个问题, df$y<-B0+ B1*df$x ,或通过调用模型的系数 df$y<-((summary(model)$coefficients[1, 1]) + (summary(model)$coefficients[2, 1]*(df$x)) 生成预测;但是,我现在正在使用具有数百个系数的大数据模型,这些方法不再实用。我想知道如何使用 predict功能。

预先感谢您的帮助!

最佳答案

R 中有内置的功能(但不一定很明显):它是 na.action参数/?na.exclude功能。设置此选项后,predict() (和类似的下游处理功能)会自动填写NA相关位置的值。

设置数据:

df <- data.frame(x=1:10,y=100*(1:10))
df$y[5] <- NA

拟合模型:默认 na.actionna.omit ,它只是删除不完整的案例。
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
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

关于r - 在 Y 中丢失数据的回归后预测.lm,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44893603/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com