appendFluVaxEfficacyData <- function()

in incidenceMapR/R/appendData.R [122:166]


appendFluVaxEfficacyData <- function(model,modelDefinition){
  
  # summary.fitted.values
  modeledData <- appendSmoothData(model,modelDefinition)
  
  
  vaxEfficacyData <- modelDefinition$vaxEfficacyData
  outputColName <- 'modeled_vaccine_efficacy'
  
  nCol <- ncol(vaxEfficacyData)
  
  # should somehow do this with inla.make.lincomb within fluVaxEfficacyModel!
  flu_shotIdx<-modelDefinition$inputData$flu_shot==TRUE
  tmp <- model$summary.linear.predictor[names(model$summary.linear.predictor) != 'kld']
  summary.contrasts <- list()

  OR_mean <- tmp$mean[flu_shotIdx] - tmp$mean[!flu_shotIdx]
  OR_sd <- sqrt(tmp$sd[flu_shotIdx]^2 + tmp$sd[!flu_shotIdx]^2)
  
  summary.contrasts$mean <- 1-exp(OR_mean)
  summary.contrasts$sd <- apply(mapply(rlnorm,1e5,OR_mean,OR_sd),2,sd)
  summary.contrasts$`0.025quant` <- 1-qlnorm(0.975,mean=OR_mean,sd=OR_sd)
  summary.contrasts$`0.5quant` <- 1-qlnorm(0.5,mean=OR_mean,sd=OR_sd)
  summary.contrasts$`0.975quant` <- 1-qlnorm(0.025,mean=OR_mean,sd=OR_sd)
  summary.contrasts$mode <- 1-qlnorm(0.5,mean=OR_mean,sd=OR_sd)
  
  summary.contrasts<-as.data.frame(summary.contrasts)
  
  vaxEfficacyData[,nCol+1:ncol(summary.contrasts)] <- summary.contrasts
  names(vaxEfficacyData)[nCol+1:ncol(summary.contrasts)]<-paste(outputColName,names(summary.contrasts),sep='.')
  
  rownames(vaxEfficacyData)<-c()
  
  # snake_case
  names(vaxEfficacyData) <- gsub('\\.','_',names(vaxEfficacyData))
  
  # clean quantile names
  names(vaxEfficacyData)[grepl('0_',names(vaxEfficacyData))]<-paste(outputColName,c('lower_95_CI','median','upper_95_CI'),sep='_')
  
  # pretty order 
  columns <- modelDefinition$queryList$GROUP_BY$COLUMN[modelDefinition$queryList$GROUP_BY$COLUMN %in% names(vaxEfficacyData)]
  vaxEfficacyData <- vaxEfficacyData %>% arrange_(.dots=columns)
 
  return(list(modeledData = modeledData, vaxEfficacyData = vaxEfficacyData))
}