Since I got the answer from the segmented package maintainer, I decided to share it here. First, up-date the package to version 0.3-1.0 by
install.packages("segmented",type="source")
After updating, running the same commands leads to:
> Y<-c(13,21,12,11,16,9,7,5,8,8)
> X<-c(74,81,80,79,89,96,69,88,53,72)
> age<-c(50.45194,54.89382,46.52569,44.84934,53.25541,60.16029,50.33870,
+ 51.44643,38.20279,59.76469)
> dat=data.frame(Y=Y,off.set.term=log(X),age=age)
> fit.1=glm(Y~age+offset(off.set.term),data=dat,family=poisson)
>
> newdat=data.frame(age=c(52.09374,50.89329,50.61472,39.13358,44.79453),off.set.term=rep(0,5))
> predict(fit.1,newdata =newdat,type="link")
1 2 3 4 5
-1.964381 -1.956234 -1.954343 -1.876416 -1.914839
>
> library(segmented)
> fit.2=segmented(fit.1,seg.Z=~age,psi=list(age=mean(age)),offs=off.set.term,data=newdat)
> predict(fit.2,newdata =newdat,type="link")
Error in offset(off.set.term) : object 'off.set.term' not found
So the offset term cannot be found. Now the trick (for now) is to first attach newdat
and then predict as follows:
> attach(newdat)
The following object is masked _by_ .GlobalEnv:
age
> predict(fit.2,newdata =newdat,type="link")
1 2 3 4 5
-1.825831 -1.853842 -1.860342 -2.128237 -1.996147
The results do make sense now. Cheers!