인과 다이어그램 도입 — Chains, Forks, Colliders 의 시각 언어 (Buisson Ch.3 overview)

행동과 데이터를 동시에 표현하는 도구 — 비즈니스 분석가를 위한 DAG 입문

Buisson (2021) Ch.3 의 전체 흐름을 압축한 overview. 인과 다이어그램(CD) 의 두 측면 — 행동 표현과 데이터 표현 — 을 정리하고, 세 기본 구조 (Chain, Fork, Collider) 를 도입한다. C-Mart 아이스드 커피·소금-혈압 사례·Joe-땅콩 비유를 통해 추상 개념을 직관화한다.

Experimentation
Causal Inference
저자

Kwangmin Kim

공개

2026년 05월 08일

1 정의

정의: 인과 다이어그램 (Causal Diagram, CD)

변수를 사각형(노드)으로, 변수 간 인과 관계를 화살표(엣지)로 표현하는 시각적 도구. 형식적으로는 DAG (Directed Acyclic Graph) — 방향이 있고 cycle 이 없는 그래프 (Buisson, 2021, Ch.3).

직관 — Bill Shipley 의 격언

“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 가 배고파서 땅콩을 샀다.”

이 한 문장이 인과 진술이다. 우리가 Joe 의 혈당·뇌 활성화를 측정하지 않아도 — 우리는 “배고픔” 을 실재로 취급한다.

CD 로 표현:

배고픔 ──→ 땅콩 구매

이게 의미하는 것: 만약 Joe 가 배고프지 않았다면 땅콩을 사지 않았을 것이다 (반사실 진술).

자석 비유:

자석·철 막대·자기장 — 자기장은 보이지 않지만 존재한다. 데이터 없이도 직관으로 자기장 작용을 감지·예측한다.

비즈니스 분석에서:

  • 습관·선호·감정 — 정량 데이터 없이도 인과 변수로 다룬다
  • 광고 효과 — 광고가 의식·의도·행동을 어떻게 바꾸는지 CD 로 표현

2.2 측면 2: CD 는 데이터를 표현한다

직관 — 회귀와 CD 의 동치성

선형 관계로만 한정하면, CD 는 선형 회귀의 그래픽 버전이다.

X ──→ Y    (CD)
↕
Y = β·X + ε   (회귀)

여러 변수가 결합되면:

X1 ──→ Y    (CD)
X2 ──→ Y
↕
Y = β1·X1 + β2·X2 + ε

이 동치성 덕분에 CD 의 변형·조작이 선형대수의 규칙으로 검증 가능하다.

→ CD 는 직관과 형식 사이의 다리. 직관으로 그릴 수 있지만 회귀로 검증 가능.

2.3 두 측면의 통합

CD 의 양면성
측면 핵심
행동 표현 인과 관계의 직관·믿음을 시각화
데이터 표현 회귀·통계의 형식적 표현

분석가는 두 측면을 동시에 사용한다.

  1. 도메인 지식으로 CD 초안 (행동 표현)
  2. 데이터로 CD 검증 (데이터 표현 — 어떤 CD 가 데이터와 양립하는가)
  3. 데이터가 여러 CD 와 양립하면 → 추가 도메인 지식·실험 필요

CD 의 주관성은 버그가 아니라 feature 다 — Buisson 의 강조.

3 CD 의 기본 요소

3.1 노드 (Node) 와 엣지 (Edge)

표기법
  • 사각형 노드: 관측 변수 (데이터에 있음)
  • 음영 사각형 또는 타원: 미관측 변수 (데이터에 없지만 가설로 존재)
  • 화살표: 인과 방향. A → B 는 “A 가 B 의 원인” 을 의미
  • 양방향 화살표: 알려진 미지의 공통 원인이 있을 때 (간접 표기)

3.2 첫 CD — C-Mart 아이스드 커피 사례

Temperature ──→ IcedCoffeeSales
직관 — 가장 단순한 CD

이 한 줄 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 의 형식적 정의.

직관 — Fork = 가짜 상관의 원천

이전 글 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 를 회귀에 포함 (조건부) 하면 가짜 상관이 발생.

직관 — Fork 와 정반대 함정

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. 팀 간 의사소통

직관 — CD 가 회의 시간을 줄이는 방법

비즈니스 파트너가 “왜 이 분석에 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 모두에 영향 → confounder
  • Manager Quality 도 confounder
  • 두 변수 통제하지 않으면 교육 효과 과대 추정
  • 또는 무작위로 교육 배정 (RCT) 으로 confounding 제거

7 예시 — Joe 와 땅콩의 CD 확장

직관 — 상황을 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_SkippedHunger 상관 계수 ≈ 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 가 보여주는 것

이 코드는:

  1. CD 명시 (graph_dot)
  2. 자동 식별 (어떤 변수를 통제해야 인과 효과 식별 가능한지)
  3. 추정 (backdoor 보정 = temperature 를 회귀에 포함)
  4. 검증 (refutation tests)

매뉴얼로 회귀 돌리는 것 대비:

  • CD 가 명시적 (암묵 가정 없음)
  • 식별 가능성을 자동 점검 (backdoor·front-door criterion 적용)
  • Refutation 으로 결과 robustness 점검

10 관련 주제

10.1 Ch.3 의 sub-section

10.2 이전 챕터

10.3 후속 챕터

10.5 카테고리 진입점

Subscribe

Enjoy this blog? Get notified of new posts by email: