DAG 의 도구적 역할과 회귀 매핑 — CD 가 회귀의 시각 언어인 이유 (Buisson Ch.3.1)

단변수 회귀에서 다변수·로지스틱까지, CD 와 선형대수의 동치성과 그 의미

Buisson (2021) Ch.3 의 첫 절을 정리한다. 인과 다이어그램 (CD) 이 행동을 표현하는 동시에 데이터·회귀를 표현하는 두 측면을 가짐을 보이고, 단변수·다변수·로지스틱 회귀와의 매핑을 단계적으로 도출한다. C-Mart 의 Temperature → IcedCoffeeSales, Joe-땅콩 비유, 자석-자기장 비유로 추상 개념을 직관화한다.

Experimentation
Causal Inference
저자

Kwangmin Kim

공개

2026년 05월 08일

1 정의

정의: CD 의 도구적 역할 (Tool Role of Causal Diagrams)

CD 는 분석 도구 (tool for analysis) 다. 그 자체로 진리를 주장하지 않으며, 행동에 대한 직관과 데이터의 통계 구조를 연결하는 인터페이스 역할을 한다 (Buisson, 2021, Ch.3).

CD 의 두 얼굴:

얼굴 의미 분석가의 사용법
행동 표현 변수 간 인과 관계가 실재한다는 도메인 신념 도메인 지식·인터뷰·관찰로 초안 그리기
데이터 표현 변수 간 인과 관계가 회귀식으로 환원된다는 통계적 사실 데이터로 검증·반박·정제
직관 — “도구” 라는 단어가 의미하는 것

CD 를 “도구” 라고 부르는 이유는 다음과 같다.

  • 망치는 못을 박는 도구 — 망치 자체는 못이 박힌다는 진리를 주장하지 않는다. 단지 우리가 못을 박을 때 효율적으로 쓰는 물건이다.
  • CD 는 인과 가설을 다루는 도구 — CD 자체는 “이 인과 관계가 진리다” 라고 주장하지 않는다. 단지 우리가 인과 관계를 분석할 때 효율적으로 쓰는 물건이다.

망치를 못이 부서지지 않는다고 보장하는 도구로 오해하면 안 되듯이, CD 를 “그렸으니 이 인과 관계가 맞다” 는 보증 도구로 오해하면 안 된다.

도구는 사용자의 판단 을 보조한다. 자동으로 답을 내지 않는다.

2 개념 및 원리 — CD 의 두 얼굴 (재방문)

E-BUI3-0 overview 에서 도입한 두 얼굴을 더 자세히 살펴본다. 이 절의 핵심은 두 얼굴이 분리된 두 개념 이 아니라 같은 그래프의 두 해석 이라는 점이다.

2.1 얼굴 1 — CD 는 행동을 표현한다

Joe 와 땅콩 다시 보기

“Joe 가 배고파서 땅콩을 샀다.”

이 문장이 인과 진술이다. CD 로 표현:

Hunger ──→ PeanutPurchase

이 다이어그램이 의미하는 바:

  1. 존재 주장: Hunger 라는 변수가 실재한다 (Joe 의 마음 속에).
  2. 방향 주장: Hunger 가 PeanutPurchase 의 원인이지, 그 반대가 아니다.
  3. 반사실 주장: 만약 Joe 가 배고프지 않았다면 땅콩을 사지 않았을 것이다.
직관 — 자석과 자기장 비유

물리 비유:

자석·철 막대·자기장. 자기장은 보이지 않지만, 막대를 움직이면 자기장의 작용을 직관으로 감지한다. 자기장의 수식 (Maxwell 방정식) 을 몰라도 막대 끌림을 예측할 수 있다.

비즈니스 비유:

광고·구매·고객 의도. 의도는 직접 측정되지 않지만, 광고를 노출하고 구매가 늘면 의도의 작용을 감지한다. 의도의 수식을 몰라도 광고-구매 패턴을 예측할 수 있다.

측정되지 않는다고 존재하지 않는 게 아니다. CD 는 측정 안 된 변수도 표현한다.

