simpsons
dataonlynorm<-(dataonlys1-min(dataonlys1,na.rm=TRUE))/(max(dataonlys1,na.rm=TRUE)-min(dataonlys1,na.rm=TRUE))
#normalized models data
full.additive.modelpois<-gam(CPUE~TEMPMID+SALMID+CHLORSURF+OXYMAX+season+s(juldate,k=-1,bs="cc")+s(DECSLAT.x,DECSLON.x),data=dataonlynorm,family="poisson")
f.a.mpois<-gam(CPUE~s(TEMPMID,k=-1,bs="cs")+s(SALMID,k=-1,bs="cs")+season+s(CHLORSURF,k=-1,bs="cs")+s(OXYMAX,k=-1,bs="cs")+s(juldate,k=-1,bs="cc")+s(DECSLAT.x,DECSLON.x),data=dataonlynorm,family="poisson")
full.additive.modelgaus<-gam(CPUE~TEMPMID+SALMID+CHLORSURF+season+OXYMAX+s(juldate,k=-1,bs="cc")+s(DECSLAT.x,DECSLON.x),data=dataonlynorm,family="gaussian")
f.a.mgaus<-gam(CPUE~s(TEMPMID,k=-1,bs="cs")+s(SALMID,k=-1,bs="cs")+season+s(CHLORSURF,k=-1,bs="cs")+s(OXYMAX,k=-1,bs="cs")+s(juldate,k=-1,bs="cc")+s(DECSLAT.x,DECSLON.x),data=dataonlynorm,family="gaussian")
...
## Model comparison
##AIC and plot residuals
##Gamma model comparison, all normalized only
aicgamma<-data.frame(c(gam2a$aic,full.additive.modelgamma$aic,f.a.mgamma$aic,full.mult.modgamma$aic,linmod.additive.gamma$aic,linmod.mult.gamma$aic))
colnames(aicgamma)[1]<-"aic"
aicgamma$mname<-c(deparse(substitute(gam2a)),deparse(substitute(full.additive.modelgamma)),deparse(substitute(f.a.mgamma)),deparse(substitute(full.mult.modgamma)),deparse(substitute(linmod.additive.gamma)),deparse(substitute(linmod.mult.gamma)))
aicgamma$aicabs<-abs(aicgamma$aic)
aicgamma$aicc<-indepmod[1:6]
aicgamma$daicc<-indepmod[1:6]
indepmodgamma<-c(2,6,6,6,4,4)
for (i in 1:6){
K<-indepmodgamma[i]
n<-21208
aicgamma$aicc[i]<-aicgamma$aic[i]+2*K*(K+1)/(n-K-1)
}
aicgammasort<-aicgamma[order(abs(aicgamma$aicc),decreasing=T),]
aicgammasort$daicc[1]<-0
aicgammasort$aicc<-abs(aicgammasort$aicc)
for (i in 1:5){
aicgammasort$daicc[i+1]<-aicgammasort$aicc[i+1]-aicgammasort$aicc[1]
}
aicgammasort$daicc<-abs(aicgammasort$daicc)
aicgammasort$daicc<-abs(aicgammasort$daicc)
aicgammasort<-dplyr::select(aicgammasort,-aicabs,-aic)
aicgammasort$aicc<-round(aicgammasort$aicc,digits=2)
aicgammasort$daicc<-round(aicgammasort$daicc,digits=2)
pdf("AICc_tableGamma.pdf",height=11,width=8.5)
grid.table(aicgammasort)
dev.off()
...
Then we examined Q-Q plots of the GAM predicted outputs, residuals, and scatter plots of linear predictions vs. observations in batch. These allowed us to examine the predicted vs observed values that our top GAMs were providing, in order for us to make a more informed decision.
#write resid hist of list of characters of model names
par(mfrow=c(4,4))
for (i in 1:34) {
#print(i)
hist(residuals.gam(eval(parse(text=paste0(aicsortaicc$mname[i])))),main=aicsortaicc$mname[i],xlab="")
}
#write QQ plot for gam
type<-"deviance"
par(mfrow=c(4,4))
for (i in 1:34) {
qq.gam(eval(parse(text=paste0(aicsortaicc$mname[i]))),type=type,main=aicsortaicc$mname[i])
}
par(mfrow=c(4,4))
for (i in 1:34) {
observed.y <- napredict(eval(parse(text=paste0(aicsortaicc$mname[i])))$na.action, eval(parse(text=paste0(aicsortaicc$mname[i])))$y)
plot(fitted(eval(parse(text=paste0(aicsortaicc$mname[i]))), observed.y, xlab = "Fitted Values",
ylab = "Response", main = aicsortaicc$mname[i]))
}
...
\[ CPUE_{pred} = T_{mid} + S_{mid} + Chla_{surf} + dO_{bottom} + season + t + (Lat,Lon)\]