tips logo


Use the |> operator to add multiple statistical tests to a list

I designed the add_stats() function such that you can use the |> operator to add multiple tests to a list, like so:

statistics <- statistics |>
  add_stats(sleep_t_test, type = "primary", preregistered = TRUE) |>
  add_stats(D9_lm) |>
  add_stats(npk_aov, notes = "An ANOVA example")

Alternatively, you can also do it without the operator:

statistics <- add_stats(
  sleep_t_test, type = "primary", preregistered = TRUE
statistics <- add_stats(statistics, lm_D9)
statistics <- add_stats(statistics, npk_aov, notes = "An ANOVA example")

In the latter case, you have to repeat the assignment and the first argument each time you call add_stats(). You do not need to do this when you use the |> operator, saving you some time and making your code easier to read.

Use the custom_stats() and custom_stat() functions from the R package to store statistics from unsupported functions

The normal tidystats workflow consists of running statistical functions such as lm(), saving the output into variables, and then using the add_stats() function to add the statistics to a list. This works as long as tidystats has built-in support for the statistics function.

If there is no support for a particular function you want to save the statistics of, you can use the custom_stats() and custom_stat() functions to still store the statistics. Below is an example of how to use these functions.


# Run a regression and calculate the AIC and BIC
lm1 <- lm(Fertility ~ ., data = swiss)
aic <- AIC(lm1)
bic <- BIC(lm1)

# Create a custom stats variable containing the AIC and BIC values
aic_bic <- custom_stats(
  method = "AIC and BIC",
  statistics = c(
    custom_stat(name = "AIC", value = aic),
    custom_stat(name = "BIC", value = bic)

# Create an empty statistics list and add the AIC and BIC statistics
statistics <- list()
statistics <- add_stats(statistics, aic_bic)

write_stats(statistics, "custom-stats.json")