View source: R/elect_algebra.R
elect_algebra | R Documentation |
Creates data.frame() table of algebraically defined white/non-white preferences for candidates. Typically used when analyst has high confidence in white turnout and voting behavior but needs to deduce minority voting behavior when only CVAP available. First, estimate white/non-white turnout using ei/rxc. Second, gather overall CVAP numbers. Third, estimate candidate preference by white/non-white using ei/rxc. Then enter values into function.
elect_algebra(totals, c1_ei_res, c2_ei_res, cand_names)
totals |
data.frame(), dimensions 2x2. Row 1 is white, row 2 is minority. First column is turnout (probably estimated from ei or rxc; e.g.: c(.2876, .1529)); second column is Citizen Voting Age Population (CVAP); e.g.: c(36472, 23851) |
c1_ei_res |
numeric vector of 2x2 EI candidate results by white voters, estimated from ei or rxc; e.g. c(0.2796, 0.7204) = whites voted 28% for candidate-a and 72% for candidate-b |
c2_ei_res |
numeric vector of 2x2 EI candidate results by non-white voters, estimated from ei or rxc |
cand_names |
Character vector of candidate names used for output, e.g.: c("Collingwood", "Barreto") |
elect_algebra
Table with estimated candidate A/B votes by race, with columns for percent vote too
Loren Collingwood <loren.collingwood@ucr.edu>; <loren.collingwood@gmail.com>
Matt Barreto <barretom@ucla.edu>
toy <- data.frame(
precinct = 1:10,
cvap_white = c(3669, 3349, 5726, 5229, 3862, 2079, 6109, 2098, 2397, 1954),
cvap_non_white = c(398, 2313, 449, 176, 3138, 6887, 3987, 831, 1493, 4179),
voted = c(1028, 829, 2350, 1473, 2552, 1029, 2207, 723, 1053, 878),
novote = c(3039, 4833, 3825, 3932, 4448, 7937, 7889, 2206, 2837, 5255),
total = c(4067, 5662, 6175, 5405, 7000, 8966, 10096, 2929, 3890, 6133),
pct_voted = c(0.2527662, 0.1464147, 0.3805668, 0.2725254, 0.3645714,
0.1147669, 0.2186014, 0.2468419, 0.2706941, 0.1431600),
pct_novote = c(0.7472338, 0.8535853, 0.6194332, 0.7274746, 0.6354286,
0.8852331, 0.7813986, 0.7531581, 0.7293059, 0.8568400),
pct_white = c(0.9021392, 0.5914871, 0.9272874, 0.9674376, 0.5517143,
0.2318760, 0.6050911, 0.7162854, 0.6161954, 0.3186043),
pct_nonwhite = c(0.0978608, 0.4085129, 0.0727126, 0.0325624, 0.4482857,
0.7681240, 0.3949089, 0.2837146, 0.3838046, 0.6813957),
cand_a = c(326, 745, 46, 66, 620, 830, 534, 388, 792, 617),
cand_b = c(702, 84, 2304, 1407, 1932, 199, 1673, 335, 261, 261),
pct_cand_a_voters = c(0.31712062, 0.89867310, 0.01957447, 0.04480652,
0.24294671, 0.80660836, 0.24195741, 0.53665284,
0.75213675, 0.70273349),
pct_cand_b_voters = c(0.6828794, 0.1013269, 0.9804255, 0.9551935, 0.7570533,
0.1933916, 0.7580426, 0.4633472, 0.2478632, 0.2972665)
)
# NOT RUN: Estimate white/non-white Turnout #
#summary(ei_rxc(data = toy,
# cand_cols = c("pct_voted","pct_novote"),
# race_cols = c("pct_white", "pct_nonwhite"),
# totals = "total",
# seed = 973472)
# )
# Turnout by Race, Estimated: 27-28% White Turnout; 16-17% Minority Turnout
# Citizen Voting Age Population for Whole Jurisdiction; White, Non-White
totals <- data.frame(turnout = c(0.2786, 0.1663), cvap = c(36472, 23851))
# Not Run: Estimate Vote Choice
# set.seed(197485)
#summary(ei_rxc(data = toy,
# cand_cols = c("pct_cand_a_voters", "pct_cand_b_voters"),
# race_cols = c("pct_white", "pct_nonwhite"),
# totals_col = "total")
# )
#Extract Results
c1_ei_res <- c(0.2796, 0.7204)
c2_ei_res <- c(0.7013, 0.2987)
#Set up vectors for function #
cand_names <- c("Cand A", "Cand B")
# Execute elect_algebra()
elect_algebra(totals = totals, c1_ei_res, c2_ei_res, cand_names)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.