이게 CD 가 단순한 데이터 시각화 (산점도, 히트맵) 와 결정적으로 다른 점이다. 산점도는 데이터에 있는 변수만 그릴 수 있다. CD 는 도메인이 인지하는 모든 변수를 그릴 수 있다.

직관 — 어린 아이도 인과를 안다

Buisson 이 강조하는 깊은 통찰:

“어린 아이가 ‘왜냐하면 (because)’ 을 사용할 때, 그들은 이미 인과 추론을 하고 있다.”

5세 아이가 “오빠가 미는 바람에 넘어졌어요” 라고 말할 때, 그 아이는:

  • “오빠의 밂” 과 “넘어짐” 을 변수로 인식
  • 둘 사이 인과 방향 (밂 → 넘어짐) 을 결정
  • 반사실 (밀지 않았으면 안 넘어졌을 것) 을 암묵적으로 주장

인과 추론은 통계학 이전에 인간 인지의 기본 모드. CD 는 그 기본 모드를 시각화하는 언어 일 뿐.

이게 분석가가 도메인 전문가와 CD 로 의사소통할 때 자연스럽게 이해되는 이유다.

2.2 얼굴 2 — CD 는 데이터를 표현한다

CD ↔︎ 선형 회귀 동치성 (1단계: 단변수)

C-Mart 사례:

Temperature ──→ IcedCoffeeSales

이 CD 가 데이터로 환원될 때 (선형 가정 하):

\[ \text{IcedCoffeeSales} = \beta \cdot \text{Temperature} + \varepsilon \]

여기서:

  • \(\beta\) 는 1도 상승당 매출 증가량 (단위 $).
  • \(\varepsilon\) 은 측정 오차 + 다른 (CD 에 안 그린) 원인의 영향.
  • CD 의 화살표 = 회귀의 한 항.
  • CD 의 노드 = 데이터의 한 컬럼.
직관 — CD 가 회귀에 추가하는 것

회귀식 단독:

\[\text{IcedCoffeeSales} = \beta \cdot \text{Temperature} + \varepsilon\]

이 식 단독으로는 상관 진술이다. 결론: “기온이 1도 오르면 매출이 \(\beta\) 달러 증가하는 연관 이 있다.”

회귀식 + CD:

\[ \text{Temperature} \xrightarrow{\beta} \text{IcedCoffeeSales} \]

이 조합은 인과 진술이다. 결론: “이 CD 가 옳다면, 기온을 1도 올리면 매출이 \(\beta\) 달러 증가시킨다 (cause).”

→ CD 가 회귀에 추가하는 것은 조건부 인과 해석 (“이 CD 가 옳다면”).

이 한 줄 차이가 비즈니스 의사결정의 차이를 만든다.

  • 상관: “더운 날 매출이 많다” — 통찰만 제공
  • 인과: “더울 때 직원·재고를 늘리면 매출 증가” — 행동 가능한 의사결정
회귀의 함정 — CD 없이 인과를 주장하지 않는다

분석가가 자주 빠지는 오류:

“회귀 결과 \(\beta = 1000\) (\(p < 0.001\)). 따라서 기온이 매출의 원인이다.”

이 추론에는 암묵적인 CD 가 숨어 있다. 명시적으로 그리지 않으면:

  • 어떤 변수를 원인으로, 어떤 것을 결과로 가정했는지 불명확
  • 누락된 confounder (공통 원인) 가 있는지 점검 안 됨
  • Reverse causality (반대 방향 인과) 가능성 고려 안 됨

→ “회귀를 돌렸으니 인과다” 는 잘못. CD 를 명시 + 검증해야 인과 결론이 정당화된다.

2.3 두 얼굴이 같은 그래프인 이유

통합
   행동 (믿음·도메인 지식)
            ║
            ▼
       CD (시각 언어)
            ║
            ▼
    데이터 (회귀·통계)

CD 는 세로축 위에 위치한 인터페이스. 위로는 도메인 신념을 받고, 아래로는 통계 기법을 내보낸다.

