## ----setup, include=FALSE-----------------------------------------------------
knitr::opts_chunk$set(
  collapse = TRUE,
  comment = "#>",
  fig.align = "center",
  message = FALSE,
  warning = FALSE
)

## -----------------------------------------------------------------------------
library(EpiExposure)

## -----------------------------------------------------------------------------
data("poisson_data")

head(poisson_data)

## -----------------------------------------------------------------------------
cb <- define_exposures(
  data = poisson_data,
  vars = c(
    "tmean",
    "rain",
    "wetness"
  ),
  max_lag = 85,
  df_var = 3,
  df_lag = 2
)

dat <- build_design(
  data = poisson_data,
  cb_templates = cb,
  groups = c(
    "epi_id",
    "block"
  )
)

## -----------------------------------------------------------------------------
dat_poisson <- prepare_response(
  data = dat,
  response = "y",
  family = "poisson"
)

## -----------------------------------------------------------------------------
fit_glm <- fit_epidlnm(
  data = dat_poisson,
  model_engine = "glm",
  family = "poisson",
  epiexposure_spec = attr(
    cb,
    "spec"
  )
)

## -----------------------------------------------------------------------------
summary(fit_glm)

## -----------------------------------------------------------------------------
fit_glmm <- fit_epidlnm(
  data = dat_poisson,
  model_engine = "glmmTMB",
  family = "poisson",
  random_effect = "block",
  epiexposure_spec = attr(
    cb,
    "spec"
  )
)

## -----------------------------------------------------------------------------
summary(fit_glmm)

## -----------------------------------------------------------------------------
data("nb2_data")

head(nb2_data)

## -----------------------------------------------------------------------------
dat_nb2 <- build_design(
  data = nb2_data,
  cb_templates = cb,
  groups = c(
    "epi_id",
    "block"
  )
)

dat_nb2 <- prepare_response(
  data = dat_nb2,
  response = "y",
  family = "negative_binomial"
)

## -----------------------------------------------------------------------------
fit_gam <- fit_epidlnm(
  data = dat_nb2,
  model_engine = "gam",
  family = "negative_binomial",
  epiexposure_spec = attr(
    cb,
    "spec"
  )
)

## -----------------------------------------------------------------------------
summary(fit_gam)

## -----------------------------------------------------------------------------
fit_gamm <- fit_epidlnm(
  data = dat_poisson,
  model_engine = "gamm",
  family = "poisson",
  random_effect = "block",
  epiexposure_spec = attr(
    cb,
    "spec"
  )
)

## -----------------------------------------------------------------------------
summary(fit_gamm)

## -----------------------------------------------------------------------------
summary(
  fit_gamm,
  component = "lme"
)

## -----------------------------------------------------------------------------
data("st_poisson")

head(st_poisson)

## ----eval=FALSE---------------------------------------------------------------
# 
# cb_spatial <- define_exposures(
#   data = st_poisson,
#   vars = c(
#     "tmean",
#     "rain",
#     "wetness"
#   ),
#   max_lag = 85,
#   df_var = 3,
#   df_lag = 2
# )
# 
# dat_spatial <- build_design(
#   data = st_poisson,
#   cb_templates = cb_spatial,
#   groups = c(
#     "epi_id",
#     "x_coord",
#     "y_coord"
#   )
# )
# 
# dat_spatial <- prepare_response(
#   data = dat_spatial,
#   response = "y",
#   family = "poisson"
# )

## ----eval=FALSE---------------------------------------------------------------
# fit_spatial <- fit_epidlnm(
#   data = dat_spatial,
#   model_engine = "spamm",
#   family = "poisson",
#   random_effect = NULL,
#   spatial_effect = c(
#     "x_coord",
#     "y_coord"
#   ),
#   spatial_structure = "matern",
#   spatial_group = NULL,
#   epiexposure_spec = attr(
#     cb_spatial,
#     "spec"
#   )
# )
# 

## ----eval=FALSE---------------------------------------------------------------
# summary(fit_spatial)

