Skip to content

Instantly share code, notes, and snippets.

@mattt
Last active November 29, 2025 18:16
Show Gist options
  • Select an option

  • Save mattt/c854c34d014307aa93962da8a8cc5561 to your computer and use it in GitHub Desktop.

Select an option

Save mattt/c854c34d014307aa93962da8a8cc5561 to your computer and use it in GitHub Desktop.
A survey of various compactness metrics for counties in the United States
# /// script
# requires-python = ">=3.12"
# dependencies = [
# "geopandas>=1.1.1",
# "numpy>=2.3.5",
# "scipy>=1.16.3",
# "shapely>=2.1.2",
# ]
# ///
import geopandas as gpd
import numpy as np
import pandas as pd
from shapely.geometry import Point
# Load US county geometries from data folder
# https://www.census.gov/cgi-bin/geo/shapefiles/index.php?year=2025&layergroup=Counties+%28and+equivalent%29
counties = gpd.read_file("data/tl_2025_us_county/tl_2025_us_county.shp")
# FIPS code to state name mapping
FIPS_TO_STATE = {
"01": "Alabama",
"02": "Alaska",
"04": "Arizona",
"05": "Arkansas",
"06": "California",
"08": "Colorado",
"09": "Connecticut",
"10": "Delaware",
"11": "District of Columbia",
"12": "Florida",
"13": "Georgia",
"15": "Hawaii",
"16": "Idaho",
"17": "Illinois",
"18": "Indiana",
"19": "Iowa",
"20": "Kansas",
"21": "Kentucky",
"22": "Louisiana",
"23": "Maine",
"24": "Maryland",
"25": "Massachusetts",
"26": "Michigan",
"27": "Minnesota",
"28": "Mississippi",
"29": "Missouri",
"30": "Montana",
"31": "Nebraska",
"32": "Nevada",
"33": "New Hampshire",
"34": "New Jersey",
"35": "New Mexico",
"36": "New York",
"37": "North Carolina",
"38": "North Dakota",
"39": "Ohio",
"40": "Oklahoma",
"41": "Oregon",
"42": "Pennsylvania",
"44": "Rhode Island",
"45": "South Carolina",
"46": "South Dakota",
"47": "Tennessee",
"48": "Texas",
"49": "Utah",
"50": "Vermont",
"51": "Virginia",
"53": "Washington",
"54": "West Virginia",
"55": "Wisconsin",
"56": "Wyoming",
"60": "American Samoa",
"66": "Guam",
"69": "Northern Mariana Islands",
"72": "Puerto Rico",
"78": "U.S. Virgin Islands",
}
# Add state name column if it doesn't exist
if "STATENAME" not in counties.columns or counties["STATENAME"].isna().all():
counties["STATENAME"] = counties["STATEFP"].map(FIPS_TO_STATE)
def polsby_popper(geometry):
"""Polsby-Popper: 4π × (Area / Perimeter²)"""
area = geometry.area
perimeter = geometry.length
return (4 * np.pi * area) / (perimeter**2)
def schwartzberg(geometry):
"""Schwartzberg: 1 / (Perimeter / Circumference of equal-area circle)"""
area = geometry.area
perimeter = geometry.length
circumference = 2 * np.pi * np.sqrt(area / np.pi)
return circumference / perimeter
def reock(geometry):
"""Reock: Area / Area of minimum bounding circle"""
# Get minimum bounding circle using the minimum_rotated_rectangle approach
# For a more accurate MBC, we use the convex hull and find the smallest circle
# that contains all points
coords = list(
geometry.convex_hull.exterior.coords[:-1]
) # Remove duplicate last point
if len(coords) < 2:
return 1.0
# Find the two points farthest apart (diameter of minimum bounding circle)
max_dist = 0
for i, p1 in enumerate(coords):
for p2 in coords[i + 1 :]:
dist = Point(p1).distance(Point(p2))
if dist > max_dist:
max_dist = dist
mbc_area = np.pi * (max_dist / 2) ** 2
return geometry.area / mbc_area if mbc_area > 0 else 0
def convex_hull_score(geometry):
"""Convex Hull: Area / Area of convex hull"""
hull = geometry.convex_hull
return geometry.area / hull.area
# Apply to all counties
counties["polsby_popper"] = counties.geometry.apply(polsby_popper)
counties["schwartzberg"] = counties.geometry.apply(schwartzberg)
counties["reock"] = counties.geometry.apply(reock)
counties["convex_hull"] = counties.geometry.apply(convex_hull_score)
# Display summary statistics
print(f"Loaded {len(counties)} counties")
print("\nCompactness Statistics:")
print(
f"Polsby-Popper: mean={counties['polsby_popper'].mean():.4f}, median={counties['polsby_popper'].median():.4f}"
)
print(
f"Schwartzberg: mean={counties['schwartzberg'].mean():.4f}, median={counties['schwartzberg'].median():.4f}"
)
print(
f"Reock: mean={counties['reock'].mean():.4f}, median={counties['reock'].median():.4f}"
)
print(
f"Convex Hull: mean={counties['convex_hull'].mean():.4f}, median={counties['convex_hull'].median():.4f}"
)
# Top 50 most irregular counties (lowest compactness scores)
# Sort by Polsby-Popper (ascending - lower = more irregular)
most_irregular = counties.nsmallest(50, "polsby_popper")
print("\n" + "=" * 80)
print("Top 50 Most Irregular Counties (by Polsby-Popper score)")
print("=" * 80)
print(
f"{'Rank':<6} {'County':<30} {'State':<15} {'Polsby-Popper':<15} {'Schwartzberg':<15} {'Reock':<15} {'Convex Hull':<15}"
)
print("-" * 80)
for idx, (_, county) in enumerate(most_irregular.iterrows(), 1):
county_name = county.get("NAME", "Unknown")
state_fp = county.get("STATEFP", "")
state_name = county.get("STATENAME", "")
# Use state name from mapping if not in data
if not state_name or pd.isna(state_name):
state_name = FIPS_TO_STATE.get(
state_fp, f"FIPS {state_fp}" if state_fp else "Unknown"
)
state_display = state_name
print(
f"{idx:<6} {county_name:<30} {state_display:<15} "
f"{county['polsby_popper']:<15.6f} {county['schwartzberg']:<15.6f} "
f"{county['reock']:<15.6f} {county['convex_hull']:<15.6f}"
)
# Print results for Multnomah County, OR
multnomah = counties[
(counties["NAME"].str.contains("Multnomah", case=False, na=False))
& (counties["STATEFP"] == "41") # Oregon FIPS code
]
if len(multnomah) == 0:
# Try alternative field names
multnomah = counties[
(counties["NAME"].str.contains("Multnomah", case=False, na=False))
| (counties["NAMELSAD"].str.contains("Multnomah", case=False, na=False))
]
if len(multnomah) > 0:
county = multnomah.iloc[0]
total_counties = len(counties)
# Calculate rankings (1 = most irregular, total_counties = most compact)
pp_rank = (counties["polsby_popper"] < county["polsby_popper"]).sum() + 1
sch_rank = (counties["schwartzberg"] < county["schwartzberg"]).sum() + 1
reock_rank = (counties["reock"] < county["reock"]).sum() + 1
ch_rank = (counties["convex_hull"] < county["convex_hull"]).sum() + 1
# Calculate percentiles (lower percentile = more irregular)
pp_percentile = (pp_rank / total_counties) * 100
sch_percentile = (sch_rank / total_counties) * 100
reock_percentile = (reock_rank / total_counties) * 100
ch_percentile = (ch_rank / total_counties) * 100
# Get medians and means for comparison
pp_median = counties["polsby_popper"].median()
pp_mean = counties["polsby_popper"].mean()
sch_median = counties["schwartzberg"].median()
sch_mean = counties["schwartzberg"].mean()
reock_median = counties["reock"].median()
reock_mean = counties["reock"].mean()
ch_median = counties["convex_hull"].median()
ch_mean = counties["convex_hull"].mean()
print("\n" + "=" * 80)
print("Multnomah County, OR - Compactness Analysis")
print("=" * 80)
print(
f"\n{'Metric':<20} {'Score':<15} {'Rank':<10} {'Percentile':<12} {'vs Median':<15} {'vs Mean':<15}"
)
print("-" * 80)
print(
f"{'Polsby-Popper':<20} {county['polsby_popper']:<15.6f} "
f"{pp_rank}/{total_counties:<9} {pp_percentile:<11.2f}% "
f"{county['polsby_popper'] / pp_median:<14.3f}x "
f"{county['polsby_popper'] / pp_mean:<14.3f}x"
)
print(
f"{'Schwartzberg':<20} {county['schwartzberg']:<15.6f} "
f"{sch_rank}/{total_counties:<9} {sch_percentile:<11.2f}% "
f"{county['schwartzberg'] / sch_median:<14.3f}x "
f"{county['schwartzberg'] / sch_mean:<14.3f}x"
)
print(
f"{'Reock':<20} {county['reock']:<15.6f} "
f"{reock_rank}/{total_counties:<9} {reock_percentile:<11.2f}% "
f"{county['reock'] / reock_median:<14.3f}x "
f"{county['reock'] / reock_mean:<14.3f}x"
)
print(
f"{'Convex Hull':<20} {county['convex_hull']:<15.6f} "
f"{ch_rank}/{total_counties:<9} {ch_percentile:<11.2f}% "
f"{county['convex_hull'] / ch_median:<14.3f}x "
f"{county['convex_hull'] / ch_mean:<14.3f}x"
)
# Overall irregularity assessment
avg_percentile = (
pp_percentile + sch_percentile + reock_percentile + ch_percentile
) / 4
avg_rank = (pp_rank + sch_rank + reock_rank + ch_rank) / 4
print("\n" + "-" * 80)
print("Summary:")
print(f" Average Rank: {avg_rank:.1f} out of {total_counties} counties")
print(f" Average Percentile: {avg_percentile:.1f}%")
print("=" * 80)
else:
print("\nMultnomah County, OR not found. Available columns:")
print(counties.columns.tolist())
# All Oregon counties
oregon_counties = counties[counties["STATEFP"] == "41"].copy()
oregon_counties = oregon_counties.sort_values("polsby_popper", ascending=True)
print("\n" + "=" * 80)
print("All Oregon Counties - Compactness Scores")
print("=" * 80)
print(
f"{'Rank':<6} {'County':<30} {'Polsby-Popper':<15} {'Schwartzberg':<15} {'Reock':<15} {'Convex Hull':<15}"
)
print("-" * 80)
for idx, (_, county) in enumerate(oregon_counties.iterrows(), 1):
county_name = county.get("NAME", "Unknown")
print(
f"{idx:<6} {county_name:<30} "
f"{county['polsby_popper']:<15.6f} {county['schwartzberg']:<15.6f} "
f"{county['reock']:<15.6f} {county['convex_hull']:<15.6f}"
)
# Summary statistics for Oregon
print("\n" + "-" * 80)
print("Oregon Summary Statistics:")
print(f" Total Counties: {len(oregon_counties)}")
print(
f" Polsby-Popper: mean={oregon_counties['polsby_popper'].mean():.4f}, "
f"median={oregon_counties['polsby_popper'].median():.4f}"
)
print(
f" Schwartzberg: mean={oregon_counties['schwartzberg'].mean():.4f}, "
f"median={oregon_counties['schwartzberg'].median():.4f}"
)
print(
f" Reock: mean={oregon_counties['reock'].mean():.4f}, "
f"median={oregon_counties['reock'].median():.4f}"
)
print(
f" Convex Hull: mean={oregon_counties['convex_hull'].mean():.4f}, "
f"median={oregon_counties['convex_hull'].median():.4f}"
)
print("=" * 80)
# Summary statistics by state
state_summaries = []
for state_fp, state_name in FIPS_TO_STATE.items():
state_counties = counties[counties["STATEFP"] == state_fp]
if len(state_counties) > 0:
state_summaries.append(
{
"STATEFP": state_fp,
"State": state_name,
"Count": len(state_counties),
"PP_Mean": state_counties["polsby_popper"].mean(),
"PP_Median": state_counties["polsby_popper"].median(),
"Sch_Mean": state_counties["schwartzberg"].mean(),
"Sch_Median": state_counties["schwartzberg"].median(),
"Reock_Mean": state_counties["reock"].mean(),
"Reock_Median": state_counties["reock"].median(),
"CH_Mean": state_counties["convex_hull"].mean(),
"CH_Median": state_counties["convex_hull"].median(),
}
)
# Convert to DataFrame and sort by Polsby-Popper mean
state_df = pd.DataFrame(state_summaries)
state_df = state_df.sort_values("PP_Mean", ascending=True)
print("\n" + "=" * 100)
print("State Summary Statistics (sorted by Polsby-Popper mean)")
print("=" * 100)
print(
f"{'State':<25} {'Counties':<10} {'PP Mean':<12} {'PP Median':<12} "
f"{'Sch Mean':<12} {'Sch Median':<12} {'Reock Mean':<12} {'Reock Median':<12} "
f"{'CH Mean':<12} {'CH Median':<12}"
)
print("-" * 100)
for _, row in state_df.iterrows():
print(
f"{row['State']:<25} {int(row['Count']):<10} "
f"{row['PP_Mean']:<12.6f} {row['PP_Median']:<12.6f} "
f"{row['Sch_Mean']:<12.6f} {row['Sch_Median']:<12.6f} "
f"{row['Reock_Mean']:<12.6f} {row['Reock_Median']:<12.6f} "
f"{row['CH_Mean']:<12.6f} {row['CH_Median']:<12.6f}"
)
print("=" * 100)
@mattt
Copy link
Author

