Finding 2 — Religion didn't predict the swing
Pearson correlations between AC-level religion share and party swing are all |r| < 0.2. The TVK wave was not a communal realignment.
The headline test
For each of the 203 ACs where we could attach a 2011 Census religion mix (district level), we computed the Pearson correlation between religion% and the swing-from-2021 for each major party. The table below is the answer.
| DMK swing | AIADMK swing | TVK swing | BJP swing | INC swing | PMK swing | NTK swing | |
|---|---|---|---|---|---|---|---|
| Hindu% | +0.03 | +0.08 | −0.06 | +0.03 | +0.16 | −0.09 | +0.05 |
| Muslim% | +0.03 | −0.00 | +0.05 | −0.13 | +0.12 | +0.06 | −0.02 |
| Christian% | −0.04 | −0.09 | +0.02 | −0.00 | −0.19 | +0.09 | −0.03 |
Reading this table
Correlations of ±0.1 are weak; ±0.2 is borderline; ±0.3+ would be meaningfully predictive. Every cell here is below the "meaningfully predictive" threshold.
What the cells say
- BJP × Muslim% is the largest negative (r = −0.13). Where Muslim share is higher, BJP gained less. Expected direction, modest magnitude.
- INC × Christian% is the largest negative (r = −0.19). Where Christian share is higher, Congress lost more. Surprising sign — Congress historically draws from minority blocks; possibly an alliance-arithmetic artefact in 2026.
- INC × Hindu% = +0.16 — the other side of the same coin. Where Hindu share is higher, Congress lost less. Same caveat.
- DMK swing × anything: all near-zero. DMK lost broadly, not concentrated in particular religion mixes.
- TVK swing × anything: all near-zero. The wave was not communal.
The Muslim-quintile cut
A finer view: group ACs by Muslim% into 5 quintiles, compute median swing per party in each.
| Quintile (Muslim %) | n | DMK | AIADMK | TVK | BJP | PMK |
|---|---|---|---|---|---|---|
| Q1 (lowest Muslim%) | 47 | −15.1 | −13.2 | +32.8 | +17.3 | −16.3 |
| Q2 | 39 | −17.0 | −14.7 | +35.9 | +1.4 | −15.6 |
| Q3 | 44 | −11.1 | −15.9 | +33.7 | +19.3 | −13.2 |
| Q4 | 33 | −17.8 | −12.6 | +32.8 | +17.0 | — |
| Q5 (highest Muslim%) | 40 | −15.9 | −13.1 | +36.0 | −10.0 | −12.5 |
The visible signal is in Q5 BJP: when you reach the most Muslim-share ACs, BJP's swing goes from +17 pp to −10 pp. BJP went backwards in Muslim-heavy ACs.
But notice — TVK's swing is essentially flat at +32-36 across all quintiles. The TVK wave doesn't care about Muslim share.
What this means
The 2026 result wasn't a communal realignment in TN. The data is more consistent with:
- Generalised incumbent fatigue — voters rotated AWAY from both DMK and AIADMK at roughly equal rates.
- A celebrity-led alternative — Vijay's TVK was the available off-ramp; voters took it.
- Geographic concentration in Chennai metro (see Finding 4) — not religious-block concentration.
The one religious signal that did appear is small but real: BJP underperformed in Muslim-heavy ACs. That's expected and arithmetically obvious; it's not a new political story.
What this analysis cannot see
This is an AC-level analysis using district-level religion data — the Census 2011 sub-district-to-AC mapping wasn't done at finer granularity (SHRUG is auth-walled and we used a coarser fallback). So:
- Within-AC variation is invisible. If Mylapore (within Chennai South) voted differently from T. Nagar, this analysis can't show it.
- District-level religion averages mask intra-district variation. Two ACs in the same district share the same religion mix in this dataset.
Booth-level analysis (Path B) would change both. We have the pipeline; we don't have the OCR done.
Method note
- Religion source: Census 2011 C-01 table (
DDW33C-01) at district level. - AC → district join uses the district name from
kracekumar/tn_elections2021 results, normalised against Census district names (manual aliases for Tuticorin/Thoothukudi, Kanniyakumari/Kanyakumari, etc.). - 31 ACs (in districts created post-2011 Census — Tirupathur, Chengalpattu, Kallakurichi, Mayiladuthurai, Ranipet, Tenkasi) have no religion attached. Pearson correlations are over the 203 ACs with both fields populated.
- Pearson correlations computed in pure Python (no numpy dependency) — see
pipelines/path_a_build.py.