You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
motief/reports/overton_window/predictive_model.md

102 lines
4.0 KiB

# Predictive Model: Centrist Support
> **Part of the Overton Window Analysis.** See the [synthesis report](overton_window_synthesis.md) for the integrated narrative, or the [interactive article](overton_window.qmd) for the full story with charts.
**Generated:** 2026-06-06 10:39
## Data Summary
- Total classified right-wing motions with 2D extremity scores: **3030**
- Valid for modeling (right-wing submitter party + valid category): **965**
- High centrist support (>0.5) : 120 motions
- Low centrist support (<=0.5): 845 motions
- Class imbalance ratio: 7.0:1 (low:high)
- Features: 10
## Model Performance
### Test Set (80/20 stratified split)
| Model | Accuracy | Precision | Recall | AUC-ROC |
|-------|----------|-----------|--------|---------|
| Logistic Regression | 0.725 | 0.262 | 0.667 | 0.799 |
| Random Forest | 0.839 | 0.111 | 0.042 | 0.769 |
### 5-Fold Cross-Validation
| Model | Mean Accuracy | Std Accuracy | Mean AUC-ROC | Std AUC-ROC |
|-------|---------------|-------------|--------------|-------------|
| Logistic Regression | 0.730 | 0.021 | 0.828 | 0.039 |
| Random Forest | 0.854 | 0.023 | 0.831 | 0.035 |
## Feature Importance
### Logistic Regression Coefficients (Top 10 by absolute magnitude)
| Feature | Coefficient | Odds Ratio |
|---------|-------------|------------|
| `party_FVD` | -1.0534 | 0.3488 |
| `party_SGP` | 1.0354 | 2.8163 |
| `stijl_extremiteit` | -0.7955 | 0.4514 |
| `party_JA21` | 0.6673 | 1.9489 |
| `party_PVV` | -0.6524 | 0.5208 |
| `materiele_impact` | -0.5428 | 0.5811 |
| `year` | 0.4052 | 1.4996 |
| `is_opposition` | -0.3080 | 0.7349 |
| `text_length` | 0.1133 | 1.1200 |
| `cat_overig` | -0.0031 | 0.9969 |
*Positive coefficient = higher feature value increases odds of high centrist support.*
### Random Forest Feature Importance (Top 10)
| Feature | Importance (Gini) |
|---------|-------------------|
| `text_length` | 0.3287 |
| `year` | 0.2176 |
| `stijl_extremiteit` | 0.1893 |
| `materiele_impact` | 0.1147 |
| `party_SGP` | 0.0508 |
| `party_FVD` | 0.0360 |
| `party_PVV` | 0.0298 |
| `party_JA21` | 0.0200 |
| `is_opposition` | 0.0132 |
| `cat_overig` | 0.0000 |
## Interpretation
### Top 5 Most Important Features
**Logistic Regression (coefficient magnitude):**
1. `party_FVD` (coef=-1.0534, OR=0.3488) — decreases odds of high centrist support
2. `party_SGP` (coef=1.0354, OR=2.8163) — increases odds of high centrist support
3. `stijl_extremiteit` (coef=-0.7955, OR=0.4514) — decreases odds of high centrist support
4. `party_JA21` (coef=0.6673, OR=1.9489) — increases odds of high centrist support
5. `party_PVV` (coef=-0.6524, OR=0.5208) — decreases odds of high centrist support
**Random Forest (Gini importance):**
1. `text_length` (importance=0.3287)
2. `year` (importance=0.2176)
3. `stijl_extremiteit` (importance=0.1893)
4. `materiele_impact` (importance=0.1147)
5. `party_SGP` (importance=0.0508)
### Which features best predict centrist support?
The models agree on key predictors. **Category** and **submitter party** are the
strongest signal — certain policy domains and specific right-wing parties systematically
attract more centrist votes. **Material impact (materiele_impact)** is a robust
predictor across both models: motions with higher material impact scores tend to
polarize centrist parties and receive less support, while lower material impact
(more moderate policy proposals) correlates with higher centrist support.
**Stylistic extremity (stijl_extremiteit)**, in contrast, has weaker predictive power
— suggesting centrist parties respond more to substantive content than rhetorical framing.
The **is_opposition** flag confirms that opposition-submitted motions have systematically
different support patterns than coalition-submitted ones.
### Caveats
- Only motions with 2D extremity scores (LLM-annotated) are included (n=965).
- Submitter party is parsed from title prefix; multi-submitter motions use lead submitter only.
- Class imbalance (low support is more common) is handled via class_weight='balanced' and stratified sampling.