Собесов

Сценарий: эндогенность в регрессии — что это и как лечить

Статистика и теорверRegressionСложнаяSenior

Условие

Регрессия sales ~ price даёт β_price = +0.5 (выручка растёт с ценой). Странно. Что не так?

Решение

Проблема: endogeneity

Cov(X, ε) ≠ 0 — X коррелирует с error term. OLS оценка β смещена.

В нашем случае: цена устанавливается не случайно. В сезоны высокого спроса цена выше и продажи выше. → Цена и unobserved «спрос» скоррелированы → β врёт.

Источники endogeneity

  1. Omitted variable bias: важная переменная не включена и коррелирует с X. Спрос → цена и продажи.
  2. Reverse causality: Y влияет на X. Маркетинг тратится больше там, где продажи и так выше.
  3. Measurement error in X: X измерен с шумом → attenuation bias (β смещён к 0).
  4. Simultaneity: цена и продажи определяются одновременно в equilibrium.
  5. Selection bias: выборка не случайна.

Решения

1. Add omitted variable — самое простое, если переменная наблюдается.

# Добавить сезон, регион, маркетинговый бюджет
model = sm.OLS(sales, sm.add_constant(df[['price', 'season', 'region', 'marketing']])).fit()

2. Instrumental Variables (IV) / 2SLS

Инструмент Z должен:

  • Relevance: коррелировать с X (Cov(Z, X) ≠ 0).
  • Exclusion: не влиять на Y напрямую (Cov(Z, ε) = 0).
from linearmodels.iv import IV2SLS
 
# Stage 1: X ~ Z (+ controls)
# Stage 2: Y ~ X_hat (+ controls)
model = IV2SLS(sales, controls, price, instrument).fit()

Инструмент для цены: cost of goods (зависит от поставщиков, не от спроса).

3. Fixed effects для panel data:

# Контролировать unobserved time-invariant характеристики
from linearmodels.panel import PanelOLS
model = PanelOLS(df['sales'], df['price'], entity_effects=True).fit()

4. Diff-in-Diff для policy interventions:

Y = α + β1·treated + β2·post + β3·(treated × post) + ε

β3 — causal эффект treatment.

5. Regression Discontinuity при наличии порога.

6. Randomized experiment — золотой стандарт, устраняет endogeneity by design.

Тесты на endogeneity

Hausman test:

# H_0: OLS consistent (нет endogeneity)
# H_1: только IV consistent
hausman_stat, p = ...

Качество инструмента

# Weak instrument: F-stat первой стадии < 10 → IV unreliable

Подводные камни

  1. Endogeneity не диагностируется residual plot'ом — нужна теория предметной области.
  2. Weak instruments дают bias хуже OLS. F-stat > 10 для one IV, иначе не использовать.
  3. Exclusion restriction не тестируется напрямую — это assumption. Аргументировать содержательно.
  4. Fixed effects убирают time-invariant confounders, но не time-varying.
  5. Randomized experiment не всегда возможен (этика, стоимость) — обычно прибегают к IV/DiD.

Эталонный ответ

Endogeneity = X коррелирует с ε (omitted var, reverse causality, measurement error). OLS смещён. Лечение: добавить omitted var, IV/2SLS с релевантным+exclusion-валидным инструментом, fixed effects для panel, DiD для interventions, RCT — лучший.

Хочешь увидеть разбор?

Зарегистрируйся бесплатно — откроется развёрнутое решение этой задачи и ещё 4 на выбор.

Зарегистрироваться и увидеть разбор
Уже есть аккаунт? Войти