OLS 기반 인과추론 시 오차항 관련 체크 필요 가정

OLS 기반 인과추론 시 오차항 관련 체크 필요 가정
Photo by Markus Spiske / Unsplash

배경

  • 아래 글을 DANBI에서 보다가 더 알아보게 되었습니다.

OLS를 떠받치는 몇 개의 기둥이 있는데 그중 실용적으로 가장 중요한 것이 일치성(consistency)다. 쉽게 말해서 OLS를 통해 도출된 추정량이 있을 때 샘플사이즈가 커지면서 이 값이 참 값으로 접근한다는 것이다. 일치성이 충족되면 우리는 적당하게 큰 표본에 대해서 추정치가 좋은 속성을 지니고 있다고 말할 수 있다.

그렇다면, 이 일치성을 만족시키는 조건은 무엇인가? 수학적인 정의를 풀어 말하면, 회귀분석의 독립변수 혹은 regressor가 에러와 상관성이 없어야 한다. 이 조건이 깨지만 일치성이 깨진다. 일치성이 결여된 추정량은 쓰임새가 몹시 제한적이다. 그림에서 보듯이 오차항은 말 그대로 우연한 오차로서 종속변수 혹은 regressand에 영향을 주어야 한다는 것이다.

주요 가정들

  • 오차항의 정규성 검정:
    Q-Q 플롯과 Kolmogorov-Smirnov 검정을 통해 오차항이 정규분포를 따르는지 시각화하고 검정합니다. p-value가 0.05보다 크면 정규성을 따르는 것으로 간주합니다.

  • 오차항의 독립성 검정:
    Durbin-Watson 검정을 통해 오차항 간의 자기상관이 있는지 확인합니다. 값이 2에 가까울수록 자기상관이 없음을 나타냅니다.

  • 다중공선성 문제 확인:
    Variance Inflation Factor(VIF)를 계산하여 다중공선성 문제를 확인합니다. VIF 값이 5를 넘으면 다중공선성 문제가 있다고 판단할 수 있습니다.

주요 가정

  • 오차항의 독립성 (No Endogeneity):
    • 오차항과 설명 변수 사이에 상관관계가 없어야 합니다.
    • 즉, 설명 변수는 오차항과 독립적이어야 인과관계를 정확히 추정할 수 있습니다
    • . 오차항에 설명 변수가 포함되거나 상관관계가 있다면, 설명 변수의 계수 추정치가 편향될 수 있습니다. 이 문제를 **내생성(endogeneity)**이라고 합니다.
      • 오차항과 설명 변수 사이의 상관계수를 계산하여 내생성 문제를 확인합니다. 상관계수가 0에 가까워야 설명 변수와 오차항이 독립적입니다.
    • 해결책으로는 도구변수(Instrumental Variables) 방법이 있습니다.
  • 오차항의 등분산성 (Homoscedasticity):
    • 오차항의 분산이 모든 설명 변수에 걸쳐 일정해야 합니다.
    • 만약 이 가정이 위배되면 이분산성(heteroscedasticity)이 발생하게 되며, 회귀계수의 표준 오차 추정이 왜곡되어 결과의 신뢰성을 저하시킬 수 있습니다.
    • 이를 검정하기 위해 Breusch-Pagan 검정이나 White 검정 등을 사용할 수 있습니다.
      • Breusch-Pagan 검정을 사용하여 오차항의 분산이 일정한지 확인합니다. p-value가 0.05보다 크면 등분산성이 있다고 볼 수 있습니다.
  • 오차항의 정규성 (Normality of Residuals):
    • 회귀분석에서 통계적 유의성을 추정하려면, 오차항이 정규분포를 따른다는 가정이 필요합니다.
    • 이 가정이 만족되지 않으면 회귀계수의 t-통계량과 p-value의 신뢰성이 떨어질 수 있습니다.
    • Q-Q 플롯과 Kolmogorov-Smirnov 검정을 통해 오차항이 정규분포를 따르는지 시각화하고 검정합니다. p-value가 0.05보다 크면 정규성을 따르는 것으로 간주합니다.
  • 오차항의 독립성 (Independence of Residuals):
    • 오차항들이 서로 독립적이어야 합니다. 즉, 오차항 간의 자기상관(autocorrelation)이 없어야 합니다.
    • 특히, 시간 데이터(시계열 데이터)의 경우 자기상관 문제가 자주 발생합니다.
    • 이 문제를 해결하기 위해서 Durbin-Watson 검정이 자주 사용됩니다.
    • Durbin-Watson 검정을 통해 오차항 간의 자기상관이 있는지 확인합니다. 값이 2에 가까울수록 자기상관이 없음을 나타냅니다.
  • 모형의 적합성 (Model Specification):
    • 오차항과 관련된 중요한 변수를 모형에 누락하지 않아야 합니다.
    • 중요한 설명 변수를 제외하거나 잘못된 형태로 포함하면, **누락변수편향(Omitted Variable Bias)**이 발생할 수 있습니다.
    • 이로 인해 인과관계 추정이 왜곡될 수 있습니다.

코드

