library(gamlss)
library(mgcv)
data(rent)
#---------------------------------------------------------
# normal errors one x-variable
ga1 <- gam(R~s(Fl, bs="ps", k=20), data=rent, method="ML")
gn1 <- gamlss(R~pb(Fl), data=rent) # additive
gn2 <- gamlss(R~ga(~s(Fl)), data=rent) # additive
AIC(ga1,gn1,gn2, k=0)
#--------------------------------------------------------
# normal error additive in Fl and A
# normal error additive in Fl and A
ga2 <- gam(R~s(Fl)+s(A), data=rent)
gn0 <- gamlss(R~pb(Fl)+pb(A), data=rent) # additive
gn1 <- gamlss(R~ga(~s(Fl)+s(A)), data=rent) # additive
gn2 <- gamlss(R~ga(~s(Fl))+ga(~s(A)), data=rent)
# somehow fitting
AIC(ga2,gn0,gn1, gn2, k=0)
#---------------------------------------------------------
# gamma errors one x-var
ga1 <- gam(R~s(Fl), data=rent, family=Gamma)
gg1 <- gamlss(R~pb(Fl), data=rent, family=GA)
gg2 <- gamlss(R~ga(~s(Fl)), data=rent, family=GA)
AIC(ga1, gg1, gg2, k=0)
# different degrees of freedon for mu in ga1
#---------------------------------------------------------
# gamma error two variables s() function
g22 <-gam(R~s(Fl,A), data=rent, family=Gamma)
gm22 <- gamlss(R~ga(~s(Fl,A)), data=rent, family=GA)
AIC(g22,gm22)
# predict
newrent <- data.frame(expand.grid(Fl=seq(30,120,5), A=seq(1890,1990,5 )))
newrent$pred2 <- predict(gm22, newdata=newrent, type="response")
newrent$pred1 <- predict(g22, newdata=newrent, type="response")
library(lattice)
wf1<-wireframe(pred1~Fl*A, newrent, aspect=c(1,0.5), drape=TRUE, colorkey=(list(space="right", height=0.6)), main="gam()")
wf2<-wireframe(pred2~Fl*A, newrent, aspect=c(1,0.5), drape=TRUE, colorkey=(list(space="right", height=0.6)), main="gamlss()")
print(wf1, split=c(1,1,2,1), more=TRUE)
print(wf2, split=c(2,1,2,1))
#---------------------------------------------------------
#gamma error two variables te() function
g221 <-gam(R~te(Fl,A), data=rent, family=Gamma)
gm221 <- gamlss(R~ga(~te(Fl,A)), data=rent, family=GA)
AIC(g221,gm221)
# predict
newrent <- data.frame(expand.grid(Fl=seq(30,120,5), A=seq(1890,1990,5 )))
newrent$pred2 <- predict(gm221, newdata=newrent, type="response")
newrent$pred1 <- predict(g221, newdata=newrent, type="response")
library(lattice)
wf1<-wireframe(pred1~Fl*A, newrent, aspect=c(1,0.5), drape=TRUE, colorkey=(list(space="right", height=0.6)), main="gam()")
wf2<-wireframe(pred2~Fl*A, newrent, aspect=c(1,0.5), drape=TRUE, colorkey=(list(space="right", height=0.6)), main="gamlss()")
print(wf1, split=c(1,1,2,1), more=TRUE)
print(wf2, split=c(2,1,2,1))
#----------------------------------------------------------
Run the code above in your browser using DataLab