🔍 핵심 주제
“E가 증가할수록 O가 더 많이 발병한다. 따라서 O의 발생을 줄이기 위해선 E를 잘 관리해야 한다.”
이런 주장을 논문에서 설득력 있게 제시하려면,
위 관계가 단순한 상관관계가 아닌 명확한 인과관계임을 보여야 합니다.
즉, Exposure(E) → Outcome(O)이라는 경로가 다른 요인들에 의해 왜곡되지 않았다는 걸 증명해야 해요.
💡 왜곡되어 버린 거짓 인과관계

"IQ 높은 아이는 신발 사이즈도 크대요. 그러니 IQ를 높이려면 발 사이즈를 키워야겠네요!"
이런 말, 어딘가 이상하지 않나요?
🧠 사실은 이렇습니다:
- 나이가 많을수록 발도 크고, IQ도 높죠.
- 즉, 나이라는 공통 원인(confounder) 때문에 신발 사이즈와 IQ가 관련 있어 보이는 겁니다.
이처럼, 교란 변수(confounder)에 의해 만들어진 관계를 마치 인과관계처럼 착각하는 건 흔한 실수예요.
🔑 해결 방법: 이러한 교란 변수가 있는 경우,
'보정'을 해주어야 보다 명확한 인과 관계에 근접해질 수 있습니다.
🧭 보정의 의미?
보정(Adjustment)이란,
E와 O 사이의 인과관계를 명확히 파악하기 위해 교란 변수의 영향을 제거하는 과정이에요.
✅ 가장 쉬운 보정 방법: 회귀 모델에 포함시키기
model = sm.Logit(IQ ~ 발사이즈 + 나이).fit()
이 모델은 같은 나이 조건에서 발사이즈가 IQ에 미치는 영향을 보여줘요.
→ 즉, 나이라는 혼란 요인(confounder)을 통제한 채로 신발 크기의 효과만 뽑아내는 것!

✅ 회귀 외에도 보정은 가능합니다
1. Matching (매칭)
같은 나이대인 아이들끼리 비교하기
예: 8살이고 신발 210mm인 아이와, 비슷한 나이지만 190mm인 아이 비교
→ 나이의 영향을 통제한 상태에서 신발 크기만 다를 때의 IQ 차이 관찰
2. Weighting (가중치 부여)
나이에 따라 중요도를 조절하기
예: 10살이 많은 집단에 편중되어 있다면, 5살 아이에게 더 높은 가중치를 부여해 균형 잡기
→ 전체 데이터를 "가상의 실험 집단"처럼 조정해서 분석
⚠️ 그런데 모든 변수를 보정하면 안 됩니다!
신발 사이즈와 IQ 사이에 영향을 주는 게 꼭 confounder(교란 변수)만 있는 건 아니에요.
예를 들어:
스트레스가 우울증에 영향을 미치는데,
그전에 스트레스로 인해 잠을 못 자서
우울증이 생기는 경우가 많아요!

스트레스 → 수면의 질 → 우울증
이때 수면의 질은 매개 변수(mediator)일 수 있습니다!
이럴 때 수면의 질을 보정하게 되면,
- 스트레스가 수면의 질을 감소시킴으로써 우울증에 영향을 미치는 경로까지 잘라버리게 되고,
- 그 결과 스트레스의 전체적인 효과가 아닌 '직접 효과'만 남게 됩니다.
즉, 보정은 했지만 오히려 우리가 알고 싶은 진짜 인과 효과(스트레스 전체 영향력)를 과소평가하게 되는 거죠.
🔑 해결 방법: 따라서 매개 변수는 단순히 보정할 게 아니라,
중재 분석(mediation analysis)을 통해 따로 분석해주어야 합니다.
⚠️ Collider (충돌 변수)도 주의해야 합니다
Collider는 E와 O가 공통으로 영향을 주는 변수예요.
예를 들어:
A: 편두통, B: 무릎 관절염, v: 입원 여부
이 두 질환은 서로 아무 관련 없는 질병이에요.
하지만 병원에 입원한 환자만 모아놓고 보면?

- 무릎 관절염으로 입원한 사람은 대부분 머리가 멀쩡하니까 “편두통 없음”
- 편두통으로 입원한 사람은 대부분 다리가 멀쩡하니까 “무릎 통증 없음”
그래서 데이터만 보면:
“편두통 있는 사람은 관절염이 적네?”, “관절염 있는 사람은 두통이 없네?”
라는 거짓된 음의 상관관계가 생깁니다.
이건 단지 입원한 사람이라는 조건(v) 때문이에요.
입원이라는 결과가 A와 B 모두에 의해 결정되면서,
E → v ← O 구조가 생기고, 그 안에서 거짓 관계가 만들어진 거예요.
🔑 해결 방법: Collider는 절대로 보정하면 안 됩니다.
관계 구조를 먼저 파악하고, Collider가 포함되지 않도록 주의하세요.
🔄 Effect Modifier (효과 수정 변수)는 해석이 달라요
Effect Modifier는 E가 O에 미치는 효과의 크기가 다른 조건에 따라 달라지는 변수예요.
예를 들어:
특정 약물(E)이 혈압(O)에 미치는 효과가 나이(v)에 따라 다를 수 있어요.
젊은 사람에게는 효과가 크고, 나이 든 사람에게는 작을 수 있는 것이죠.

