1 정의
변수를 사각형(노드)으로, 변수 간 인과 관계를 화살표(엣지)로 표현하는 시각적 도구. 형식적으로는 DAG (Directed Acyclic Graph) — 방향이 있고 cycle 이 없는 그래프 (Buisson, 2021, Ch.3).
“with few exceptions, correlation does imply causation. … A more accurate sound bite for introductory statistics would be that a simple correlation implies an unresolved causal structure.”
— Bill Shipley, Cause and Correlation in Biology (2016)
흔히 “상관은 인과가 아니다” 로 알려져 있지만, Shipley 의 표현이 더 정확하다. 모든 체계적 상관 뒤에는 어떤 인과 구조가 있다 — 그게 직접 인과인지, 공통 원인인지, 선택 효과인지가 미해결 (unresolved) 일 뿐이다.
말레이 그림자 극장의 비유:
관객이 스크린에 둥근 그림자를 본다 → 3차원 물체가 그림자를 만들었다는 것을 안다. 다만 공인지 밥그릇 옆모습인지는 모른다.
상관 = 그림자. 인과 구조 = 물체. 그림자만으로 물체를 결정할 수 없지만, 그림자가 무에서 나오지 않는다는 것은 확실하다.
2 개념 및 원리 — CD 의 두 측면
Buisson 은 CD 를 두 측면에서 본다.
2.1 측면 1: CD 는 행동을 표현한다
“Joe 가 배고파서 땅콩을 샀다.”
이 한 문장이 인과 진술이다. 우리가 Joe 의 혈당·뇌 활성화를 측정하지 않아도 — 우리는 “배고픔” 을 실재로 취급한다.
CD 로 표현:
배고픔 ──→ 땅콩 구매
이게 의미하는 것: 만약 Joe 가 배고프지 않았다면 땅콩을 사지 않았을 것이다 (반사실 진술).
자석 비유:
자석·철 막대·자기장 — 자기장은 보이지 않지만 존재한다. 데이터 없이도 직관으로 자기장 작용을 감지·예측한다.
비즈니스 분석에서:
- 습관·선호·감정 — 정량 데이터 없이도 인과 변수로 다룬다
- 광고 효과 — 광고가 의식·의도·행동을 어떻게 바꾸는지 CD 로 표현
2.2 측면 2: CD 는 데이터를 표현한다
선형 관계로만 한정하면, CD 는 선형 회귀의 그래픽 버전이다.
X ──→ Y (CD)
↕
Y = β·X + ε (회귀)
여러 변수가 결합되면:
X1 ──→ Y (CD)
X2 ──→ Y
↕
Y = β1·X1 + β2·X2 + ε
이 동치성 덕분에 CD 의 변형·조작이 선형대수의 규칙으로 검증 가능하다.
→ CD 는 직관과 형식 사이의 다리. 직관으로 그릴 수 있지만 회귀로 검증 가능.
2.3 두 측면의 통합
| 측면 | 핵심 |
|---|---|
| 행동 표현 | 인과 관계의 직관·믿음을 시각화 |
| 데이터 표현 | 회귀·통계의 형식적 표현 |
분석가는 두 측면을 동시에 사용한다.
- 도메인 지식으로 CD 초안 (행동 표현)
- 데이터로 CD 검증 (데이터 표현 — 어떤 CD 가 데이터와 양립하는가)
- 데이터가 여러 CD 와 양립하면 → 추가 도메인 지식·실험 필요
CD 의 주관성은 버그가 아니라 feature 다 — Buisson 의 강조.
3 CD 의 기본 요소
3.1 노드 (Node) 와 엣지 (Edge)
- 사각형 노드: 관측 변수 (데이터에 있음)
- 음영 사각형 또는 타원: 미관측 변수 (데이터에 없지만 가설로 존재)
- 화살표: 인과 방향.
A → B는 “A 가 B 의 원인” 을 의미 - 양방향 화살표: 알려진 미지의 공통 원인이 있을 때 (간접 표기)
3.2 첫 CD — C-Mart 아이스드 커피 사례
Temperature ──→ IcedCoffeeSales
이 한 줄 CD 의 의미:
- 기온이 아이스드 커피 판매의 원인
- 즉 기온을 변경하면 (실제로 또는 가설적으로) 판매가 변함
- 반대 방향 (판매 → 기온) 은 비현실적
비즈니스 의사결정에서:
- 여름 매출 예측: 기온 정보로 가능
- 매출 진작: 기온은 통제 불가 → CD 에 다른 원인 추가 (광고·할인) 필요
3.3 미관측 변수 표기
[CustomerSweetTooth] ──→ IcedCoffeeSales
↑
Temperature
([ ] 는 미관측 변수)
CustomerSweetTooth (단맛 선호) 는 측정 어렵지만, 분석에 영향을 미친다. CD 에 명시하면:
- 분석가가 그 효과를 의식
- 미관측 변수가 나중에 confounder 가 되는지 점검 가능
- 외부 데이터·proxy 로 측정 시도 가능
만약 CD 에 안 그리면? 분석에서 그 변수의 효과를 무시하게 되어 결과가 왜곡된다.
4 세 가지 기본 구조 — Chain, Fork, Collider
CD 에는 세 변수 사이 가능한 기본 패턴이 셋이다.
4.1 1. Chain (사슬)
A ──→ B ──→ Y
세 변수가 일자로 연결. A → B → Y. B 가 A 와 Y 의 매개 변수 (mediator).
광고 → 인지 변화 → 구매:
TV 광고 ──→ 브랜드 인지 ──→ 구매
광고가 직접 구매를 일으키지 않는다. 인지 변화 라는 중간 단계를 거친다. 이게 chain.
분석적 함의:
- 광고의 총 효과 = 광고 → 구매 전체 영향
- 광고의 간접 효과 = 광고 → 인지 → 구매 (chain 을 따라)
- 인지 변화 (B) 를 통제하면 → 광고의 직접 경로가 차단됨 → 광고 효과 못 봄
→ Mediation 분석 (Buisson Ch.12, E-BUI12 시리즈) 의 핵심 구조.
4.2 2. Fork (포크)
L
╱ ╲
╱ ╲
A Y
(L 이 A 와 Y 양쪽으로 화살표)
한 변수 L 이 두 변수 A, Y 의 공통 원인. Confounder 의 형식적 정의.
이전 글 E-BUI1-2 confounder 에서 다룬 내용의 형식화.
C-Mart 아이스크림-생수 사례:
Temperature
╱ ╲
╱ ╲
IceCreamSales WaterSales
기온 (L) 이 두 매출 (A, Y) 의 공통 원인. A 와 Y 자체는 인과 관계 없음. 그러나 데이터에서는 양의 상관이 보인다 (둘 다 더운 날 잘 팔림).
L 을 회귀에 포함하지 않으면 → A 가 Y 의 인과 변수처럼 보임 → confounding bias.
4.3 3. Collider (충돌 변수)
A Y
╲ ╱
╲ ╱
C
(A 와 Y 가 C 양쪽으로 화살표)
두 변수 A, Y 의 공통 결과. C 가 collider.
특이한 점: collider 는 비조건부 분석에서 A, Y 의 상관을 만들지 않는다. 그러나 C 를 회귀에 포함 (조건부) 하면 가짜 상관이 발생.
E-BUI1-3 collider 함정 에서 다룬 바닐라-초콜릿 사례:
VanillaSales ChocolateSales
╲ ╱
╲ ╱
TotalSales (collider)
비조건부: 두 매출 독립 (corr = 0)
TotalSales >= 임계값 으로 조건부 분석 → 두 매출 사이 가짜 음의 상관 발생.
대조표:
| 구조 | 비조건부 | 조건부 (중간 변수 통제) |
|---|---|---|
| Chain (A→B→Y) | A, Y 상관 | B 통제 시 상관 차단 |
| Fork (A←L→Y) | A, Y 가짜 상관 | L 통제 시 가짜 상관 제거 |
| Collider (A→C←Y) | A, Y 독립 | C 통제 시 가짜 상관 생성 |
→ 변수를 통제할지 말지가 구조에 따라 정반대. 이게 CD 가 필요한 이유다.
5 왜 필요한가 — CD 가 분석을 바꾸는 4 가지 방식
5.1 1. 어떤 변수를 통제할지 결정
회귀에 변수를 추가할 때:
- Confounder (Fork 의 L) 추가 → 편향 감소
- Mediator (Chain 의 B) 추가 → 간접 효과 차단 (의도에 따라 다름)
- Collider (C) 추가 → 가짜 상관 생성
CD 없이는 어떤 변수가 어느 역할인지 모른다. CD 가 있으면 명확.
5.2 2. 미관측 변수의 효과 추적
CD 에 미관측 변수를 표기하면:
- 그 변수가 confounder 인지 식별
- Proxy 로 대체 가능한지 검토
- IV (도구변수) 같은 다른 식별 전략 활용
5.3 3. 분석 가설의 명시적 표현
CD 없이 회귀를 돌리면, 분석가는 자기도 모르게 다음을 가정한다.
- 회귀에 포함된 변수만 confounder
- 모든 인과 관계가 선형
- Confounder 가 역으로 Y 의 결과가 아님
이 가정을 CD 로 표현하면 검증 가능해진다. 표현 안 하면 암묵적 가정이 분석을 보이지 않게 왜곡한다.
5.4 4. 팀 간 의사소통
비즈니스 파트너가 “왜 이 분석에 X 를 안 넣었는가” 라고 묻는다.
CD 없는 답변: “X 가 confounder 가 아니라고 판단해서요” — 모호.
CD 있는 답변: “X 는 collider 라서 추가하면 가짜 상관이 생깁니다 (다이어그램 보여줌)” — 명확. 비즈니스 파트너가 동의 또는 다른 CD 를 제안.
→ CD 가 분석가와 도메인 전문가의 공통 언어가 된다.
6 응용 분야 — CD 적용 사례
6.1 마케팅 — 광고 효과
[Customer Mood] ──→ Ad Click ──→ Purchase
╲ ╱ ↗
╲ ╱ ╱
Ad Exposure ────────────╯
↑
Ad Targeting Algorithm
분석 질문: “광고 노출이 구매를 일으키는가?”
CD 분석:
Ad Exposure → Purchase직접 경로Ad Targeting Algorithm이 광고 노출과 구매 양쪽에 영향 → confounder[Customer Mood]미관측 confounder- → 알고리즘 변수 통제 + mood proxy 추가 + IV 또는 RCT 필요
6.2 HR — 교육의 retention 효과
[Career Stage] ──→ Training ──→ Performance ──→ Retention
↓ ↑
↓ ↑
└──────→ Manager Quality ─────┘
분석 질문: “교육이 retention 을 향상시키는가?”
CD 분석:
Career Stage가 교육·성과·retention 모두에 영향 → confounderManager Quality도 confounder- 두 변수 통제하지 않으면 교육 효과 과대 추정
- 또는 무작위로 교육 배정 (RCT) 으로 confounding 제거
7 예시 — Joe 와 땅콩의 CD 확장
문제: Joe 가 슈퍼에서 땅콩과 콜라를 샀다. 어떤 CD?
Step 1 — 핵심 인과 변수 식별:
Hunger → Peanut Purchase
Thirst → Cola Purchase
Step 2 — 공통 원인 의심:
점심 안 먹었음 → Hunger AND Thirst 둘 다 ↑
Lunch_Skipped 가 Fork 의 L
Step 3 — CD 작성:
Lunch_Skipped
╱ ╲
╱ ╲
Hunger Thirst
↓ ↓
Peanut Cola
Purchase Purchase
Step 4 — 분석 질문 적용:
"땅콩과 콜라 구매가 동시에 일어나는 이유는?"
→ 직접 인과 (땅콩이 콜라를 일으킴) 아님
→ 공통 원인 (Lunch_Skipped → Hunger·Thirst) 가 Fork 만듦
이 CD 가 분석 가설. 데이터로 검증:
Lunch_Skipped와Hunger상관 계수 ≈ 0.7 → 가설 일치Hunger통제 후 땅콩-콜라 상관이 사라지면 → CD 일치- 사라지지 않으면 → 다른 confounder 또는 직접 인과 의심
8 코드 예시 — Python 으로 CD 그리기 (networkx + matplotlib)
import networkx as nx
import matplotlib.pyplot as plt
# C-Mart 아이스크림-생수 confounder 사례
G = nx.DiGraph()
G.add_edges_from([
("Temperature", "IceCreamSales"),
("Temperature", "WaterSales"),
])
# Layout 결정 — fork 형태로
pos = {
"Temperature": (0, 1),
"IceCreamSales": (-1, 0),
"WaterSales": (1, 0),
}
plt.figure(figsize=(8, 5))
nx.draw(G, pos,
with_labels=True,
node_color="lightblue",
node_size=3000,
font_size=10,
arrows=True,
arrowsize=20,
edge_color="gray")
plt.title("Fork: Temperature 가 IceCream·Water 매출의 공통 원인")
plt.tight_layout()
plt.savefig("cd_fork_example.png", dpi=80)
plt.show()
# Collider 사례
G2 = nx.DiGraph()
G2.add_edges_from([
("VanillaSales", "TotalSales"),
("ChocolateSales", "TotalSales"),
])
pos2 = {
"VanillaSales": (-1, 1),
"ChocolateSales": (1, 1),
"TotalSales": (0, 0),
}
plt.figure(figsize=(8, 5))
nx.draw(G2, pos2,
with_labels=True,
node_color="lightyellow",
node_size=3000,
font_size=10,
arrows=True,
arrowsize=20,
edge_color="gray")
plt.title("Collider: TotalSales 가 두 매출의 공통 결과")
plt.tight_layout()
plt.savefig("cd_collider_example.png", dpi=80)
plt.show()CD 를 코드로 그리면:
- 버전 관리 가능 (Git 에 commit)
- 자동 검증 (cycle 검사·confounder 식별 자동화 가능)
- 재사용 (다른 분석에 같은 CD 활용)
손그림 CD 는 직관 도출에 좋지만, 분석 파이프라인에 들어가려면 코드 표현이 필요하다.
9 코드 예시 — dowhy 로 CD 분석
dowhy 는 인과 추론 자동화 라이브러리. CD 를 입력하면 식별 가능성·추정·검증을 자동화.
from dowhy import CausalModel
import pandas as pd
import numpy as np
# 가상 C-Mart 데이터
np.random.seed(42)
n = 1000
temperature = np.random.normal(20, 8, n)
ice_cream = 5 + 0.8 * temperature + np.random.normal(0, 2, n)
water = 3 + 0.6 * temperature + np.random.normal(0, 2, n)
df = pd.DataFrame({
"temperature": temperature,
"ice_cream": ice_cream,
"water": water,
})
# CD 를 GraphViz 표기법으로
graph_dot = """
digraph {
temperature -> ice_cream;
temperature -> water;
}
"""
# 인과 모델 정의
model = CausalModel(
data=df,
treatment="ice_cream",
outcome="water",
graph=graph_dot,
)
# 인과 효과 식별
identified = model.identify_effect()
print("식별된 추정량:")
print(identified)
# 추정 (backdoor 보정 — temperature 통제)
estimate = model.estimate_effect(
identified,
method_name="backdoor.linear_regression",
)
print(f"\n인과 효과 추정: {estimate.value:.3f}")
print(f"(진짜 인과 효과는 0 — 두 매출은 직접 인과 없음)")dowhy 가 보여주는 것
이 코드는:
- CD 명시 (graph_dot)
- 자동 식별 (어떤 변수를 통제해야 인과 효과 식별 가능한지)
- 추정 (backdoor 보정 = temperature 를 회귀에 포함)
- 검증 (refutation tests)
매뉴얼로 회귀 돌리는 것 대비:
- CD 가 명시적 (암묵 가정 없음)
- 식별 가능성을 자동 점검 (backdoor·front-door criterion 적용)
- Refutation 으로 결과 robustness 점검
10 관련 주제
10.1 Ch.3 의 sub-section
- E-BUI3-1 CD 의 도구적 역할과 회귀 매핑 — CD 와 선형 회귀의 동치성
- E-BUI3-2 Chains 와 Forks 구조 — 두 기본 구조의 자세한 분석
- E-BUI3-3 Colliders 와 Paths — Collider 의 함정과 경로 분석
10.2 이전 챕터
- E-BUI1-2 인간 행동의 복잡성과 교란 변수 — Confounder 직관
- E-BUI1-3 상관 vs 인과 + 변수 추가 함정 — Collider 함정 도입
- E-BUI2-2 행동·데이터 연결 — 5요소 매핑이 CD 노드가 됨
10.3 후속 챕터
- E-BUI4-0 DAG 0부터 짓기 — Buisson Ch.4: 비즈니스 문제에서 CD 구축 절차
- E-BUI5-0 Deconfounding overview — Buisson Ch.5: Backdoor Criterion 등 CD 활용 분석
10.4 Hernan 정통 cross-link
- Causal_Inference/06 DAG와 인과 다이어그램 — DAG 의 학술적 정의·d-separation
- Causal_Inference/07 교란 — Backdoor criterion 의 형식적 처리
10.5 카테고리 진입점
- Experimentation 학습 로드맵 — 11 Phase × 7 교재 매핑