R/grouped_p_value.R

Defines functions grouped_p_value

Documented in grouped_p_value

#' @title Extracting *p*-values for models that don't produce them.
#' @name grouped_p_value
#' @author Indrajeet Patil
#'
#' @inheritParams broomExtra::grouped_tidy
#'
#' @importFrom parameters p_value
#' @importFrom dplyr rename group_by_at group_modify ungroup
#' @importFrom rlang enquos exec
#'
#' @examples
#' groupedstats:::grouped_p_value(
#'   data = ggplot2::diamonds,
#'   formula = scale(price) ~ scale(carat) + (carat | color),
#'   grouping.vars = c(cut, clarity),
#'   ..f = lme4::lmer
#' )
#' @keywords internal

grouped_p_value <- function(data,
                            grouping.vars,
                            ..f,
                            ...) {
  # function to run
  tidy_group <- function(.x, .y) {
    model <- ..f(.y = ..., data = .x)
    rlang::exec(.fn = parameters::p_value, model)
  }

  # dataframe with grouped analysis results
  data %>%
    dplyr::group_by_at(rlang::enquos(grouping.vars), .drop = TRUE) %>%
    dplyr::group_modify(.f = tidy_group, .keep = TRUE) %>%
    dplyr::ungroup(.) %>%
    dplyr::rename(.data = ., term = Parameter, p.value = p)
}

Try the groupedstats package in your browser

Any scripts or data that you put into this service are public.

groupedstats documentation built on May 29, 2021, 1:06 a.m.