이게 의미하는 것:

  1. 도메인 전문가의 신념을 회귀에 정확히 번역 가능 (어떤 변수를 포함·제외할지)
  2. 통계 결과를 도메인 언어로 해석 가능 (\(\beta\) 의 의미를 비즈니스 행동으로 환원)
  3. 두 측 사이 불일치를 드러냄 (도메인은 X 가 원인이라 믿는데 회귀가 인정 안 함 → 가설 재검토)

3 단변수에서 다변수로 — 회귀 매핑의 확장

3.1 다변수 CD

다변수 회귀 매핑

C-Mart 의 다른 사례 — 아이스크림 매출. 두 가지 원인이 있다고 가정.

SummerMonth ──→ IceCreamSales
                    ↑
              Temperature

(SummerMonth 는 6/7/8월 indicator, Temperature 는 기온)

회귀로 표현:

\[ \text{IceCreamSales} = \beta_T \cdot \text{Temperature} + \beta_S \cdot \text{SummerMonth} + \varepsilon \]

CD 와 회귀의 매핑:

CD 요소 회귀 요소
노드 IceCreamSales 종속 변수 (LHS)
노드 Temperature, SummerMonth 설명 변수 (RHS)
화살표 Temperature → IceCreamSales \(\beta_T\) 의 추정 대상
화살표 SummerMonth → IceCreamSales \(\beta_S\) 의 추정 대상
(그리지 않은) 다른 원인 \(\varepsilon\) 에 흡수
직관 — 왜 SummerMonth 와 Temperature 를 둘 다 넣는가

기온이 이미 여름에 높을 텐데 SummerMonth 를 따로 넣는 이유는?

  • 기온이 같아도 (예: 25°C 봄날 vs 25°C 여름날) 계절 자체의 효과 가 있을 수 있음 (휴가·여름 활동·아이스크림 마케팅)
  • 회귀에 두 변수 다 넣으면 각 변수의 고유 효과 를 분리 (\(\beta_T\) = 같은 계절 내 기온 효과, \(\beta_S\) = 같은 기온의 계절 효과)

이게 다변수 회귀가 단변수보다 더 풍부한 정보를 주는 이유다.

→ CD 가 두 화살표를 그리면 회귀가 두 계수를 분리해 추정한다. 이 매핑이 정확하다.

3.2 화살표 추가의 의미

화살표 = 인과 가설

CD 에 화살표를 추가하는 것은 회귀에 변수를 추가하는 것보다 강한 주장이다.

  • 회귀에 변수 추가: “이 변수와 종속 변수 사이 통계적 연관을 추정한다”
  • CD 에 화살표 추가: “이 변수가 종속 변수의 원인 이라고 가정한다”

→ CD 는 분석가가 자기 가정을 명시할 것을 강제한다.

이게 CD 의 도구로서의 가치다. 회귀만 돌리면 가정이 암묵적으로 남고, 나중에 결과를 의심하기 어렵다. CD 는 가정을 카드 위에 펼쳐 놓는다.

4 Logistic Regression 확장 — 이항 결과 변수

정의: GLM 으로의 확장

종속 변수가 이항 (0/1) 인 경우 — 예: “고객이 구매했는가?” — 선형 회귀가 아닌 로지스틱 회귀 를 사용한다 (Buisson, 2021, Ch.3 sidebar).

CD 는 그대로 사용 가능. 화살표가 의미하는 식이 바뀔 뿐.

4.1 CD ↔︎ 로지스틱 회귀 매핑

형식

C-Mart 아이스크림 사례 — 이번엔 “그날 적어도 1개 아이스크림을 샀는가” (이항).

TasteForVanilla ──→ IceCreamPurchase (0/1)
                         ↑
              TasteForChocolate

로지스틱 회귀:

\[ P(\text{IceCreamPurchase} = 1) = \sigma(\beta_0 + \beta_V \cdot \text{TasteForVanilla} + \beta_C \cdot \text{TasteForChocolate}) \]

여기서:

\[ \sigma(x) = \frac{1}{1 + e^{-x}} \]

