我在R中运行predict()
时遇到问题。我创建了一个名为CopierDataRegression
的线性模型,并重命名了解释变量X
。我应该在Y
时预测X=6
并使用以下命令:
NewObs6 <- data.frame(X=6)
predict(CopierDataRegression, NewObs6)
eval(expr,envir,enclos)中的错误:object&#39; V2&#39;找不到
预测行代码有什么问题?
完整代码:
CopierData1 <- read.table("Ch1_20_data.txt")
# V1 is total number of minutes (explanatory) V2 is number of copiers serviced (predictor).
CopierDataRegression <- lm(V1~V2, data=CopierData1)
plot(CopierData1$V2, CopierData1$V1)
Y <- CopierData1$V1
X <- CopierData1$V2
plot(X, Y)
NewObs6 <- data.frame(V2=6)
predict(CopierDataRegression, NewObs6)
答案 0 :(得分:0)
似乎您在之后更改了列名称您已安装模型。这将导致以下行为:
df = data.frame(X = 1:10, Y = rnorm(10))
fit = lm(Y ~ X, df)
predict(fit, data.frame(X=3))
1
0.861924
# change the column name *after* creating the lm object
colnames(df) = c("A", "B")
predict(fit, data.frame(A=3))
Error in eval(expr, envir, enclos) : object 'X' not found
因此,如果要在创建模型之前命名预测变量X
,请执行此操作。请记住,对于predict.lm
,您作为参数传递的data.frame
的列名必须与您在lm()
调用中使用的预测变量的名称相匹配。