mattt commented Nov 29, 2025

Output:

Loaded 3235 counties

Compactness Statistics:
Polsby-Popper: mean=0.5243, median=0.5152
Schwartzberg: mean=0.7143, median=0.7178
Reock: mean=0.4883, median=0.5080
Convex Hull: mean=0.8866, median=0.8979

================================================================================
Top 50 Most Irregular Counties (by Polsby-Popper score)
================================================================================
Rank   County                         State           Polsby-Popper   Schwartzberg    Reock           Convex Hull    
--------------------------------------------------------------------------------
1      Aleutians West                 Alaska          0.021594        0.146947        0.000048        0.003485       
2      Aleutians East                 Alaska          0.070515        0.265546        0.111541        0.556965       
3      Denver                         Colorado        0.071242        0.266913        0.160370        0.491082       
4      Broomfield                     Colorado        0.083554        0.289056        0.179495        0.591295       
5      Kodiak Island                  Alaska          0.084203        0.290178        0.180116        0.460846       
6      Northern Islands               Northern Mariana Islands 0.097879        0.312857        0.014516        0.105960       
7      Honolulu                       Hawaii          0.105747        0.325188        0.001304        0.024421       
8      Nome                           Alaska          0.109629        0.331103        0.108529        0.399378       
9      Warren                         Mississippi     0.111452        0.333844        0.367095        0.642336       
10     Bethel                         Alaska          0.124896        0.353406        0.060174        0.455293       
11     King William                   Virginia        0.139968        0.374124        0.250033        0.749134       
12     Suffolk                        Massachusetts   0.142691        0.377744        0.139663        0.521061       
13     Sioux                          North Dakota    0.150319        0.387709        0.190671        0.695265       
14     Monroe                         Florida         0.153471        0.391754        0.171197        0.458784       
15     Bristol                        Virginia        0.156369        0.395435        0.191648        0.555206       
16     Hoonah-Angoon                  Alaska          0.157256        0.396556        0.158713        0.553919       
17     Moore                          Tennessee       0.157477        0.396834        0.448662        0.635432       
18     Knox                           Indiana         0.158900        0.398623        0.269846        0.682457       
19     Henrico                        Virginia        0.159388        0.399234        0.298320        0.653630       
20     Delta                          Texas           0.160290        0.400362        0.266239        0.755386       
21     Greene                         Alabama         0.163508        0.404361        0.517829        0.718812       
22     Perry                          Kentucky        0.164575        0.405679        0.331392        0.598081       
23     Washington                     Maryland        0.164726        0.405864        0.201148        0.600755       
24     Roanoke                        Virginia        0.164954        0.406145        0.446436        0.710772       
25     Concordia                      Louisiana       0.165109        0.406336        0.341362        0.716259       
26     Caddo                          Louisiana       0.166291        0.407788        0.315496        0.700434       
27     Issaquena                      Mississippi     0.166565        0.408124        0.335927        0.529449       
28     Desha                          Arkansas        0.166614        0.408183        0.425917        0.713718       
29     Bossier                        Louisiana       0.175596        0.419041        0.359191        0.822807       
30     Little River                   Arkansas        0.177011        0.420726        0.336696        0.786114       
31     St. Martin                     Louisiana       0.178416        0.422393        0.198145        0.581146       
32     Maui                           Hawaii          0.178555        0.422558        0.308282        0.738108       
33     Garrard                        Kentucky        0.179708        0.423919        0.335300        0.821555       
34     Bowie                          Texas           0.180421        0.424760        0.433485        0.829769       
35     Blaine                         Idaho           0.182648        0.427374        0.201016        0.591811       
36     Marion                         Oregon          0.182817        0.427571        0.213455        0.581543       
37     Nacogdoches                    Texas           0.184767        0.429846        0.405154        0.862739       
38     Bryan                          Georgia         0.186287        0.431610        0.243932        0.739428       
39     King and Queen                 Virginia        0.187991        0.433579        0.214346        0.696654       
40     Catahoula                      Louisiana       0.189013        0.434757        0.326304        0.689867       
41     Adams                          Mississippi     0.189805        0.435667        0.382882        0.657088       
42     Escambia                       Florida         0.190180        0.436096        0.325720        0.571982       
43     Haines                         Alaska          0.193536        0.439928        0.285940        0.571114       
44     Lauderdale                     Tennessee       0.193942        0.440388        0.352376        0.702796       
45     Manassas Park                  Virginia        0.194799        0.441360        0.270420        0.611414       
46     James City                     Virginia        0.195595        0.442262        0.377305        0.655889       
47     Mingo                          West Virginia   0.195868        0.442570        0.326480        0.698864       
48     Jefferson                      Louisiana       0.196156        0.442895        0.163969        0.627742       
49     New Kent                       Virginia        0.196831        0.443656        0.295979        0.779789       
50     Nelson                         Kentucky        0.199804        0.446994        0.362964        0.705878       