는 로지스틱 함수 (S-curve, 0~1 범위).

직관 — 왜 시그모이드?

선형 회귀의 한계:

\[P = \beta_0 + \beta_V \cdot V + \beta_C \cdot C\]

이 식의 우변은 \(-\infty\) 부터 \(+\infty\) 까지 어떤 값도 가질 수 있다. 그러나 \(P\) (확률) 는 \([0, 1]\) 에만 있다.

만약 \(V = 100\) 이고 \(\beta_V = 0.5\)\(P = 50\) — 확률이 50? 의미 없다.

→ 시그모이드 \(\sigma(x)\) 가 어떤 실수 입력도 0~1 사이로 압축. 확률 해석 가능.

S-curve 의 모양:

  • \(x = 0\) 일 때 \(\sigma = 0.5\) (50% 확률)
  • \(x → +\infty\) 일 때 \(\sigma → 1\) (확실히 산다)
  • \(x → -\infty\) 일 때 \(\sigma → 0\) (확실히 안 산다)
  • 작은 \(x\) 변화는 확률에 큰 변화 (S 의 가운데 부근)
  • \(x\) 의 끝에서는 변화가 둔함 (S 의 양 끝)

→ 사람의 직관과 닮음. “선호가 약간 더 강해도 살까 말까 결정이 흔들리는 영역” 이 있다 — 그 영역이 S 의 가운데.

4.2 계수 해석의 어려움

로지스틱 계수의 함정

선형 회귀: \(\beta_T = 1000\) → “기온 1도당 매출 $1000 증가” (직관적)

로지스틱: \(\beta_V = 0.5\) → “?” (직관 어려움)

이유: \(\sigma\) 의 비선형성. \(\beta_V = 0.5\) 가 의미하는 확률 변화는 시작 확률에 따라 다름.

  • 시작 \(P = 0.5\)\(V\) 1 증가 → \(P \approx 0.62\) (12%p 증가)
  • 시작 \(P = 0.9\)\(V\) 1 증가 → \(P \approx 0.94\) (4%p 증가)
  • 시작 \(P = 0.1\)\(V\) 1 증가 → \(P \approx 0.16\) (6%p 증가)

→ 로지스틱 계수는 odds ratio (\(e^{\beta_V}\)) 또는 시그모이드 미분의 한계 효과 로 해석. 선형 회귀처럼 단순하지 않음.

그러나 CD 의 구조 (어떤 변수를 포함·제외하는지) 는 그대로 유효. CD 의 변환 규칙은 로지스틱에서도 작동.

직관 — Odds Ratio 의 비즈니스 의미

\(\beta_V = 0.5\) → odds ratio \(e^{0.5} \approx 1.65\).

해석: TasteForVanilla 가 1 단위 증가하면 구매할 odds 가 1.65배 가 된다.

Odds 와 확률의 차이:

  • 확률: $P = $ 구매 / 전체
  • Odds: $P / (1 - P) = $ 구매 / 안 구매

\(P = 0.5\) → odds = 1 → “반반” \(P = 0.8\) → odds = 4 → “4 대 1로 살 가능성” \(P = 0.99\) → odds = 99 → “99 대 1로 살 가능성”

→ Odds 는 비교를 깔끔하게 한다. odds ratio = 1.65 = “Vanilla 선호 1단위 차이 = 살 가능성이 65% 더 높음” (확률 기반의 직관적 해석에 가까움).

5 응용 — CD 가 분석을 가이드하는 워크플로

5.1 1단계: 도메인 지식으로 초안 CD

직관 — “그래도 그려야 한다”

분석가가 가장 흔히 하는 실수: “내 도메인 지식이 약해서 CD 못 그림. 데이터 보고 결정”

이 자세는 위험하다. 데이터는 인과 방향을 알려주지 않는다 (상관만 알려줌). 도메인 지식 없이 CD 를 안 그리면, 분석가는 무의식적으로 가정한다.

대신 권장:

“내 도메인 지식이 약하니, 우선 1차 초안을 그리고, 도메인 전문가에게 보여 검증받는다.”

