| Council | Members | Contested items voted |
|---|---|---|
| 2014-2017 | 56 | 1,170 |
| 2018-2021 | 58 | 2,129 |
| 2022-2023 | 51 | 1,100 |
| 2024-2025 | 54 | 1,093 |
| 2026– | 52 | 350 |
New York City Council ideal points
Technical appendix · Pooled stated-meeting roll calls, 2014–2026
This appendix documents the estimation behind the New York report: 123 members placed on one dimension using 1239 contested stated-meeting roll calls from November 2014 to September 2026.
Data and construction
The input is the New York City stated-meeting subset of the MyTown corpus, release of September 18, 2026. Code/18_prepare_nyc_full.r filters to municipality 3405 and body City Council Stated Meeting, joins meeting dates and the alias tables to resolve person_id, and asserts that no member has two different recorded votes on the same item.
The published 2022–2026 analysis used the same source with a deliberate meeting_date >= 2022-01-01 cutoff. That cutoff, not the data, set the earlier window: the September 14 extract already reached back to November 13, 2014. Restricting the current release to the 94 meetings of the earlier fit reproduces all 127,142 records exactly, so nothing previously fitted has changed.
Yea is coded 1 and nay 0. Every other status is missing and never a nay: absence, abstention, medical, maternity, paternity, bereavement, and suspension. An item is one recorded meeting–motion combination and is retained when at least one member votes on each side and at least 40 recorded responses are yea or nay — 1239 of 5,842 items. The enlarged fit adds 502 one-member-minority items to the earlier 737-item fit, preserved in Results/nyc-full-min2-2026-10-08/.
Model and estimation
The model is P(yea on item j by member i) = Φ(xᵢβⱼ − αⱼ), where Φ is the standard normal CDF, xᵢ is the member’s ideal point, βⱼ is item discrimination, and αⱼ is item difficulty. Each member receives one coordinate for their whole service.
The implementation follows the workflow used for the other city pilots: pscl::rollcall(), dropRollCall(legisMin=3, lop=0), and ideal(d=1, normalize=TRUE, store.item=TRUE) with the package’s default normal priors. Exactly two chains run 110,000 iterations each — 100,000 sampling after 10,000 burn-in, thinned by 100. Both start from researched affiliation: Democratic −1, Republican +1, and Ari Kagan’s switch 0, with different random seeds. Starts enter neither the likelihood nor the prior. pscl::ideal is single-threaded, so the chains are dispatched as parallel forks.
normalize=TRUE supplies location and scale identification. Draw signs are then aligned to a single vote-derived axis — the leading singular vector of the centered vote matrix, oriented so that Joseph Borelli is positive. One global axis orients every fit: anchoring a subset on an individual member silently flips that subset’s sign whenever the member is absent from it.
Diagnostics
Convergence
| Measure | Value |
|---|---|
| Members | 123 |
| Retained items | 1239 |
| Chains | 2 |
| Iterations per chain | 110,000 |
| Maximum R-hat | 1.048 |
| Members with R-hat above 1.1 | 0 |
| Minimum effective sample size | 49 |
| Minimum pairwise chain-mean correlation | 1.000 |
These are classical univariate R-hat and coda effective sample sizes, not rank-normalized split R-hat or bulk/tail ESS. They describe sampling behavior, not whether the model is the right one.
Why starting values matter here
The one-vote-minority diagnostic compared vote-derived, dispersed random, party and jittered vote-derived starts at 50,000, 100,000 and 250,000 sampling iterations. The vote-derived, random and party starts recover essentially the same solution without requiring party labels to identify it. The reported two-chain means correlate 0.9999 with the longer agreeing reference, with a maximum member difference of 0.09. These initialization checks are separate from the two chains used for reported estimates.
The jittered start reaches a persistent second mode that places Inez Barron and Jumaane Williams on the positive side. A response-level prediction check gives it worse log loss than the agreeing solutions. This is a known alternative mode, not evidence that the two reported chains disagree. The prediction check holds full-data member positions fixed and trains item-specific ridge-logistic response models on subsets of votes. It requires two training responses on each side and therefore excludes lone-dissenter items; it is not a complete held-out refit of the ideal-point model.
| Split | Test responses | Vote-derived start | Random start | Party start | Jittered start |
|---|---|---|---|---|---|
| 1 | 6,068 | 0.205 | 0.205 | 0.205 | 0.222 |
| 2 | 5,942 | 0.204 | 0.205 | 0.204 | 0.221 |
| 3 | 6,025 | 0.206 | 0.207 | 0.206 | 0.227 |
Charles Barron has the lowest effective sample size (49), with the next-lowest at 104. His extreme position and wide interval warrant more caution than agreement in chain means alone suggests.
What connects the eras
| Transition | Members that year | Also serving the next year |
|---|---|---|
| 2014→2015 | 51 | 48 |
| 2015→2016 | 50 | 49 |
| 2016→2017 | 51 | 50 |
| 2017→2018 | 52 | 41 |
| 2018→2019 | 51 | 51 |
| 2019→2020 | 52 | 51 |
| 2020→2021 | 52 | 46 |
| 2021→2022 | 51 | 16 |
| 2022→2023 | 51 | 51 |
| 2023→2024 | 51 | 47 |
| 2024→2025 | 51 | 50 |
| 2025→2026 | 53 | 42 |
The weakest overlap is between 2021 and 2022, when term limits turned over most of the chamber: 16 members carry across, against 41–51 in the other transitions. This service-overlap structure connects the historical and current councils on the pooled scale.
Sensitivity to repeated voting patterns
Many stated-meeting items share an identical pattern of binary votes and missing responses within a meeting. Keeping one copy of each pattern would reduce the item set from 1239 to 569. No repeated-pattern fit was run for this update. The earlier 737-item repeated-pattern experiment did not converge and is not a result for the enlarged matrix. Matching response vectors alone do not establish that two records describe the same actual vote; event-level consolidation requires source evidence.
Member estimates
| Member | Posterior mean | 95% lower | 95% upper | R-hat | ESS | Retained votes |
|---|---|---|---|---|---|---|
| Charles Barron | -6.719 | -8.485 | -5.249 | 1.025 | 49.231 | 336 |
| Inez D. Barron | -1.755 | -2.006 | -1.529 | 1.012 | 283.731 | 596 |
| Kristin Richardson Jordan | -1.500 | -1.773 | -1.258 | 1.000 | 134.336 | 307 |
| Jumaane D. Williams | -1.105 | -1.327 | -0.899 | 1.013 | 263.512 | 176 |
| Tiffany L. Cabán | -1.073 | -1.305 | -0.871 | 1.002 | 113.268 | 564 |
| Alexa Avilés | -1.064 | -1.297 | -0.869 | 1.000 | 145.797 | 566 |
| Sandy Nurse | -0.858 | -1.061 | -0.680 | 1.002 | 128.800 | 561 |
| Chi A. Ossé | -0.817 | -1.018 | -0.640 | 1.004 | 127.959 | 537 |
| Shahana K. Hanif | -0.814 | -1.010 | -0.635 | 1.002 | 123.291 | 569 |
| Kayla Santosuosso | -0.771 | -1.049 | -0.499 | 1.001 | 277.682 | 70 |
| Carlos Menchaca | -0.707 | -0.864 | -0.552 | 1.009 | 122.552 | 589 |
| Jennifer Gutiérrez | -0.672 | -0.874 | -0.492 | 1.003 | 135.187 | 562 |
| Julie Won | -0.617 | -0.809 | -0.440 | 1.001 | 146.792 | 560 |
| Brad S. Lander | -0.586 | -0.731 | -0.438 | 1.017 | 124.994 | 615 |
| James G. Van Bramer | -0.503 | -0.652 | -0.347 | 1.014 | 137.160 | 588 |
| Justin E. Sanchez | -0.454 | -0.727 | -0.198 | 1.002 | 379.807 | 70 |
| Shirley Aldebol | -0.450 | -0.728 | -0.207 | 1.000 | 318.994 | 70 |
| Crystal Hudson | -0.444 | -0.642 | -0.268 | 1.003 | 239.410 | 562 |
| Lincoln Restler | -0.431 | -0.625 | -0.251 | 1.001 | 127.151 | 574 |
| Shekar Krishnan | -0.426 | -0.621 | -0.244 | 1.009 | 150.876 | 578 |
| Antonio Reynoso | -0.410 | -0.567 | -0.253 | 1.013 | 171.767 | 570 |
| Rita C. Joseph | -0.400 | -0.592 | -0.219 | 1.006 | 132.637 | 573 |
| Costa G. Constantinides | -0.396 | -0.566 | -0.234 | 1.005 | 183.156 | 425 |
| Ben Kallos | -0.376 | -0.525 | -0.218 | 1.006 | 145.815 | 637 |
| Maria Del Carmen Arroyo | -0.362 | -2.157 | 0.955 | 1.006 | 1191.495 | 14 |
| Carmen N. De La Rosa | -0.350 | -0.548 | -0.165 | 1.006 | 163.893 | 588 |
| Pierina Ana Sanchez | -0.339 | -0.537 | -0.144 | 1.003 | 182.164 | 573 |
| Erik D. Bottcher | -0.339 | -0.553 | -0.120 | 1.005 | 243.476 | 476 |
| Gale A. Brewer | -0.338 | -0.541 | -0.142 | 1.001 | 161.166 | 584 |
| Althea V. Stevens | -0.332 | -0.535 | -0.145 | 1.004 | 209.266 | 581 |
| Harvey D. Epstein | -0.327 | -0.609 | -0.058 | 1.001 | 288.020 | 74 |
| Amanda C. Farías | -0.326 | -0.518 | -0.148 | 1.001 | 142.158 | 586 |
| Rosie Mendez | -0.325 | -0.590 | 0.041 | 1.003 | 748.033 | 108 |
| Diana I. Ayala | -0.320 | -0.482 | -0.158 | 1.011 | 135.954 | 974 |
| Bill Perkins | -0.300 | -0.494 | -0.094 | 1.005 | 302.654 | 429 |
| Mark S. Weprin | -0.289 | -2.288 | 1.163 | 1.002 | 1591.115 | 7 |
| Carlina Rivera | -0.270 | -0.422 | -0.113 | 1.000 | 147.516 | 962 |
| Donovan J. Richards | -0.267 | -0.464 | -0.054 | 1.003 | 280.650 | 430 |
| Daniel Dromm | -0.255 | -0.422 | -0.083 | 1.002 | 265.418 | 647 |
| Keith Powers | -0.252 | -0.411 | -0.088 | 1.002 | 158.720 | 1,032 |
| Margaret S. Chin | -0.252 | -0.438 | -0.049 | 1.002 | 178.853 | 621 |
| Rafael L. Espinal Jr. | -0.241 | -0.487 | 0.009 | 1.002 | 320.018 | 274 |
| Corey D. Johnson | -0.237 | -0.416 | -0.056 | 1.001 | 309.656 | 631 |
| Laurie A. Cumbo | -0.230 | -0.414 | -0.046 | 1.002 | 265.444 | 533 |
| Carl Wilson | -0.229 | -0.676 | 0.222 | 1.002 | 662.091 | 47 |
| Stephen T. Levin | -0.229 | -0.408 | -0.041 | 1.000 | 275.567 | 620 |
| Alicka Ampry-Samuel | -0.225 | -0.414 | -0.026 | 1.006 | 270.609 | 474 |
| Christopher Marte | -0.218 | -0.413 | -0.031 | 1.000 | 155.305 | 555 |
| Mark Levine | -0.217 | -0.402 | -0.037 | 1.005 | 165.045 | 609 |
| Adrienne E. Adams | -0.216 | -0.381 | -0.053 | 1.003 | 169.161 | 1,034 |
| Ydanis A. Rodriguez | -0.215 | -0.405 | -0.013 | 1.000 | 210.439 | 589 |
| Shaun Abreu | -0.212 | -0.398 | -0.041 | 1.002 | 210.139 | 585 |
| Vanessa L. Gibson | -0.209 | -0.389 | -0.023 | 1.006 | 225.034 | 632 |
| Mark Treyger | -0.209 | -0.387 | -0.018 | 1.001 | 245.465 | 641 |
| Ritchie J. Torres | -0.206 | -0.400 | -0.003 | 1.002 | 239.974 | 418 |
| Julie Menin | -0.204 | -0.398 | -0.021 | 1.006 | 229.479 | 587 |
| Mathieu Eugene | -0.204 | -0.386 | -0.016 | 1.003 | 233.962 | 634 |
| Yusef Salaam | -0.202 | -0.406 | -0.011 | 1.002 | 221.255 | 240 |
| Karen Koslowitz | -0.199 | -0.380 | -0.013 | 1.001 | 258.655 | 629 |
| Oswald J. Feliz | -0.198 | -0.386 | -0.027 | 1.003 | 209.088 | 736 |
| Helen K. Rosenthal | -0.175 | -0.359 | 0.017 | 1.004 | 205.421 | 635 |
| Francisco P. Moya | -0.174 | -0.331 | -0.008 | 1.000 | 181.942 | 979 |
| Andrew Cohen | -0.174 | -0.378 | 0.016 | 1.000 | 280.547 | 447 |
| Rafael Salamanca Jr. | -0.160 | -0.314 | -0.011 | 1.001 | 170.484 | 1,079 |
| Kevin C. Riley | -0.149 | -0.330 | 0.025 | 1.001 | 170.749 | 781 |
| Lynn C. Schulman | -0.140 | -0.324 | 0.048 | 1.000 | 221.831 | 588 |
| Nantasha M. Williams | -0.132 | -0.313 | 0.033 | 1.002 | 273.700 | 569 |
| Sandra Ung | -0.128 | -0.321 | 0.058 | 1.006 | 267.082 | 540 |
| Elsie Encarnación | -0.126 | -0.400 | 0.165 | 1.001 | 724.292 | 70 |
| Virginia Maloney | -0.123 | -0.416 | 0.169 | 1.002 | 380.086 | 70 |
| Julissa Ferreras-Copeland | -0.114 | -0.492 | 0.313 | 1.005 | 886.728 | 92 |
| Vincent J. Gentile | -0.103 | -0.460 | 0.295 | 1.004 | 902.894 | 129 |
| Peter A. Koo | -0.087 | -0.276 | 0.100 | 1.008 | 239.561 | 637 |
| Darma V. Diaz | -0.085 | -0.358 | 0.234 | 1.001 | 600.599 | 214 |
| Selvena N. Brooks-Powers | -0.082 | -0.263 | 0.086 | 1.003 | 272.158 | 747 |
| Melissa Mark-Viverito | -0.074 | -0.432 | 0.305 | 1.000 | 690.552 | 130 |
| Alan N. Maisel | -0.073 | -0.265 | 0.115 | 1.003 | 250.417 | 632 |
| Annabel Palma | -0.067 | -0.439 | 0.335 | 1.000 | 1170.408 | 99 |
| Ty Hankerson | -0.058 | -0.352 | 0.243 | 1.000 | 554.191 | 69 |
| Rory I. Lancman | -0.058 | -0.273 | 0.144 | 1.000 | 297.221 | 422 |
| Fernando Cabrera | -0.052 | -0.252 | 0.145 | 1.002 | 268.603 | 520 |
| Mercedes Narcisse | -0.042 | -0.263 | 0.142 | 1.015 | 404.815 | 564 |
| Daniel R. Garodnick | -0.014 | -0.418 | 0.366 | 1.001 | 1222.385 | 122 |
| Shanel Thomas-Henry | 0.014 | -0.287 | 0.298 | 1.000 | 646.179 | 70 |
| Marjorie Velázquez | 0.020 | -0.317 | 0.323 | 1.000 | 898.285 | 316 |
| Chris Banks | 0.022 | -0.160 | 0.184 | 1.004 | 176.513 | 236 |
| Eric Dinowitz | 0.024 | -0.145 | 0.176 | 1.001 | 147.177 | 738 |
| Ruben Wills | 0.054 | -0.621 | 0.793 | 1.001 | 1263.883 | 37 |
| Justin L. Brannan | 0.059 | -0.078 | 0.191 | 1.003 | 142.571 | 1,028 |
| Andy L. King | 0.060 | -0.200 | 0.284 | 1.002 | 298.624 | 283 |
| James F. Gennaro | 0.077 | -0.077 | 0.223 | 1.001 | 191.711 | 723 |
| Barry S. Grodenchik | 0.079 | -0.104 | 0.254 | 1.004 | 223.289 | 632 |
| Farah N. Louis | 0.089 | -0.055 | 0.223 | 1.000 | 131.788 | 885 |
| Linda Lee | 0.100 | -0.062 | 0.252 | 1.000 | 174.392 | 548 |
| Robert E. Cornegy Jr. | 0.144 | -0.041 | 0.330 | 1.003 | 209.817 | 562 |
| Deborah L. Rose | 0.260 | 0.072 | 0.440 | 1.002 | 199.285 | 599 |
| Inez E. Dickens | 0.294 | -0.424 | 1.160 | 1.004 | 815.698 | 29 |
| I. Daneek Miller | 0.387 | 0.215 | 0.565 | 1.000 | 161.140 | 564 |
| Darlene Mealy | 0.399 | 0.264 | 0.536 | 1.000 | 128.311 | 487 |
| Kamillah Hanks | 0.419 | 0.289 | 0.561 | 1.000 | 104.373 | 508 |
| Susan Zhuang | 0.532 | 0.382 | 0.675 | 1.003 | 127.067 | 210 |
| Elizabeth S. Crowley | 0.546 | 0.316 | 0.773 | 1.002 | 337.247 | 113 |
| Paul A. Vallone | 0.595 | 0.413 | 0.767 | 1.002 | 163.040 | 568 |
| David G. Greenfield | 0.624 | 0.379 | 0.859 | 1.000 | 400.133 | 127 |
| Simcha Felder | 0.670 | 0.500 | 0.835 | 1.014 | 180.902 | 123 |
| Ruben Diaz Sr. | 0.700 | 0.501 | 0.902 | 1.009 | 218.857 | 394 |
| Phil Wong | 0.803 | 0.607 | 1.018 | 1.004 | 213.343 | 70 |
| James Vacca | 0.830 | 0.608 | 1.050 | 1.001 | 255.202 | 126 |
| Chaim M. Deutsch | 0.896 | 0.714 | 1.083 | 1.009 | 178.009 | 476 |
| Mark Gjonaj | 1.036 | 0.854 | 1.223 | 1.022 | 140.891 | 490 |
| Ari Kagan | 1.251 | 1.043 | 1.474 | 1.028 | 196.043 | 335 |
| Eric A. Ulrich | 1.318 | 1.140 | 1.503 | 1.034 | 113.515 | 593 |
| Robert F. Holden | 1.404 | 1.235 | 1.581 | 1.047 | 105.476 | 1,039 |
| Kristy Marmorato | 1.512 | 1.267 | 1.780 | 1.023 | 241.268 | 170 |
| Frank Morano | 1.772 | 1.474 | 2.133 | 1.013 | 455.725 | 112 |
| Joann Ariola | 1.898 | 1.670 | 2.155 | 1.045 | 179.604 | 579 |
| Inna Vernikov | 1.956 | 1.718 | 2.227 | 1.047 | 156.816 | 504 |
| David M. Carr | 1.959 | 1.715 | 2.236 | 1.046 | 148.936 | 568 |
| Kalman Yeger | 1.987 | 1.778 | 2.220 | 1.046 | 163.381 | 905 |
| Vickie Paladino | 2.021 | 1.783 | 2.294 | 1.027 | 150.210 | 545 |
| Joseph C. Borelli | 2.604 | 2.319 | 2.909 | 1.046 | 107.862 | 995 |
| Vincent Ignizio | 2.786 | 1.716 | 4.259 | 1.002 | 1819.709 | 5 |
| Steven Matteo | 2.878 | 2.561 | 3.221 | 1.048 | 146.176 | 632 |
Intervals are marginal equal-tail intervals under the fitted model. Vincent Ignizio has only 5 retained votes and an interval spanning 1.72 to 4.26. Charles Barron, the most extreme estimate, has 336 votes, including 131 lone nays, and an interval from -8.48 to -5.25. Inez Barron’s 135 lone nays belong to a separate member. The crowded middle has heavily overlapping intervals and should not be read as a ranking.
Validation construction
Organizational indicators are assembled by Code/24_nyc_validation_data.r into source-backed tables and joined on person_id, not on names. Records carry validity intervals, and several rosters are snapshots rather than continuous memberships, so the pooled indicator is “ever recorded in this group”. Party affiliation is a separate 124-row research ledger produced by Code/41_nyc_party_primary_audit.r and Code/42_nyc_party_affiliation_research.r, covering all 123 fitted people. Its sources are the Council’s captured 2026 roster, official partisan primary returns, and candidate-supplied enrollment statements. These prove dated affiliations, not an uninterrupted enrollment history. One person, Ari Kagan, has both Democratic and Republican rows because the Council documented his switch on December 5, 2022; his single pooled ideal point is excluded from static party comparisons. Board of Elections general-election ballot lines remain a separate fusion-line measure and are never treated as registration.
Code/43_nyc_dated_groups.r adds a contemporaneous check rather than extrapolating those snapshots across the pooled period. The September 18 Progressive comparison uses that day’s complete 51-person Council directory and official caucus page. The June 11 Common-Sense comparison uses the 51 people named in that day’s Council roll call, including the one absent voter, and the six-person official caucus roster with June 11 membership start dates (observed September 28). The two Council cohorts contain the same 51 people. Within each dated cohort, absence from an exhaustive caucus roster can be coded unlisted; it cannot be generalized to other dates. The script also stratifies by researched Democratic affiliation, omitting Kagan’s switch from the fixed-party comparison. Four DSA endorsement episodes are retained as positive evidence only because the available announcements do not establish an exhaustive candidate slate. The dated detail, four-row summary, and positive-only DSA ledger are under Results/NYC-full/.
The local ledger joins 122 fitted person_ids to the published local-id-v1 crosswalk. I. Daneek Miller is the one missing registry entry, retained with his legacy ID and a blank local_id pending upstream allocation. The proposed upstream evidence vocabulary has no explicit official-legislative-roster type; its 51 Council-roster rows are provisionally coded reported, with the official source and local capture named in the row. Neither issue changes the local person-ID join, but both matter before a release-ready party_affiliation.csv is published.
District comparisons: 2024 presidential results aggregate the published precinct polygons to council boundaries; council-election shares use candidate totals, because per-line splits are unavailable for 2023; and the 2025 mayoral figures aggregate Board of Elections election-district returns to all 51 districts using that same election’s council result files as the crosswalk, with all 4,117 in-play election districts matching exactly one district. None of these quantities enters estimation.
Bridging to the state common space
The mapping
Sixteen people in the analysis also served in the New York State Assembly or Senate, where the Shor–McCarty common space measures legislators on a scale shared across states. Fifteen enter calibration: Charles Barron is excluded at Boris’s direction because his council estimate is extreme and uncertain. He remains a verified officeholding bridge and a member of the council fit; Inez Barron remains in calibration. state_bridge_candidate_members.csv preserves all sixteen matches with an inclusion flag and reason; state_bridge_members.csv contains the fifteen used. The bridge follows the core of linear_map_states(): regress the common-space score on council coordinates over the included members, then apply the coefficients to the council.
| Term | Estimate | Std. error | t | p |
|---|---|---|---|---|
| Intercept | -1.491 | 0.107 | -13.88 | 3.6e-09 |
| Slope (council ideal point) | 0.529 | 0.104 | 5.08 | 0.00021 |
R² is 0.67 on 15 bridges, Pearson 0.82, residual standard error 0.41. The simulation-based standard errors, party-indicator variants, and leave-one-out consistency checks in the original function are not reproduced here, so the mapping’s own uncertainty is not propagated into member positions: the mapped scores are point estimates of a transform.
Because the transform is linear, it changes no member’s rank. The slope 0.529 converts council distances into state units. The empirical ratio of the state-score and council-coordinate standard deviations among included bridges is 0.65; that descriptive ratio is not the fitted slope.
| Council name | State name | Party | Chamber | Council ideal point | Common space | Common-space SE |
|---|---|---|---|---|---|---|
| Inez D. Barron | Barron, Inez (listed as Charles; AD-40) | D | H | -1.755 | -1.463 | 0.105 |
| Carmen N. De La Rosa | De La Rosa, Carmen | D | H | -0.350 | -1.946 | 0.113 |
| Erik D. Bottcher | Bottcher, Erik | D | S | -0.339 | -1.781 | 0.206 |
| Harvey D. Epstein | Epstein, Harvey | D | H | -0.327 | -1.790 | 0.124 |
| Bill Perkins | Perkins, Bill | D | S | -0.300 | -2.408 | 0.165 |
| Keith Powers | Powers, Keith | D | H | -0.252 | -1.477 | 0.182 |
| Vanessa L. Gibson | Gibson, Vanessa | D | H | -0.209 | -2.135 | 0.132 |
| Francisco P. Moya | Moya, Francisco P. | D | H | -0.174 | -1.774 | 0.088 |
| Alan N. Maisel | Maisel, Alan | D | H | -0.073 | -1.499 | 0.091 |
| Rory I. Lancman | Lancman, Rory | D | H | -0.058 | -1.414 | 0.092 |
| Inez E. Dickens | Dickens, Inez | D | H | 0.294 | -1.333 | 0.088 |
| Simcha Felder | Felder, Simcha | D | S | 0.670 | -0.816 | 0.068 |
| Mark Gjonaj | Gjonaj, Mark | D | H | 1.036 | -0.835 | 0.068 |
| Kalman Yeger | Yeger, Kalman | D | H | 1.987 | -0.464 | 0.070 |
| Joseph C. Borelli | Borelli, Joseph | R | H | 2.604 | 0.231 | 0.106 |
Matching, and why it is the weak point
There is no identifier shared end to end. The bridge table carries modern OCD person ids (ocd-person/…); the state project’s id file carries legacy OpenStates ids (NYL000342); and the published common-scores file carries no id at all. The join is therefore on normalized names — first name plus full surname, accents and generational suffixes stripped — with no chamber or district check. Thirteen of the sixteen are unambiguous. Adding a person id to the scores export would make this durable, and would serve any future city-to-state bridge.
One case had to be resolved by hand. The scores file contains two records named “Barron, Charles”, for assembly districts 40 and 60. They are two different people: the state id file places Charles in AD-60 from 2015 and Inez Barron in AD-40 from 2009. Both Barrons served on the council and in the assembly, so both are genuine bridges, and the AD-40 record is Inez’s score carrying Charles’s name. Averaging those records would merge a married couple. The separated mapping uses 15 bridges, slope 0.529, R² 0.67. The mislabeling is upstream, in the state project’s output, not in this analysis.
Charles Barron does not enter this regression. His council coordinate remains displayed in council plots; applying the fifteen-member transform to him is an extrapolation beyond the calibration range, not new bridge evidence. The exclusion changes calibration only, not the underlying council fit or the verified cross-office identity record.
State legislators representing the city
Comparing the council with every legislator in Albany mixes constituencies. Census TIGER 2024 state legislative boundaries were intersected with the city, taken as the union of the 51 council districts, keeping districts with a majority of their area inside: 65 of 150 assembly districts and 28 of 63 senate districts. Only 2 districts straddle the line meaningfully, and they are reported rather than dropped silently.
Party comparisons are made party by party — council Democrats against state Democrats, council Republicans against state Republicans. An overall council median mixes the parties and is comparable with neither.
Benchmarks are also period-matched. The state project publishes per-chamber, per-year common scores, so each council class is compared with the legislators sitting during that class’s own years rather than with a pool spanning 1994–2026; the pooled file would flatter the comparison, since the state Democratic median itself moves left over the period.
Limits
- Pooling assumes fixed positions. Each member receives one coordinate for their entire service, across several speakers and two charter revisions.
- Cross-era identification is thin at one seam, as above.
- Recorded divisions are selected. 1239 of 5,842 items were contested enough to scale; which matters reach a divided vote is itself a political choice, so this is a small and non-random slice of council business.
- One dimension is imposed, not tested. No higher-dimensional comparison or item-level fit assessment has been run.
- Scores are city-specific. On their own scale they share no units with the Chicago, Denver, or Houston fits. The state mapping expresses them in common-space units through fifteen included calibration members.
- The bridge is name-matched. Sixteen verified matches are preserved, but fifteen enter calibration. Charles Barron’s uncertain coordinate is excluded; no shared identifier runs end to end.
Reproduction
From the project root:
Rscript Code/18_prepare_nyc_full.r # SOURCE_DIR must hold the release parquet files
Rscript Code/19_fit_nyc_full.r # IDEAL_ITER, IDEAL_CORES, IDEAL_FITS
Rscript Code/24_nyc_validation_data.r
Rscript Code/41_nyc_party_primary_audit.r
Rscript Code/42_nyc_party_affiliation_research.r
Rscript Code/20_nyc_full_face_validity.r
Rscript Code/21_nyc_full_validation.r
Rscript Code/22_nyc_mayoral_districts.r
Rscript Code/25_nyc_mayoral_series.r
Rscript Code/27_nyc_presidential_series.r
Rscript Code/23_nyc_council_series.r
Rscript Code/28_nyc_state_bridge.r
Rscript Code/29_nyc_common_space_plots.r
Rscript Code/30_nyc_common_space_series.r
Rscript Code/31_nyc_state_districts.r # downloads Census TIGER boundaries once
Rscript Code/32_nyc_city_state_compare.r
quarto render nyc-report.qmd
quarto render nyc-technical-appendix.qmdSeeds and session information are saved with the results in Results/NYC-full/.