Los Angeles, 2001–2026: technical appendix

Author

Boris Shor

Updated

October 14, 2026

The substantive report presents the expanded pooled scale. The original recent-only appendix remains available separately.

Historical source construction

The 2001–2003 component comes from the City Clerk’s per-member electronic voting slips preserved in complete council files, with structured CFMS records as a cross-check where available. The dated delivery includes 4,829 events, 4,059 usable events and 193 contested events. Collection includes still-open files received before 2001. Events preserve printed time and sequence, because different sessions on the same date can restart the sequence. Source-supported handwritten unanimous forms are flagged as reconstructed; unclear forms are not filled. Remaining sequence coverage is incomplete and source disagreements remain flagged. Code/la_prepare_backfill_2001.r creates the reviewed adapter inputs under Data/LosAngeles/backfill_2001/; Code/54 combines them with the disjoint later windows. No members are dropped for convergence.

Code/52_collect_la_history.py inventories the City Clerk’s annual journal folders, caches the original PDFs and HTML, and records source URLs and capture metadata under Data/LosAngeles/history/. HTML decoding handles both UTF-8 and older Windows encodings. Text-native PDFs were checked with the text-PDF extraction workflow; bulk parser input uses layout-preserving pdftotext. Image-only or unreadable content is not silently treated as zero votes.

Code/53_parse_la_history.py uses the meeting date printed inside the journal, not its upload date or URL filename. The attendance list supplies the member universe. A person initially absent may cast a later vote; the initial present/absent split is not carried forward to individual actions. A named vacancy is never assigned a legislator.

Named nays, absences and nonbinary responses are retained separately. Remaining members are assigned yea only if their count reproduces the printed yea tally and the categories account for the named meeting roster. Conflicting cells, unresolved names and unreconciled tallies are excluded. When a printed attendance count is a typographical mismatch with its names, the names supply the universe and each action’s tally must still reconcile; such attendance discrepancies are flagged in the document audit.

For older journals, repeated references to one numbered roll call are collapsed when their response vectors agree; conflicting versions are excluded. The newer format lacks roll-call numbers, so distinct recorded outcomes remain separate. Exact duplicate documents are removed. No deduplication merely on identical voting patterns is applied, and there is no repeated-pattern sensitivity fit.

The historical backfill ends before February 16, 2021, when the preserved published export begins. Only successfully reconciled contested historical actions enter the pooled matrix. The recent component is the corrected 1,949-action matrix, so its cells and action keys are preserved exactly; the two sources cannot overlap in date. The recent raw-action denominator is not added to historical outcome-header counts as if the two were comparable measures of independent decisions.

Recorded audit category Records
action_rejected 135
document_rejected 119
duplicate_document 4
needs_review_not_council_or_empty 7

The issue table includes exclusions encountered during capture and parsing, not a census of missing historical votes. Documents outside the requested historical date boundary are also not used. Some rejected actions are unanimous and would not qualify anyway. Neither parser agreement with printed totals nor a bounded source sample constitutes corpus-wide accuracy certification.

Coverage and overlap

Year Members with qualifying votes Qualifying roll calls Binary votes
2001 20 72 808
2002 15 57 694
2003 19 64 818
2004 15 65 842
2005 18 39 485
2006 15 55 690
2007 15 40 485
2008 15 63 779
2009 16 46 554
2010 15 95 1,209
2011 16 61 732
2012 15 75 950
2013 21 49 608
2014 15 28 367
2015 17 42 556
2016 15 38 501
2017 15 41 522
2018 15 24 326
2019 16 32 416
2020 16 49 681
2021 15 78 1,082
2022 16 708 8,246
2023 15 769 9,605
2024 17 124 1,666
2025 15 179 2,457
2026 15 93 1,269
Year Next year Shared members
2001 2002 14
2002 2003 14
2003 2004 15
2004 2005 15
2005 2006 15
2006 2007 14
2007 2008 15
2008 2009 15
2009 2010 14
2010 2011 15
2011 2012 14
2012 2013 14
2013 2014 15
2014 2015 15
2015 2016 15
2016 2017 14
2017 2018 15
2018 2019 14
2019 2020 15
2020 2021 13
2021 2022 14
2022 2023 9
2023 2024 15
2024 2025 15
2025 2026 15

The adjacent-year overlap counts people, not shared roll calls or independently verified bridge observations. The pooled model assumes a constant member position across the observed service history.

Distribution and polarization plots

