## ----include = FALSE----------------------------------------------------------
knitr::opts_chunk$set(
  collapse = TRUE,
  comment = "#>"
)

## ----setup, message=FALSE-----------------------------------------------------
library(tidyverse)
library(multitool)

# create some data
the_data <-
  data.frame(
    id  = 1:500,
    iv1 = rnorm(500),
    iv2 = rnorm(500),
    iv3 = rnorm(500),
    mod = rnorm(500),
    dv1 = rnorm(500),
    dv2 = rnorm(500),
    include1 = rbinom(500, size = 1, prob = .1),
    include2 = sample(1:3, size = 500, replace = TRUE),
    include3 = rnorm(500)
  )

# create a pipeline blueprint
full_pipeline <- 
  the_data |>
  add_filters(include1 == 0, include2 != 3, include3 > -2.5) |> 
  add_variables(var_group = "ivs", iv1, iv2, iv3) |> 
  add_variables(var_group = "dvs", dv1, dv2) |> 
  add_model("linear model", lm({dvs} ~ {ivs} * mod))

# expand the pipeline
expanded_pipeline <- expand_decisions(full_pipeline)

# Run the multiverse
multiverse_results <- run_multiverse(expanded_pipeline)

multiverse_results

## ----unnest-------------------------------------------------------------------
multiverse_results |> unnest(model_fitted)

## ----tidy---------------------------------------------------------------------
multiverse_results |> 
  unnest(model_fitted) |> 
  unnest(model_parameters)

## ----glance-------------------------------------------------------------------
multiverse_results |> 
  unnest(model_fitted) |>
  unnest(model_performance)

## ----reveal-------------------------------------------------------------------
multiverse_results |> 
  reveal(.what = model_fitted)

## ----which--------------------------------------------------------------------
multiverse_results |> 
  reveal(.what = model_fitted, .which = model_parameters)

## ----reveal-model-parameters--------------------------------------------------
multiverse_results |> 
  reveal_model_parameters()

## ----reveal-model-performance-------------------------------------------------
multiverse_results |> 
  reveal_model_performance()

## ----unpack-specs-wide--------------------------------------------------------
multiverse_results |> 
  reveal_model_parameters(.unpack_specs = "wide")

## ----unpack-specs-long--------------------------------------------------------
multiverse_results |> 
  reveal_model_performance(.unpack_specs = "long")

## ----condense-----------------------------------------------------------------
# model performance r2 summaries
multiverse_results |>
  reveal_model_performance() |> 
  condense(r2, list(mean = mean, median = median))

# model parameters for our predictor of interest
multiverse_results |>
  reveal_model_parameters() |> 
  filter(str_detect(parameter, "iv")) |>
  condense(coefficient, list(mean = mean, median = median))

## ----group_by-condense1-------------------------------------------------------
multiverse_results |>
  reveal_model_parameters(.unpack_specs = "wide") |> 
  filter(str_detect(parameter, "iv")) |>
  group_by(ivs, dvs) |>
  condense(coefficient, list(mean = mean, median = median))

## ----group_by-condense2-------------------------------------------------------
multiverse_results |>
  reveal_model_parameters(.unpack_specs = "wide") |> 
  group_by(parameter, dvs) |>
  condense(coefficient, list(mean = mean, median = median))

