Research Question: Is there a relationship between socio-economic vulnerability and disability rates in Israel? If so, where is it strongest and for which types of disability?
This project explores correlations between poverty indicators and health/disability outcomes across 278 Israeli settlements, using administrative data from the National Insurance Institute (Bituach Leumi) and official indices from the Central Bureau of Statistics (CBS).
View on GitHub Pages — landing page with both phases:
| Phase | Focus | Slides |
|---|---|---|
| Phase 1 | SE vulnerability ↔ disability correlation | 12 |
| Phase 2 | 4 research questions, Ensemble + OLS, interactive explorer | 9 |
- Spearman r = 0.58 between composite Social Index and Health Index
- The relationship is monotonic — more distressed social conditions tend to align with worse health/disability outcomes
- Consistent across multiple disability indicators (general, mobility, special services)
- Localities with high adult disability (ages 18–64) often show high child disability (ages 0–17)
- Suggests potential intergenerational transmission of disadvantage
- A Red Zone is defined where both rates exceed national weighted averages
- Disability rates are similar across Q1–Q3 (poorest 75% of settlements)
- Sharp drop only in Q4 (wealthiest quartile)
- Suggests a threshold effect — benefits of wealth appear only at higher levels
| Type | Examples | Interpretation |
|---|---|---|
| Service magnets | Tiberias, Be'er Sheva | Regional hubs may carry a “regional burden” by attracting vulnerable populations seeking services and public housing |
| Resilient communities | Brukhin, Talmon, Ofra | Strong community networks and younger demographics may buffer against welfare dependency |
- Causation (correlation does not prove cause)
- A proven self-reinforcing “vicious circle” mechanism
- The direction of effect (poverty → disability vs disability → poverty)
Longitudinal research would be needed to establish causal relationships.
- Locality level (not individual) — useful for spatial/policy patterns
- Rates normalize for locality size: Rate = Recipients / Population × 100
Both indices are normalized to [-1, +1] (Distress → Resilience).
Social Index (higher = more resilient / stronger socio-economic position):
- 50% — Socio-Economic Score (CBS)
- 25% — Peripherality Index
- 25% — Income Support Rate (inverted)
Health Index (higher = healthier / lower disability burden):
- 50% — General Disability Rate (inverted)
- 25% — Special Services Disability Rate (inverted)
- 25% — Mobility Disability Rate (inverted)
| Source | Data | Period |
|---|---|---|
| Bituach Leumi | Benefit recipients by settlement (>2,000 residents) | December 2024 |
| CBS (LAMAS) | Socio-Economic Index (cluster & score) | 2021 |
| CBS (LAMAS) | Peripherality Index (cluster & score) | 2020 |
├── build_master_dataset.py ← ETL: raw files → master dataset
├── generate_presentation_insights.py ← Phase 1 HTML generator
├── generate_presentation_phase2.py ← Phase 2 HTML generator
├── research_vicious_circle.ipynb ← main analysis notebook
│
├── index.html ← GitHub Pages landing page
├── presentation_main.html ← Phase 1 output (12 slides)
├── presentation_phase2.html ← Phase 2 output (13 slides)
│
├── requirements.txt
├── README.md
└── datas_for_research_vicious_circle_project/ ← raw data (not in git)
pip install -r requirements.txtfrom build_master_dataset import build_master_dataset
data_master = build_master_dataset(
data_dir="datas_for_research_vicious_circle_project",
save=True, verbose=True
)Data folder datas_for_research_vicious_circle_project/ must be in the project root (shared by the team, not in git).
# 1. Install
!pip -q install pandas numpy openpyxl plotly
# 2. Mount Google Drive
from google.colab import drive
drive.mount('/content/drive')
# 3. Build dataset (adjust path to your Drive folder)
import sys
sys.path.insert(0, '/content/drive/MyDrive/datas_for_research_vicious_circle_project')
from build_master_dataset import build_master_dataset
data_master = build_master_dataset(
data_dir="/content/drive/MyDrive/datas_for_research_vicious_circle_project",
save=True, verbose=True
)Both options produce: data/processed/benefits_final.csv (278 rows, 35 columns)