CD 는 의사소통 매개. 그리는 행위 자체가 가치다.

5.2 2단계: CD 를 회귀로 번역

CD 의 각 화살표를 회귀의 항으로. 다음 절차:

  1. 종속 변수 결정: CD 의 분석 대상 노드 (예: IceCreamSales)
  2. 설명 변수 수집: 종속 변수로 들어오는 화살표의 시작 노드
  3. 회귀 모델 선택:
    • 종속 변수가 연속 → 선형 회귀
    • 이항 → 로지스틱 회귀
    • 카운트 → 포아송 회귀
  4. 계수 추정: statsmodels 등으로 OLS/MLE 적합

5.3 3단계: 데이터로 CD 검증

직관 — CD 와 데이터의 일관성 점검

CD 를 그렸으면 데이터와 비교한다.

예상 검증 방법
Temperature → IceCreamSales 가 양의 효과 \(\beta_T > 0\) 인지 확인
효과 크기 ~$1000/도 \(\beta_T\) 의 신뢰구간이 그 범위인지
Temperature 와 IceCreamSales 사이 다른 confounder 없음 confounder 후보 추가 후 \(\beta_T\) 가 안정한지 (변동 < 10%)

CD 가 데이터와 어긋나면 (예상한 부호 반대, 너무 큰/작은 효과) → CD 수정 또는 데이터 점검.

5.4 4단계: 결론을 도메인 언어로

회귀 결과를 비즈니스 의사결정으로 번역.

“기온 1도 상승 시 매출 \(\beta_T = 1000\) 증가 (95% CI: $850~1150). 우리 CD 가 옳다면 (즉 기온이 매출의 진짜 원인이라면), 더운 주에 직원 1명 추가 비용 ($300/일) 은 매출 증가로 회수 가능.”

이 한 문장이 CD + 회귀의 최종 산출물이다.

6 예시 — Joe 와 땅콩의 회귀 매핑

직관 — 작은 사례를 끝까지 따라가 보기

Joe 의 행동을 데이터화한다고 상상.

CD:

Hunger ──→ PeanutPurchase

가상 데이터 (Joe 의 7일):

Day Hunger (1-10) PeanutPurchase ($)
1 8 5
2 3 0
3 9 6
4 5 2
5 7 4
6 2 0
7 6 3

선형 회귀:

\[\text{PeanutPurchase} = \beta \cdot \text{Hunger} + \varepsilon\]

추정: \(\hat{\beta} \approx 0.85\), 즉 Hunger 1 단위 증가 시 평균 $0.85 추가 구매.

CD 가 옳다면 (Hunger 가 PeanutPurchase 의 진짜 원인이면): “Joe 의 Hunger 를 1 더 올리면 (예: 다이어트 중단) 평균 $0.85 더 산다.”

CD 가 틀렸다면 (예: 둘 다 “외출 시간” 의 결과일 뿐): 위 인과 해석은 잘못. 외출 시간을 confounder 로 추가해야.

7 코드 예시 — Python 으로 CD 와 회귀 연결

7.1 단변수 회귀 (Linear)

import numpy as np
import pandas as pd
import statsmodels.api as sm

np.random.seed(42)
n = 365  # 1년치 일별 데이터

# CD: Temperature → IcedCoffeeSales
temperature = np.random.normal(20, 8, n)  # 평균 20°C, 표준편차 8°C
true_beta = 1000  # \$1000/도
noise = np.random.normal(0, 2000, n)
iced_coffee_sales = true_beta * temperature + noise

df = pd.DataFrame({
    "temperature": temperature,
    "iced_coffee_sales": iced_coffee_sales,
})

# 회귀 적합 — CD 의 화살표를 회귀로 번역
X = sm.add_constant(df["temperature"])
model = sm.OLS(df["iced_coffee_sales"], X).fit()

print("회귀 계수:")
print(model.params)
print(f"\n95% 신뢰구간:")
print(model.conf_int())