Density plots summarize posterior mean positions with equal weight per member, not posterior draws or vote counts. A common Gaussian bandwidth (bw.nrd0 of the 56 pooled means) is used across councils. Curves are evaluated within each group’s observed range, tapered linearly to zero over one bandwidth at its edges and renormalized to area one. This is a descriptive smoothing choice, not evidence of additional members outside the observed range; rug marks show the actual points. Council-wide polarization uses the interquartile range and 90th-minus-10th percentile spread. Party separation is the Republican median minus the Democratic median, excluding Zine from static party groups. Counts and derived quantities are in Results/LosAngeles-2001/polarization.csv; no refit is involved.

Estimation in R

The one-dimensional probit model is

Pr⁡(yij=1)=Φ(βjxi−αj).\Pr(y_{ij}=1)=\Phi(\beta_j x_i-\alpha_j).

The member position is xix_i; each roll call has a discrimination βj\beta_j and difficulty αj\alpha_j. pscl::ideal() uses its default normal priors and normalization. Missing cells contribute no vote likelihood. Sign is oriented to a vote-derived singular vector with John Lee positive.

Code/54_fit_la_expanded.r runs exactly two independent-seed chains. Democratic initial positions are −1, Republican +1, and unknown, other or changing affiliations start at 0. These are starting values, not party priors or fixed coordinates. Greuel starts at −1. Park and Zine start at 0, as does Wachs with his multiple historical affiliation claims; Galanter and Pacheco also start at 0 because their labels remain unknown. Organizational endorsements do not enter the model.

chains iterations burnin thin max_rhat min_ess chain_mean_correlation
2 605,000 205,000 200 1.02 57.875 1

Each chain uses 605,000 iterations, discards 205,000 and retains every 200th draw. The first stored draw is omitted and draws are sign-aligned before diagnostics and pooled summaries. Maximum R-hat is 1.02; no member exceeds 1.1. Minimum ESS is 57.9, for Hernandez. The two chains have close agreement, including Weiss, Villaraigosa and Smith, whose placements disagreed in the shorter historical coverage.

name rhat ess
Mike Bonin 1.020 95.360
Nithya Raman 1.018 786.939
Joseph Buscaino 1.013 981.701
Marqueece Harris-Dawson 1.013 722.607
Hugo Soto-Martinez 1.012 263.937
Mitchell Englander 1.011 1387.879
Monica Rodriguez 1.009 837.455
Adrin Nazarian 1.008 1082.357

The stored scores pool both complete retained chains; no discrepant draws are selectively removed. 0 of 56 members exceed R-hat 1.05. The traces show Weiss, Villaraigosa, Smith and Hernandez on separate vertical scales. Quarter-by-quarter means agree for the three early members. These diagnostics support convergence in the sampled solution; they do not exhaustively exclude unvisited modes. No extra-start or repeated-pattern sensitivity fit was run.

October 14 historical backfill

The prior corrected-data 2004–2026 fit placed 46 members using 2,793 actions, but its two chains remained in different early-member placements (maximum R-hat 13.264). Adding the 193 contested events from 2001–2003 brings the pooled matrix to 56 members and 2,986 actions, retaining Weiss, Villaraigosa and Smith. Their qualifying vote counts rise to 354, 96 and 429. With the same priors, seeds and iteration settings, their chain means now agree closely. The separate exclude-three diagnostic was not adopted; no member was removed to obtain the reported convergence. All earlier retained vote cells are unchanged. Previous fits remain preserved locally.

Comparison with the recent-only fit

Shared_members Pearson_correlation
25 0.993

The two analyses have separate normalizations; this comparison checks relative placement of the shared members rather than asserting unchanged numerical units. No rank-correlation statistic is reported.

Council windows and validation

period from until
2001 (Jan–Jun) 2001⁠-⁠01⁠-⁠01 2001⁠-⁠07⁠-⁠01
2001⁠–⁠2003 2001⁠-⁠07⁠-⁠01 2003⁠-⁠07⁠-⁠01
2003⁠–⁠2005 2003⁠-⁠07⁠-⁠01 2005⁠-⁠07⁠-⁠01
2005⁠–⁠2007 2005⁠-⁠07⁠-⁠01 2007⁠-⁠07⁠-⁠01
2007⁠–⁠2009 2007⁠-⁠07⁠-⁠01 2009⁠-⁠07⁠-⁠01
2009⁠–⁠2011 2009⁠-⁠07⁠-⁠01 2011⁠-⁠07⁠-⁠01
2011⁠–⁠2013 2011⁠-⁠07⁠-⁠01 2013⁠-⁠07⁠-⁠01
2013⁠–⁠2015 2013⁠-⁠07⁠-⁠01 2015⁠-⁠07⁠-⁠01
2015⁠–⁠2017 2015⁠-⁠07⁠-⁠01 2017⁠-⁠07⁠-⁠01
2017⁠–⁠2020 2017⁠-⁠07⁠-⁠01 2020⁠-⁠12⁠-⁠14
2020⁠–⁠2022 2020⁠-⁠12⁠-⁠14 2022⁠-⁠12⁠-⁠12
2022⁠–⁠2024 2022⁠-⁠12⁠-⁠12 2024⁠-⁠12⁠-⁠09
2024⁠–⁠2026 2024⁠-⁠12⁠-⁠09 2026⁠-⁠10⁠-⁠07

