Anne wrote:

Hi all,

I still have problems with the predict function by setting up the values on
which I want to predict

ie:
original df: p1 (193 obs) variates y x1 x2

rm(list=ls())
x1<-rnorm(193)
x2<-runif(193,-5,5)
y<-rnorm(193)+x1+x2
p1<-as.data.frame(cbind(y,x1,x2))
p1
             y         x1         x2
1   -0.6056448 -0.1113607 -0.5859728
2   -4.2841793 -1.0432688 -3.3116807
......
192 -1.3228239  1.0263013 -2.7801324
193  1.8736683  1.0480632  0.4746959

newdf<-data.frame(x1= seq(min( p1$x1),max( p1$x1),length=10),
                              x2=rep(median( p1$x2),10) )
pr<-predict(g<-lm(p1$y~p1$x1+p1$x2) ,newdf, se.fit = TRUE)

newdf
           x1         x2
1  -2.3844149 -0.2594991
2  -1.8388635 -0.2594991
...
9   1.9799963 -0.2594991
10  2.5255477 -0.2594991

pr$fit
1   -0.6766906
2   -4.4198864
.....
192 -1.6531906
193  1.6395442

so apparently the predict() function did not take up the new data.frame


I looked up with conflicts() to see if I had masked objects in the search path potentially causing this problem but found none




Hi Anne,

predict is working properly (though not as you expected). It's not evaluating your newdf because it has no columns called p1$x1 or p1$x2. Try this instead:

pr <- predict(g <- lm(y ~ x1 + x2, p1), newdf, se.fit = TRUE)

> str(pr)
List of 4
 $ fit           : Named num [1:10] -2.365 -1.865 -1.366 -0.867 -0.367 ...
  ..- attr(*, "names")= chr [1:10] "1" "2" "3" "4" ...
 $ se.fit        : Named num [1:10] 0.1751 0.1424 0.1120 0.0868 0.0723 ...
  ..- attr(*, "names")= chr [1:10] "1" "2" "3" "4" ...
 $ df            : int 190
 $ residual.scale: num 0.987


--sundar

______________________________________________
[EMAIL PROTECTED] mailing list
https://www.stat.math.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html

Reply via email to