[인과추론] DCC와 Backdoor Path 제대로 이해하기

 

 

🧠 1. DCC란 무엇인가? – 철학적 정의

 

Disjunctive Cause Criterion(DCC)은 Judea Pearl이 제안한 변수 선택 기준이다.

 

정의는 다음과 같다.

 

“처치의 원인이거나 결과의 원인이거나,
혹은 둘 다인 모든 관측된 변수는 조정 집합에 포함시켜야 한다.”

 

 

즉, 어떤 변수가 처치(Treatment)의 원인이거나, 결과(Outcome)의 원인이거나,

또는 양쪽 모두일 경우에는 잠재적 confounder로 간주해 통제해야 한다.

 

이는 Backdoor Criterion보다 덜 엄밀하지만, 실용적인 기준이다.

 

 


 

🧠 1-1. Backdoor Path란 무엇인가?

 

Backdoor path(뒷문 경로)는 인과 추론에서 가짜 상관관계(confounding)를 만들어내는 경로이다.

우리가 진짜 인과 효과를 추정하고자 할 때, 반드시 차단해야 하는 정보의 통로다.

 

 

🔍 정의

 

Backdoor path란 처치 변수 T에서 결과 변수 Y로 가는 경로 중,

T로 향하는 화살표가 포함된 경로를 말한다.

 

이는 인과 경로가 아닌 상관 경로이며, confounding을 유발할 수 있다.

 

 

🧪 예시

 

  • T: 흡연
  • Y: 폐암
  • Z: 유전적 요인 (흡연과 폐암 모두에 영향)

 

DAG:

Z → T → Y
 \         ^
  \----/

 

T -> Y는 우리가 추정하고자 하는 인과 경로이다.

 

그러나 T <- Z -> Y는 backdoor path이며,

이를 통제하지 않으면 유전 요인이 만든 가짜 연관성을 인과 효과로 오해하게 된다.

 

 

🚪 왜 ‘backdoor’인가?

 

연구자는 보통 T -> Y라는 앞문(frontdoor)을 통해 인과 효과를 추정하고자 한다.

하지만 T <- Z -> Y처럼 뒷문(backdoor)을 통해 정보가 유입되면,

진짜 인과 효과와 관계없는 상관관계가 생긴다.

 

 

🧰 어떻게 차단하나?

 

해당 경로에 있는 confounder를 조건부로 통제(conditioning) 함으로써 차단할 수 있다.

이때 Z를 조정 변수로 포함하면, backdoor path를 차단하고 인과 효과만 남길 수 있다.

 

 


 

🧠 2. 왜 DCC가 필요한가?

 

Backdoor Criterion은 정확한 DAG가 있어야만 적용 가능하다.

하지만 현실에서는 다음과 같은 제약이 존재한다.

 

  • DAG을 그릴 수 있는 정보가 없다.
  • 어떤 변수가 진짜 confounder인지 불분명하다.
  • 관측 가능한 변수만 제한적으로 존재한다.
  • 도메인 지식 외에 참고할 수단이 없다.

 

이런 한계 속에서 Pearl은 실무자들이 bias를 줄이기 위한 안전장치로써 DCC를 제안했다.

잠재적인 confounder 후보들을 포함해 과잉 통제(overadjustment)보다 과소 통제를 막고자 한 전략이다.

 

 


 

🧠 3. 수학적 해석

 

변수 Z가 처치 T나 결과 Y의 원인일 경우,

DCC는 Z를 조정 집합 S에 포함시켜야 한다고 주장한다.

 

그러면 다음과 같은 조건부 독립이 성립할 수 있다.

스크린샷 2025-06-03 오후 1.44.26.png

 

단, 이는 충분조건일 뿐, 항상 필요한 것은 아니다.

 

 


 

🧠 4. DCC의 장점

 

장점 설명
✅ DAG 없이도 적용 가능 구조를 몰라도 사용 가능하다.
✅ 주요 confounder 누락 위험 감소 원인만 알면 통제 대상이 명확하다.
✅ 도메인 지식 기반 판단 가능 변수 간 인과 관계만 알면 판단할 수 있다.

 

 

 


 

🧠 5. DCC의 한계와 위험

 

한계
설명
⚠️ Mediator 통제 가능성 X → M → Y 구조에서 M은 인과 경로의 일부이며, 통제하면 효과가 가려진다.
⚠️ Collider 통제 가능성 X → C ← Y 구조에서 C를 통제하면 selection bias가 유입된다.
⚠️ Overadjustment bias 불필요한 변수까지 통제해 noise가 증가할 수 있다.

 

즉, DCC는 조심스럽게 적용해야 하며, 무조건적인 통제는 오히려 해가 될 수 있다.

 

 


 

🧠 6. DCC는 언제 유용한가?

 

