2011-12-13 37 views
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?R:無法預測具體數值

回答

15

而不是lm(data$y ~ data$x),使用形式lm(y ~ x, data)。這應該可以解決你的問題。

編輯:問題不僅在於撥打lm,而且還使用poly(*, raw=TRUE)。如果你刪除raw=TRUE位,它應該工作。不知道爲什麼raw=TRUE打破這裏。

+0

不錯的工作。 (我是在某種防火牆的後面使用了StackOverflow一段時間,所以無法直接回復你的評論,也不能刪除我的帖子直到現在。) – 2011-12-14 02:55:30