"쿠폰을 1만 명에게 보냈는데 5,000명만 실제로 썼고, 그 5,000명 중 1,200명이 구매했어요. 캠페인 효과는 12%? 24%? 어느 쪽이 진짜?" 둘 다 다른 질문에 답합니다. ITT(Intent-to-Treat)는 의도된 처리의 평균 효과 — 보내려고 했던 사람 전체에서. CACE(Complier Average Causal Effect)·LATE는 실제로 처리를 받은 사람만의 효과 — instrumental variable로 분리. 부분 준수가 있는 마케팅 실험에서 두 도구가 답하는 질문을 정리합니다.
1. 부분 준수 — 마케팅 실험의 일반 자리
마케팅 실험에서 처리·대조 배정과 실제 처리 받음 사이에 갭이 있는 게 일반적입니다.
- 쿠폰 보냄 → 받은 사람 일부만 사용
- 푸시 발송 → 일부만 열람
- 이메일 보냄 → 일부만 클릭·전환
- 광고 노출 시도 → 일부만 실제 노출 (예산·매체 풀 제약)
배정과 실제 처리가 일치하지 않는 이 상황을 부분 준수(partial compliance) 또는 non-compliance라고 부릅니다. A/B 매뉴얼은 보통 이 갭을 무시하거나 ITT 분석으로 회피합니다.
문제는 두 분석이 다른 질문에 답한다는 점입니다.
- ITT — 의도된 처리의 평균 효과: "쿠폰을 보내면 평균 매출이 어떻게 변하나"
- per-protocol — 실제 처리 받은 사람의 결과 비교: 편향 위험 (선택 편의)
- CACE/LATE — 진짜 쿠폰을 쓴 사람의 효과: instrumental variable로 보정
같은 실험에서 ITT 12%, CACE 24%가 동시에 나올 수 있습니다. 어느 쪽이 의사결정 단위로 적합한지가 운영의 핵심입니다.

ITT는 배정 자체의 효과(보낸 모든 사람의 평균). CACE는 진짜 쓴 사람만의 효과. 의사결정 단위에 따라 다른 답이 적합하다.
📌 이 글에서 다루는 것
CACE/LATE는 economics·social science의 표준 도구로, Imbens & Angrist(1994·2009 노벨경제학상)가 정리한 instrumental variable 프레임의 핵심입니다. 마케팅 실험에서 부분 준수가 있는 자리에 그대로 적용됩니다. 이 글은 직관·공식·운영 적용을 마케터 시각으로 풀어냅니다.
2. ITT — 가장 단순, 가장 보수적
ITT의 한 줄 정의는 다음입니다.
처리·대조 배정 자체로 비교하라. 실제 처리 받았는지는 무시.
쿠폰을 1만 명에게 보냈고 매출이 600만원, 안 보낸 1만 명의 매출이 480만원이면 ITT는 (600 - 480) / 1만 = 12원/사람. 1만 명 중 5,000명만 실제로 썼다는 사실을 무시합니다.
ITT의 장점:
- 무작위 배정의 보증을 그대로 유지 — 인과 효과의 비편향 추정
- 단순 — t-test 한 번으로 끝
- 의사결정 단위에 적합 — "쿠폰을 보낼까 말까"의 답
ITT의 단점:
- 효과를 과소 추정 — 안 쓴 사람도 평균에 포함
- "쿠폰의 진짜 효과"가 아니라 "쿠폰 보내기의 효과"
ITT는 캠페인 보낼지 말지의 의사결정 단위로는 가장 적합합니다. 하지만 "이 쿠폰을 받아 쓴 사람에게 얼마의 효과가 있었나"의 질문에는 답하지 않습니다.
3. CACE/LATE — IV로 진짜 효과 분리
부분 준수 환경의 사람을 4가지 페르소나로 나눠봅시다 (Angrist·Imbens 프레임).
| 페르소나 | 처리 배정 안 됨 | 처리 배정 됨 | 비중 |
|---|---|---|---|
| Always-takers | 받음 | 받음 | |
| Compliers | 안 받음 | 받음 | |
| Defiers | 받음 | 안 받음 | |
| Never-takers | 안 받음 | 안 받음 |
쿠폰 캠페인이라면:
- Always-takers — 어차피 쿠폰 다른 경로로 받아 쓰는 사람
- Compliers — 보내준 쿠폰만 쓰는 사람 ← 이 그룹의 효과가 CACE/LATE
- Defiers — 보내준 쿠폰은 안 쓰고 다른 경로로 받음 (드묾)
- Never-takers — 쿠폰 자체를 안 쓰는 사람
monotonicity 가정(defier가 없다는 가정)에서 LATE는 다음 공식으로 추정됩니다.
여기서 는 처리 배정(보냈는지), 는 실제 처리(썼는지), 는 결과(매출). 분자는 ITT, 분모는 compliance gap. 둘을 나누면 complier의 진짜 효과가 나옵니다.
운영적으로는 단순 비례 관계입니다. Compliance 50%면 LATE는 ITT의 2배. ITT 12원/사람 + Compliance 50% → LATE 24원/사람. "진짜 쓴 사람만 보면 효과는 24원/사람" 이라는 정보가 됩니다.
4. 코드 한 묶음 — 2SLS 회귀
CACE/LATE는 instrumental variable 회귀의 한 줄 한 줄로 풉니다. 가장 표준은 Two-Stage Least Squares(2SLS)입니다.
python
Top comments (0)