4.2 fitting regression models to continuous distributions
data("CD4")
plot(cd4~age,data=CD4)
op<-par(mfrow=c(3,4),mar=par("mar")+c(0,1,0,0),
pch="+",cex=0.45,cex.lab=1.8,cex.axis=1.6)
page<-c("age^-0.5","log(age)","age^.5","age")
pcd4<-c("cd4^-0.5","log(cd4+1)","cd4^.5")
for (i in 1:3){
yy<-with(CD4,eval(parse(text=pcd4[i])))
for (j in 1:4){
xx<- with(CD4,eval(parse(text=page[j])))
plot(yy~xx,xlab=page[j],ylab=pcd4[i])
}
}
par(op)
con<-gamlss.control(trace=FALSE)
m1<-gamlss(cd4~age,sigma.fo=~1,data=CD4,control=con)
m2<-gamlss(cd4~poly(age,2),sigma.fo=~1,data=CD4,control=con)
m3<-gamlss(cd4~poly(age,3),sigma.fo=~1,data=CD4,control=con)
m4<-gamlss(cd4~poly(age,4),sigma.fo=~1,data=CD4,control=con)
m5<-gamlss(cd4~poly(age,5),sigma.fo=~1,data=CD4,control=con)
m6<-gamlss(cd4~poly(age,6),sigma.fo=~1,data=CD4,control=con)
m7<-gamlss(cd4~poly(age,7),sigma.fo=~1,data=CD4,control=con)
m8<-gamlss(cd4~poly(age,8),sigma.fo=~1,data=CD4,control=con)
GAIC(m1,m2,m3,m4,m5,m6,m7,m8)
GAIC(m1,m2,m3,m4,m5,m6,m7,m8,k=log(length(CD4$age)))
op<-par(mfrow=c(1,1))
plot(cd4~age,data=CD4)
lines(CD4$age[order(CD4$age)],fitted(m7)[order(CD4$age)],col="red")
m1f<-gamlss(cd4~fp(age,1),sigma.fo=~1,data=CD4,control=con)
m2f<-gamlss(cd4~fp(age,2),sigma.fo=~1,data=CD4,control=con)
m3f<-gamlss(cd4~fp(age,3),sigma.fo=~1,data=CD4,control=con)
GAIC(m1f,m2f,m3f)
GAIC(m1f,m2f,m3f,k=log(length(CD4$age)))
m3f
m3f$mu.coefSmo
plot(cd4~age,data=CD4)
lines(CD4$age[order(CD4$age)],fitted(m1f)[order(CD4$age)],col="blue")
lines(CD4$age[order(CD4$age)],fitted(m2f)[order(CD4$age)],col="green")
lines(CD4$age[order(CD4$age)],fitted(m3f)[order(CD4$age)],col="red")
m2b<-gamlss(cd4~bs(age),data=CD4,trace=FALSE)
m3b<-gamlss(cd4~bs(age,df=3),data=CD4,trace=FALSE)
m4b<-gamlss(cd4~bs(age,df=4),data=CD4,trace=FALSE)
m5b<-gamlss(cd4~bs(age,df=5),data=CD4,trace=FALSE)
m6b<-gamlss(cd4~bs(age,df=6),data=CD4,trace=FALSE)
m7b<-gamlss(cd4~bs(age,df=7),data=CD4,trace=FALSE)
m8b<-gamlss(cd4~bs(age,df=8),data=CD4,trace=FALSE)
GAIC(m2b,m3b,m4b,m5b,m6b,m7b,m8b)
GAIC(m2b,m3b,m4b,m5b,m6b,m7b,m8b,k=log(length(CD4$age)))
plot(cd4~age,data=CD4)
lines(CD4$age[order(CD4$age)],fitted(m5b)[order(CD4$age)],col="blue")
lines(CD4$age[order(CD4$age)],fitted(m6b)[order(CD4$age)],col="green")
lines(CD4$age[order(CD4$age)],fitted(m7b)[order(CD4$age)],col="red")
fn<-function(p) AIC(gamlss(cd4~cs(age,df=p[1]),data=CD4,trace=FALSE),k=2)
opAIC<-optim(par=c(3),fn,method="L-BFGS-B",lower=c(1),upper=c(15))
fn<-function(p) AIC(gamlss(cd4~cs(age,df=p[1]),data=CD4,trace=FALSE),k=log(length(CD4$age)))
opSBC<-optim(par=c(3),fn,method="L-BFGS-B",lower=c(1),upper=c(15))
opAIC$par
opSBC$par
maic<-gamlss(cd4~cs(age,df=10.85),data=CD4,trace=FALSE)
msbc<-gamlss(cd4~cs(age,df=1.85),data=CD4,trace=FALSE)
plot(cd4~age,data=CD4)
lines(CD4$age[order(CD4$age)],fitted(maic)[order(CD4$age)],col="blue")
lines(CD4$age[order(CD4$age)],fitted(msbc)[order(CD4$age)],col="green")
mpb1<-gamlss(cd4~pb(age),data=CD4,trace=FALSE)
mpb1$mu.df
mpb2<-gamlss(cd4~pb(age),sigma.fo=~pb(age),data=CD4,gd.tol=10,trace=FALSE)
mpb2$mu.df
mpb2$sigma.df
plot(cd4~age,data=CD4)
lines(CD4$age[order(CD4$age)],fitted(mpb1)[order(CD4$age)],col="blue")
lines(CD4$age[order(CD4$age)],fitted(mpb2)[order(CD4$age)],col="green")
m1<-gamlss(cd4~cs(age,df=10),sigma.fo=~cs(age,df=2),data=CD4,trace=FALSE)
fn<-function(p) AIC(gamlss(cd4~cs(age,df=p[1]),sigma.fo=~cs(age,p[2]),data=CD4,trace=FALSE,start.from=m1), k=2)
opAIC<-optim(par=c(8,3),fn,method="L-BFGS-B",lower=c(1,1),upper=c(15,15))
opAIC$par
m42<-gamlss(cd4~cs(age,df=3.72),sigma.fo=~cs(age,df=1.81),data=CD4,trace=FALSE)
fitted.plot(m42,mpb2,x=CD4$age,line.type=TRUE)
set.seed(1234)
rSample6040<-sample(2,length(CD4$cd4),replace=T,prob=c(0.6,0.4))
fn<-function(p) VGD(cd4~cs(age,df=p[1]),sigma.fo=~cs(age,df=p[2]),data=CD4,rand=rSample6040)
op<-optim(par=c(3,1),fn,method="L-BFGS-B",lower=c(1,1),upper=c(10,10))
op$par
wp(mpb2,xvar=CD4$age,ylim.worm=1.5)