modelTrainR <- function()

in incidenceMapR/R/modelTrainR.R [13:60]


modelTrainR <- function(modelDefinition){
  
  # run model
  model <- INLA::inla(formula = modelDefinition$formula,
                family = modelDefinition$family, 
                data = modelDefinition$inputData, 
                lincomb = modelDefinition$lincomb,
                Ntrials = modelDefinition$inputData$n,
                control.predictor=list(compute=TRUE,link=1),
                control.compute=list(config=TRUE,dic=TRUE),verbose = TRUE,
                control.inla=list(int.strategy="auto", strategy = "gaussian"))
  
  # format output
  if(modelDefinition$type =='smooth'){
    
    modeledData <- appendSmoothData(model,modelDefinition)
    
    # return output data
    return(list(modeledData = modeledData, inla = model, modelDefinition = modelDefinition))
  
  } else if (modelDefinition$type == 'latent_field'){
    
    modeledDataList <- appendLatentFieldData(model,modelDefinition)
    
    # return output data
    return(list(modeledData = modeledDataList$modeledData, latentField = modeledDataList$latentField,
                inla = model, modelDefinition = modelDefinition))
    
  } else if (modelDefinition$type == 'vaccine_efficacy'){
    
    modeledDataList <- appendFluVaxEfficacyData(model,modelDefinition)
    
    # return output data
    return(list(modeledData = modeledDataList$modeledData, vaxEfficacyData = modeledDataList$vaxEfficacyData,
                inla = model, modelDefinition = modelDefinition))
  
  } else if (modelDefinition$type == 'effects'){
    #same as smooth data for now?
    
    modeledData <- appendSmoothData(model,modelDefinition)
    
    # return output data
    return(list(modeledData = modeledData, inla = model, modelDefinition = modelDefinition))
    
  }
  
 
}