## ----include = FALSE----------------------------------------------------------
knitr::opts_chunk$set(
  collapse = TRUE,
  comment = "#>"
)
# Print enough significant digits that values like `10.46` are not
# abbreviated to `10.5` in the output tibbles:
options(pillar.sigfig = 4)

## ----setup, include = FALSE---------------------------------------------------
library(scrutiny)

## -----------------------------------------------------------------------------
pigs1 |>
  grim_map(digits_x = 2, items_averaged = 1, data_type = "integer", show_rec = TRUE) |>
  dplyr::select(x, n, consistency, rec_sum:rec_x_lower)

## -----------------------------------------------------------------------------
pigs1 |>
  grim_map(digits_x = 2, items_averaged = 1, data_type = "integer", rounding = "up") |>
  scrutiny_meta()

## -----------------------------------------------------------------------------
grim_values(x = 5.19, n = 32, digits_x = 2, items_averaged = 1, data_type = "integer")
grim_values(x = 5.19, n = 300, digits_x = 2, items_averaged = 1, data_type = "integer")
grim_values(x = 5.19, n = 28, digits_x = 2, items_averaged = 1, data_type = "integer") # inconsistent: none

## -----------------------------------------------------------------------------
grim_closest(x = 5.19, n = 28, digits_x = 2, items_averaged = 1, data_type = "integer")

## -----------------------------------------------------------------------------
grim_values(
  x = c(5.19, 5.19, 5.19),
  n = c(32, 300, 28),
  digits_x = 2,
  items_averaged = 1,
  data_type = "integer"
)

## -----------------------------------------------------------------------------
pigs1 |>
  dplyr::mutate(case = dplyr::row_number()) |>
  dplyr::inner_join(
    grim_values(pigs1$x, pigs1$n, digits_x = 2, items_averaged = 1, data_type = "integer"),
    by = "case",
    suffix = c("", "_achievable")
  )

## ----fig.width=7, fig.height=2------------------------------------------------
grim_plot_line(x = 5.19, n = 28, digits_x = 2, items_averaged = 1, data_type = "integer")

## ----fig.width=7, fig.height=2------------------------------------------------
grim_plot_line(x = 5.19, n = 26, digits_x = 2, items_averaged = 1, data_type = "integer")

## -----------------------------------------------------------------------------
grim_grid(digits_x = 2, data_type = "integer") |>
  dplyr::summarise(share_inconsistent = mean(!consistency), .by = n)

## -----------------------------------------------------------------------------
out_seq1 <- grim_map_seq(pigs1, digits_x = 2, items_averaged = 1, data_type = "integer")
out_seq1

## -----------------------------------------------------------------------------
audit(out_seq1)

## -----------------------------------------------------------------------------
out_seq2 <- grim_map_seq(
  pigs1,
  digits_x = 2,
  items_averaged = 1,
  data_type = "integer",
  dispersion = 1:10
)
audit(out_seq2)

## -----------------------------------------------------------------------------
out_seq1 |>
  dplyr::filter(consistency) |>
  explain_print(1)

## ----fig.width=6, fig.height=5.5----------------------------------------------
grim_plot_grid(out_seq1)

## ----fig.width=6, fig.height=5.5----------------------------------------------
out_seq1_only_n <- grim_map_seq(
  pigs1,
  digits_x = 2,
  items_averaged = 1,
  data_type = "integer",
  var = "n"
)
grim_plot_grid(out_seq1_only_n)

## -----------------------------------------------------------------------------
df <- tibble::tibble(x1 = 4.71, x2 = 5.3, n = 40)

df_tested <- grim_map_total_n(df, digits_x = c(2, 1), items_averaged = 1, data_type = "integer")
df_tested

audit(df_tested)

## -----------------------------------------------------------------------------
grim_exp_incon(x = 1.40, n = 72, digits_x = 2, items_averaged = 1, data_type = "integer")

grim_exp_incon(x = 5.93, n = 80, digits_x = 2, items_averaged = 3, data_type = "integer")

grim_exp_incon(
  x = 84.27,
  n = 40,
  digits_x = 2,
  items_averaged = 1,
  data_type = "integer",
  x_meaning = "percentage"
)

## -----------------------------------------------------------------------------
grim_total(x = 1.40, n = 72, digits_x = 2, items_averaged = 1, data_type = "integer")

## -----------------------------------------------------------------------------
pigs1 |>
  grim_map(digits_x = 2, items_averaged = 1, data_type = "integer") |>
  grim_binomial()

## -----------------------------------------------------------------------------
grim_binomial_power(p0 = 0.5, p1 = 0.9, k = 10)

## ----eval = rlang::is_installed("ggrepel"), fig.width=6, fig.height=5---------
# fmt: skip
codes <- c(
  "B", "B", "C", "C", "A", "C",
  "A", "D", "A", "A", "A", "A"
)

pigs1 |>
  grim_map(digits_x = 2, items_averaged = 1, data_type = "integer") |>
  dplyr::mutate(study = codes) |>
  grim_plot_rates(study)

## -----------------------------------------------------------------------------
grim_granularity(n = 80, items_averaged = 5)

