R: 预测.lm()函数未能识别一个对象

4
> reg.len <- lm(chao1.ave ~ lg.std.len, b.div) # b.div is my data frame imported from a CSV file
> reg.len

Call:
lm(formula = chao1.ave ~ lg.std.len, data = b.div)

Coefficients:
(Intercept)   lg.std.len  
      282.4       -115.7  

> newx <- seq(0.6, 1.4, 0.01)
> prd.len <- predict(reg.len, newdata=data.frame(x=newx), interval="confidence", level=0.90, type="response")
Error in eval(expr, envir, enclos) : object 'lg.std.len' not found

我已经尝试了以下这个lm: lm(b.div$chao1.ave ~ b.div$lg.std.len),但是predict()报出了警告,指出新数据和变量的长度不同。所以,我试了上面那种方法,但现在predict()会报错,说它无法识别对象。请问如何修复?

在评估(expr, envir, enclos)时出错:找不到对象'lg.std.len'。 - user1751333
1个回答

7

Predict函数期望newdata具有与reg.len公式相匹配的相同列名。在您的newdata规范中将其更改为“x”,这不是公式的一部分。

dat <- data.frame(y=rnorm(50),lg.std.len=sample(10:15,50,replace=TRUE))
reg.len <- lm(y ~ lg.std.len,data=dat)

newx <- seq(0.6, 1.4, 0.01)
prd.len <- predict(reg.len, newdata=data.frame(lg.std.len=newx),
                   interval="confidence", level=0.90, type="response")

关键部分是 newdata=data.frame(lg.std.len=newx)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接