为什么我的线性回归模型在r中给出不同的预测结果



我在r中玩线性回归模型,特别是获取变量的日志,然后从模型中进行预测。我遇到了一个小问题,但我很好奇发生了什么。为了简单起见,假设我有一个变量和响应。我获取这两个变量的日志,但我以以下方式格式化它们:

m1<-lm(log(response)~log(variable))
log_response<- log(response)
log_variable<- log(variable)
m2<- lm(log_response~log_variable)

两个模型摘要产生相同的输出,所以我假设这两个模型是等效的。然而,当我试图做出预测时,我得到了m2的错误。

newdata<-data.frame(variable=2)
predict(m1, newdata, interval="predict")
predict(m2, newdata, interval="predict")

使用它,m1的预测将产生准确的输出,但m2将返回一个看起来像的错误

model.frame.default中的错误(Terms,newdata,na.action=na.action,xlev=object$xlevels(:可变长度不同(为"log_variable"找到(此外:警告消息:"newdata"有1行,但找到的变量有805行

我在创建日志变量时是否犯了一些错误?

您提供的错误非常明显。您需要在newdata中指定与m2的术语相对应的术语。在这种情况下是CCD_ 3而不是CCD_。我认为以下内容应该有效。

m1 <- lm(log(response) ~ log(variable))
log_response <- log(response)
log_variable <- log(variable)
m2 <- lm(log_response ~ log_variable)
newdata <- data.frame(variable = 2)
newdata2 <- data.frame(log_variable = log(2))
predict(m1, newdata, interval = "predict")
predict(m2, newdata2, interval = "predict")

概念验证(使用玩具数据(

m1 <- lm(log(mpg) ~ log(wt), data = mtcars)
log_response <- log(mtcars$mpg)
log_variable <- log(mtcars$wt)
m2 <- lm(log_response ~ log_variable)
newdata <- data.frame(wt = 2)
newdata2 <- data.frame(log_variable = log(2))
pred1 <- predict(m1, newdata, interval = "predict")
pred2 <- predict(m2, newdata2, interval = "predict")
#> identical(pred1, pred2)
#[1] TRUE

相关内容

  • 没有找到相关文章

最新更新