createRandomPlan {BARD}R Documentation

Create an initial plan for later refinement

Description

These methods create plans starting with random seeds. These plans should be refined with one of the refinement functions.

Usage

createRandomPlan(basemap,ndists)
createRandomPopPlan(basemap,ndists,predvar="POP")
createAssignedPlan(basemap,predvar="BARDPlanID")
createKmeansPlan(basemap,ndists)
createWeightedKmeansPlan( basemap, ndists, centers = c(), weightVar = NULL,
                 trimfactor = 2.5, smallBlock = c("cap", "closest"))
createContiguousPlan(basemap, ndists, predvar = "POP", threshold = 0.05,
                 ssize = 20, usebb = TRUE, maxtries = (10/threshold),
                 neighborstarts = TRUE, fillholes = TRUE)

Arguments

basemap Bard basemap from which to create plan
ndists number of districts to create
predvar name of variable of interest (for createAssignedPlan can be a vector or block assignments)
threshold tolerance threshold for districts being "equal" in population
ssize check up to ssize neighbors at random, shoosing the one with the fewest foreign neighbors
usebb use bounding box compactness
maxtries maximum number of tries to create plan
neighborstarts whether to start new district at neighbors of existing districts
fillholes fill any holes remaining
centers suggested centers for weighted kmeans
weightVar name of weighting variable in basemap, for weighting
trimfactor rescales and trims weights, see below
smallBlock how weighted kmeans handles blocks that are weighted to 0: caps minimimum weights at 1; closest post-assigns zero-weighted blocks to the nearest district

Details

createKmeansPlan create plans through applying kmeans to the center of each polygon. It tends toward contiguity, but is not guaranteed to produce contiguous plans

createRandomPlan creates plans by random block assignment, as per Grofman [1982], these are highly non-contiguous

createRandomPopPlan creates plans by random block assignment, but caps each district at a population threshold. It will not add a block to a district in formation that will cause the plan to go more than (1+threshold)/(totalpopulation/plan), unless that block would cause all districts to exceed their thresholds. With blocks of single individuals, and a threshold of 0 this is equivalent to the random assignment discusses. in Bush v. Vera [2004]

createContiguousPlan duplicates the algorthim in Cirincione, et. al (see the references). As per pg 196:

``The first algorithm, the contiguity algorithm, begins by randomly selecting a block group to serve as the base of the first district. It then constructs a perimeter list containing the unassigned block groups contiguous to the base block group. The program then randomly selects a block group from the perimeter list to add to the emerging district and adjusts the perimeter list. This process continues until the population of the emerging district achieves the desired district population level. (A newly created district is thrown out if its population deviates by more than 1 from the ideal district average population, which in this case is 581,117.) The next district begins with the random selection of a census block group from among those that touch one of the completed districts.''

(Note that ssize was not included as an option, originally)

createWeightedKmeansPlan weights kmeans by a particular variable, most often used with population. This is implemented through block replication, so to limit memory use, the weights are rescaled so that minimum and maximum weights span approximately trimfactor orders of magnitude. Zero-weight blocks can either be capped at 1 an incorporated in the kmeans calculation, or left out and assigned to the closest district, based on the value of smallblock.

Value

Returns a bard plan. Note that this plan is not guaranteed to be contiguous, or equipopulous.

Author(s)

Micah Altman Micah_Altman@harvard.edu http://www.hmdc.harvard.edu/micah_altman/

References

Micah Altman, 1997. ``Is Automation the Answer? The Computational Complexity of Automated Redistricting'', Rutgers Computer and Technology Law Journal 23 (1), 81-142 http://www.hmdc.harvard.edu/micah_altman/pubpapers.shtml

Altman, M. 1998. Modeling the Effect of Mandatory District Compactness on Partisan Gerrymanders, Political Geography 17:989-1012.

Bush v. Vera, 517 U.S. 952 (1996).

Micah Altman and Michael P. McDonald. 2004. A Computation Intensive Method for Detecting Gerrymanders Paper presented at the annual meeting of the The Midwest Political Science Association, Palmer House Hilton, Chicago, Illinois, Apr 15, 2004. http://www.allacademic.com/meta/p83108_index.html

C. Cirincione , T.A. Darling, and T.G. O'Rourke. 2000. ``Assessing South Carolina's 1990's Congressional Districting.'' Political Geography 19: 189-211.

Grofman, B. 1982, "For single Member Districts Random is Not Equal", In Representation and Redistricting Issues, ed. B. Grofman, A. Lijphart, R. McKay, H. Scarrow. Lexington, MA: Lexington Books.

Micah Altman, Karin Mac Donald, and Michael P. McDonald, 2005. ``From Crayons to Computers: The Evolution of Computer Use in Redistricting'' Social Science Computer Review 23(3): 334-46.

See Also

Interactive editing editPlanInteractive Plan refinement algorithms refineGreedyPlan, refineAnnealPlan, refineGenoudPlan, refineNelderPlan

Examples

  # read in a shapefile with demographic data
    suffolk.map <- importBardShape(
      file.path(system.file("shapefiles", package="BARD"),"suffolk_tracts")
  )
    
    
  # choose number of districts
  ndists <- 5
  
  # create some initial plans
  kplan <- createKmeansPlan(suffolk.map,ndists)
  rplan <- createRandomPlan(suffolk.map,ndists)
  aplan <- createAssignedPlan(suffolk.map,predvar=1:ndists)
  wkplan<-createWeightedKmeansPlan(suffolk.map,ndists,weightVar="POP")

  ## Not run: 
        cplan <- createContiguousPlan(suffolk.map,ndists)
  
## End(Not run)
  
  plot(kplan)
  summary(kplan)
  plot(summary(rplan))

[Package BARD version 1.03 Index]