## -----------------------------------------------------------------------------
data("spatial_year")

head(spatial_year)

## ----eval=FALSE---------------------------------------------------------------
# dat_spatial_year <- build_design(
#   data = spatial_year,
#   cb_templates = cb,
#   groups = c(
#     "epi_id",
#     "x_coord",
#     "y_coord",
#     "year",
#     "location_id",
#     "block_id"
#   )
# )
# 
# dat_spatial_year <- prepare_response(
#   data = dat_spatial_year,
#   response = "y",
#   family = "poisson"
# )

## ----eval=FALSE---------------------------------------------------------------
# fit_spatial_year <- fit_epidlnm(
#   data = dat_spatial_year,
#   model_engine = "spamm",
#   family = "poisson",
#   random_effect = "block_id",
#   spatial_effect = c(
#     "x_coord",
#     "y_coord"
#   ),
#   spatial_structure = "matern",
#   spatial_group = "year",
#   epiexposure_spec = attr(
#     cb_spatial,
#     "spec"
#   )
# )
# 

## ----eval=FALSE---------------------------------------------------------------
# summary(fit_spatial_year)

## -----------------------------------------------------------------------------
data("spatial_replicate")

head(spatial_replicate)

## ----eval=FALSE---------------------------------------------------------------
# 
# cb_replicate <- define_exposures(
#   data = spatial_replicate,
#   vars = c(
#     "tmean",
#     "rain",
#     "wetness"
#   ),
#   max_lag = 85,
#   df_var = 3,
#   df_lag = 2
# )
# 
# dat_spatial_replicate <- build_design(
#   data = spatial_replicate,
#   cb_templates = cb_replicate,
#   groups = c(
#     "epi_id",
#     "x_coord",
#     "y_coord",
#     "epidemic_replicate",
#     "location_id",
#     "block_id"
# 
#   )
# )
# 
# dat_spatial_replicate <- prepare_response(
#   data = dat_spatial_replicate,
#   response = "y",
#   family = "poisson"
# )

## ----eval=FALSE---------------------------------------------------------------
# fit_spatial_replicate <- fit_epidlnm(
#   data = dat_spatial_replicate,
#   model_engine = "spamm",
#   family = "poisson",
#   random_effect = "block_id",
#   spatial_effect = c(
#     "x_coord",
#     "y_coord"
#   ),
#   spatial_structure = "matern",
#   spatial_group = "epidemic_replicate",
#   epiexposure_spec = attr(
#     cb_replicate,
#     "spec"
#   )
# )

## ----eval=FALSE---------------------------------------------------------------
# summary(fit_spatial_replicate)

## -----------------------------------------------------------------------------
data("gaussian_data")

head(gaussian_data)

## ----eval=FALSE---------------------------------------------------------------
# cb_gaussian <- define_exposures(
#   data = gaussian_data,
#   vars = c(
#     "tmean",
#     "rain",
#     "wetness"
#   ),
#   max_lag = 85,
#   df_var = 3,
#   df_lag = 2
# )
# 
# dat_gaussian <- build_design(
#   data = gaussian_data,
#   cb_templates = cb_gaussian,
#   groups = c(
#     "epi_id"))
# 
# dat_gaussian <- prepare_response(
#   data = dat_gaussian,
#   response = "y",
#   family = "gaussian"
# )
# 
# 

## ----eval=FALSE---------------------------------------------------------------
# fit_gls <- fit_epidlnm(
#   data = dat_gaussian,
#   model_engine = "gls",
#   family = "gaussian",
#   epiexposure_spec = attr(
#     cb_gaussian,
#     "spec"
#   ),
#   method = "REML"
# )
# 

## ----eval=FALSE---------------------------------------------------------------
# summary(fit_gls)

## ----eval=FALSE---------------------------------------------------------------
# fit_brms <- fit_epidlnm(
#   data = dat_poisson,
#   model_engine = "brms",
#   family = "poisson",
#   random_effect = "block",
#   epiexposure_spec = attr(
#     cb,
#     "spec"
#   ),
#   chains = 4,
#   iter = 2000,
#   seed = 123
# )
# 
# 

