| measure | value |
|---|---|
| raw_rows | 474559 |
| excluded_name_or_key_rows | 8116 |
| conflicting_cells | 47 |
| duplicate_rows_collapsed | 28 |
| raw_actions | 44908 |
| full_people | 24 |
| fitted_people | 24 |
| retained_actions | 624 |
| observed_binary_votes | 7329 |
| first_date | 2021-02-16 |
| last_date | 2026-09-11 |
Los Angeles ideal points: technical appendix
Return to the substantive report.
Frozen inputs and event construction
The municipality-181 extract is preserved in Data/LosAngeles/votes_raw.csv, streamed from Jacob/2026-10-01-national/candidate/member_votes_all.zip. Its source is the national-repair branch data/national-muni-fix at commit cf2188a621b7e96f2f331d4b72f367cb54598ea1. The extract spans February 16, 2021–September 11, 2026 and contains 474,559 rows across 537 meeting identifiers. It includes 22 advisory-committee rows, which do not match the council roster and are excluded.
An event is meeting_id plus rollcall_key, not meeting plus motion text. There are 44,958 such raw combinations including missing keys; the cleaned matrix has 44,908 keyed actions before ideological culling. Reused generic motion descriptions would collapse separate decisions if used as the identifier. Action keys are treated as source-extraction identifiers, not as independently verified permanent roll-call IDs.
Name matching strips spacing, punctuation, accents, soft hyphens and invisible zero-width characters. The within-city roster resolves clear surname variants. A longer Soto-Martínez match supersedes the suffix Martínez; strings naming multiple people, unexplained fragments and missing action keys are excluded. The raw-to-canonical mapping and exclusions remain inspectable. Existing legacy local IDs are carried through, not newly allocated; the duplicated upstream Hugo Soto-Martínez IDs are consolidated to one analysis person, with one existing ID carried in the score table. This is an analysis-side identity normalization, not an upstream registry repair.
Conflicting person-action responses are quarantined, exact duplicate cells collapsed, and inconsistent action metadata rejected. A blank or absent response remains missing. The qualifying-vote rule requires at least one yea, one nay and ten binary responses, followed by a minimum of seven qualifying votes per person; these conditions are checked repeatedly until the sample is stable. Lone-dissenter votes are retained because they can be informative in a 15-member council. All 24 identifiable councilmembers in the cleaned matrix survive the member threshold. McOsker does not occur anywhere in the raw extract, so fitting cannot recover him.
Bounded source check
Two retained actions in the official June 29, 2021 document were checked against the raw export. Key 635367::12 reproduces all 15 members and their responses (10 yea, five nay), and key 635367::22 reproduces all 15 (13 yea, two nay). This confirms those action keys and lists, not corpus-wide accuracy. The official PDF is preserved locally. Text extraction covers the main action pages; later image-only attachments were not used for this check.
Estimation in R
The model is the same one-dimensional probit ideal-point model used for the other city pilots:
Here is member ’s voting position, a vote’s discrimination and its difficulty. pscl::ideal() samples the member and item parameters using its default normal priors. Missing cells contribute no vote likelihood. The routine’s normalization fixes the scale’s location and magnitude; the sign is displayed with John Lee positive. That convention alone carries no substantive validation claim.
Exactly two independent random-seed chains use Democratic start values −1, Republican +1, and 0 for the member with both historical party claims. These are initial values, not restrictions, fixed coordinates or party observations in the likelihood. DSA endorsements never enter the fit. Both chains run 205,000 iterations, discard the first 5,000 and retain every 100th draw. Retained draws are aligned to the first singular vector of the centered vote matrix. The first stored draw is omitted. Pooled means and 95% equal-tail posterior intervals appear in the report; all council-window plots reuse those pooled estimates.
Diagnostics
| chains | iterations | burnin | thin | max_rhat | min_ess | chain_mean_correlation |
|---|---|---|---|---|---|---|
| 2 | 205,000 | 5,000 | 100 | 1.011 | 74.121 | 1 |
The largest member-level R-hat is 1.011 and the smallest effective sample size is 74. Agreement of chain means is 1.000. These are within-solution diagnostics, not proof that no alternative mode exists; no label-free-start or dispersed-start comparison was run for this initial LA report. The first, shorter run also exposed name-normalization losses and is not the reported fit.
Overlap and repeated patterns
| Year | Next year | Members observed in both |
|---|---|---|
| 2021 | 2022 | 14 |
| 2022 | 2023 | 9 |
| 2023 | 2024 | 14 |
| 2024 | 2025 | 14 |
| 2025 | 2026 | 14 |
| retained | unique_within_meeting |
|---|---|
| 624 | 310 |
The overlap table counts members with qualifying votes in both years. It is not a count of shared legislators’ individual bridge votes. Separate official actions remain separate observations even when their recorded voting patterns repeat within a meeting; that dependence can make nominal intervals optimistic. The table above records the repeated-pattern issue without fitting an additional sensitivity model.
Council windows and external evidence
Windows start at the observed data boundary, December 12, 2022 and December 9, 2024. They follow election turnovers, not arbitrary durations; LA’s staggered four-year seats produce a new council composition every two years. Window membership requires at least one observed binary response in a retained action during that window. Interim officeholders can therefore appear with their successors. Pooled position is held constant: a composition change is not an estimated within-person trend.
Party inputs are in Data/LosAngeles/party_affiliation.csv, copied from the LA research contribution in PR #21. The copied roster’s historical service endpoints are not trusted to delimit the observed council windows. John Lee’s 2019 Republican report is retained with its dating caveat; Park’s two historical affiliations do not establish an exact switch boundary; Jurado’s party endorsement supports alignment but not membership. The relevant evidence types and citations stay in the affiliation table.
For display and within-Democrat comparisons, Park is Democratic: the September 2022 source documents that her switch had already occurred, before her first retained council vote on January 10, 2023. Her earlier Republican claim remains in the ledger. This is a presentation/validation correction, not a refit; the original chains still used 0 as Park’s starting value. McOsker’s new reported Democratic evidence is also in PR #21, but he remains unfitted. The fitted members’ evidence types are summarized below; a reference or registration claim in reporting is not an election-authority record retrieved by us.
| Evidence type | Fitted members |
|---|---|
| party_organization | 6 |
| party_record | 10 |
| reported | 6 |
| self_identified | 2 |
DSA endorsements are separately recorded in Results/LosAngeles/endorsements.csv. Complete descriptions of the sitting endorsed group in November 2023 and November 2024 support council-specific comparisons. Earlier missing endorsement records are not coded as evidence of non-endorsement. The pooled plot’s triangles identify the four documented endorsed officeholders, not a historical negative classification for everyone else. The comparisons omit the incomplete pre-2022 endorsement window.
| Organization | Council group | Comparison | Endorsed | Other members | Share endorsed left of other |
|---|---|---|---|---|---|
| DSA-LA | Council after 2022 election (documented November 2023) | All fitted members | 3 | 11 | 1.0 |
| DSA-LA | Council after 2022 election (documented November 2023) | Within Democratic-affiliated members | 3 | 10 | 1.0 |
| DSA-LA | Council after 2024 election (documented November 2024) | All fitted members | 4 | 10 | 1.0 |
| DSA-LA | Council after 2024 election (documented November 2024) | Within Democratic-affiliated members | 4 | 9 | 1.0 |
| Abundant Housing LA | 2024 incoming members in covered races | All fitted members | 4 | 2 | 0.5 |
| Abundant Housing LA | 2024 incoming members in covered races | Within Democratic-affiliated members | 4 | 1 | 0.0 |
The ordered-pair share compares every endorsed member’s pooled posterior mean voting position with every other member of the specified council group. Within-Democrat rows restrict both groups to the Democratic display label, including Park and excluding Lee. This is descriptive, with no causal interpretation or large-sample significance claim. The complete point-estimate ordering does not imply disjoint uncertainty intervals: Raman and Harris-Dawson’s intervals slightly overlap.
AHLA evidence is separate from DSA in endorsements.csv and the member-plot shapes. Six fitted people have documented AHLA endorsements across 2022 and 2024. The 2024 comparison restricts the universe to incoming members in covered districts 2, 4, 8, 10, 12 and 14: four listed endorsed members versus Lee and Jurado, not listed in the reviewed annual source. District 6 and holdovers are excluded rather than coded as unendorsed. Annual coverage combines primary and general choices (including competing CD10 candidates); the comparison is explicitly descriptive, not a simultaneous slate or an exhaustive non-endorsement claim. The within-Democrat comparator is Jurado alone. Earlier window markers do not borrow 2024 endorsements. Supporting notes are under Data/LosAngeles/endorsement_evidence/.
Full estimates and implementation
| name | mean | lower | upper | n_votes | party | rhat | ess |
|---|---|---|---|---|---|---|---|
| Eunisses Hernandez | -3.201 | -3.817 | -2.619 | 405 | Democratic | 1.008 | 74.121 |
| Hugo Soto-Martinez | -1.596 | -1.937 | -1.292 | 220 | Democratic | 1.003 | 510.763 |
| Ysabel J. Jurado | -0.961 | -1.158 | -0.792 | 172 | Democratic | 1.003 | 763.243 |
| Mike Bonin | -0.823 | -1.237 | -0.560 | 175 | Democratic | 1.007 | 523.123 |
| Nithya Raman | -0.288 | -0.354 | -0.222 | 541 | Democratic | 1.010 | 570.680 |
| Marqueece Harris-Dawson | -0.204 | -0.267 | -0.137 | 595 | Democratic | 1.010 | 473.639 |
| Katy Young-Yaroslavsky | -0.143 | -0.227 | -0.052 | 218 | Democratic | 1.003 | 771.866 |
| Heather Hutt | -0.089 | -0.159 | -0.016 | 479 | Democratic | 1.004 | 515.351 |
| Kevin De Leon | -0.077 | -0.150 | 0.000 | 340 | Democratic | 1.011 | 512.295 |
| Paul Koretz | -0.049 | -0.129 | 0.037 | 194 | Democratic | 1.009 | 585.095 |
| Mark Ridley-Thomas | 0.057 | -0.223 | 0.474 | 22 | Democratic | 1.001 | 2945.065 |
| Curren D Price Jr. | 0.191 | 0.097 | 0.292 | 489 | Democratic | 1.001 | 481.267 |
| Herb J. Wesson Jr. | 0.212 | -0.018 | 0.458 | 26 | Democratic | 1.001 | 2140.929 |
| Bob Blumenfield | 0.287 | 0.186 | 0.398 | 598 | Democratic | 1.003 | 422.403 |
| Mitch O'Farrell | 0.301 | 0.173 | 0.442 | 205 | Democratic | 1.001 | 707.324 |
| Paul Krekorian | 0.310 | 0.198 | 0.432 | 381 | Democratic | 1.001 | 478.451 |
| Nury Martinez | 0.358 | 0.208 | 0.528 | 145 | Democratic | 1.002 | 968.925 |
| Traci Park | 0.403 | 0.267 | 0.553 | 388 | Democratic | 1.000 | 477.344 |
| Gilbert Cedillo | 0.441 | 0.258 | 0.639 | 127 | Democratic | 1.001 | 818.345 |
| Imelda Padilla | 0.460 | 0.290 | 0.644 | 254 | Democratic | 1.001 | 612.826 |
| Adrin Nazarian | 0.567 | 0.381 | 0.761 | 176 | Democratic | 1.000 | 479.976 |
| John Lee | 0.672 | 0.527 | 0.839 | 533 | Republican | 1.005 | 311.042 |
| Monica Rodriguez | 0.696 | 0.531 | 0.872 | 456 | Democratic | 1.003 | 435.864 |
| Joseph Buscaino | 2.476 | 1.898 | 3.205 | 190 | Democratic | 1.007 | 168.580 |
Code/48_prepare_la.py preserves the municipality subset. Code/49_fit_la.r constructs the matrix and fits the two chains; Code/50_la_report_outputs.r creates shared-axis plots and organizational checks without refitting. Canonical outputs are under Results/LosAngeles/. Render la-report.qmd and la-technical-appendix.qmd from the Local project directory. No cross-city or state-common-space mapping, district-election validation, posterior predictive assessment or comprehensive source audit is claimed in this initial LA analysis.