Election turnovers follow July 1 in the earlier odd-year elections, then December 14, 2020; December 12, 2022; and December 9, 2024. The transition extended the 2015 and 2017 terms, so no 2019 turnover is invented. The initial January–June 2001 window is left-truncated within the council elected in 1999. Windows include interim officeholders with qualifying responses, and all reuse pooled scores.

The canonical affiliation table includes the nine historical reported claims contributed to PR #21, with source notes accompanying each claim. Existing person IDs are unchanged; the claim ledger retires their earlier Unknown entries and records the new affiliations. Zine’s Republican-to-no-party switch is represented as a separate display category rather than collapsed into one static party. The source provides no precise switch date.

DSA and Abundant Housing LA remain separate indicators. Historical absence of a slate is unknown, not non-endorsement. Organizational plot markers are not backdated before the documented windows; pooled markers show ever-documented support. The DSA comparison uses the 2023 and 2024 sitting-group descriptions. AHLA comparison is restricted to the six incoming members in covered 2024 races; within Democrats its two-person outside set shrinks to Jurado alone. Annual AHLA sources mix election stages.

Presidential vote validation

Code/58_collect_la_electoral_geography.r caches county precinct attributes; Code/59_la_presidential_validation.r constructs the district comparison without changing any fitted estimates. The vote source is the New York Times’s 2024 precinct release, paired with its election-specific polygons. All 2,626 Los Angeles County reporting units have unique keys, and their candidate totals reproduce the county’s certified final canvass: Harris 2,417,109 and Trump 1,189,862. These are county checks, not citywide totals. Third-party and write-in votes are not in the Harris–Trump denominator.

The 809 city-code reporting units contain 976,781 Harris and 369,619 Trump votes. No independent certified City-of-Los-Angeles-only presidential total was located. A whole-county overlay finds no substantial omitted non-city-code polygon: the largest non-city-code overlap is 2.2% of an 11-two-party-vote precinct. Small boundary slivers do not justify treating those units as city returns.

The target is the City’s official 2021 council plan. Ordinance 187279, opened from the original PDF, records publication and effectiveness on December 10, 2021. Its application in November 2024 is an inference from the operative plan and official geometry, not an explicit election-specific statement found in the bounded search. The November 6, 2024 official Council roll call verifies the near-election roster by district, including Krekorian in CD2 and de León in CD14. Current GIS member-name attributes are not used.

Precinct and council polygons are intersected in California’s equal-area projection (EPSG:3310). Each city reporting unit’s votes are apportioned by its area in each district, normalized within the city boundary. This assumes uniform vote density within a precinct and is not an official district tabulation. Eighty-one units, containing 9.9% of the city’s two-party votes, have more than 1% of their area outside their dominant district. Area shares and allocations are retained for inspection.

The county precinct attribute layer’s metadata says March 2022, so it is a diagnostic crosswalk rather than unquestioned authority for 2024 consolidations. Its base-precinct keys give unique assignments for 808 of 809 city units, but ten disagree with the dominant 2024 polygon district. Comparing that crosswalk allocation with the reported polygon allocation changes no district’s Trump share by more than 0.37 percentage points. County candidate totals, city vote conservation, unique precinct keys, all fifteen districts and fifteen matched scores are checked programmatically. Outputs and source evidence are indexed in Data/LosAngeles/presidential_validation/readme.md.

District member Trump share (%) ideal_point
1 Eunisses Hernandez 22.052 -5.254
2 Paul Krekorian 29.074 0.250
3 Bob Blumenfield 37.786 0.294
4 Nithya Raman 23.988 -0.434
5 Katy Yaroslavsky 26.494 -0.074
6 Imelda Padilla 33.617 0.462
7 Monica Rodriguez 38.407 0.715
8 Marqueece Harris-Dawson 17.233 -0.235
9 Curren D. Price Jr. 24.848 0.216
10 Heather Hutt 17.838 0.101
11 Traci Park 21.571 0.527
12 John Lee 40.642 0.626
13 Hugo Soto-Martinez 19.631 -2.655
14 Kevin de Leon 21.745 0.107
15 Tim McOsker 34.498 0.291

