redist_mergesplit | R Documentation |
redist_mergesplit
uses a Markov Chain Monte Carlo algorithm (Carter et
al. 2019; based on DeFord et. al 2019) to generate congressional or legislative redistricting plans
according to contiguity, population, compactness, and administrative boundary
constraints. The MCMC proposal is the same as is used in the SMC sampler
(McCartan and Imai 2023); it is similar but not identical to those used in
the references. 1-level hierarchical Merge-split is supported through the
counties
parameter; unlike in the SMC algorithm, this does not
guarantee a maximum number of county splits.
redist_mergesplit(
map,
nsims,
warmup = if (is.null(init_plan)) 10 else max(100, nsims%/%5),
thin = 1L,
init_plan = NULL,
counties = NULL,
compactness = 1,
constraints = list(),
constraint_fn = function(m) rep(0, ncol(m)),
adapt_k_thresh = 0.99,
k = NULL,
init_name = NULL,
verbose = FALSE,
silent = FALSE
)
map |
A |
nsims |
The number of samples to draw, including warmup. |
warmup |
The number of warmup samples to discard. Recommended to be at least the first 20% of samples, and in any case no less than around 100 samples, unless initializing from a random plan. |
thin |
Save every |
init_plan |
The initial state of the map. If not provided, will default to
the reference map of the |
counties |
A vector containing county (or other administrative or
geographic unit) labels for each unit, which may be integers ranging from 1
to the number of counties, or a factor or character vector. If provided,
the algorithm will generate maps tend to follow county lines. There is no
strength parameter associated with this constraint. To adjust the number of
county splits further, or to constrain a second type of administrative
split, consider using |
compactness |
Controls the compactness of the generated districts, with higher values preferring more compact districts. Must be nonnegative. See the 'Details' section for more information, and computational considerations. |
constraints |
A list containing information on constraints to implement. See the 'Details' section for more information. |
constraint_fn |
A function which takes in a matrix where each column is a redistricting plan and outputs a vector of log-weights, which will be added the the final weights. |
adapt_k_thresh |
The threshold value used in the heuristic to select a
value |
k |
The number of edges to consider cutting after drawing a spanning tree. Should be selected automatically in nearly all cases. |
init_name |
a name for the initial plan, or |
verbose |
Whether to print out intermediate information while sampling. Recommended. |
silent |
Whether to suppress all diagnostic information. |
This function draws samples from a specific target measure, controlled by the
map
, compactness
, and constraints
parameters.
Key to ensuring good performance is monitoring the acceptance rate, which
is reported at the sample level in the output.
Users should also check diagnostics of the sample by running
summary.redist_plans()
.
Higher values of compactness
sample more compact districts;
setting this parameter to 1 is computationally efficient and generates nicely
compact districts.
redist_mergesplit
returns an object of class
redist_plans
containing the simulated plans.
Carter, D., Herschlag, G., Hunter, Z., and Mattingly, J. (2019). A merge-split proposal for reversible Monte Carlo Markov chain sampling of redistricting plans. arXiv preprint arXiv:1911.01503.
McCartan, C., & Imai, K. (2023). Sequential Monte Carlo for Sampling Balanced and Compact Redistricting Plans. Annals of Applied Statistics 17(4). Available at \Sexpr[results=rd]{tools:::Rd_expr_doi("10.1214/23-AOAS1763")}.
DeFord, D., Duchin, M., and Solomon, J. (2019). Recombination: A family of Markov chains for redistricting. arXiv preprint arXiv:1911.05725.
data(fl25)
fl_map <- redist_map(fl25, ndists = 3, pop_tol = 0.1)
sampled_basic <- redist_mergesplit(fl_map, 10000)
sampled_constr <- redist_mergesplit(fl_map, 10000, constraints = list(
incumbency = list(strength = 1000, incumbents = c(3, 6, 25))
))
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.