================================================================================
Multnomah County, OR - Compactness Analysis
================================================================================

Metric               Score           Rank       Percentile   vs Median       vs Mean        
--------------------------------------------------------------------------------
Polsby-Popper        0.207378        56/3235      1.73       % 0.403         x 0.396         x
Schwartzberg         0.455387        56/3235      1.73       % 0.634         x 0.638         x
Reock                0.136048        11/3235      0.34       % 0.268         x 0.279         x
Convex Hull          0.563067        22/3235      0.68       % 0.627         x 0.635         x

--------------------------------------------------------------------------------
Summary:
  Average Rank: 36.2 out of 3235 counties
  Average Percentile: 1.1%
================================================================================

================================================================================
All Oregon Counties - Compactness Scores
================================================================================
Rank   County                         Polsby-Popper   Schwartzberg    Reock           Convex Hull    
--------------------------------------------------------------------------------
1      Marion                         0.182817        0.427571        0.213455        0.581543       
2      Multnomah                      0.207378        0.455387        0.136048        0.563067       
3      Sherman                        0.259569        0.509479        0.580017        0.751563       
4      Gilliam                        0.267250        0.516962        0.377460        0.698987       
5      Union                          0.291317        0.539738        0.363854        0.692880       
6      Wasco                          0.297240        0.545198        0.432064        0.790704       
7      Baker                          0.298279        0.546149        0.319970        0.788599       
8      Deschutes                      0.303532        0.550937        0.254320        0.759245       
9      Curry                          0.324648        0.569779        0.494340        0.777851       
10     Lane                           0.327789        0.572529        0.284306        0.831123       
11     Douglas                        0.330581        0.574962        0.340688        0.771722       
12     Washington                     0.344740        0.587146        0.399650        0.791392       
13     Benton                         0.358334        0.598610        0.378287        0.751839       
14     Yamhill                        0.361831        0.601524        0.299486        0.798762       
15     Linn                           0.366334        0.605255        0.387119        0.877144       
16     Tillamook                      0.388379        0.623201        0.467928        0.808425       
17     Clackamas                      0.399018        0.631678        0.464018        0.925393       
18     Jefferson                      0.400610        0.632938        0.284660        0.907049       
19     Umatilla                       0.430445        0.656083        0.509119        0.818676       
20     Grant                          0.443587        0.666023        0.560940        0.905065       
21     Josephine                      0.488088        0.698633        0.688261        0.874998       
22     Crook                          0.510384        0.714412        0.483839        0.880744       
23     Coos                           0.521783        0.722345        0.692092        0.849379       
24     Klamath                        0.528899        0.727254        0.554416        0.862032       
25     Wallowa                        0.544293        0.737762        0.488884        0.914328       
26     Lake                           0.557865        0.746903        0.464845        0.847205       
27     Wheeler                        0.559138        0.747755        0.500573        0.904684       
28     Polk                           0.564145        0.751096        0.513887        0.946699       
29     Lincoln                        0.571476        0.755960        0.556279        0.899221       
30     Clatsop                        0.575735        0.758772        0.477963        0.871832       
31     Hood River                     0.587808        0.766686        0.584325        0.883338       
32     Morrow                         0.603815        0.777055        0.568228        0.888506       
33     Malheur                        0.606720        0.778922        0.527532        0.945467       
34     Harney                         0.635395        0.797117        0.588028        0.903753       
35     Jackson                        0.654874        0.809243        0.536262        0.959972       
36     Columbia                       0.685535        0.827971        0.491808        0.932588       

