R:无法预测具体值

6
> age <- c(23,19,25,10,9,12,11,8)
> steroid <- c(27.1,22.1,21.9,10.7,7.4,18.8,14.7,5.7)
> sample <- data.frame(age,steroid)
> fit2 <- lm(sample$steroid~poly(sample$age,2,raw=TRUE))
> fit2

Call:
lm(formula = sample$steroid ~ poly(sample$age, 2, raw = TRUE))

Coefficients:
(Intercept)                        -27.7225     
 poly(sample$age, 2, raw = TRUE)1    5.1819  
 poly(sample$age, 2, raw = TRUE)2   -0.1265  


> (newdata=data.frame(age=15))
 age
1  15

> predict(fit2,newdata,interval="predict")
    fit       lwr      upr
1 24.558395 17.841337 31.27545
2 25.077825 17.945550 32.21010
3 22.781034 15.235782 30.32628
4 11.449490  5.130638 17.76834
5  8.670526  2.152853 15.18820
6 16.248596  9.708411 22.78878
7 13.975514  7.616779 20.33425
8  5.638620 -1.398279 12.67552
Warning message:
'newdata' had 1 rows but variable(s) found have 8 rows 

为什么predict函数无法预测年龄为15岁的情况?
1个回答

16

不要使用lm(data$y ~ data$x),而是使用lm(y ~ x, data)的形式。这应该能解决您的问题。

编辑:问题不仅在于对lm的调用,还在于对poly(*, raw=TRUE)的使用。如果删除raw=TRUE,那么它应该就可以工作了。不确定为什么raw=TRUE会造成问题。


干得好。我之前遇到了一些防火墙的问题,导致我暂时无法直接回答你的评论,也无法删除我的帖子,直到现在才解决了这个问题。 - Josh O'Brien

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