Calculate Polsby Popper Compactness

comp_polsby(
  plans,
  shp,
  use_Rcpp,
  perim_path,
  perim_df,
  epsg = 3857,
  ncores = 1
)

Arguments

plans

A redist_plans object or plans_matrix where each row indicates a district assignment and each column is a plan.

shp

A redist_map object, tibble, or data frame with an sf geometry column.

use_Rcpp

If TRUE (the default for more than 8 plans), precompute boundaries shared by each pair of units and use them to quickly compute the compactness score.

perim_path

Path to perimeter tibble saved by prep_perims()

perim_df

Tibble of perimeters from prep_perims()

epsg

Numeric EPSG code to use to project the shapefile, if needed. Default is 3857.

ncores

Integer number of cores to use. Default is 1.

Value

A numeric vector. Can be shaped into a district-by-plan matrix.

References

Cox, E. 1927. A Method of Assigning Numerical and Percentage Values to the Degree of Roundness of Sand Grains. Journal of Paleontology, 1(3), 179-183.

Polsby, Daniel D., and Robert D. Popper. 1991. “The Third Criterion: Compactness as a procedural safeguard against partisan gerrymandering.” Yale Law & Policy Review 9 (2): 301–353.

Examples

data(nh)
data(nh_m)
# For a single plan:
comp_polsby(plans = nh$r_2020, shp = nh)
#> [1] 0.2324375 0.1582763

# Or many plans:
comp_polsby(plans = nh_m[, 3:5], shp = nh)
#> [1] 0.2353849 0.3494821 0.4321098 0.2671355 0.3515524 0.1762865