--------------------------------------------------------------------------------
Oregon Summary Statistics:
  Total Counties: 36
  Polsby-Popper: mean=0.4383, median=0.4155
  Schwartzberg: mean=0.6536, median=0.6445
  Reock: mean=0.4518, median=0.4809
  Convex Hull: mean=0.8321, median=0.8557
================================================================================

====================================================================================================
State Summary Statistics (sorted by Polsby-Popper mean)
====================================================================================================
State                     Counties   PP Mean      PP Median    Sch Mean     Sch Median   Reock Mean   Reock Median CH Mean      CH Median   
----------------------------------------------------------------------------------------------------
Alaska                    30         0.293088     0.283152     0.521776     0.531695     0.250344     0.245830     0.732263     0.834206    
Hawaii                    5          0.346531     0.363147     0.562503     0.602617     0.331880     0.308282     0.611640     0.738108    
Massachusetts             14         0.358050     0.359365     0.587842     0.599271     0.372824     0.378405     0.785748     0.818239    
Maine                     16         0.361099     0.349175     0.598409     0.590874     0.468748     0.474553     0.780692     0.778509    
Louisiana                 64         0.377256     0.384318     0.606460     0.619934     0.464640     0.468767     0.813240     0.830581    
Virginia                  133        0.389434     0.390332     0.616575     0.624765     0.429978     0.425768     0.822744     0.830347    
California                58         0.392406     0.377560     0.620711     0.614459     0.372525     0.362013     0.809025     0.839914    
South Carolina            46         0.394122     0.403197     0.620481     0.634929     0.462699     0.472896     0.831145     0.837082    
Montana                   56         0.416010     0.399285     0.638256     0.631890     0.441865     0.455713     0.829486     0.824632    
New Jersey                21         0.416564     0.412958     0.640988     0.642618     0.452325     0.422589     0.823830     0.830002    
Maryland                  24         0.422561     0.397569     0.642509     0.630523     0.421941     0.426445     0.818675     0.831642    
Kentucky                  120        0.424033     0.388099     0.642743     0.622976     0.497012     0.500964     0.853829     0.859111    
Puerto Rico               78         0.432150     0.413178     0.650974     0.642789     0.449240     0.435658     0.821323     0.830510    
New Hampshire             10         0.433888     0.429283     0.656507     0.655192     0.472466     0.467530     0.830396     0.848699    
Utah                      29         0.433922     0.432460     0.651586     0.657617     0.406931     0.443214     0.878818     0.909661    
Arkansas                  75         0.434190     0.418687     0.651188     0.647060     0.479720     0.484674     0.862964     0.867578    
Tennessee                 95         0.436977     0.427613     0.653600     0.653922     0.506355     0.532589     0.856388     0.869378    
Oregon                    36         0.438323     0.415528     0.653584     0.644510     0.451804     0.480901     0.832105     0.855705    
West Virginia             55         0.438868     0.425788     0.656276     0.652524     0.479369     0.489764     0.846079     0.851824    
Idaho                     44         0.442420     0.434096     0.658708     0.658835     0.435419     0.438957     0.835375     0.848482    
Vermont                   14         0.449797     0.495436     0.667140     0.703870     0.500645     0.488897     0.819629     0.841286    
Connecticut               9          0.457078     0.439956     0.674218     0.663292     0.495071     0.491052     0.813488     0.812590    
Georgia                   159        0.462494     0.449237     0.675182     0.670252     0.506382     0.509481     0.860676     0.867405    
Washington                39         0.466702     0.481473     0.678481     0.693883     0.418490     0.426655     0.857185     0.870043    
Arizona                   15         0.469962     0.475744     0.680094     0.689742     0.441044     0.446897     0.882831     0.893379    
Florida                   67         0.471250     0.465804     0.679470     0.682498     0.450603     0.459704     0.855532     0.875374    
Alabama                   67         0.476702     0.447309     0.684436     0.668812     0.502979     0.520791     0.872783     0.862058    
North Carolina            100        0.488939     0.478469     0.693238     0.691714     0.477838     0.488235     0.868196     0.881670    
District of Columbia      1          0.492911     0.492911     0.702076     0.702076     0.509113     0.509113     0.856025     0.856025    
Nevada                    17         0.512581     0.488641     0.710980     0.699028     0.434268     0.459549     0.877602     0.897326    
Colorado                  64         0.516394     0.541820     0.707265     0.736084     0.440945     0.460539     0.899498     0.922590    
Pennsylvania              67         0.517584     0.495303     0.712856     0.703778     0.455882     0.456748     0.873391     0.887457    
New York                  62         0.534978     0.544413     0.726489     0.737843     0.493397     0.512472     0.880461     0.896987    
Rhode Island              5          0.538519     0.558296     0.726918     0.747192     0.473275     0.503267     0.872772     0.865259    
New Mexico                33         0.547545     0.531700     0.736646     0.729178     0.474420     0.478545     0.879154     0.883598    
Mississippi               82         0.552047     0.601813     0.731354     0.775764     0.516816     0.532184     0.902530     0.922930    
North Dakota              53         0.552915     0.575303     0.736874     0.758487     0.461345     0.457871     0.925987     0.965848    
Oklahoma                  77         0.557395     0.572180     0.740366     0.756426     0.506603     0.512484     0.896394     0.899517    
Northern Mariana Islands  4          0.560494     0.655817     0.710974     0.809323     0.436147     0.549785     0.712771     0.886134    
Minnesota                 87         0.576939     0.571497     0.752893     0.755974     0.484030     0.509098     0.924015     0.935617    
Texas                     254        0.592359     0.638511     0.759368     0.799068     0.535223     0.548203     0.933766     0.947539    
Illinois                  102        0.595230     0.598068     0.765658     0.773348     0.511312     0.543033     0.914055     0.938790    
Delaware                  3          0.595549     0.606670     0.769693     0.778890     0.543501     0.579642     0.901002     0.934677    
Wyoming                   23         0.598300     0.628878     0.768151     0.793018     0.488420     0.521766     0.934154     0.951271    
Missouri                  115        0.598589     0.604269     0.768268     0.777347     0.524569     0.546609     0.920013     0.935450    
Wisconsin                 72         0.601993     0.613398     0.770835     0.783196     0.479009     0.506717     0.921942     0.947289    
South Dakota              66         0.605033     0.640956     0.771376     0.800592     0.489008     0.511736     0.941063     0.973007    
Ohio                      88         0.607489     0.620694     0.776493     0.787841     0.511733     0.524955     0.912043     0.927628    
Guam                      1          0.616369     0.616369     0.785092     0.785092     0.462895     0.462895     0.867966     0.867966    
Indiana                   92         0.621674     0.665649     0.781718     0.815873     0.534876     0.544077     0.929780     0.947475    
Michigan                  83         0.643150     0.699931     0.797024     0.836619     0.502788     0.563654     0.942434     0.986081    
U.S. Virgin Islands       3          0.666751     0.676887     0.816236     0.822731     0.519598     0.519865     0.899363     0.882815    
Nebraska                  93         0.687586     0.727749     0.826568     0.853082     0.532251     0.559489     0.967118     0.991731    
Iowa                      99         0.700640     0.727301     0.835013     0.852820     0.556601     0.574729     0.972848     0.996154    
Kansas                    105        0.721186     0.754958     0.847078     0.868883     0.581762     0.600106     0.974662     0.996067    
American Samoa            5          0.786586     0.793295     0.881074     0.890671     0.632181     0.535919     0.939060     0.981748    
====================================================================================================

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment