| Recorded audit category | Records |
|---|---|
| action_rejected | 135 |
| document_rejected | 119 |
| duplicate_document | 4 |
| needs_review_not_council_or_empty | 7 |
Los Angeles, 2001–2026: technical appendix
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.
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
The member position is ; each roll call has a discrimination and difficulty . 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 |