From 5acfdce78ba012265797e184189dfbb417b53907 Mon Sep 17 00:00:00 2001 From: Sean Long Date: Mon, 6 Oct 2025 15:10:16 -0700 Subject: [PATCH 1/7] updates from utils/update.r scripts, adding CI paramteres to ei_iter, enabling parallel results for ei_rxc, and creating visualization functions named rpv_toDF() and rpv_coef_plot() --- DESCRIPTION | 4 +-- R/ei_iter.R | 16 +++++------ R/ei_rxc.R | 24 +---------------- R/rpv_coef_plot.R | 62 +++++++++++++++++++++++++++++++++++++++++++ R/rpv_toDF.R | 42 +++++++++++++++++++++++++++++ R/summary.eiCompare.R | 4 +-- 6 files changed, 116 insertions(+), 36 deletions(-) create mode 100644 R/rpv_coef_plot.R create mode 100644 R/rpv_toDF.R diff --git a/DESCRIPTION b/DESCRIPTION index dd25961..b8e42e0 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -43,11 +43,11 @@ License: GPL-3 Depends: R (>= 3.5.0), eiPack, ei, wru (>= 1.0.0) Imports: bayestestR, coda, data.table, doSNOW, dplyr, foreach, ggplot2, graphics, magrittr, mcmcse, methods, - overlapping, purrr, rlang, sf, stringr, tidyr,tidyselect + overlapping, purrr, rlang, sf, stringr, tidyr, tidyselect, viridis NeedsCompilation: no Suggests: knitr, plyr, rmarkdown, reshape2, RColorBrewer, RJSONIO, testthat, tigris -RoxygenNote: 7.2.1 +RoxygenNote: 7.3.2 Encoding: UTF-8 VignetteBuilder: knitr Packaged: 2020-09-08 07:00:35 UTC; lorencollingwood diff --git a/R/ei_iter.R b/R/ei_iter.R index 04b5f02..e1a95b4 100644 --- a/R/ei_iter.R +++ b/R/ei_iter.R @@ -38,6 +38,8 @@ #' @param n_cores The number of cores to use in parallel computation. Defaulted to NULL, in which case parallel::detectCores() - 1 is used #' @param verbose A boolean indicating whether to print out status messages. #' @param plot_path A string to specify plot save location. If NULL, plot is not saved +#' @param CI Numeric. Confidence interval level (default = 0.95). Specifies the +#' interval width for calculation with bayestestR package. #' @param ... Additional arguments passed directly to ei::ei() #' #' @return If eiCompare_class = TRUE, an object of class eiCompare is returned. @@ -76,6 +78,7 @@ ei_iter <- function( n_cores = NULL, verbose = FALSE, plot_path = NULL, + CI = .95, ...) { # Preparation for parallel processing if user specifies parallelization @@ -156,7 +159,7 @@ ei_iter <- function( # Loop through each 2x2 ei ei_results <- foreach::foreach( i = seq_len(n_iters), - .inorder = FALSE, + .inorder = TRUE, .packages = c("ei", "stats", "utils", "mvtnorm"), .options.snow = opts ) %myinfix% { @@ -200,11 +203,6 @@ ei_iter <- function( ) }) break - # This was meant to enable parameterization of the ei importance sample - # size, but its inclusion changes results dramatically. - # utils::capture.output({ - # ei_out <- suppressMessages(ei_sim(ei_out, samples)) - # }) }, error = function(cond) { if (ii == n_erhos) { @@ -393,7 +391,7 @@ ei_iter <- function( # Both CIs suppressMessages({ suppressWarnings({ - cis <- bayestestR::ci(aggs, ci = 0.95, method = "HDI") + cis <- bayestestR::ci(aggs, ci = CI, method = "HDI") }) }) ci_lowers <- append(ci_lowers, cis$CI_low) @@ -436,9 +434,9 @@ ei_iter <- function( estimates <- data.frame(cbind(means, sds, ci_lowers, ci_uppers)) estimates <- cbind(cands, races, estimates) colnames(estimates) <- c( - "cand", "race", "mean", "sd", "ci_95_lower", "ci_95_upper" + "cand", "race", "mean", "sd", + "ci_lower", "ci_upper" ) - output <- list( "type" = "iter", "estimates" = estimates, diff --git a/R/ei_rxc.R b/R/ei_rxc.R index 4097298..4c2697f 100644 --- a/R/ei_rxc.R +++ b/R/ei_rxc.R @@ -162,7 +162,7 @@ ei_rxc <- function( md_mcmc <- foreach::foreach( chain = seq_len(n_chains), - .inorder = FALSE, + .inorder = TRUE, .packages = c("ei"), .options.snow = opts ) %myinfix% { @@ -261,22 +261,13 @@ ei_rxc <- function( chains_pr[, race_indices] <- race_pr } - # Get point estimates and standard errors estimate <- mcmcse::mcse.mat(chains_pr) - - # Get standard deviation of each distribution sds <- apply(chains_pr, 2, stats::sd) - # The upper and lower CI estimates also have standard errors. Here these - # errors are conservatively used to extend the 95% confidence bound further - - # Set bounds according to if (eiCompare_class) { - # eiCompare class object reports fixed CIs ci_lower <- 0.025 ci_upper <- 0.975 } else { - # Get upper, lower CI limits ci_lower <- (1 - ci_size) / 2 ci_upper <- 1 - ci_lower if (verbose) { @@ -284,28 +275,18 @@ ei_rxc <- function( message(paste("Setting CI upper bound equal to", ci_upper)) } } - - # Lower CI estimate lower <- mcmcse::mcse.q.mat(chains_pr, q = ci_lower) lower_est <- lower[, 1] lower_se <- lower[, 2] lower <- lower_est - lower_se - - # Upper CI estimate upper <- mcmcse::mcse.q.mat(chains_pr, q = ci_upper) upper_est <- upper[, 1] upper_se <- upper[, 2] upper <- upper_est + upper_se - - # Get race and cand cols for the final table cand_col <- rep(cand_cols, each = length(race_cols)) race_col <- rep(race_cols, times = length(cand_cols)) - - # Put names on chains_pr names <- paste(cand_col, race_col, sep = "_") colnames(chains_pr) <- names - - # Create, name an output table results_table <- data.frame(cbind(estimate[, 1], sds, lower, upper)) results_table <- cbind(cand_col, race_col, results_table) if (!eiCompare_class) { @@ -325,10 +306,7 @@ ei_rxc <- function( } if (!eiCompare_class) { - # Match expected output results_table <- get_md_bayes_gen_output(results_table) - - # Return results and chains if requested if (ret_mcmc) { return(list(table = results_table, chains = chains_pr)) } else { diff --git a/R/rpv_coef_plot.R b/R/rpv_coef_plot.R new file mode 100644 index 0000000..367196b --- /dev/null +++ b/R/rpv_coef_plot.R @@ -0,0 +1,62 @@ +rpv_coef_plot <- function (rpvDF = NULL, + title = "Racially Polarized Voting Analysis Estimates", + caption = "Data: eiCompare RPV estimates", + ylab = "Pct. Voting Black-Preferred Candidate", + colors = NULL, + race_order = c("Black", "White") +) + +{ + colnames(rpvDF) <- stringr::str_to_lower(colnames(rpvDF)) + + rpvDF$voter_race <- factor(rpvDF$voter_race, levels = race_order) + len_race <- length(unique(rpvDF$voter_race)) + if (is.null(colors)) { + if (len_race == 2) { + race_colors <- c(viridis::viridis(10)[4], viridis::viridis(10)[7]) + names(race_colors) <- race_order + ggplot_color_obj <- scale_color_manual(values = race_colors) + } + else { + ggplot_color_obj <- viridis::scale_color_viridis(drop = FALSE, + discrete = TRUE, option = "turbo", alpha = 0.8) + } + } + if (is.null(ylab)) { + prty <- unique(rpvDF$party) %>% stringr::str_to_title() + ylab <- paste("Percent Voting for", prty, "Candidate") + } + + coef_plot <- ggplot(rpvDF, aes(x = 0, y = 0:100)) + + scale_y_continuous(breaks = seq(0, 100, by = 10), + limits = c(0, 100), + labels = sprintf("%0.1f%%", seq(0, 100, by = 10)), + expand = c(0, 0)) + geom_hline(yintercept = 50, + colour = "#000000", size = 0.75) + + geom_pointrange(aes(y = .data$estimate, + ymin = .data$lower_bound, + ymax = .data$upper_bound, + color = .data$voter_race), + position = position_jitter(width = 0.1), + linewidth = .5, fatten = 1.5, + show.legend = F) + + ggplot_color_obj + + facet_grid(~panellab) + + labs(y = ylab, title = title, caption = caption) + theme_minimal() + + theme(legend.title = element_blank(), axis.title.x = element_blank(), + axis.ticks.x = element_blank(), axis.text.x = element_blank(), + panel.border = element_rect(fill = NA, colour = "grey"), + panel.grid.major.x = element_blank(), + panel.grid.minor.x = element_blank(), + panel.grid.minor.y = element_blank(), + axis.text.y = element_text(size = 20, face = "bold", + family = "serif"), + axis.title.y = element_text(size = 24, + face = "bold", family = "serif"), + strip.text.x = element_text(size = 15, + face = "bold", family = "serif"), + title = element_text(size = 25, hjust = 0.5, face = "bold", family = "serif"), + plot.caption = element_text(size = 12, face = "italic", + family = "serif")) + return(coef_plot) +} diff --git a/R/rpv_toDF.R b/R/rpv_toDF.R new file mode 100644 index 0000000..bfa9ed5 --- /dev/null +++ b/R/rpv_toDF.R @@ -0,0 +1,42 @@ +rpv_toDF <- function (rpv_results = NULL, model = NULL, jurisdiction = "", + preferred_candidate = "", party = "", election_type = "", + year = "", contest = "", candidate = "") +{ + if (inherits(rpv_results, "eiCompare")) { + fun <- function(x) { + df <- summary(rpv_results)[[x]] + df <- df %>% dplyr::select(-"sd") + colnames(df) <- paste(x, colnames(df), sep = ".") + df <- data.frame(original_name = row.names(df), df) + return(df) + } + sink(tempfile()) + smry_dfs <- lapply(names(summary(rpv_results)), fun) + rpv_data <- suppressMessages(Reduce(dplyr::inner_join, + smry_dfs)) + sink() + } + else if (inherits(rpv_results, "data.frame")) { + rpv_data <- data.frame(original_name = row.names(rpv_results), + rpv_results) + } + else { + stop("incorrect class type for argument rpv_results") + } + rownames(rpv_data) <- 1:nrow(rpv_data) + colnames(rpv_data) <- colnames(rpv_data) %>% stringr::str_to_lower() + newcols <- gsub("mean", "Estimate", colnames(rpv_data)) + newcols <- gsub("ci_95_lower", "Lower_Bound", newcols) + newcols <- gsub("ci_95_upper", "Upper_Bound", newcols) + colnames(rpv_data) <- newcols + plotDF <- rpv_data %>% dplyr::mutate(Model = model, Jurisdiction = jurisdiction, + Election_Type = election_type, Year = as.numeric(year), + Contest = contest, Candidate = candidate, Party = party, + Preferred_Candidate = preferred_candidate) %>% tidyr::pivot_longer(cols = grep("\\.", + colnames(rpv_data), value = TRUE), names_to = c("Voter_Race", + ".value"), names_pattern = "(.*)\\.(.*)", names_repair = "unique") + plotDF$Voter_Race <- gsub("^pct_", "", plotDF$Voter_Race) + colnames(plotDF) <- gsub("_ei", "", colnames(plotDF)) + colnames(plotDF) <- gsub("_rxc", "", colnames(plotDF)) + return(plotDF) +} diff --git a/R/summary.eiCompare.R b/R/summary.eiCompare.R index 63f5be4..5339463 100644 --- a/R/summary.eiCompare.R +++ b/R/summary.eiCompare.R @@ -5,7 +5,7 @@ #' @return A nicely formatted dataframe for printing results #' @export summary.eiCompare <- function(object, ...) { - objects <- list(object, ...) + objects <- list(object) tables <- vector("list", length(objects)) for (ii in seq_along(objects)) { @@ -25,5 +25,5 @@ summary.eiCompare <- function(object, ...) { race <- race_groups[[ii]] outputs[[race]] <- data.frame(lapply(tables, function(x) x[[race]])) } - message(outputs) + print(outputs) } From 8b7614abda0b5ee24ca8dcfdaea9191f190f7517 Mon Sep 17 00:00:00 2001 From: Sean Long Date: Wed, 8 Oct 2025 09:53:34 -0700 Subject: [PATCH 2/7] ensure updated documentation, moved eiExpand features to rpv_coef_plot and rpv_toDF, moved example_rpvDF for test of new functions --- NAMESPACE | 2 + R/data.R | 4 + R/ei_rxc.R | 9 +- R/rpv_coef_plot.R | 201 +++++++++++++++++++++++++++++---------- R/rpv_toDF.R | 73 ++++++++++++++ data/example_rpvDF.rda | Bin 0 -> 2103 bytes man/eiCompare-package.Rd | 7 ++ man/ei_iter.Rd | 4 + man/example_rpvDF.Rd | 16 ++++ man/rpv_coef_plot.Rd | 53 +++++++++++ man/rpv_toDF.Rd | 96 +++++++++++++++++++ 11 files changed, 409 insertions(+), 56 deletions(-) create mode 100644 data/example_rpvDF.rda create mode 100644 man/example_rpvDF.Rd create mode 100644 man/rpv_coef_plot.Rd create mode 100644 man/rpv_toDF.Rd diff --git a/NAMESPACE b/NAMESPACE index a0f8cac..0539b3e 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -40,7 +40,9 @@ export(predict_race_multi_barreled) export(race_cand_cors) export(race_check_2_3) export(resolve_missing_vals) +export(rpv_coef_plot) export(rpv_density) +export(rpv_toDF) export(stdize_votes) export(stdize_votes_all) export(strip_special_characters) diff --git a/R/data.R b/R/data.R index 0d04a52..009abe1 100644 --- a/R/data.R +++ b/R/data.R @@ -339,3 +339,7 @@ #' @usage data(gwinnett_ei) "gwinnett_ei" +#' Example RPV analysis results in Washington State +#' +"example_rpvDF" + diff --git a/R/ei_rxc.R b/R/ei_rxc.R index 4c2697f..30c8c76 100644 --- a/R/ei_rxc.R +++ b/R/ei_rxc.R @@ -164,10 +164,9 @@ ei_rxc <- function( chain = seq_len(n_chains), .inorder = TRUE, .packages = c("ei"), - .options.snow = opts - ) %myinfix% { - # Bayes model estimation - suppressWarnings( + .options.snow = opts) %myinfix% + { + suppressWarnings( md_out <- ei.MD.bayes( formula = formula, sample = samples, @@ -301,7 +300,7 @@ ei_rxc <- function( ) } else { colnames(results_table) <- c( - "cand", "race", "mean", "sd", "ci_95_lower", "ci_95_upper" + "cand", "race", "mean", "sd", "ci_lower", "ci_upper" ) } diff --git a/R/rpv_coef_plot.R b/R/rpv_coef_plot.R index 367196b..9e6349f 100644 --- a/R/rpv_coef_plot.R +++ b/R/rpv_coef_plot.R @@ -1,62 +1,161 @@ -rpv_coef_plot <- function (rpvDF = NULL, - title = "Racially Polarized Voting Analysis Estimates", - caption = "Data: eiCompare RPV estimates", - ylab = "Pct. Voting Black-Preferred Candidate", - colors = NULL, - race_order = c("Black", "White") -) - -{ +#' @export +#' @import ggplot2 +#' @importFrom rlang .data +#' +#' @author Rachel Carroll +#' @author Stephen El-Khatib +#' @author Loren Collingwood +#' +#' @title Racially Polarized Voting Analysis (RPV) Coefficient Plot +#' @description Creates a coefficient plot showing of RPV results estimate ranges +#' of all contests by voter race +#' @param rpvDF A data.frame containing RPV results +#' @param title The plot title +#' @param caption The plot caption +#' @param ylab Label along y axis +#' @param colors Character vector of colors, one for each racial group. The order +#' of colors will be respective to the order of racial groups. +#' @param race_order Character vector of racial groups from the \code{voter_race} column of +#' \code{rpvDF} in the order they should appear in the plot. If not specified, +#' the race groups will appear in alphabetical order. +#' +#' @return Coefficient plot of RPV analysis as a ggplot2 object +#' +#' @examples +#'library(eiCompare) +#'data(example_rpvDF) +#' +#'dem_rpv_results <- example_rpvDF %>% dplyr::filter(Party == "Democratic") +#'rpv_coef_plot(dem_rpv_results) +#' +rpv_coef_plot <- function( + rpvDF = NULL, + title = "Racially Polarized Voting Analysis Estimates", + caption = "Data: eiCompare RPV estimates", + ylab = NULL, + colors = NULL, + race_order = NULL + ) { + + # ----------------------------- QC CHECKS ----------------------------- + colnames(rpvDF) <- stringr::str_to_lower(colnames(rpvDF)) - - rpvDF$voter_race <- factor(rpvDF$voter_race, levels = race_order) + + ##### new code (copied from eiExpand lines 40-58) + # make sure rpvDF argument is defined + if(is.null(rpvDF)){stop("you must include rpvDF argument")} + + # make sure necessary columns are included + dif <- setdiff(c("party", "voter_race", "estimate", "lower_bound", "upper_bound"), + colnames(rpvDF)) + + if( length(dif) > 0 ) { + stop(paste("rpvDF is missing the following fields:", + paste(dif, collapse = ", "))) + } + + # make sure only one party is in rpvDF + if( length(unique(rpvDF$party)) > 1 ){ + stop("rpvDF should only contain one unique values in column Party")} + ##### end QC checks + + # ---------------------- Prep Data and Plot Inputs ---------------------- + + ##### Voter Race Order ##### + ##### old code (from Updates_7_1_2024.R) + # rpvDF$voter_race <- factor(rpvDF$voter_race, levels = race_order) + ##### new code (copied from eiExpand lines 64-69) + # proper case for plot + rpvDF$voter_race <- stringr::str_to_title(rpvDF$voter_race) + #get factor order if not specified + if( is.null(race_order) ) { race_order <- sort(unique(rpvDF$voter_race)) } + #set factor + rpvDF$voter_race <- factor(rpvDF$voter_race, + levels = race_order) + + ##### Colors ##### len_race <- length(unique(rpvDF$voter_race)) - if (is.null(colors)) { - if (len_race == 2) { + ##### old code (from Updates_7_1_2024.R) + # if (is.null(colors)) { + # if (len_race == 2) { + # race_colors <- c(viridis::viridis(10)[4], viridis::viridis(10)[7]) + # names(race_colors) <- race_order + # ggplot_color_obj <- scale_color_manual(values = race_colors) + # } + # else { + # ggplot_color_obj <- viridis::scale_color_viridis(drop = FALSE, + # discrete = TRUE, option = "turbo", alpha = 0.8) + # } + # } + ##### new code (copied from eiExpand lines 71-85) + if( is.null(colors) ){ + if( len_race == 2 ){ race_colors <- c(viridis::viridis(10)[4], viridis::viridis(10)[7]) names(race_colors) <- race_order + ggplot_color_obj <- scale_color_manual(values = race_colors) + + } else { + ggplot_color_obj <- viridis::scale_color_viridis(drop = FALSE, + discrete = TRUE, + option = "turbo", + alpha = .8) } - else { - ggplot_color_obj <- viridis::scale_color_viridis(drop = FALSE, - discrete = TRUE, option = "turbo", alpha = 0.8) - } - } - if (is.null(ylab)) { + } # END if( is.null(colors) ) + + ##### ylab ##### + if( is.null(ylab) ){ prty <- unique(rpvDF$party) %>% stringr::str_to_title() - ylab <- paste("Percent Voting for", prty, "Candidate") + ylab <- paste("Percent Voting for", prty, "Candidate") } - - coef_plot <- ggplot(rpvDF, aes(x = 0, y = 0:100)) + - scale_y_continuous(breaks = seq(0, 100, by = 10), - limits = c(0, 100), - labels = sprintf("%0.1f%%", seq(0, 100, by = 10)), - expand = c(0, 0)) + geom_hline(yintercept = 50, - colour = "#000000", size = 0.75) + - geom_pointrange(aes(y = .data$estimate, - ymin = .data$lower_bound, - ymax = .data$upper_bound, + + ##### mean percent vote for label ##### + mean <- rpvDF %>% + dplyr::group_by(.data$voter_race) %>% + dplyr::summarize(avg = mean(.data$estimate)) + + rpvDF <- dplyr::left_join(rpvDF, mean, by = "voter_race") + rpvDF$panelLab <- paste0(rpvDF$voter_race, "\n(mean: ", round(rpvDF$avg,1), "%)") + + # -------------------------- Build Plot -------------------------- + + coef_plot <- ggplot(rpvDF, + aes(x = 0, y = 0:100)) + + scale_y_continuous(breaks = seq(0,100, by = 10), + limits = c(0, 100), + labels = sprintf("%0.1f%%", seq(0,100, by = 10)), + expand = c(0, 0)) + + geom_hline(yintercept = 50, colour = "#000000", size = 0.75) + # Line at 0 + geom_pointrange(aes(y = .data$estimate, + ymin = .data$lower_bound, + ymax = .data$upper_bound, color = .data$voter_race), - position = position_jitter(width = 0.1), - linewidth = .5, fatten = 1.5, - show.legend = F) + - ggplot_color_obj + - facet_grid(~panellab) + - labs(y = ylab, title = title, caption = caption) + theme_minimal() + - theme(legend.title = element_blank(), axis.title.x = element_blank(), - axis.ticks.x = element_blank(), axis.text.x = element_blank(), - panel.border = element_rect(fill = NA, colour = "grey"), - panel.grid.major.x = element_blank(), - panel.grid.minor.x = element_blank(), - panel.grid.minor.y = element_blank(), - axis.text.y = element_text(size = 20, face = "bold", - family = "serif"), - axis.title.y = element_text(size = 24, - face = "bold", family = "serif"), - strip.text.x = element_text(size = 15, - face = "bold", family = "serif"), - title = element_text(size = 25, hjust = 0.5, face = "bold", family = "serif"), - plot.caption = element_text(size = 12, face = "italic", - family = "serif")) + position = position_jitter(width = 0.1), + size = 2, + fatten = 1.5, + show.legend = F) + # Ranges for each coefficient + ggplot_color_obj + + facet_grid(~panelLab) + + labs(y = ylab, + title = title, + caption = caption) + # Labels + theme_minimal() + + theme(legend.title = element_blank(), + axis.title.x = element_blank(), + axis.ticks.x = element_blank(), + axis.text.x = element_blank(), + panel.border = element_rect(fill = NA, colour = "grey"), + panel.grid.major.x = element_blank(), + panel.grid.minor.x = element_blank(), + panel.grid.minor.y = element_blank(), + axis.text.y = element_text(size = 20, face = "bold", family = "serif"), + axis.title.y = element_text(size = 24, face = "bold", family = "serif"), + strip.text.x = element_text(size = 15, face = "bold", family = "serif"), + #strip.text.x = element_blank(), + title = element_text(size = 30, hjust = .5, face = "bold", family = "serif"), + plot.caption = element_text(size = 12, face = "italic", family = "serif") + ) + +# -------------------------- Return -------------------------- return(coef_plot) } diff --git a/R/rpv_toDF.R b/R/rpv_toDF.R index bfa9ed5..0c49416 100644 --- a/R/rpv_toDF.R +++ b/R/rpv_toDF.R @@ -1,3 +1,73 @@ +#' @export +#' +#'@author Rachel Carroll +#'@author Kassra Oskooii + +#' @title Transform RPV results from \code{eiCompare} into a simple dataframe +#' object +#' +#' @description Create a dataframe from RPV analysis output to facilitate +#' RPV visualizations. The output dataframe of this function can be used directly +#' in \code{rpv_plot()}. +#' +#' @param rpv_results RPV analysis results either from the output of +#' \code{ei_iter()} or \code{ei_rxc()} from the \code{eiCompare} package or from +#' the internal function \code{ci_cvap_full()}. +#' @param model A string indicating the model used to create \code{rpv_results}. +#' Examples include "ei", "rxc", "ei cvap", etc. +#' @param candidate A character vector of candidate names written as they would +#' appear on a visualization. The candidate names must be listed in the same order +#' as the candidate estimates appear in \code{rpv_results}, i.e the same order +#' as the \code{cands} argument in \code{eiCompare::ei_iter()} or +#' \code{eiCompare::ei_rxc()}. +#' @param preferred_candidate A character vector of races indicating racial +#' preference of each candidate. The racial preferences must be listed +#' in the correct order with respect to \code{candidate}. +#' @param party A character vector containing the political parties of the +#' candidates. Must be listed in the correct order with respect to +#' \code{candidate}. +#' @param jurisdiction A string of the jurisdiction. +#' @param election_type A string on the election type (usually "General" or +#' "Primary") +#' @param year The year of the contest +#' @param contest A string of contest name as it would appear in an rpv visualization +#' (e.g. "President" or "Sec. of State") +#' +#' @return rpv results in a data.frame +#' +#' @examples +#' \donttest{ +#' #library(eiCompare) +#' #data("south_carolina") +#' #prec_election_demog <- south_carolina[1:50,] +#' +#' ## run rpv analysis +#' #eiVote <- eiCompare::ei_iter( +#' # data = prec_election_demog, +#' # cand_cols = c('pct_mcmaster', 'pct_smith'), +#' # race_cols = c('pct_white', 'pct_black'), +#' # totals_col = "total_vap" +#' #) %>% +#' # rpv_normalize( +#' # cand_cols = c('pct_mcmaster', 'pct_smith'), +#' # race_cols = c('pct_white', 'pct_black') +#' # ) +#' +#' ## use function to create dataframe from rpv results +#' #plotDF <- rpv_toDF( +#'# rpv_results = eiVote, +#'# model = "ei vap", #since we used ei_iter model normalized with vap denominator +#'# jurisdiction = "Statewide", +#'# candidate = c("McMaster", "Smith"), #must be in correct order relative to rpv_results +#'# preferred_candidate = c("White", "Black"), #must be in correct order rpv_results +#'# party = c("Republican", "Democratic"), +#'# election_type = "General", +#'# year = "2020", +#'# contest = "Governor" +#'# ) +#' } + + rpv_toDF <- function (rpv_results = NULL, model = NULL, jurisdiction = "", preferred_candidate = "", party = "", election_type = "", year = "", contest = "", candidate = "") @@ -26,8 +96,11 @@ rpv_toDF <- function (rpv_results = NULL, model = NULL, jurisdiction = "", rownames(rpv_data) <- 1:nrow(rpv_data) colnames(rpv_data) <- colnames(rpv_data) %>% stringr::str_to_lower() newcols <- gsub("mean", "Estimate", colnames(rpv_data)) + # Handle both ci_95_lower and ci_lower naming conventions newcols <- gsub("ci_95_lower", "Lower_Bound", newcols) newcols <- gsub("ci_95_upper", "Upper_Bound", newcols) + newcols <- gsub("ci_lower", "Lower_Bound", newcols) + newcols <- gsub("ci_upper", "Upper_Bound", newcols) colnames(rpv_data) <- newcols plotDF <- rpv_data %>% dplyr::mutate(Model = model, Jurisdiction = jurisdiction, Election_Type = election_type, Year = as.numeric(year), diff --git a/data/example_rpvDF.rda b/data/example_rpvDF.rda new file mode 100644 index 0000000000000000000000000000000000000000..875a080b5ef7b264f82553657008c163d45cc9bf GIT binary patch literal 2103 zcmV-72*~#ziwFP!000001MQm+R8!X-#~*)!5CLhyPKFb#FhdI!5QqXHSHfR4@RFB6 z^yD1+NFMVY!%KKcP++3AgZZZ`XlosMrY)eSt&Z8cb;^!wRdgQzPIqXf)2)hn=s>G& zu{vGZ@9|!cWQ%THdrEiSJ15-t``&wh_jB*>mz!`OXmbs-r3NX6VSbpuuMg%Yfm=+X z*X1Y9!9W4S2lK~*pbVjwlT|hgRnFRKa`T}>I45GhSQwOrLZcv?$x-fLomDn(!bDCm zS!l*#WxPvLPO4yQNyhPTg=Xv)it?(A3|~VsCa=OspDHKIlC@ryP)=FmbeNWa^HIis zuLh4y1}K+N7Ry7lN3Ya~P(hn1#+wj0;@4@hd9nZF6%r#RMof&@HxM!R-O-n##XIrt z|KQF&uO}2x48@Wb(G*S56wODQzE~)?f1vHFFz)*1$~BKDTmHvVcR$&%*Mb_YwF95KnF@|{vrL}gqn9;aqFOWC>KIUQeJ2rRJHP%L9*zoH$aCt?VS zAsy7WER2V>7!M3$Jj8g6yLh%abb*VEmkr1lS_ifV*YhnkJD+lcsmMBSx= zPLy$z*HhlZxC`O;8mH~k3?iLrHg_QuI0PNy(JUw5uVgQ;>!)Z2pe4#73p&9QO69r@ zG$M_RZ%_2|rEvEO~_zewHC|}?&8lX0w1pX|lNZAlkkMy!lT}i-?uf&R)fnQyXAOC4{{O{Q9+6&wAiDJQYP&!}#fngpYOtm;B=wb-}Ry z+Fw3d^c3)`H})?$(>M*~9^cZHZHynyql8sLo)q)(Bj)k($=Jq)KN=+oamV}l{2=}! z#JLN80)K*yk9WxizMrm}tByc9IgnmMhf#_vk3t3if}K6U=Vgje;&LwS3XyglpHJDs z`0_|T&os4ssTKTW-Qdfo&-nGdB+W+J$b(a#-?ks=$?z*XU_Dep$LF?46)5=hqNbyj zm53->z9(f4@ST2RD+%jT;B%C2fq4Azbs>)?Uw?Jy0f?vJALrX-Ln!Z0FISa895YqD z_0KjNkuLA5a?K@!6Aqjj|LN^{k*!F7KX!Z9(ngf= ze)Ob4nAeP1r&nMQN4%+JOEAnE$JFs*V9&jZPOOCaWVb6`xdr`+w#1n;fWIswdpHXC z<&qZPq=-5cp{)s20jH+Fu7^N)Q7nUnXze%OETZVarqO8LUE zLGb$ocGP(P~2m@2ckZ+YTQ^A8_KW*ABf2^U2U(X9lJLHzrp@k ztPk*~KeyoLcYuFxG~Txa#@GJt!>yBnzc^v_RT|=)d+qQZY@pHOA0i|SSw-0~{!lbT z5JRji{Ue$oE#+LTtEJj%rd-FgA$b_#B3(~gg6BI~+HR&t8VTA2 zm6dT&_R%LgDv~kN<_AxOBsj^A{@F%2&Qg^W%TnfY&vw#MtAk?8wdCljbYPy{L03I! zF>#@F8MMf;IvKM|(%WpKlKUD2vDRhJxYi*AUcTH`Jv=\% dplyr::filter(Party == "Democratic") +rpv_coef_plot(dem_rpv_results) + +} +\author{ +Rachel Carroll + +Stephen El-Khatib + +Loren Collingwood +} diff --git a/man/rpv_toDF.Rd b/man/rpv_toDF.Rd new file mode 100644 index 0000000..bcfee20 --- /dev/null +++ b/man/rpv_toDF.Rd @@ -0,0 +1,96 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/rpv_toDF.R +\name{rpv_toDF} +\alias{rpv_toDF} +\title{Transform RPV results from \code{eiCompare} into a simple dataframe +object} +\usage{ +rpv_toDF( + rpv_results = NULL, + model = NULL, + jurisdiction = "", + preferred_candidate = "", + party = "", + election_type = "", + year = "", + contest = "", + candidate = "" +) +} +\arguments{ +\item{rpv_results}{RPV analysis results either from the output of +\code{ei_iter()} or \code{ei_rxc()} from the \code{eiCompare} package or from +the internal function \code{ci_cvap_full()}.} + +\item{model}{A string indicating the model used to create \code{rpv_results}. +Examples include "ei", "rxc", "ei cvap", etc.} + +\item{jurisdiction}{A string of the jurisdiction.} + +\item{preferred_candidate}{A character vector of races indicating racial +preference of each candidate. The racial preferences must be listed +in the correct order with respect to \code{candidate}.} + +\item{party}{A character vector containing the political parties of the +candidates. Must be listed in the correct order with respect to +\code{candidate}.} + +\item{election_type}{A string on the election type (usually "General" or +"Primary")} + +\item{year}{The year of the contest} + +\item{contest}{A string of contest name as it would appear in an rpv visualization +(e.g. "President" or "Sec. of State")} + +\item{candidate}{A character vector of candidate names written as they would +appear on a visualization. The candidate names must be listed in the same order +as the candidate estimates appear in \code{rpv_results}, i.e the same order +as the \code{cands} argument in \code{eiCompare::ei_iter()} or +\code{eiCompare::ei_rxc()}.} +} +\value{ +rpv results in a data.frame +} +\description{ +Create a dataframe from RPV analysis output to facilitate +RPV visualizations. The output dataframe of this function can be used directly +in \code{rpv_plot()}. +} +\examples{ +\donttest{ +#library(eiCompare) +#data("south_carolina") +#prec_election_demog <- south_carolina[1:50,] + +## run rpv analysis +#eiVote <- eiCompare::ei_iter( + # data = prec_election_demog, + # cand_cols = c('pct_mcmaster', 'pct_smith'), + # race_cols = c('pct_white', 'pct_black'), + # totals_col = "total_vap" +#) \%>\% + # rpv_normalize( + # cand_cols = c('pct_mcmaster', 'pct_smith'), + # race_cols = c('pct_white', 'pct_black') + # ) + +## use function to create dataframe from rpv results +#plotDF <- rpv_toDF( +# rpv_results = eiVote, +# model = "ei vap", #since we used ei_iter model normalized with vap denominator +# jurisdiction = "Statewide", +# candidate = c("McMaster", "Smith"), #must be in correct order relative to rpv_results +# preferred_candidate = c("White", "Black"), #must be in correct order rpv_results +# party = c("Republican", "Democratic"), +# election_type = "General", +# year = "2020", +# contest = "Governor" +# ) +} +} +\author{ +Rachel Carroll + +Kassra Oskooii +} From dda995d723e17bbcd30cd66fa9bcedb007503c5d Mon Sep 17 00:00:00 2001 From: Sean Long Date: Wed, 8 Oct 2025 16:33:05 -0700 Subject: [PATCH 3/7] Clean up rpv_toDF, summary, and ei_rxc formatting and comments --- R/ei_rxc.R | 27 ++++++++++++- R/rpv_toDF.R | 100 ++++++++++++++++++++++++++++++++++-------------- man/rpv_toDF.Rd | 2 +- 3 files changed, 98 insertions(+), 31 deletions(-) diff --git a/R/ei_rxc.R b/R/ei_rxc.R index 30c8c76..d0eb862 100644 --- a/R/ei_rxc.R +++ b/R/ei_rxc.R @@ -164,8 +164,9 @@ ei_rxc <- function( chain = seq_len(n_chains), .inorder = TRUE, .packages = c("ei"), - .options.snow = opts) %myinfix% - { + .options.snow = opts + ) %myinfix% { + # Bayes model estimation suppressWarnings( md_out <- ei.MD.bayes( formula = formula, @@ -260,13 +261,22 @@ ei_rxc <- function( chains_pr[, race_indices] <- race_pr } + # Get point estimates and standard errors estimate <- mcmcse::mcse.mat(chains_pr) + + # Get standard deviation of each distribution sds <- apply(chains_pr, 2, stats::sd) + # The upper and lower CI estimates also have standard errors. Here these + # errors are conservatively used to extend the 95% confidence bound further + + # Set bounds according to if (eiCompare_class) { + # eiCompare class object reports fixed CIs ci_lower <- 0.025 ci_upper <- 0.975 } else { + # Get upper, lower CI limits ci_lower <- (1 - ci_size) / 2 ci_upper <- 1 - ci_lower if (verbose) { @@ -274,18 +284,28 @@ ei_rxc <- function( message(paste("Setting CI upper bound equal to", ci_upper)) } } + + # Lower CI estimate lower <- mcmcse::mcse.q.mat(chains_pr, q = ci_lower) lower_est <- lower[, 1] lower_se <- lower[, 2] lower <- lower_est - lower_se + + # Upper CI estimate upper <- mcmcse::mcse.q.mat(chains_pr, q = ci_upper) upper_est <- upper[, 1] upper_se <- upper[, 2] upper <- upper_est + upper_se + + # Get race and cand cols for the final table cand_col <- rep(cand_cols, each = length(race_cols)) race_col <- rep(race_cols, times = length(cand_cols)) + + # Put names on chains_pr names <- paste(cand_col, race_col, sep = "_") colnames(chains_pr) <- names + + # Create, name an output table results_table <- data.frame(cbind(estimate[, 1], sds, lower, upper)) results_table <- cbind(cand_col, race_col, results_table) if (!eiCompare_class) { @@ -305,7 +325,10 @@ ei_rxc <- function( } if (!eiCompare_class) { + # Match expected output results_table <- get_md_bayes_gen_output(results_table) + + # Return results and chains if requested if (ret_mcmc) { return(list(table = results_table, chains = chains_pr)) } else { diff --git a/R/rpv_toDF.R b/R/rpv_toDF.R index 0c49416..0a7cfa5 100644 --- a/R/rpv_toDF.R +++ b/R/rpv_toDF.R @@ -3,7 +3,7 @@ #'@author Rachel Carroll #'@author Kassra Oskooii -#' @title Transform RPV results from \code{eiCompare} into a simple dataframe +#' @title Transform RPV results into a simple dataframe #' object #' #' @description Create a dataframe from RPV analysis output to facilitate @@ -67,12 +67,28 @@ #'# ) #' } - -rpv_toDF <- function (rpv_results = NULL, model = NULL, jurisdiction = "", - preferred_candidate = "", party = "", election_type = "", - year = "", contest = "", candidate = "") -{ +rpv_toDF <- function( + rpv_results = NULL, + model = NULL, + jurisdiction = "", + preferred_candidate = "", + party = "", + election_type = "", # general or primary + year = "", + contest = "", #e.g. "Senate" + candidate = "" # cand names + ) { + + # ------------------------- Initialize dataframe --------------------------- + + # If rxc or eiiter output + # NOTE: This new way makes a dataframe from each object of summary(rpv_results) + # list then joins them. This is so if the summary(rpv_results) list + # objects have cands in different orders, it doesn't get messed up. if (inherits(rpv_results, "eiCompare")) { + + # function to use in lapply to make data.frame from each object in + # summary(rpv_results) fun <- function(x) { df <- summary(rpv_results)[[x]] df <- df %>% dplyr::select(-"sd") @@ -80,36 +96,64 @@ rpv_toDF <- function (rpv_results = NULL, model = NULL, jurisdiction = "", df <- data.frame(original_name = row.names(df), df) return(df) } - sink(tempfile()) + + sink(tempfile()) # sink to suppress the print from summary(rpv_results) smry_dfs <- lapply(names(summary(rpv_results)), fun) - rpv_data <- suppressMessages(Reduce(dplyr::inner_join, - smry_dfs)) + rpv_data <-suppressMessages( + Reduce(dplyr::inner_join, smry_dfs) + ) sink() - } - else if (inherits(rpv_results, "data.frame")) { - rpv_data <- data.frame(original_name = row.names(rpv_results), - rpv_results) - } - else { - stop("incorrect class type for argument rpv_results") - } + + # If ci_cvap_full output + } else if ( inherits(rpv_results, "data.frame") ){ + + rpv_data <- data.frame( + original_name = row.names(rpv_results), + rpv_results) + + } else {stop("incorrect class type for argument rpv_results")} + + # ------------------------ Edit col/row names ------------------------- + + #add row names rownames(rpv_data) <- 1:nrow(rpv_data) + + #update col names colnames(rpv_data) <- colnames(rpv_data) %>% stringr::str_to_lower() + newcols <- gsub("mean", "Estimate", colnames(rpv_data)) - # Handle both ci_95_lower and ci_lower naming conventions - newcols <- gsub("ci_95_lower", "Lower_Bound", newcols) - newcols <- gsub("ci_95_upper", "Upper_Bound", newcols) newcols <- gsub("ci_lower", "Lower_Bound", newcols) newcols <- gsub("ci_upper", "Upper_Bound", newcols) + + # # NOTE: should make ei_cvap_full output names match ei_iter/rxc so dont need these + # newcols <- gsub("_pe", ".Estimate", colnames(rpv_data)) + # newcols <- gsub("_ci_95_low", ".Lower_Bound", newcols) + # newcols <- gsub("_ci_95_high", ".Upper_Bound", newcols) + colnames(rpv_data) <- newcols - plotDF <- rpv_data %>% dplyr::mutate(Model = model, Jurisdiction = jurisdiction, - Election_Type = election_type, Year = as.numeric(year), - Contest = contest, Candidate = candidate, Party = party, - Preferred_Candidate = preferred_candidate) %>% tidyr::pivot_longer(cols = grep("\\.", - colnames(rpv_data), value = TRUE), names_to = c("Voter_Race", - ".value"), names_pattern = "(.*)\\.(.*)", names_repair = "unique") + + # --------------------- Create Final Dataframe ----------------------- + + plotDF <- rpv_data %>% + dplyr::mutate(Model = model, + Jurisdiction = jurisdiction, + Election_Type = election_type, + Year = as.numeric(year), + Contest = contest, + Candidate = candidate, + Party = party, + Preferred_Candidate = preferred_candidate + ) %>% + tidyr::pivot_longer( + cols = grep("\\.", + ".value"), names_pattern = "(.*)\\.(.*)", names_repair = "unique") plotDF$Voter_Race <- gsub("^pct_", "", plotDF$Voter_Race) + + # remove "_ei" or "_rxc" from colnames in case user used "name" argument in + # ei_iter() or ei_rxc() colnames(plotDF) <- gsub("_ei", "", colnames(plotDF)) colnames(plotDF) <- gsub("_rxc", "", colnames(plotDF)) - return(plotDF) -} + + return (plotDF) + +} # END rpv_toDF function diff --git a/man/rpv_toDF.Rd b/man/rpv_toDF.Rd index bcfee20..a329232 100644 --- a/man/rpv_toDF.Rd +++ b/man/rpv_toDF.Rd @@ -2,7 +2,7 @@ % Please edit documentation in R/rpv_toDF.R \name{rpv_toDF} \alias{rpv_toDF} -\title{Transform RPV results from \code{eiCompare} into a simple dataframe +\title{Transform RPV results into a simple dataframe object} \usage{ rpv_toDF( From 24bdaff3390d660b1dd823816bd4b22de56c4cc8 Mon Sep 17 00:00:00 2001 From: Sean Long Date: Thu, 9 Oct 2025 17:07:20 -0700 Subject: [PATCH 4/7] final additions, fixed rpv_toDF.R's line 153, updated News.md and Description --- DESCRIPTION | 2 +- NEWS.md | 10 ++++++++++ R/rpv_toDF.R | 12 +++++++----- 3 files changed, 18 insertions(+), 6 deletions(-) diff --git a/DESCRIPTION b/DESCRIPTION index b8e42e0..46f14cd 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -1,7 +1,7 @@ Package: eiCompare Type: Package Title: Compares Different Ecological Inference Methods -Version: 3.0.3 +Version: 3.0.4 Authors@R: c(person(given = "Loren", family = "Collingwood", diff --git a/NEWS.md b/NEWS.md index ba0a0d2..0019e75 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,3 +1,13 @@ +# eiCompare 3.0.4 + +## Package changes + +* incorporated rpv_coef_plot() and rpv_toDF() functions from eiExpand package +* edited ei_iter() to have flexible CI parameters (default is 0.95) using bayestestR for calculation and updated column naming, and to use reproducible parallel processing (.inorder=TRUE) +* edited ei_rxc() with repdocuible parallel processing and changed column naming to fit ei_iter() +* Fixed summary.eiCompare() print behavior +* Added viridis to imports for color visualiztion and updated RoxygenNote to 7.3.2 + # eiCompare 3.0.3 ## Package changes diff --git a/R/rpv_toDF.R b/R/rpv_toDF.R index 0a7cfa5..e2b7259 100644 --- a/R/rpv_toDF.R +++ b/R/rpv_toDF.R @@ -143,14 +143,16 @@ rpv_toDF <- function( Candidate = candidate, Party = party, Preferred_Candidate = preferred_candidate - ) %>% + ) %>% tidyr::pivot_longer( - cols = grep("\\.", - ".value"), names_pattern = "(.*)\\.(.*)", names_repair = "unique") + cols = grep("\\.", colnames(rpv_data), value = TRUE), + names_to = c("Voter_Race",".value"), + names_pattern = "(.*)\\.(.*)", + names_repair = "unique" + ) + plotDF$Voter_Race <- gsub("^pct_", "", plotDF$Voter_Race) - # remove "_ei" or "_rxc" from colnames in case user used "name" argument in - # ei_iter() or ei_rxc() colnames(plotDF) <- gsub("_ei", "", colnames(plotDF)) colnames(plotDF) <- gsub("_rxc", "", colnames(plotDF)) From 3db12d20e73689cef9e4101079eb47968f3eeb77 Mon Sep 17 00:00:00 2001 From: Sean Long Date: Fri, 10 Oct 2025 10:43:22 -0700 Subject: [PATCH 5/7] add south_carolina dataset to eiCompare, needed for rpv_toDF examples --- R/data.R | 4 ++++ data/south_carolina.rda | Bin 0 -> 94704 bytes man/south_carolina.Rd | 16 ++++++++++++++++ 3 files changed, 20 insertions(+) create mode 100644 data/south_carolina.rda create mode 100644 man/south_carolina.Rd diff --git a/R/data.R b/R/data.R index 009abe1..87840d7 100644 --- a/R/data.R +++ b/R/data.R @@ -343,3 +343,7 @@ #' "example_rpvDF" +#' Example election and demographic data from South Carolina 2020 General Elections +#' +"south_carolina" + diff --git a/data/south_carolina.rda b/data/south_carolina.rda new file mode 100644 index 0000000000000000000000000000000000000000..40196592b54ba813156026b0f9c2543d1fa1be82 GIT binary patch literal 94704 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 Date: Fri, 10 Oct 2025 13:58:55 -0400 Subject: [PATCH 6/7] remove rpv_normalize in example since its from eiExpand --- R/rpv_toDF.R | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/R/rpv_toDF.R b/R/rpv_toDF.R index e2b7259..991208a 100644 --- a/R/rpv_toDF.R +++ b/R/rpv_toDF.R @@ -47,11 +47,7 @@ #' # cand_cols = c('pct_mcmaster', 'pct_smith'), #' # race_cols = c('pct_white', 'pct_black'), #' # totals_col = "total_vap" -#' #) %>% -#' # rpv_normalize( -#' # cand_cols = c('pct_mcmaster', 'pct_smith'), -#' # race_cols = c('pct_white', 'pct_black') -#' # ) +#' #) #' #' ## use function to create dataframe from rpv results #' #plotDF <- rpv_toDF( From 593dd200140513f517efe6c46db109f1e85ed970 Mon Sep 17 00:00:00 2001 From: Rachel Carroll Date: Fri, 10 Oct 2025 14:10:22 -0400 Subject: [PATCH 7/7] update rpv_toDF example docs --- man/rpv_toDF.Rd | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/man/rpv_toDF.Rd b/man/rpv_toDF.Rd index a329232..be03f89 100644 --- a/man/rpv_toDF.Rd +++ b/man/rpv_toDF.Rd @@ -69,11 +69,7 @@ in \code{rpv_plot()}. # cand_cols = c('pct_mcmaster', 'pct_smith'), # race_cols = c('pct_white', 'pct_black'), # totals_col = "total_vap" -#) \%>\% - # rpv_normalize( - # cand_cols = c('pct_mcmaster', 'pct_smith'), - # race_cols = c('pct_white', 'pct_black') - # ) +#) ## use function to create dataframe from rpv results #plotDF <- rpv_toDF(