- 🧠 1. DCC란 무엇인가? – 철학적 정의
- 🧠 1-1. Backdoor Path란 무엇인가?
- 🔍 정의
- 🧪 예시
- 🚪 왜 ‘backdoor’인가?
- 🧰 어떻게 차단하나?
- 🧠 2. 왜 DCC가 필요한가?
- 🧠 3. 수학적 해석
- 🧠 4. DCC의 장점
- 🧠 5. DCC의 한계와 위험
- 🧠 6. DCC는 언제 유용한가?
- 🔍 DCC vs. BDC (Backdoor Criterion)
- 💡 실전 예시
- 🧩 DCC 이후, 실제 조정 전 고려해야 할 점
- 💻 Python 코드 예시: DCC에 따라 조정 변수 포함하기
- 📌 추가 옵션
- 📈 결과 해석 시 주의사항
- 🔍 실무에서 적용 팁
- 🧶 마무리하며
🧠 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에 포함시켜야 한다고 주장한다.
그러면 다음과 같은 조건부 독립이 성립할 수 있다.

단, 이는 충분조건일 뿐, 항상 필요한 것은 아니다.
🧠 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를 유발할 수 있다는 점을 반드시 기억해야 한다.
따라서,
- DCC는 출발점이지 종착지가 아니며,
- DAG 혹은 도메인 지식과 결합하여 분석 목적에 맞는 변수 선택 전략을 세우는 것이 중요하다.
'인과추론' 카테고리의 다른 글
📘 증거 가중치 기반 인과성 평가 프레임워크 (1) | 2025.06.20 |
---|---|
🔍 인과추론 효과 계층 총정리: ATE부터 LATE, CATE, ITE, HTE까지 🧠 (3) | 2025.06.19 |
[인과추론] – Mediation Analysis란? (0) | 2025.05.17 |
[인과추론] 인과추론의 3대 프레임워크: 개념부터 실무 활용까지 🎯 (0) | 2025.04.24 |
[인과추론] 진짜 인과를 구분하는 법 - 인과추론의 주요 가정 (1) | 2025.04.08 |