2011-12-13 12 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 

Dlaczego funkcja predict nie jest w stanie przewidzieć wieku = 15?R: nie można przewidzieć określonej wartości

Odpowiedz

15

Zamiast lm(data$y ~ data$x) użyj formularza lm(y ~ x, data). To powinno rozwiązać twój problem.

EDYCJA: problem polega nie tylko na połączeniu z lm, ale także na korzystaniu z poly(*, raw=TRUE). Jeśli usuniesz bit raw=TRUE, powinien on działać. Nie wiem, dlaczego tu się rozwiąże raw=TRUE.

+0

Dobra robota. (Byłem za jakąś zaporą ogniową, która przez jakiś czas łamała moje używanie StackOverflow, więc nie mogłem odpowiadać bezpośrednio na twoje komentarze, ani usuwać mojego postu aż do teraz.) –

Powiązane problemy