## ----setup, include = FALSE---------------------------------------------------
knitr::opts_chunk$set(
  collapse = TRUE,  fig.width = 7, fig.height = 4
)

## ----load_package, warning=FALSE, message=FALSE-------------------------------
library(mverse)
library(dplyr)
library(ggplot2)

## ----load_data, warning=FALSE, message=FALSE----------------------------------
glimpse(hurricane)

## ----create_object------------------------------------------------------------
hurricane_mv <- create_multiverse(hurricane)

## -----------------------------------------------------------------------------
hurricane |>
  ggplot(aes(alldeaths)) +
  geom_histogram(bins = 25) +
  stat_bin(
    aes(label = after_stat(count)), bins = 25,
    geom = "text", vjust = -.7, size = 2
  )

## -----------------------------------------------------------------------------
hurricane |>
  filter(alldeaths > median(alldeaths)) |>
  arrange(desc(alldeaths)) |>
  select(Name, alldeaths) |>
  head()

## ----filter_branch------------------------------------------------------------
death_outliers <- filter_branch(
  none = TRUE,
  Katrina = Name != "Katrina",
  KatrinaAudrey = !(Name %in% c("Katrina", "Audrey"))
)

## -----------------------------------------------------------------------------
hurricane_mv <- hurricane_mv |> add_filter_branch(death_outliers)

summary(hurricane_mv)

## ----mutate_branch------------------------------------------------------------
femininity <- mutate_branch(binary = Gender_MF,
                            continuous = MasFem)

## -----------------------------------------------------------------------------
damage <- mutate_branch(original = NDAM,
                        log = log(NDAM))

## -----------------------------------------------------------------------------
hurricane_mv <- hurricane_mv |> add_mutate_branch(femininity, damage)

summary(hurricane_mv)

## -----------------------------------------------------------------------------
models <- formula_branch(alldeaths ~ damage + femininity)

hurricane_mv <- hurricane_mv |> add_formula_branch(models)

summary(hurricane_mv)

## ----modelling_branch---------------------------------------------------------
distributions <- family_branch(poisson, gaussian)

## -----------------------------------------------------------------------------
hurricane_mv <- hurricane_mv |> add_family_branch(distributions)

summary(hurricane_mv)

## -----------------------------------------------------------------------------
multiverse_tree(hurricane_mv, label = "code", label_size = 4,
                branches = c("models", "distributions"))

## -----------------------------------------------------------------------------
glm_mverse(hurricane_mv)

glm_summary <- summary(hurricane_mv)

glm_summary

## ----fig.height=8-------------------------------------------------------------
spec_summary(hurricane_mv, var = "femininity") |>
  spec_curve(label = "code", spec_matrix_spacing = 4) +
  labs(colour = "Significant at 0.05") +
  theme(legend.position = "top")

## -----------------------------------------------------------------------------
hurricane |>
  ggplot(aes(sample = alldeaths)) +
  stat_qq() +
  stat_qq_line()

hurricane |>
  mutate(logd = log(alldeaths + 1)) |>
  ggplot(aes(sample = logd)) +
  stat_qq() +
  stat_qq_line()

## -----------------------------------------------------------------------------
hurricane_mv <- create_multiverse(hurricane)

dep_var <- mutate_branch(alldeaths, log(alldeaths + 1))

femininity <- mutate_branch(binary_gender = Gender_MF,
                            cts_gender = MasFem)

damage <- mutate_branch(damage_orig = NDAM,
                        damage_log = log(NDAM))

models <- formula_branch(dep_var ~ damage + femininity)

distributions <- family_branch(poisson, gaussian)

hurricane_mv <- hurricane_mv |>
  add_mutate_branch(dep_var, femininity, damage) |>
  add_formula_branch(models) |>
  add_family_branch(distributions)


## -----------------------------------------------------------------------------
multiverse_tree(hurricane_mv, label = "code", c("dep_var", "distributions"))

## -----------------------------------------------------------------------------
match_poisson <- branch_condition(alldeaths, poisson)

match_log_lin <- branch_condition(log(alldeaths + 1), gaussian)

hurricane_mv <- add_branch_condition(hurricane_mv, match_poisson, match_log_lin)

## -----------------------------------------------------------------------------
multiverse_tree(hurricane_mv, label = "code", c("dep_var", "distributions"))

## -----------------------------------------------------------------------------
glm_mverse(hurricane_mv)

summary(hurricane_mv)

## ----fig.height=8-------------------------------------------------------------
spec_summary(hurricane_mv, var = "femininity") |>
  spec_curve(label = "code", spec_matrix_spacing = 4) +
  labs(colour = "Significant at 0.05") +
  theme(legend.position = "top")

## -----------------------------------------------------------------------------
hurricane_nb_mv <- create_multiverse(hurricane)

femininity <- mutate_branch(binary_gender = Gender_MF,
                            cts_gender = MasFem)

damage <- mutate_branch(damage_orig = NDAM,
                        damage_log = log(NDAM))

models <- formula_branch(alldeaths ~ damage + femininity)

hurricane_nb_mv <- hurricane_nb_mv |>
  add_mutate_branch(femininity, damage) |>
  add_formula_branch(models)

## -----------------------------------------------------------------------------
summary(hurricane_nb_mv)

## -----------------------------------------------------------------------------
glm.nb_mverse(hurricane_nb_mv)

summary(hurricane_nb_mv)

## ----fig.height=8-------------------------------------------------------------
spec_summary(hurricane_nb_mv, var = "femininity") |>
  spec_curve(label = "code", spec_matrix_spacing = 4) +
  labs(colour = "Significant at 0.05") +
  theme(legend.position = "top")