Federico Bonofiglio
2011-Mar-18 12:42 UTC
[R] PREDICTIONS from a PIECEWISE LINEAR (mixed) MODEL: THEY AIN'T LINEAR BETWEEN BREAK POINTS!!
I Dears, if that wouldn't take u too much effort I'd like to ask for a swift opinion: I have a alinear (mixed effect) model that I wish to run as a piecewise one. When I predict the values Iget quite some odds and disturbing results: The predicted stright line after the break point is not straight at all, instead behaves like if it was a hig order polynomial or something similar!!!! I attach the codes below, hoping someone can point me the mistake.... I sincerely express many thanks in advance ...... Federico Bonofiglio frame3<-data.frame(id,chol,cd4,rt,sex,age, nadir,pharmac2,hbs,hcv,resp2, hivbl,switch) # I run a model specifing the function (t-t*)+ = 0 if t<=t* AND (t-t*)+ = t if t>t* with the following syntax, emulating MJ Crawley (The R book 2007, Wiley), # rt+rt*(rt>15) I run the model, is a mixed effect one....... PCWISE<-lme(chol~rt+rt*(rt>15) +sex+age+cd4+cd4:rt+ cd4:rt*(rt>15)+nadir+hivbl+ pharmac2:rt+resp2:rt+ resp2:rt*(rt>15)+hbs+hcv+ switch,data=frame3, random= ~rt|id, na.action=na.omit) # I prepare a fictious data.frame for the predictions , in fact lme predict values inside the clusters , id in my case, they are patients.. I need instead a population result... nx<-seq( min(cd4,na.rm=T), max(cd4,na.rm=T), length.out=200) nt<-seq( min(rt,na.rm=T), max(rt,na.rm=T), length.out=200) newframe<-data.frame( #generate a fictious patient's profile id="48", cd4=nx, rt=nt, sex=rep("M",200), age=rep(mean(age),200), nadir=rep(mean(age),200), pharmac2=rep("PI.boost",200), resp2=rep("mild",200), hbs=rep(1,200), hcv=rep(1,200), hivbl=rep(mean(hivbl,na.rm=T),200), switch=rep(1,200)) yy<-predict(PCWISE,level=0,newdata=newframe) #predict the response # I plot the predicted values against the observed...... xyplot(chol~rt, groups=id, panel=function(x, y){panel.xyplot(x,y) panel.abline(v=15,col=2,lty=2) panel.lines(nt,yy,col=2,lwd=2) # plot the predicted values panel.axis("top",at=15,labels="15") }) # I get a quite puzzling result : predictions are not linear!!!! they act more like they were from a polynomial of high order!!! for instance after time 15, (rt>15), I get a line that is not straight, but flexes smoothly downward!!!! #Also if I try run the model separetely for time <= 15 and >15... prova2<-lme(chol~rt+sex+age+cd4+cd4:rt+ nadir+hivbl+ pharmac2:rt+resp2:rt+hbs+hcv+ switch,data=frame3, random= ~rt|id, subset=which(rt<=15), na.action=na.omit,correlation=corAR1()) prova3<-lme(chol~rt+sex+age+cd4+cd4:rt+ nadir+hivbl+ pharmac2:rt+resp2:rt+hbs+hcv+ switch,data=frame3, random= ~rt|id, subset=which(rt>15), na.action=na.omit,correlation=corAR1()) # ..I get quite completely different estimeates for time and all the time interactions (sometimes an order of magnitude!).... -- *Little u can do against ignorance,....it will always disarm u: is the 2nd principle of thermodinamics made manifest, ...entropy in expansion.**....But setting order is the real quest 4 truth, ......and the mission of a (temporally) wise dude. * [[alternative HTML version deleted]]
Ben Bolker
2011-Mar-18 16:38 UTC
[R] [R-sig-ME] PREDICTIONS from a PIECEWISE LINEAR (mixed) MODEL: THEY AIN'T LINEAR BETWEEN BREAK POINTS!!
On 11-03-18 08:42 AM, Federico Bonofiglio wrote:> I Dears, > if that wouldn't take u too much effort I'd like to ask for a swift opinion: > > I have a alinear (mixed effect) model that I wish to run as a piecewise one. > > When I predict the values Iget quite some odds and disturbing results: > The predicted stright line after the break point is not straight at all, > instead behaves like if it was a hig order polynomial or something > similar!!!! > > I attach the codes below, hoping someone can point me the mistake.... > > > I sincerely express many thanks in advance ...... > > Federico Bonofiglio >You have not given us a *reproducible* example ... I would guess that you need I(rt>15) rather than rt>15 in your formulae. good luck Ben Bolker