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

¿Por qué la función predict no puede predecir la edad = 15?R: no se puede predecir el valor específico

Respuesta

15

En lugar de lm(data$y ~ data$x), utilice el formulario lm(y ~ x, data). Eso debería resolver tu problema.

EDITAR: el problema no es solo con la llamada al lm, sino también con el uso de poly(*, raw=TRUE). Si elimina el bit raw=TRUE, debería funcionar. No estoy seguro de por qué raw=TRUE se rompe aquí.

+0

Buen trabajo. (Estaba detrás de un tipo de firewall que rompió mi uso de StackOverflow por un tiempo, por lo que no pude responder a tus comentarios directamente, ni eliminar mi publicación hasta ahora). –

Cuestiones relacionadas