import numpy as np
import pandas as pd
import statsmodels.api as sm
import matplotlib.pyplot as plt
import seaborn as sns
from statsmodels.stats.outliers_influence import variance_inflation_factor
from scipy import stats

# 샘플 데이터 생성
np.random.seed(42)
n = 100
X = np.random.normal(0, 1, n)
X2 = X**2  # 비선형성 예시
epsilon = np.random.normal(0, 1, n)
Y = 2 * X + 3 * X2 + epsilon

# DataFrame에 저장
df = pd.DataFrame({'X': X, 'X2': X2, 'Y': Y})

# 독립 변수에 상수항 추가
X = sm.add_constant(df[['X', 'X2']])

# OLS 회귀 모델 적합
model = sm.OLS(df['Y'], X)
results = model.fit()

# 회귀 결과 출력
print(results.summary())

# 1. 오차항의 독립성 (내생성 문제)
# 오차항과 설명 변수 간의 상관관계 확인
residuals = results.resid
corr_X_resid = np.corrcoef(df['X'], residuals)[0, 1]
print(f"오차항과 X 변수 간의 상관계수: {corr_X_resid}")

# 2. 오차항의 등분산성 검정: Breusch-Pagan Test
from statsmodels.stats.diagnostic import het_breuschpagan

bp_test = het_breuschpagan(residuals, X)
labels = ['Lagrange multiplier statistic', 'p-value', 'f-value', 'f p-value']
print(dict(zip(labels, bp_test)))

# 3. 오차항의 정규성 검정: Q-Q Plot
sm.qqplot(residuals, line='45')
plt.title('Q-Q Plot of Residuals')
plt.show()

# Kolmogorov-Smirnov 검정
ks_stat, ks_p_value = stats.kstest(residuals, 'norm')
print(f"Kolmogorov-Smirnov test p-value: {ks_p_value}")

# 4. 오차항의 독립성 검정: Durbin-Watson Test
from statsmodels.stats.stattools import durbin_watson

dw_stat = durbin_watson(residuals)
print(f"Durbin-Watson statistic: {dw_stat}")

# 5. 다중공선성 문제 확인: Variance Inflation Factor (VIF)
vif = pd.DataFrame()
vif["VIF Factor"] = [variance_inflation_factor(X.values, i) for i in range(X.shape[1])]
vif["features"] = X.columns
print(vif)


800

Read more

Chi-Square Test와 T-Test는 데이터 특성에 따라 선택하여 사용합니다.

Chi-Square Test와 T-Test는 데이터 특성에 따라 선택하여 사용합니다.

Chi-Square Test가 A/B/C Test에서 사용되는 구체적인 경우 * 범주형 데이터 분석: 각 그룹에서 클릭하거나 전환된 사람의 수를 비교할 때, 이 데이터를 범주형 변수로 간주하고 Chi-Square Test를 적용할 수 있습니다. * 다중 그룹 비교: A/B/C 테스트에서 세 개 이상의 그룹을 비교해야 할 때, Chi-Square Test는 모든 그룹 간의 독립성을

인공지능이 문제가 아니라 결국 사람이 문제가 될 것입니다.

인공지능이 문제가 아니라 결국 사람이 문제가 될 것입니다.

사람들이 AI가 필요하다고 생각하는 시점 저 판사를 얼른 AI로 교체해야 한다. 유튜브에서 뉴스를 보다 보면 정말 많이 보이는 덧글입니다. 이러한 내용의 덧글이 달릴 때마다, 정말 많은 사람들이 공감을 표하곤 합니다. 왜 이렇게 사람들은 이러한 주장에 공감을 표하는 것일까? AI는 시킨대로 하기 때문에 공정하다는 인식 여러 이유가 있겠지만, 사람들은 아마 AI가

BG/NBD 모델은 고객 생애가치를 추정하는데 사용되는 확률 모델입니다.

BG/NBD 모델은 고객 생애가치를 추정하는데 사용되는 확률 모델입니다.

1. BG/NBD 모델이란? * BG/NBD(Beta-Geometric/Negative Binomial Distribution) 모델은 **고객의 생애 가치(Customer Lifetime Value, CLV)**를 추정하는 데 사용되는 확률적 모델입니다. * 특히 고객이 반복 구매를 할지, 아니면 더 이상 활동하지 않을지를 추정하는 데 유용합니다. 이 모델은 고객의 구매 행태를 두 가지 중요한 개념으로 나눕니다: * 고객은 활성(active)

다중공선성은 잘못된 인과추론 결과를 만들어낼 수 있습니다.

다중공선성은 잘못된 인과추론 결과를 만들어낼 수 있습니다.

다중공선성(Multi Collinearity) * **Multi-Collinearity(다중공선성)**는 독립 변수들 간의 강한 상관관계가 존재할 때 발생합니다. 즉, 한 독립 변수가 다른 독립 변수에 의해 설명될 수 있을 정도로 상관관계가 높은 상황을 의미합니다. * 이 문제는 주로 회귀 분석에서 나타나며, 변수들 간의 관계를 해석하는 데 있어 큰 장애물이 될 수 있습니다. * 일반적인 회귀식을 $Y=