R/GLMER.R

Defines functions GLMER

Documented in GLMER

GLMER<-function(modelData,responseVar,fitFamily,fixedStruct,
                randomStruct,saveVars=character(0),REML=TRUE,
                optimizer="bobyqa",maxIters=10000,ADMB=FALSE){
  
  call.best<-.ConstructCall(responseVar,fixedStruct,randomStruct)
  
  allTerms<-unlist(strsplit(call.best,"[+]"))
  allTerms<-unlist(strsplit(allTerms,"[-]"))
  allTerms<-unlist(strsplit(allTerms,"[~]"))
  allTerms<-unlist(strsplit(allTerms,"[(]"))
  allTerms<-unlist(strsplit(allTerms,"[)]"))
  allTerms<-unlist(strsplit(allTerms,"[|]"))
  allTerms<-unlist(strsplit(allTerms,"[:]"))
  allTerms<-unlist(strsplit(allTerms,"[*]"))
  allTerms<-unique(allTerms)
  allTerms<-gsub(" ","",allTerms)
  allTerms<-allTerms[allTerms!=""]
  allTerms<-allTerms[allTerms!="1"]
  allTerms<-allTerms[allTerms!="0"]
  allTerms<-allTerms[!grepl("poly",allTerms)]
  
  allTerms<-gsub("[,][0-9]","",allTerms)
  
  allTerms<-c(allTerms,saveVars)
  
  allTerms<-unique(allTerms)
  
  modelData<-subset(modelData,select=c(allTerms))
  modelData<-na.omit(modelData)
  
  if(ADMB){
    m <- glmmadmb(formula = as.formula(call.best),data = modelData,family = fitFamily)
  } else {
    if (fitFamily=="gaussian"){
      eval(substitute(m<-lmer(cb,data=modelData,lmerControl(optimizer = optimizer,
                                                            optCtrl = list(maxfun=maxIters)),
                              REML=REML),
                      list(cb=call.best)))
    } else {
      eval(substitute(m<-glmer(cb,family=fitFamily,data=modelData,
                               control=glmerControl(optimizer = optimizer,
                                                    optCtrl = list(maxfun=maxIters))),
                      list(cb=call.best)))
    }
  }
  
  
  return(LM(model = m,data = modelData,stats = data.frame(),
            final.call = call.best,family = fitFamily))
  
}
timnewbold/StatisticalModels documentation built on Aug. 25, 2023, 4:58 p.m.