Compares Ecological Inference, Goodman, Rows by Columns Estimates
Compares estimates from three ecological inference routines, based on King (1997) <ISBN: 0691012407>, <https://gking.harvard.edu/eicamera/kinroot.html>; King (2004) <ISBN: 0521542804>, <https://gking.harvard.edu/files/abs/ecinf04-abs.shtml>.
eiCompare is an R package built to help practitioners and academics quantify racially polarized voting (RPV) with ease and confidence. It builds on top of several existing packages, augmenting their utility for measuring racially polarized voting in elections. Underlying packages include
eiCompare was built with several types of users in mind:
- Expert witnesses in voting rights litigation who need to accurately quantify vote dilution in an area and present the results convincingly to a judge or jury.
- National voting rights advocacy organizations trying to identify elections across the country where vote dilution might be at play.
- Grassroots organizations looking for data-driven tools to fuel their fight against vote dilution at the local level.
- Academics who study the causes and consequences of vote dilution and racially polarized voting.
The Voting Rights Team of the 2020 University of Washington Data Science for Social Good Fellowship program worked throughout the summer to develop the latest iteration of the package. Highlights from the update include:
- Functions for geocoding addresses on voter files.
- Improved accuracy of BISG estimation through surname preprocessing.
- Refactored code for ecological inference functions.
- Parallel processing to speed up ecological inference and geocoding.
- New built-in visualizations of EI results and estimation diagnostics.
- Performance analysis tools for comparing different election maps.
- Functions for preprocessing address data, surname data, data for ecological inference.
See here for a full list of new features.
CRAN submission is currently underway. Check back soon for instructions on installation from CRAN.
From Github (development version)
Install latest development version with:
eiCompare highlights the utility of this package for comparing different ecological inference estimates. For instance, the following code compares iterative and RxC estimates of racial voting preferences in a stylized version of the 2018 Georgia gubernatorial election:
library(eiCompare) data("gwinnett_ei") iter <- ei_iter( data = gwinnett_ei, cand_cols = c("kemp", "abrams", "metz"), race_cols = c("white", "black", "other"), totals_col = "turnout", name = "Iterative EI", ) rxc <- ei_rxc( data = gwinnett_ei, cand_cols = c("kemp", "abrams", "metz"), race_cols = c("white", "black", "other"), totals_col = "turnout", name = "RxC EI", ) plot(iter, rxc)
The top panel shows that the majority of white voters voted for Brian Kemp, who won this election. The middle panel shows the estiamted preferences of black voters. The estimates indicate that black voters strongly preferred Stacey Abrams over Brian Kemp.
Please refer to the package vignettes for detailed walkthroughs of how this package facilitates ecological inference. To view these in Rstudio, enter
browseVignettes("eiCompare") in the console after installing the package.
Functions in eiCompare
|corona||Corona 2014 Election Results|
|ei_iter||Iterative EI Estimation|
|fips_extract||Extract geographic unit codes from FIPS codes.|
|ei_rc_congruence||Congruence for 2x2|
|lac_10||Los Angeles County 2010 Election Results|
|betas_for_return||Manipulate precinct results to get betas as from ei_est_gen|
|ga_geo||Voter file information that has been geocoded|
|check_args||Check for missing essential arguments from an ei function|
|lambda_two_compare||Lambda Two Compare|
|bayes_table_make||EI:RxC Bayes Table Make|
|add_split_comma||Pre-processes voter file by checking zipcode, and any special characters or typos within the address.|
|ei_rc_good_table||Create EI Comparison Table|
|latlong2fips||Latitude-Longitude Coordinates to FIPS Geocode|
|map_interactive||This function allows the user to plot an interactive map of the voter longitude and latitude points.|
|ei_reg_bayes_conf_int||Creates EI Reg Bayes Tables|
|get_md_bayes_gen_output||Get md_bayes_gen() output from ei_rxc() output|
|ei_est_gen||Iterative EI Estimation|
|ei_rxc||EI Bayesian simultaneous estimation for multiple races and candidates|
|goodman_generalize||Goodman Regression Generalization|
|get_multi_barreled_surnames||Gets multi-barreled surnames from a voter file.|
|ny_fips||New York State FIPS codes|
|map_shape_file||Function for making basic choropleth maps of shape_file using the tigris package and ggplot|
|elect_algebra||Election Algebra for 2x2 Case|
|gwin_fulton_shape||Shape file information for Gwinnett and Fulton counties in Georgia|
|get_unique_special_characters||Gets special characters in a column of names.|
|ny_voter||New York Voter File Sample|
|resolve_missing_vals||Remove / Impute NAs in an EI dataset|
|map_shape_points||Function for making basic choropleth maps of longitude and latitude points using the tigris package and ggplot|
|concat_streetname||Pre-processes voter file by checking zipcode, and any special characters or typos within the address.|
|cor_06||Corona 2006 Election Results|
|get_word_count||Counts the number of words per row in the column of a dataframe.|
|md_bayes_gen||MD Bayes Generalize|
|md_bayes_table||MD Bayes Generalize Table Creation|
|rockland_census||Rockland County, NY, Census demographic dataset.|
|merge_voter_file_to_shape||Merges a voter file to a shape file.|
|dedupe_voter_file||De-duplicates a voter file.|
|plot.eiCompare||Print a plot comparing the predictions of EI outputs.|
|empty_ei_df||Create a dataframe with NA values for racial and candidate counts.|
|sum_over_cols||Sum row-wise over columns in a dataframe|
|eiCompare-package||Compares EI, Goodman, RxC Estimates|
|ramapo2018||East Ramapo School District 2018 Voter File|
|summary.eiCompare||Print a summary of an eiCompare object|
|get_results_table||Get results dataframe from a list of results as from ei_est_gen|
|ersd_maps||East Ramapo School District Proposed Maps|
|get_special_character_surnames||Gets surnames containing special characters.|
|plot_bivariate||Plot bivariate relationships between all combinations of candidates and race/ethnicities|
|race_cand_cors||Table of bivariate correlations|
|mbd_two||Multinomial Dirichlet Bayes Draw Two Candidates|
|remove_nas||Remove missing values from dataset and return warning if any removed|
|standardize_votes||Computes proportions for returning by clean_race and clean_cand|
|mbd_two_minority||Multinomial Dirichlet Bayes Draw Two Candidates, and White/Minority voters|
|performance_analysis||Performs a performance analysis using a voter file, census shape, and district shape.|
|check_diffs||Internal function that checks for adequate closeness between sums of race/candidate columns and provided vote totals.|
|split_add_nocommas||Pre-processes voter file by checking zipcode, and any special characters or typos within the address.|
|rxc_formula||Make rxc formula|
|precinct_agg_combine||Aggregates racial estimates across geographic units|
|predict_race_multi_barreled||Predicts, for one row in a voter file, the probability of a voter having a certain race by averaging over each "barrel" of the surname.|
|strip_special_characters||Strips special characters from a voter file.|
|ei_good||EI iterative estimation via Goodman's Regression|
|concat_final_address||This function concatenate the final address|
|ei_homog||Homogeneous Precinct Analysis|
|georgia_census||Fulton County and Gwinnett County, GA, Census demographic dataset.|
|get_ei_iter_se||Get 2x2 ei standard errors from ei object Works according to the aggregate formula in King, 1997, section 8.3|
|md_bayes_draw||MD Bayes Draw|
|gwinnett||Election results and racial turnout data for Gwinnett County, Georgia, US|
|gwinnett_ei||Stylized dataset of election results and turnout by race in Gwinnett county, 2018 Georgia gubernatorial election.|
|md_bayes_draw_lambda||MD Bayes Draw Lambda|
|run_geocoder||Geocoding voter file addresses with coordinates (latitude and longitude) and/or census geographies.|
|surname_summary||Briefly summarizes the surnames in a voter file.|
|surname_match||Determines which surnames match to the Census list.|
|tidy_voter_file_wru||Tidies a voter file for WRU.|
|wru_predict_race_wrapper||Prepares a voter file for the WRU predict_race function, and then predicts race.|
|dedupe_precincts||Remove or identify duplicated precincts|
Vignettes of eiCompare
Last month downloads
|Packaged||2020-09-15 03:53:06 UTC; lorencollingwood|
|Date/Publication||2020-09-18 15:00:02 UTC|
|imports||bayestestR , censusxy , coda , data.table , doParallel , dplyr , foreach , ggplot2 , graphics , leaflet , magrittr , mcmcse , methods , overlapping , purrr , rlang , sf , stringr , tidyr , tidyselect|
|depends||ei , eiPack , R (>= 3.5.0) , wru|
|suggests||knitr , opencage , plyr , RColorBrewer , reshape2 , RJSONIO , rmarkdown , testthat , tigris|
|Contributors||Ari Decter-Frain, Hikari Murayama, Pratik Sachdeva, Juandalyn Burke, Scott Henderson, Spencer Wood, Matt Barreto|
Include our badge in your README