Closed CoryMcCartan closed 2 years ago
Example R-hats from district 3 (D-leaning, Columbus)
R-hat values for summary statistics:
pop_overlap total_vap plan_dev comp_edge comp_polsby pop_hisp pop_white pop_black
1.01386 1.00213 1.10217 1.02453 1.00054 1.00316 1.01741 1.02974
pop_aian pop_asian pop_nhpi pop_other pop_two vap_hisp vap_white vap_black
1.01408 1.01068 1.00771 1.00066 1.02087 1.00206 1.02455 1.03000
vap_aian vap_asian vap_nhpi vap_other vap_two pre_16_rep_tru pre_16_dem_cli uss_16_rep_por
1.03385 1.00608 1.00719 1.00296 1.00027 0.99981 1.00151 1.00098
uss_16_dem_str uss_18_rep_ren uss_18_dem_bro gov_18_rep_dew gov_18_dem_cor atg_18_rep_yos atg_18_dem_det sos_18_rep_lar
1.00170 1.00054 1.00479 1.00037 1.00360 1.00045 1.00280 1.00044
sos_18_dem_cly pre_20_rep_tru pre_20_dem_bid arv_16 adv_16 arv_18 adv_18 arv_20
1.00305 0.99991 1.00248 1.00042 1.00091 1.00044 1.00341 0.99991
adv_20 county_splits muni_splits ndv nrv ndshare e_dvs pr_dem
1.00248 1.03256 1.00399 1.00232 1.00011 0.99983 0.99983 1.00004
e_dem pbias egap splits_1 splits_2
0.99989 1.01206 1.00020 1.00347 1.00802
and District 12 (R-leaning, eastern Ohio)
R-hat values for summary statistics:
pop_overlap total_vap plan_dev comp_edge comp_polsby pop_hisp pop_white pop_black
1.01386 1.01071 1.10217 1.02453 1.01911 1.02902 1.01505 1.00975
pop_aian pop_asian pop_nhpi pop_other pop_two vap_hisp vap_white vap_black
1.02541 1.02104 1.01608 1.01986 1.00405 1.03015 1.01558 1.01054
vap_aian vap_asian vap_nhpi vap_other vap_two pre_16_rep_tru pre_16_dem_cli uss_16_rep_por
1.03664 1.02317 1.00964 1.01961 1.00356 1.00362 1.00496 1.01657
uss_16_dem_str uss_18_rep_ren uss_18_dem_bro gov_18_rep_dew gov_18_dem_cor atg_18_rep_yos atg_18_dem_det sos_18_rep_lar
1.00161 1.02106 1.04049 1.01048 1.00423 1.01601 1.05720 1.01362
sos_18_dem_cly pre_20_rep_tru pre_20_dem_bid arv_16 adv_16 arv_18 adv_18 arv_20
1.04484 1.01143 1.01765 1.00087 1.00087 1.01548 1.03615 1.01143
adv_20 county_splits muni_splits ndv nrv ndshare e_dvs pr_dem
1.01765 1.03256 1.00399 1.00785 1.00382 1.03176 1.01758 1.00345
e_dem pbias egap splits_1 splits_2
0.99989 1.01206 1.00020 1.00347 1.00802
Looks good given the additional Rhats.
Redistricting requirements
In Ohio, districts must, under Article XIX of the Ohio Constitution:
Interpretation of requirements
We enforce a maximum population deviation of 0.5%. We employ a variety of anti-split constraints, both in pre-processing and in simulation, as detailed below. Ohio also has one VRA district in Cuyahoga county.
Data Sources
Data for Ohio comes from the ALARM Project's 2020 Redistricting Data Files. Ohio has many precincts which are not geographically contiguous, especially in and around Franklin County (Columbus). We do not attempt to split or otherwise correct these precincts, which may lead some simulated districts to be geographically noncontiguous, despite being contiguous according to the precinct adjacency graph.
Pre-processing Notes
We merge the precincts in all counties which are not split by the enacted plan. We merge the cities of Cincinnati and Cleveland.
Simulation Notes
We sample 40,000 districting plans for Ohio across two runs of the SMC algorithm, then filter down to 5,000 total plans. We begin by sampling plans in Cuyahoga county to generate a VRA district with BVAP at least 40%. Then we sample the remaining districts. We apply a Gibbs constraint to discourage multiple splits (a penalty of 100.0 for 3 splits, and 3.0 for 2 splits) We apply a Gibbs constraint to discourage splitting Columbus (a penalty of 0.5 per splitting district) We use population tempering of 0.01 to encourage efficiency.
Validation
Extra validation:
NOTE: high partisan R-hats are unique to District 1, which is wedged inside Hamilton county. R-hats are well below 1.05 for other spot-checked districts. And given ≤ 1.05 for population totals, not concerned about a value of ~ 1.1 for
pop_dev
Checklist
TODO
lines from the template code have been removedenforce_style()
to format my coderedist_map
andredist_plans
objects, and summary statistics) have been edited@christopherkenny @kosukeimai — check re: case.