이때 단순히 나이를 보정하면 평균 효과만 보이기 때문에,
- 효과 차이를 놓치게 됩니다.
- 대신, 상호작용(interaction) 항을 모델에 포함시켜야 해요.
model = sm.Logit(혈압 ~ 약물 + 나이 + 약물×나이).fit()
🔑 해결 방법: 단순 보정보다는 interaction term을 통해 효과가 달라지는 패턴 자체를 분석하세요.
🛠 Instrumental Variable (도구 변수)로 인과를 우회하기
도구 변수는 confounding이 제거되지 않을 때 우회적으로 인과 효과를 추정하는 도구입니다.
조건은 아래와 같아요:
1. 도구 변수(v)는 Exposure(E)에 영향을 준다.
2. 도구 변수는 Outcome(O)에 직접적인 영향을 주지 않는다.
3. 도구 변수는 Confounder와도 관련이 없어야 한다.
예를 들어:
집에서 학교까지의 거리(v)는 학교 지각률(E)에 영향을 주지만,
성적(O)에는 직접 영향을 주지 않음
→ 집에서 학교까지의 거리를 도구 변수로 사용 가능
어떤 변수(E)가 결과(O)에 영향을 주는지 알고 싶은데,
그 변수(E)가 다른 복잡한 요소(confounder)랑 얽혀 있어서,
그냥 회귀분석을 돌려선 진짜 원인인지 알 수 없을 때가 있어요.
→ 이럴 때 바로 이러한 도구 변수를 활용할 수 있어요!
이 도구 변수를 통해 E만 간접적으로 조작한 것처럼 흉내 내고,
그 효과가 O에 미치는 영향을 따로 보는 거죠.
도구 변수를 활용한 2단계 분석(2SLS)은 이런 흐름이에요:
1️⃣ 1단계: 도구 변수(Z)를 이용해 E를 예측
→ Z가 크면 E가 어떻게 달라지는지 보는 단계
2️⃣ 2단계: 그 예측된 E로 O를 다시 예측
→ 원래 E 대신 “Z가 만든 E”를 넣는 느낌
그렇게 하면, E가 confounder 없이 순수하게 O에 어떤 영향을 미치는지 볼 수 있어요.
🔑 해결 방법: 도구 변수는 보정 대상이 아니라, 인과 추정을 위한 도구로 모델링에 활용하세요.
🎯 변수 관계 정리: 5가지 핵심 유형
Confounder (교란 변수) | v → E → O, v → O | ✅ 반드시 보정 | 안 하면 E→O 관계 왜곡됨 |
Mediator (매개 변수) | E → v → O | 🚫 보정 X | 전체 효과가 아닌 직접 효과만 남게 됨 |
Collider (충돌 변수) | E → v ← O | 🚫 보정 X | 인위적 상관관계 생김 (Selection Bias 가능성) |
Effect Modifier (효과 수정 변수) | E → O, v가 영향 조절 | ⚠️ 상호작용 항 추가 | 효과가 v4 값에 따라 달라짐 |
Instrumental Variable (도구 변수) | v → E → O, v ⊄ O | ⚠️ 직접 보정 X | 인과 추정 도구로 사용 (2SLS 등) |
🧠 결론
논문에서 "E가 O에 영향을 준다"는 주장을 하려면:
1. Confounder는 반드시 보정하고
2. Mediator는 보정하면 안 되고 따로 분석하며
3. Collider는 보정 절대 금지
4. Effect Modifier는 상호작용 분석
5. Instrumental Variable은 보정보다는 도구로 활용해야 합니다.
그리고 이 모든 관계를 명확히 파악하려면, 먼저 DAG(Directional Acyclic Graph)를 그려보는 것이 출발점이에요.
→ 구조를 보면 어떤 변수는 보정하고, 어떤 변수는 빼야 할지 훨씬 선명해집니다.

다음엔 인과추론을 위한 더 구체적인 방법론과 함께 찾아오겠습니다!
감사합니다.
'통계' 카테고리의 다른 글
[인과추론] 진짜 인과를 구분하는 법 (1) | 2025.04.08 |
---|---|
[인과추론] 과거 통계 모델링의 한계를 넘어서 (3) | 2024.12.28 |