Endogeneity
정의
내생성(endogeneity)은 설명 변수가 오차항과 상관될 때 발생하는 문제다.
이때 OLS 추정량 은 편향(bias)되고 일치성(consistency)을 잃는다.
직관적 이해
가격 탄력성을 추정할 때 내생성은 가장 근본적인 난관이다.
기업은 가격을 무작위로 정하지 않는다. 수요가 높을 것으로 예상되면 가격을 올리고, 낮을 것으로 예상되면 내린다. 이 최적화 행동이 가격과 미관측 수요 요인 사이에 허위 상관관계를 만든다.
핵심 성질
내생성의 원천
| 원천 | 설명 | 예시 |
|---|---|---|
| 동시성 | 가격과 수량이 동시에 결정 | 시장 균형 |
| 누락 변수 | 가격과 수요 모두에 영향을 미치는 변수 누락 | 품질, 브랜드 |
| 역인과 | 수요가 가격에 영향 | 수요 예측 기반 프라이싱 |
| 측정 오차 | 설명 변수의 측정 오차 | 가격 할인 기록 누락 |
편향의 방향
가격 내생성은 거의 언제나 탄력성을 **과소추정(양의 편향)**하게 만든다.
품질이 높을수록 가격도 수요도 높으므로 다음이 성립한다.
그 결과 실제 탄력성은 음수인데도 추정값은 0에 가까워지거나 심지어 양수가 되기도 한다.
예시
시뮬레이션
import numpy as np
from sklearn.linear_model import LinearRegression
np.random.seed(42)
n = 5000
# 미관측 품질 (교란 변수)
quality = np.random.randn(n)
# 가격: 품질에 의존 (내생적!)
true_price_effect = -2.0
price = 20 + 3 * quality + np.random.randn(n) * 2
# 수요: 가격과 품질 모두에 의존
demand = 100 + true_price_effect * price + 10 * quality + np.random.randn(n) * 5
# 단순 OLS (품질 미통제) - 편향됨!
naive_model = LinearRegression()
naive_model.fit(price.reshape(-1, 1), demand)
print(f"진짜 가격 효과: {true_price_effect}")
print(f"단순 OLS 추정치: {naive_model.coef_[0]:.3f}") # 약 -0.5로 편향
# 품질 통제 후 - 일관적
X_controlled = np.column_stack([price, quality])
controlled_model = LinearRegression()
controlled_model.fit(X_controlled, demand)
print(f"품질 통제 후: {controlled_model.coef_[0]:.3f}") # 약 -2.0
해결 방법
| 접근법 | 핵심 아이디어 | 가정 |
|---|---|---|
| 실험 | 가격 무작위 할당 | 윤리적/비용 제약 |
| 도구변수 | 외생적 가격 변동 활용 | 배제 제한 |
| 통제 전략 | 충분한 공변량 통제 | 비교란성 |
| 구조적 모형 | 경제 구조 명시적 모형화 | 함수형 가정 |
관련 개념
- Instrumental Variables - 내생성의 주요 해결책
- Confounder - 내생성을 유발하는 변수
- A-B Testing - 내생성 없는 인과 추정
- Price Elasticity - 내생성이 문제가 되는 대상
참고 문헌
- Wooldridge, J. M. (2010). Econometric Analysis of Cross Section and Panel Data.
- Comprehensive Personalized Pricing Guide, Part I, §3