The W-NOMINATE Model

W-NOMINATE (Weighted Nominal Three-Step Estimation) is the standard algorithm for estimating legislator ideological positions from roll call votes, developed by Poole & Rosenthal (1985, 1997).

The algorithm takes a binary vote matrix and recovers legislator ideal points in a low-dimensional policy space:

  1. Binarization: Raw votes are mapped to binary (Yea=1, Nay=0, abstentions excluded)
  2. Filtering: Low-information votes and inactive legislators are removed (min 10 votes each)
  3. Estimation: SVD initialization followed by Newton-Raphson optimization

The model estimates two parameters per legislator (2D coordinates) and two per vote event (normal vector + salience weight).

Coverage

The analysis covers all 7 legislatures (LX through LXVI), both per-legislature and cross-legislature runs:

  • Per-legislature: Each legislature gets independent ideal point spaces
  • Cross-legislature: All legislators placed in a shared space for direct temporal comparison

:::caution With party discipline >99% in the Mexican Congress, W-NOMINATE produces high classification rates (97-99%) that reflect the method’s power to discriminate, not genuine ideological structure. See the research article “El espejismo NOMINATE” for a detailed analysis of this limitation. :::

Implementation

The implementation in analysis/nominate.py uses scipy for SVD decomposition and optimization, numpy for matrix operations, and pandas for data handling. It runs via analysis/run_nominate.py with --camara and --output-dir flags.

References

  • Poole & Rosenthal (1985). “A Spatial Model for Legislative Roll Call Analysis”. American Journal of Political Science, 29(2).
  • Poole & Rosenthal (1997). Congress: A Political-Economic History of Roll Call Voting. Oxford University Press.
  • Poole (2005). Spatial Models of Parliamentary Voting. Cambridge University Press.

Interactive: Ideological Map

Select a legislature and/or party to filter the map.

Open Interactive Chart →

Fit Metrics

Classification rate, APRE, and GMP by legislature.

LegislatureLegislatorsVotationsClass. RateAPREGMP
LX2221199.6%0.98460.9936
LXI4843397.9%0.86490.9514
LXII4962198.5%0.91300.9776
LXIV4952297.8%0.90920.9673
LXV5228099.5%0.98650.9873
LXVI52610999.3%0.97020.9887