# CD 가 옳다는 가정 하 인과 해석
beta_T = model.params["temperature"]
print(f"\n인과 해석: 기온 1도 상승 시 매출 ${beta_T:.0f} 증가")
print("(이 해석은 CD 가 옳다는 가정 하에서만 유효)")
직관 — 코드의 구조

이 코드는 4 단계를 명확히 보여준다.

  1. CD 정의 (주석으로): Temperature → IcedCoffeeSales
  2. 데이터 생성 (시뮬레이션): true \(\beta = 1000\) 인 세계 가정
  3. 회귀 추정: statsmodels.OLS — CD 의 화살표를 추정
  4. 인과 해석 (주석): “CD 가 옳다는 가정 하”

코드 주석에 CD 를 명시하면 6개월 후의 자기 자신·동료가 분석 의도를 즉시 이해한다.

7.2 다변수 회귀

# 다변수 CD: Temperature, SummerMonth → IceCreamSales
np.random.seed(42)
n = 365

temperature = np.random.normal(20, 8, n)
month = np.random.choice(range(1, 13), n)
summer_month = ((month >= 6) & (month <= 8)).astype(int)

true_beta_T = 800
true_beta_S = 5000  # 여름 추가 매출 \$5000/일
ice_cream_sales = (
    true_beta_T * temperature
    + true_beta_S * summer_month
    + np.random.normal(0, 2000, n)
)

df2 = pd.DataFrame({
    "temperature": temperature,
    "summer_month": summer_month,
    "ice_cream_sales": ice_cream_sales,
})

# 두 변수 회귀
X2 = sm.add_constant(df2[["temperature", "summer_month"]])
model2 = sm.OLS(df2["ice_cream_sales"], X2).fit()

print("\n다변수 회귀 결과:")
print(model2.summary())
직관 — 두 계수의 비즈니스 분해

추정 결과 (예상): \(\hat{\beta}_T \approx 800\), \(\hat{\beta}_S \approx 5000\).

분해된 의미:

  • “여름이 아니더라도 (봄·가을·겨울)” 기온 1도 상승 = 매출 $800 증가 (날씨 효과만)
  • “기온이 같더라도” 여름 = 매출 $5000 증가 (계절 효과만, 날씨 외)

분리하지 않으면 (단변수 회귀로 Temperature 만 사용):

ice_cream_sales = β_combined * temperature + ε
β_combined ≈ 1500 (= β_T + 일부 β_S)

→ “기온 1도 상승 = 매출 $1500” 으로 과대 추정. 여름의 계절 효과가 기온에 잘못 귀속.

CD 와 다변수 회귀가 이 함정을 막는다.

7.3 로지스틱 회귀

# CD: TasteForVanilla, TasteForChocolate → IceCreamPurchase (0/1)
np.random.seed(42)
n = 1000

vanilla_taste = np.random.uniform(0, 10, n)
chocolate_taste = np.random.uniform(0, 10, n)

# 진짜 계수
beta_0 = -3
beta_V = 0.4
beta_C = 0.3

logit = beta_0 + beta_V * vanilla_taste + beta_C * chocolate_taste
prob = 1 / (1 + np.exp(-logit))
purchase = np.random.binomial(1, prob)

df3 = pd.DataFrame({
    "vanilla": vanilla_taste,
    "chocolate": chocolate_taste,
    "purchase": purchase,
})

# 로지스틱 회귀
X3 = sm.add_constant(df3[["vanilla", "chocolate"]])
logit_model = sm.Logit(df3["purchase"], X3).fit(disp=False)

print("\n로지스틱 회귀 계수:")
print(logit_model.params)

# Odds ratio
import numpy as np
odds_ratios = np.exp(logit_model.params)
print(f"\nOdds Ratios:")
print(odds_ratios)

print("\n해석:")
print(f"  Vanilla 1단위 증가 시 구매 odds {odds_ratios['vanilla']:.2f}배")
print(f"  Chocolate 1단위 증가 시 구매 odds {odds_ratios['chocolate']:.2f}배")
직관 — 로지스틱 결과 읽기

