我使用函数lm在R中进行了多元线性回归,我想用它来预测几个值。所以我正在尝试使用函数predict()
。
这是我的代码:
new=data.frame(t=c(10, 20, 30))
v=1/t
LinReg<-lm(p ~ log(t) + v)
Pred=predict(LinReg, new, interval="confidence")
所以我想在t=c(10,20,30...)
时预测p的值。但是,这不起作用,我不明白为什么。我得到的错误信息是:
“model.frame.default中的错误(条款,newdata,na.action = na.action,xlev = object $ xlevels):变量长度不同(找到'vart') 另外:警告信息: 'newdata'有3行,但找到的变量有132行“
132是我运行回归的变量向量的长度。我检查了我的向量1 / t并且它是明确定义的并且具有正确数量的系数。令人好奇的是,如果我做一个简单的线性回归(一个变量),那么相同的代码效果很好......
new=data.frame(t=c(10, 20, 30))
LinReg<-lm(p ~ log(t))
Pred=predict(LinReg, new, interval="confidence")
任何人都可以帮助我!提前谢谢。
答案 0 :(得分:1)
问题是,当您适合模型时,您将v
定义为t
的新变量。 R不记得如何创建变量,因此当您适合模型时,它不知道v
是t
的函数。因此,当您预测值时,它会使用v
的现有值,其长度与您指定的t
的新值不同。
相反,你想要适合
new <- data.frame(t=c(10, 20, 30))
LinReg <- lm(p ~ log(t) + I(1/t))
Pred <- predict(LinReg, new, interval="confidence")
如果您确实希望v
成为完全独立的变量,那么您需要在v
data.frame中提供new
的值,以便预测{{} 1}}。