Nothing
## ----include = FALSE----------------------------------------------------------
knitr::opts_chunk$set(
collapse = TRUE,
echo = FALSE,
warning = FALSE,
message = FALSE,
comment = "#>"
)
## ----setup--------------------------------------------------------------------
library(multipleITScontrol)
library(dplyr)
library(ggplot2)
library(lubridate)
library(stringi)
library(rlang)
library(purrr)
phei_calendar <- function(df,
date_column = NULL,
factor_column = NULL,
colours = NULL,
title = "Placeholder: Please supply title or 'element_blank()' to `title` argument",
subtitle = "Placeholder: Please supply subtitle or 'element_blank()' to `subtitle` argument",
caption = "PH.Intelligence@hertfordshire.gov.uk",
ncol,
...) {
date_column <- rlang::sym(date_column)
factor_column <- rlang::sym(factor_column)
df <- df |> dplyr::mutate(
mon = lubridate::month(!!date_column, label = T, abbr = F),
wkdy = weekdays(!!date_column,
abbreviate =
T
) |> forcats::fct_relevel("Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"),
day = lubridate::mday(!!date_column),
week = stringi::stri_datetime_fields(!!date_column)$WeekOfMonth,
year = lubridate::year(!!date_column),
year_mon = zoo::as.yearmon(!!date_column, "%Y %m")
) |>
dplyr::mutate(across(week, ~ dplyr::case_when(wkdy == "Sun" ~ week - 1,
.default = as.numeric(week)
)))
df %>%
ggplot2::ggplot(., ggplot2::aes(wkdy, week)) +
# custom theme stuff below
# geom_tile and facet_wrap will do all the heavy lifting
ggplot2::geom_tile(
alpha = 0.8,
ggplot2::aes(fill = !!factor_column),
color = "black", ...
) +
ggplot2::facet_wrap(~year_mon, scales = "free_x", ncol = ncol) +
ggplot2::geom_text(ggplot2::aes(label = day)) +
# put your y-axis down, flip it, and reverse it
ggplot2::scale_y_reverse(breaks = NULL) +
# manually fill scale colors to something you like...
ggplot2::scale_fill_manual(
values = colours,
na.value = "white",
na.translate = FALSE
) +
ggpubr::theme_pubclean() +
ggplot2::theme(legend.position = "bottom") +
ggplot2::labs(
fill = "",
x = "",
y = "",
title = element_blank(),
caption = "PH.Intelligence@hertfordshire.gov.uk"
)
}
## ----calendar, echo = FALSE, warning = FALSE, message = FALSE, fig.align="center", fig.height=10, fig.width=7, fig.retina=3----
bike_calendar <- its_data_bike_programme |>
group_by(group_var) |>
arrange(group_var, Date) |>
tidyr::complete(Date = seq(min(Date), max(Date), by = "day")) |>
tidyr::fill(Period, .direction = "down")
plot <- phei_calendar(
bike_calendar,
date_column = "Date",
"Period",
colours = c("#3b5163", "#80bb77", "#afd0f0"),
ncol = 3
) +
theme(strip.text = element_text(size = rel(0.5)),
axis.text = element_text(size = rel(0.5)),
plot.caption = element_text(size = rel(0.5)),
legend.text = element_text(size = rel(0.5)))
plot$layers[[2]]$aes_params$size <- 3
plot
## ----step_1_load_data---------------------------------------------------------
DT::datatable(its_data_bike_programme, options = list(dom = 'tip'), rownames = FALSE)
## ----echo = TRUE, results='hide'----------------------------------------------
intervention_dates <- c(as.Date("2023-04-03"), as.Date("2023-06-05"))
transformed_data <-
multipleITScontrol::transform_data(df = its_data_bike_programme,
time_var = "Date",
group_var = "group_var",
outcome_var = "score",
intervention_dates = intervention_dates)
## -----------------------------------------------------------------------------
transformed_data
## ----echo = TRUE, results='hide'----------------------------------------------
fitted_ITS_model <-
multipleITScontrol::fit_its_model(transformed_data = transformed_data,
impact_model = "level",
num_interventions = 2)
fitted_ITS_model
## -----------------------------------------------------------------------------
fitted_ITS_model
## ----echo = TRUE, results='hide'----------------------------------------------
my_summary_its_model <- multipleITScontrol::summary_its(fitted_ITS_model)
my_summary_its_model
## -----------------------------------------------------------------------------
my_summary_its_model
## ----echo = TRUE, results='hide'----------------------------------------------
summary(my_summary_its_model)
## -----------------------------------------------------------------------------
summary(my_summary_its_model)
## ----echo = TRUE, results='hide'----------------------------------------------
sjPlot::tab_model(
my_summary_its_model,
dv.labels = "Weekly Total Maintenance Incidents",
show.se = TRUE,
collapse.se = TRUE,
linebreak = FALSE,
string.est = "Estimate (std. error)",
string.ci = "95% CI",
p.style = "numeric_stars"
)
## -----------------------------------------------------------------------------
sjPlot::tab_model(
my_summary_its_model,
dv.labels = "Weekly Total Maintenance Incidents",
show.se = TRUE,
collapse.se = TRUE,
linebreak = FALSE,
string.est = "Estimate (std. error)",
string.ci = "95% CI",
p.style = "numeric_stars"
)
a <- coef(my_summary_its_model)[[which(names(coef(my_summary_its_model)) == "A) Control y-axis intercept")]] |> round(2)
# c <- coef(my_summary_its_model)[[which(names(coef(my_summary_its_model)) == "C) Control pre-intervention slope")]] |> round(2)
# d <- coef(my_summary_its_model)[[which(names(coef(my_summary_its_model)) == "D) Pilot pre-intervention slope difference to control")]] |> round(2)
g <- coef(my_summary_its_model)[[which(names(coef(my_summary_its_model)) == "G) Control intervention 1 level")]] |> round(2)
h <- coef(my_summary_its_model)[[which(names(coef(my_summary_its_model)) == "H) Pilot intervention 1 level difference to control")]] |> round(2)
k <- coef(my_summary_its_model)[[which(names(coef(my_summary_its_model)) == "K) Control intervention 2 level")]] |> round(2)
l <- coef(my_summary_its_model)[[which(names(coef(my_summary_its_model)) == "L) Pilot intervention 2 level difference to control")]] |> round(2)
## ----echo = TRUE, results='hide'----------------------------------------------
transformed_data_with_predictions <- generate_predictions(transformed_data, fitted_ITS_model)
transformed_data_with_predictions
## -----------------------------------------------------------------------------
DT::datatable(transformed_data_with_predictions, options = list(dom = 'tip', scrollX = TRUE), rownames = FALSE)
## ----echo = TRUE, fig.align="center", fig.width=7, fig.height=7, fig.retina=3----
its_plot(model = my_summary_its_model,
data_with_predictions = transformed_data_with_predictions,
time_var = "time",
intervention_dates = intervention_dates,
y_axis = "Weekly Total Maintenance Incidents")
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.