sam_oi at yahoo.fr
2008-Oct-13 07:53 UTC
[R] Re : using predict() or fitted() from a model with offset; unsolved, included reproducible code
Thanks for your reply Mark, but no, using predict on the new data.frame does not help here. ? I had first thought that the probelm was due?the?explanatory variable (age)?and?the offset one (date) being?very similar (highly?correlated, I am trying to tease their effect apart, and hoped offset would help in this since I know the relationship with age already). But this appears not to be the case. Simply, the predicted? (or fitted) values for the offset model always return predicted values based on the effect of the variable within offset(), completely ignoring the explanatory variable and that it is supposed to offset the effect in the first place: such as, i get the same predicted values for?the 2 very different?models below. The summary table and coefficents?remain?perfectly valid though (and very different). ? lmAO<-glm(MassChange24h~T1+offset(-2*AGE),? family=gaussian,na.action=na.exclude) lmAO<-glm(MassChange24h~AGE,? family=gaussian,na.action=na.exclude) Has anyone got any experience in predicting from models that include an offset term? Am I not specifying the offset term correctly in the model? Please get back to me if you have the slightest idea of what is going on. Or if you would know of another way than offset for my purposes I include below reproducible code with dummy data. Models do not fit, but they work. Thank you Samuel Riou ########## AGE<- c(1:10) MassChange24h<-c(10,8,6,4,2,0,-2,-4,-6,-8) T1<-c(10,11,12,13,14,15,16,17,18,19)? ### variable for which I want the effect, taking into acount the known effect of AGE T<-c("A","B","A","B","A","B","A","B","A","B") ## added for testing T<-c(1,2,3,4,5,6,5,4,3,2) ## added for testing #no offset lmA<-glm(MassChange24h~T1, na.action=na.exclude, family=gaussian) summary(lmA) fitted(lmA) #linear offset lmAO<-glm(MassChange24h~T1+offset(-2*AGE),? family=gaussian,na.action=na.exclude) ### model lmAO<-glm(MassChange24h~T1+offset(AGE),? family=gaussian,na.action=na.exclude) lmAO<-glm(MassChange24h~AGE,? family=gaussian,na.action=na.exclude) ###the fitted values from the offset model are the same as from this one! summary(lmAO) ## table is fine, shows the effect of T1, taking into account the offset fitted(lmAO)? ## Problem : getting same values as for model lmA nd1<-expand.grid(T1=c(10,11,12,13,14,15,16,17,18,19)) Pred<-predict(lmA, nd1, type="response") nd1<-expand.grid(T1=c(10,11,12,13,14,15,16,17,18,19)) Pred<-predict(lmAO, nd1, type="response") #### get same values as for model lmA , and changing T variable in the offset model, again i get the same predicted values...very strange ################# ----- Message d'origine ---- De : "markleeds at verizon.net" <markleeds at verizon.net> ? : sam_oi at yahoo.fr Envoy? le : Dimanche, 12 Octobre 2008, 20h16mn 36s Objet?: RE: [R] using predict() or fitted() from a model with offset hi: I haven't use fitted much but when you used predict, did you send in the new dataframe ? the code below says that you didn't but i don't know if that would fix it anyway. On Sun, Oct 12, 2008 at? 6:36 AM, sam_oi at yahoo.fr wrote:> Dear R-users, > > I have come across some difficulties using the offset argument in a > model. There is not much information in ?offset, ?lm, ?glm and > therefore have resorted to post here. > Offset appears to work in the models I run becuase I get the expected > coefficients when comparing offset and non-offset models . BUT the > fitted values obtained from fitted() are identical in both models!! > Why is this? Is there an argument to add to fitted() so that it takes > the offset into accout? Note that I have included the offset in the > formula, as seen below in the code. > I have also tried to use predict, with exactly the same result: the > offset is ignored. This applies to both lms and glms. > > Am I missing something here? > Thank you > Samuel Riou > > CODE > #no offset lmA<-lm(MassChange24h~DATEN1, subset(Chicks1, Year==2007? & > AGE>10), na.action=na.exclude) > summary(lmA) > > #linear offset > lmAO<-lm(MassChange24h~DATEN1+offset(-0.37356*AGE), subset(Chicks1, > Year==2007? & AGE>10), na.action=na.exclude) > summary(lmAO) > > > print(Chicks$DATEN1[Year==2007? & AGE>10]) > print(t(fitted(lmA))) > NEW<-cbind(as.vector(t(fitted(lmA))), Chicks$DATEN1[Year==2007? & > AGE>10]) > NEW<-as.data.frame(NEW) > m1<-aggregate(NEW[1],NEW[2],mean, na.rm=TRUE) > plot(m1$V1~m1$V2, pch=20, col="black") Pred<-predict(lmA) > > print(Chicks$DATEN1[Year==2007? & AGE>10]) > print(t(fitted(lmAO))) > NEW<-cbind(as.vector(t(fitted(lmAO))), Chicks$DATEN1[Year==2007? & > AGE>10]) > NEW<-as.data.frame(NEW) > m1<-aggregate(NEW[1],NEW[2],mean, na.rm=TRUE) > points(m1$V1~m1$V2, pch=20, col="red") ###but the fitted values dont > seem to take into account the offset > Pred<-predict(lmAO) > > > > > > ______________________________________________ > R-help at r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide > http://www.R-project.org/posting-guide.html > and provide commented, minimal, self-contained, reproducible code.