상황 DCC 사용 적절성
DAG이 없거나 불확실한 경우 ✅ 유용하다
도메인 전문가 판단이 가능한 경우 ✅ 적용 가능하다
예측이 목적일 경우 ❌ 불필요한 변수로 모델 성능 저하 가능
mediator나 collider가 존재할 가능성이 높은 경우 ❌ 잘못된 통제로 bias 발생 위험

 

 


 

🔍 DCC vs. BDC (Backdoor Criterion)

 

항목 DCC BDC
필요 정보 변수 간 인과 관계 여부 전체 DAG
변수 선택 기준 느슨함, 원인 가능성만으로 포함 엄밀함, 모든 backdoor path 차단
bias 위험 overadjustment, collider bias 가능성 적절 설계 시 최소화 가능
실용성 높음 정확한 구조 있을 때 유효

 

 


 

💡 실전 예시

 

T: 피임약 복용

Y: 심장병 발생

관측 변수: 나이, BMI, 흡연, 혈압, 콜레스테롤

 

DCC에 따라 다음과 같이 변수들을 조정 대상으로 선택한다.

 

  • 나이, 흡연: 처치와 결과의 원인 → 포함
  • 혈압, 콜레스테롤: 결과의 원인 → 포함
  • BMI: 양쪽 모두의 원인 → 포함

 

그러나 이 중 혈압은 mediator, 콜레스테롤은 collider일 수 있다.

따라서 DCC만으로 변수 선택을 마무리할 경우, 오히려 bias가 발생할 수 있다.

 

 


 

🧩 DCC 이후, 실제 조정 전 고려해야 할 점

 

DCC로 후보 변수를 선정했더라도, 실제 분석 단계에서는 다음과 같은 보완 절차가 필요하다:

 

 

1. DAG 기반 검증

 

  • DCC로 선정한 변수들을 포함하여 DAG을 간략히 스케치해보고,
  • collider 또는 mediator는 아닌지 확인한다.
  • 필요한 경우, 도메인 전문가의 피드백을 받는다.

 

 

2. Sensitivity Analysis

 

  • 조정 변수 포함/제외에 따른 결과의 민감도를 테스트해본다.
  • 예: 혈압을 포함했을 때와 뺐을 때, 추정치의 변화 비교

 

 

3. DAG 없는 상황에서는 “단계적 조정”

 

  • 우선 confounder 가능성이 높은 변수만 포함하고,
  • 점차 추가하며 모델 안정성과 bias trade-off 확인

 

 


 

💻 Python 코드 예시: DCC에 따라 조정 변수 포함하기

 

아래는 DCC에 따라 조정 변수를 선택하고, 로지스틱 회귀 모델로 인과 효과를 추정하는 코드 예시다.

 

import pandas as pd
import statsmodels.api as sm

# 예시 데이터: T(피임약), Y(심장병), 나이, 흡연, BMI, 혈압, 콜레스테롤
df = pd.read_csv("pill_heart_data.csv")

# DCC 기준으로 선택된 변수
adjustment_set = ['age', 'smoking', 'bmi', 'blood_pressure', 'cholesterol']

# X: 조정 변수 + treatment
X = df[['pill_use'] + adjustment_set]
X = sm.add_constant(X)

# Y: 심장병 발생 여부
y = df['heart_disease']

# 로지스틱 회귀
model = sm.Logit(y, X).fit()
print(model.summary())

 

 

📌 추가 옵션

 

  • 혈압을 mediator로 간주하고 제외하는 시나리오로도 모델 재구성 가능
  • 추정된 계수(OR), 신뢰구간, p-value 해석 가능

 

 


 

📈 결과 해석 시 주의사항

 

  • 조정 변수 중 어떤 것이 mediator일 경우,
    → 전체 인과 효과가 과소 추정될 수 있다.
  • collider를 포함했을 경우,
    → 예측 성능이 좋아보일 수 있으나, 인과 왜곡이 생긴다.
  • 따라서 통계적 유의성과 인과적 정당성은 반드시 분리해서 판단해야 한다.

 

 


 

🔍 실무에서 적용 팁

 

상황 추천 전략
DAG 없음 + DCC 사용 변수 포함 후, 하나씩 제외해가며 민감도 테스트
변수 간 관계 불확실 지식 그래프 기반 causal discovery 기법 활용 (예: NOTEARS, PC)
머신러닝 기반 분석 SHAP, Permutation Importance로 변수 영향력 확인하되, 인과는 별도 해석

 

 


 

🧶 마무리하며

 

Disjunctive Cause Criterion(DCC)은 DAG 없이도 confounder를 선별할 수 있는 실용적인 기준이다.

 

하지만 모든 원인을 통제하는 전략은 언제나 안전한 것은 아니다.

 

mediator와 collider에 대한 이해 없이 DCC만 적용할 경우,
오히려 bias를 유발할 수 있다는 점을 반드시 기억해야 한다.

 

 

따라서,

 

  1. DCC는 출발점이지 종착지가 아니며,
  2. DAG 혹은 도메인 지식과 결합하여 분석 목적에 맞는 변수 선택 전략을 세우는 것이 중요하다.