## ----include = FALSE, eval=FALSE----------------------------------------------
# fit_brms = readRDS("data/fit_brms.rds")

## ----eval=FALSE---------------------------------------------------------------
# summary(fit_brms, eval=FALSE)

## ----eval=FALSE---------------------------------------------------------------
# cb_bdlnm <- define_exposures(
#   data = poisson_data,
#   vars = c(
#     "tmean",
#     "rain",
#     "wetness"
#   ),
#   max_lag = 85,
#   df_var = 3,
#   df_lag = 2
# )
# 
# 
# dat_bdlnm <- build_design(
#   data = poisson_data,
#   cb_templates = cb_bdlnm,
#   groups = c(
#     "epi_id",
#     "block"
#   )
# )
# 
# dat_bdlnm <- prepare_response(
#   data = dat_bdlnm,
#   response = "y",
#   family = "poisson"
# )
# 
# bdlnm_bases <- attr(
#   dat_bdlnm,
#   "epiexposure_bdlnm_basis_objects",
#   exact = TRUE
# )

## ----eval=FALSE---------------------------------------------------------------
# fit_bdlnm <- fit_epidlnm(
#   data = dat_bdlnm,
#   model_engine = "bdlnm",
#   family = "poisson",
#   random_effect = "block",
#   random_effect_prior = list(
#     prec = list(prior = "pc.prec",param = c(1,0.01))),
#   epiexposure_spec = attr(dat_bdlnm, "epiexposure_spec"),
#   sample.arg = list(n = 1000, seed = 123))

## ----eval=FALSE---------------------------------------------------------------
# summary(fit_bdlnm)

## ----eval=FALSE---------------------------------------------------------------
# fit_bdlnm$model
# #fit_bdlnm$coefficients
# fit_bdlnm$coefficients.summary
# 
# 
# fit_bdlnm$model$summary.random
# fit_bdlnm$model$summary.hyperpar
# 
# fit_bdlnm$model$summary.random$.epiexposure_re_index
# 
# head(fit_bdlnm$model$marginals.hyperpar)
# 

## ----eval=FALSE---------------------------------------------------------------
# fit_inla <- fit_epidlnm(
#   data = dat_poisson,
#   model_engine = "inla",
#   family = "poisson",
#   random_effect = "block",
#   random_effect_prior = list(
#       prec = list(
#       prior = "pc.prec",
#       param = c(1,0.01))),
#   epiexposure_spec = attr(cb, "spec"))

## ----eval=FALSE---------------------------------------------------------------
# fit_inla$summary.fixed
# 
# fit_bdlnm$model$summary.fixed

## ----eval=FALSE---------------------------------------------------------------
# fit_inla$summary.random
# 
# fit_bdlnm$model$summary.random

## ----eval=FALSE---------------------------------------------------------------
# fit_inla$marginals.hyperpar
# 
# fit_bdlnm$model$marginals.hyperpar

## ----eval=FALSE---------------------------------------------------------------
# fit_inla$mlik
# 
# fit_bdlnm$model$mlik

## ----eval=FALSE---------------------------------------------------------------
# fit_inla$summary.hyperpar
# 
# fit_bdlnm$model$summary.hyperpar

## ----eval=FALSE---------------------------------------------------------------
# names(fit_bdlnm)

## ----eval=FALSE---------------------------------------------------------------
# names(fit_inla)

## ----eval=FALSE---------------------------------------------------------------
# fit_bdlnm$basis

## ----eval=FALSE---------------------------------------------------------------
# 
# dim(fit_bdlnm$coefficients)
# 
# head(fit_bdlnm$coefficients)
# 

## ----eval=FALSE---------------------------------------------------------------
# 
# fit_bdlnm$coefficients.summary

## ----eval=FALSE---------------------------------------------------------------
# class(fit_inla)
# 
# class(fit_bdlnm)
# 
# class(fit_bdlnm$model)

