R中的预测,代码中的错误

时间:2016-06-29 15:52:55

标签: r regression prediction

我在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)

1 个答案:

答案 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()调用中使用的预测变量的名称相匹配。