Verification and estimates

Code/56_check_la_expanded.py checks synthetic parser cases and all historical vote cells against action tallies. Root inspected the original cached journal text for a seeded selection of one contested action in each historical year (18 actions), checking dates, rosters and dissent/absence lists; the selection is reproducible with seed 20261008. The source review is bounded, not a statistical accuracy estimate. The corrected recent delivery was separately checked against source cases, and its retained cells are preserved exactly in this pooled matrix. The 2001–2003 adapter verifies unique event/member keys and observed yea/nay counts against each usable event’s printed totals, preserves source flags, and makes only four explicit name harmonizations. All 193 added contested events satisfy the existing fit rules; original source records are not rewritten.

name local_id mean lower upper n_votes party rhat ess
Eunisses Hernandez CA-LACITY-2022⁠-⁠0010 -5.254 -6.179 -4.486 1,025 Democratic 1.007 57.875
Hugo Soto-Martinez CA-LACITY-2023⁠-⁠0009 -2.655 -3.014 -2.326 1,089 Democratic 1.012 263.937
Mike Bonin CA-LACITY-2022⁠-⁠0006 -2.241 -2.945 -1.659 836 Democratic 1.020 95.360
Nate Holden CA-LACITY-1987⁠-⁠0002 -2.054 -3.005 -1.273 146 Democratic 1.006 418.474
Ysabel J. Jurado CA-LACITY-2024⁠-⁠0020 -1.379 -1.660 -1.136 271 Democratic 1.000 1033.473
Mike Hernandez CA-LACITY-1991⁠-⁠0001 -0.551 -1.096 -0.147 47 Democratic 1.003 2426.754
Felipe Fuentes CA-LACITY-2013⁠-⁠0002 -0.451 -0.813 -0.178 92 Democratic 1.000 2555.936
Nithya Raman CA-LACITY-2021⁠-⁠0006 -0.434 -0.492 -0.380 1,821 Democratic 1.018 786.939
David Ryu CA-LACITY-2015⁠-⁠0001 -0.295 -0.563 -0.069 186 Democratic 1.001 2372.539
Marqueece Harris-Dawson CA-LACITY-2021⁠-⁠0002 -0.235 -0.283 -0.189 2,051 Democratic 1.013 722.607
Richard Alarcon CA-LACITY-1993⁠-⁠0001 -0.124 -0.225 -0.037 361 Democratic 1.002 2362.898
Katy Young-Yaroslavsky CA-LACITY-2022⁠-⁠0013 -0.074 -0.128 -0.024 1,074 Democratic 1.002 915.577
Bill Rosendahl CA-LACITY-2005⁠-⁠0002 0.014 -0.066 0.094 440 Democratic 1.001 2576.803
Mark Ridley-Thomas CA-LACITY-2021⁠-⁠0007 0.046 -0.085 0.174 130 Democratic 1.000 2902.665
Janice Hahn CA-LACITY-2001⁠-⁠0002 0.047 -0.024 0.118 500 Democratic 1.002 1728.261
Ruth Galanter CA-LACITY-1987⁠-⁠0001 0.079 -0.066 0.220 111 Unknown 1.000 2806.150
Paul Koretz CA-LACITY-2022⁠-⁠0007 0.085 0.039 0.129 1,233 Democratic 1.007 1082.919
Heather Hutt CA-LACITY-2023⁠-⁠0031 0.101 0.057 0.144 1,541 Democratic 1.005 834.272
Kevin De Leon CA-LACITY-2021⁠-⁠0003 0.107 0.061 0.152 1,091 Democratic 1.003 934.862
Jose L. Huizar CA-LACITY-2005⁠-⁠0001 0.128 0.058 0.199 594 Democratic 1.001 1792.646
Laura Chick CA-LACITY-1993⁠-⁠0002 0.143 -0.110 0.374 38 Democratic 1.003 3635.137
Tom LaBonge CA-LACITY-2001⁠-⁠0003 0.155 0.091 0.221 686 Democratic 1.001 1854.864
Ed Reyes CA-LACITY-2001⁠-⁠0005 0.177 0.109 0.244 551 Democratic 1.001 1828.072
Herb J. Wesson Jr. CA-LACITY-2005⁠-⁠0003 0.185 0.121 0.249 657 Democratic 1.001 1746.479
Eric Garcetti CA-LACITY-2001⁠-⁠0001 0.186 0.119 0.251 611 Democratic 1.003 1822.171
Nick Pacheco CA-LACITY-1999⁠-⁠0001 0.205 0.090 0.320 145 Unknown 1.004 3144.147
Tony Cardenas CA-LACITY-2003⁠-⁠0001 0.205 0.117 0.298 440 Democratic 1.001 2642.644
Mitch O'Farrell CA-LACITY-2013⁠-⁠0004 0.210 0.158 0.262 1,033 Democratic 1.002 971.281
Curren D Price Jr. CA-LACITY-2021⁠-⁠0005 0.216 0.165 0.267 1,595 Democratic 1.001 903.555
Wendy Greuel CA-LACITY-2002⁠-⁠0001 0.236 0.150 0.326 342 Democratic 1.002 2428.899
Paul Krekorian CA-LACITY-2022⁠-⁠0001 0.250 0.201 0.299 1,790 Democratic 1.001 1042.853
Mike Feuer CA-LACITY-1995⁠-⁠0001 0.253 0.088 0.422 47 Democratic 1.000 3475.145
Martin Ludlow CA-LACITY-2003⁠-⁠0002 0.266 0.133 0.397 86 Democratic 1.000 3485.663
Cindy Miscikowski CA-LACITY-1997⁠-⁠0001 0.269 0.172 0.367 264 Democratic 1.000 2469.215
Tim McOsker CA-LACITY-2022⁠-⁠0011 0.291 0.237 0.346 1,159 Democratic 1.001 1042.326
Nury Martinez CA-LACITY-2013⁠-⁠0003 0.292 0.237 0.347 719 Democratic 1.001 1107.268
Bob Blumenfield CA-LACITY-2021⁠-⁠0001 0.294 0.247 0.341 2,124 Democratic 1.001 842.103
Hal Bernson CA-LACITY-1979⁠-⁠0001 0.302 0.114 0.469 102 Republican 1.001 1891.823
Alex Padilla CA-LACITY-1999⁠-⁠0002 0.303 0.212 0.394 288 Democratic 1.001 1984.095
Gilbert Cedillo CA-LACITY-2013⁠-⁠0001 0.379 0.313 0.448 528 Democratic 1.000 1359.754
Imelda Padilla CA-LACITY-2023⁠-⁠0026 0.462 0.384 0.539 428 Democratic 1.000 1256.625
Jan C. Perry CA-LACITY-2001⁠-⁠0004 0.468 0.389 0.547 598 Democratic 1.002 1468.779
Adrin Nazarian CA-LACITY-2024⁠-⁠0021 0.472 0.384 0.555 278 Democratic 1.008 1082.357
Dennis P. Zine CA-LACITY-2001⁠-⁠0007 0.516 0.430 0.604 632 Republican / later unaffiliated 1.003 1832.210
Traci Park CA-LACITY-2022⁠-⁠0012 0.527 0.469 0.591 1,141 Democratic 1.002 977.791
Antonio Villaraigosa CA-LACITY-2003⁠-⁠0005 0.565 0.450 0.682 96 Democratic 1.002 2590.941
Jack Weiss CA-LACITY-2001⁠-⁠0006 0.581 0.490 0.675 354 Democratic 1.004 1962.702
John Lee CA-LACITY-2019⁠-⁠0001 0.626 0.570 0.686 1,763 Republican 1.004 694.450
Rudy Svorinich CA-LACITY-1993⁠-⁠0004 0.645 0.436 0.896 39 Republican 1.003 2964.478
Joel Wachs CA-LACITY-1971⁠-⁠0001 0.661 0.419 0.984 32 Republican / Independent 1.006 2707.644
Rita D. Walters CA-LACITY-1991⁠-⁠0002 0.670 0.376 1.058 37 Democratic 1.003 1709.709
Monica Rodriguez CA-LACITY-2025⁠-⁠0008 0.715 0.657 0.776 1,821 Democratic 1.009 837.455
Bernard C. Parks CA-LACITY-2003⁠-⁠0003 0.762 0.666 0.860 579 Democratic 1.004 1663.143
Greig Smith CA-LACITY-2003⁠-⁠0004 0.771 0.681 0.865 429 Republican 1.006 1514.111
Joseph Buscaino CA-LACITY-2012⁠-⁠0001 0.779 0.711 0.851 985 Democratic 1.013 981.701
Mitchell Englander CA-LACITY-2011⁠-⁠0001 1.105 0.951 1.304 292 Republican 1.011 1387.879