@@ -534,6 +534,12 @@ tidy.chisq_exploratory <- function(x, type = "observed") {
534534 resid_df <- resid_df %> % tibble :: rownames_to_column(var = x $ var1 )
535535 resid_df <- resid_df %> % tidyr :: gather(!! rlang :: sym(x $ var2 ), " residual" , - !! rlang :: sym(x $ var1 ))
536536
537+ # Keep the cell statistic and multiplicity correction aligned with the
538+ # Correspondence Analysis report.
539+ adjusted_resid_df <- as.data.frame(x $ stdres )
540+ adjusted_resid_df <- adjusted_resid_df %> % tibble :: rownames_to_column(var = x $ var1 )
541+ adjusted_resid_df <- adjusted_resid_df %> % tidyr :: gather(!! rlang :: sym(x $ var2 ), " adjusted_standardized_residual" , - !! rlang :: sym(x $ var1 ))
542+
537543 resid_raw_df <- as.data.frame(x $ observed - x $ expected ) # x$residual is standardized, but here, take raw difference between observed and expected.
538544 resid_raw_df <- resid_raw_df %> % tibble :: rownames_to_column(var = x $ var1 )
539545 resid_raw_df <- resid_raw_df %> % tidyr :: gather(!! rlang :: sym(x $ var2 ), " residual_raw" , - !! rlang :: sym(x $ var1 ))
@@ -544,6 +550,7 @@ tidy.chisq_exploratory <- function(x, type = "observed") {
544550
545551 ret <- obs_df %> % left_join(expected_df , by = c(x $ var1 , x $ var2 )) # join expected column
546552 ret <- ret %> % left_join(resid_df , by = c(x $ var1 , x $ var2 )) # join expected column
553+ ret <- ret %> % left_join(adjusted_resid_df , by = c(x $ var1 , x $ var2 ))
547554 ret <- ret %> % left_join(resid_raw_df , by = c(x $ var1 , x $ var2 )) # join residual_raw column
548555 ret <- ret %> % left_join(resid_ratio_df , by = c(x $ var1 , x $ var2 )) # join residual_ratio column
549556 if (is.nan(x $ statistic ) || x $ statistic < = 0 ) {
@@ -552,6 +559,11 @@ tidy.chisq_exploratory <- function(x, type = "observed") {
552559 else {
553560 ret <- ret %> % mutate(contrib = 100 * residual ^ 2 / (!! (x $ statistic ))) # add percent contribution too.
554561 }
562+ ret <- ret %> %
563+ mutate(
564+ adjusted_p_value = 2 * stats :: pnorm(abs(adjusted_standardized_residual ), lower.tail = FALSE ),
565+ adjusted_p_value = stats :: p.adjust(adjusted_p_value , method = " holm" )
566+ )
555567
556568 if (! is.null(x $ var1_levels )) {
557569 ret [[x $ var1 ]] <- factor (ret [[x $ var1 ]], levels = x $ var1_levels )
0 commit comments