추정 결과 (예상):

  • Vanilla odds ratio ≈ 1.49 → Vanilla 선호 1 증가 시 구매 odds 가 약 50% 증가
  • Chocolate odds ratio ≈ 1.35 → Chocolate 선호 1 증가 시 구매 odds 가 약 35% 증가

비즈니스 의사결정:

  • Vanilla 가 더 강력한 구매 동인 → Vanilla 라인업 강화 우선
  • 두 라인업 동시 강화 시 시너지 (계수가 둘 다 양수 = 보완재 가능성)

이 결론은 CD 의 두 화살표를 모두 그렸기 때문에 도출 가능. Vanilla 만 그렸으면 Chocolate 효과를 놓침.

7.4 가설 검증 — CD vs 데이터 일치성

# CD 가 옳다면 예상되는 통계적 패턴
print("\n=== CD 검증 ===")
print(f"Vanilla → Purchase 양의 효과: {logit_model.params['vanilla']:.3f}")
if logit_model.params['vanilla'] > 0:
    print("  → CD 와 데이터 일치 (양의 효과 예상대로)")
else:
    print("  → 경고: CD 와 데이터 불일치 (CD 재검토 필요)")

print(f"\nChocolate → Purchase 양의 효과: {logit_model.params['chocolate']:.3f}")
if logit_model.params['chocolate'] > 0:
    print("  → CD 와 데이터 일치")
else:
    print("  → 경고: CD 와 데이터 불일치")
직관 — 자동 검증의 한계와 가치

이 코드는 부호 일치성 만 점검. 진짜 검증은:

  • 효과 크기가 비즈니스적으로 의미 있는가
  • Confounder 후보 추가 시 계수가 안정한가
  • 다른 CD (예: 반대 방향 화살표) 보다 이 CD 가 데이터와 더 잘 맞는가

→ 자동 점검은 첫 필터 일 뿐. 진짜 검증은 도메인 지식 + 추가 분석.

그러나 부호 점검만으로도 가치가 있다 — 분석가가 부호를 잘못 가정한 CD 의 90% 는 부호 점검에서 잡힌다.

8 주관성은 feature, not bug

CD 의 주관성에 대한 오해

비판: “CD 는 분석가의 주관적 가정에 의존. 객관적이지 않다. 따라서 사용 안 하는 게 좋다.”

답변 (Buisson):

“CD 는 불확실성을 만들지 않는다. 단지 이미 세상에 있는 불확실성을 드러낼 뿐.”

CD 없이 분석:

  • 분석가의 주관적 가정이 암묵적 으로 분석에 들어감
  • 다른 사람이 그 가정을 점검·반박 불가
  • 의사결정 후 가정이 틀렸다고 판명되면 책임 추적 어려움

CD 와 분석:

  • 가정이 명시적 으로 그려짐
  • 다른 사람이 가정에 동의·반박 가능
  • 의사결정 후 어느 가정이 틀렸는지 명확히 추적

→ CD 는 주관성을 만드는 것이 아니라 드러내는 것. 분석을 더 객관적으로 만든다 (역설적으로).

직관 — 자동 인과 추론의 한계

확률 그래프 모형 (Probabilistic Graphical Model) 분야에서는 데이터로부터 자동으로 CD 를 학습 하는 알고리즘이 개발되어 왔다 (PC 알고리즘, GES 등).

장점: 인간 판단 없이 인과 구조 추정.

한계: 같은 데이터와 양립 가능한 CD 가 여러 개 (Markov Equivalence Class). 알고리즘이 그 중 하나를 선택할 때 비즈니스적으로 무의미한 CD 를 고를 수 있음.

→ 비즈니스 분석에서는 인간 (도메인 전문가) + 데이터 + 알고리즘의 혼합 이 가장 현실적. 자동만으로는 부족.

이것이 Buisson 이 “judgment 를 받아들여라” 고 말하는 이유.

9 관련 주제

9.1 Ch.3 의 형제 글

9.2 이전 챕터

9.3 후속 챕터

9.6 카테고리 진입점

Subscribe

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