Nothing
## ----include = FALSE----------------------------------------------------------
knitr::opts_chunk$set(
collapse = TRUE,
comment = "#>",
fig.width = 7,
fig.height = 4
)
## ----setup--------------------------------------------------------------------
library(bage)
library(poputils)
library(dplyr)
library(tidyr)
library(ggplot2)
## -----------------------------------------------------------------------------
head(nzl_injuries)
## -----------------------------------------------------------------------------
nzl_injuries |>
filter(year %in% c(2000, 2006, 2012, 2018)) |>
ggplot(aes(x = age_mid(age), y = injuries / popn, color = sex)) +
facet_grid(vars(ethnicity), vars(year)) +
geom_line() +
xlab("age") +
theme(legend.position = "top",
legend.title = element_blank())
## -----------------------------------------------------------------------------
mod <- mod_pois(injuries ~ age * sex + age * ethnicity + year,
data = nzl_injuries,
exposure = popn)
## ----echo=FALSE, out.width="90%", fig.cap = "Structure of model. Rectangles denote data, ellipses denote unknown quantities that are inferred within the model, solid arrows denote probabilistic relationships, and dashed arrows denote deterministic relationships."----
knitr::include_graphics("vig1_dag.png")
## -----------------------------------------------------------------------------
mod
## -----------------------------------------------------------------------------
mod <- mod |>
fit()
## -----------------------------------------------------------------------------
mod
## -----------------------------------------------------------------------------
aug <- mod |>
augment()
aug
## -----------------------------------------------------------------------------
aug |>
select(.observed, .fitted, .expected)
## -----------------------------------------------------------------------------
comp <- mod |>
components()
comp
## -----------------------------------------------------------------------------
age_effect <- comp |>
filter(term == "age",
component == "effect") |>
select(age = level, .fitted)
age_effect
## -----------------------------------------------------------------------------
data_plot <- aug |>
filter(year == 2018) |>
mutate(draws_ci(.fitted))
data_plot |>
select(starts_with(".fitted"))
## -----------------------------------------------------------------------------
ggplot(data_plot, aes(x = age_mid(age))) +
facet_grid(vars(sex), vars(ethnicity)) +
geom_ribbon(aes(ymin = .fitted.lower,
ymax = .fitted.upper),
fill = "lightblue") +
geom_line(aes(y = .fitted.mid),
color = "darkblue") +
geom_point(aes(y = .observed),
color = "red") +
xlab("age")
## -----------------------------------------------------------------------------
mod <- mod |>
set_prior(year ~ AR1())
## -----------------------------------------------------------------------------
is_fitted(mod)
## -----------------------------------------------------------------------------
mod <- mod |>
fit()
## -----------------------------------------------------------------------------
mod_births <- mod_pois(births ~ age * region + age * time,
data = kor_births,
exposure = popn) |>
set_prior(age ~ SVD(HFD)) |>
set_prior(age:time ~ SVD_RW(HFD)) |>
fit()
mod_births
## -----------------------------------------------------------------------------
aug_forecast <- mod |>
forecast(labels = 2019:2028)
names(aug_forecast)
## -----------------------------------------------------------------------------
comp_forecast <- mod |>
forecast(labels = 2019:2028,
output = "components")
comp_forecast
## -----------------------------------------------------------------------------
data_forecast <- mod |>
fit() |>
forecast(labels = 2019:2028,
include_estimates = TRUE) |>
filter(sex == "Female",
age %in% c("10-14", "25-29", "40-44")) |>
mutate(draws_ci(.fitted))
ggplot(data_forecast, aes(x = year)) +
facet_grid(vars(age), vars(ethnicity)) +
geom_ribbon(aes(ymin = .fitted.lower,
ymax = .fitted.upper),
fill = "lightblue") +
geom_line(aes(y = .fitted.mid),
color = "darkblue") +
geom_point(aes(y = .observed),
color = "red")
## -----------------------------------------------------------------------------
years_mis <- 2010:2014
injuries_mis <- nzl_injuries |>
mutate(injuries = if_else(year %in% years_mis, NA, injuries))
## -----------------------------------------------------------------------------
mod_mis <- mod_pois(injuries ~ age * sex + age * ethnicity + year,
data = injuries_mis,
exposure = popn) |>
fit()
## -----------------------------------------------------------------------------
mod_mis |>
augment() |>
filter(year %in% years_mis)
## -----------------------------------------------------------------------------
data_plot_mis <- mod_mis |>
augment() |>
filter(age == "20-24") |>
mutate(draws_ci(.fitted))
ggplot(data_plot_mis, aes(x = year)) +
facet_grid(vars(sex), vars(ethnicity)) +
geom_ribbon(aes(ymin = .fitted.lower,
ymax = .fitted.upper),
fill = "lightblue") +
geom_line(aes(y = .fitted.mid),
color = "darkblue") +
geom_point(aes(y = .observed),
color = "red") +
xlab("age")
## -----------------------------------------------------------------------------
mod <- mod |>
set_datamod_outcome_rr3() |>
fit()
## -----------------------------------------------------------------------------
mod |>
augment()
## -----------------------------------------------------------------------------
rep_data <- mod |>
replicate_data()
rep_data
## -----------------------------------------------------------------------------
sex_ratio <- rep_data |>
count(.replicate, year, sex, wt = injuries) |>
pivot_wider(names_from = sex, values_from = n) |>
mutate(ratio = Male / Female)
sex_ratio
## -----------------------------------------------------------------------------
ggplot(sex_ratio, aes(x = year, y = ratio)) +
facet_wrap(vars(.replicate)) +
geom_line()
## -----------------------------------------------------------------------------
set.seed(0)
## Create simulated data
fake_data <- data.frame(year = 2001:2010,
population = NA)
## Define the true data-generating model
mod_rw <- mod_pois(population ~ year,
data = fake_data,
exposure = 1) |>
set_prior(`(Intercept)` ~ NFix(sd = 0.1)) |>
set_prior(year ~ RW(s = 0.1, sd = 0.1))
## Define the estimation model
mod_rw2 <- mod_pois(population ~ year,
data = fake_data,
exposure = 1) |>
set_prior(year ~ RW2())
## Run the simulation
report_sim(mod_est = mod_rw2, mod_sim = mod_rw)
## -----------------------------------------------------------------------------
mod |>
unfit() |>
components()
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.