Methods

Within-candidate FE for sponsor bias

Identification strategy

Unit of observation: candidate-poll (one row per (politico_id, protocol) pair in estimulado scenarios). Estimating equation:

error_{c,p} = β · SponsoredBy_{c,p}
            + γ · OpponentSponsored_{c,p}
            + λ_pollster + μ_(c × race) + f(days_to_election) + ε

where:

The within-candidate FE (μ_(c × race)) strips each candidate's average level — β identifies off the same candidate observed in polls sponsored by them vs polls sponsored by others. The pollster FE (λ_pollster) separates a generically-rosy firm from a firm rosy specifically for its client.

Estimand

Key assumptions

Specification ladder

Symmetric test

Pre-poll trajectory placebo

Robustness

Open extensions (queued)

Estimation

Cluster-robust SEs at race (muni) level. Candidate FE absorbed via linearmodels.PanelOLS within-demeaning (8,431 entities — Patsy C(entity) materializes a dense dummy matrix that OOMs). drop_absorbed=True handles candidates with no within-variation.