2011-12-13 3 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)の形式を使用してください。それはあなたの問題を解決するはずです。

EDIT:問題はlmへの呼び出しだけでなく、poly(*, raw=TRUE)の使用でもあります。 raw=TRUEビットを削除すると、それが機能するはずです。なぜraw=TRUEがここで壊れているのか分かりません。

+0

素敵な仕事。 (私はしばらくの間、StackOverflowの使用を壊した何らかの種類のファイアウォールの背後にいたので、あなたのコメントに直接答えることも、今まで私の投稿を削除することもできませんでした。) –