CACE와 LATE — 쿠폰 받았지만 안 쓴 사람이 섞인 실험에서 진짜 효과 분리하기
쿠폰을 받은 유저 중 절반만 실제로 썼습니다. 효과 비교를 누구 기준으로 하나요. ITT는 받은 사람 전체로 보수적, CACE/LATE는 진짜 쓴 사람의 효과를 분리합니다. 부분 준수(non-compliance) 환경에서 인과 효과를 다루는 표준 도구.
“쿠폰을 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%가 동시에 나올 수 있습니다. 어느 쪽이 의사결정 단위로 적합한지가 운영의 핵심입니다.
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)입니다.
import statsmodels.api as smfrom linearmodels.iv import IV2SLS
# df: ['z' = 처리 배정, 'd' = 실제 처리, 'y' = 결과, 'X' = 공변량 (선택)]model = IV2SLS(df['y'], df[['intercept']], df['d'], df['z']).fit()print(model.params['d'], model.std_errors['d'])이게 본문의 유일한 코드입니다. linearmodels 패키지로 IV 회귀가 한 줄. 2단계 흐름:
- 1단계 — 를 로 회귀해 예측
- 2단계 — 를 로 회귀해 LATE 추정
이 두 단계가 LATE의 신뢰구간·표준오차를 함께 줍니다. 클러스터드 표준오차도 옵션으로 추가 가능.
5. ITT vs LATE — 어느 쪽을 보고하나
마케팅 보고서에 어느 쪽을 적느냐는 의사결정 단위에 달려 있습니다.
| 의사결정 | 적합한 효과 | 이유 |
|---|---|---|
| 캠페인 보낼지 말지 | ITT | 운영 단위가 “보내는 것” |
| 쿠폰 비용 산정 | LATE | 비용은 진짜 쓴 사람당 |
| 캠페인 ROI 계산 | 둘 다 | ITT로 매출, LATE로 단가 |
| 메시지·UX 개선 | LATE | 진짜 처리 받은 사람의 행동 변화 |
운영 표준은 둘 다 같이 보고하는 것입니다. ITT 12% (캠페인 단위), LATE 24% (쿠폰 단위). 두 숫자를 함께 두면 의사결정자가 자기 질문에 맞는 답을 고를 수 있습니다.
6. 마케팅 실무 케이스 3개
6-1. 쿠폰 캠페인의 ROI 계산
쿠폰을 1만 명에게 보내고 매출 변화 관측. ITT만 보면 “쿠폰 1장당 12원 매출 증가”. LATE를 함께 보면 “실제 쓴 사람당 24원 매출 증가”. 쿠폰 비용 1장당 5원이면 ITT 기준 ROI 2.4, LATE 기준 ROI 4.8. 어느 쪽도 거짓은 아니고 다른 의사결정 단위에 답합니다.
6-2. 푸시 알림 효과 측정
푸시 알림을 100만 명에게 발송. 30%만 열람. ITT는 발송 100만 명 전체의 효과. LATE는 열람한 30만 명만의 효과. 운영 의사결정 단위(발송 자체의 비용 vs 열람을 늘리는 비용)에 따라 어느 쪽이 더 가치있는지가 다릅니다.
6-3. 광고 노출 의도 vs 실제
광고 캠페인이 1만 임프레션 의도였는데 매체 풀·예산 캡으로 7천 임프레션만 실현. ITT는 1만 의도 기준의 평균 효과. LATE는 실제 노출된 7천의 효과. 매체 빠짐 비율을 무시하고 단순 per-protocol 분석하면 선택 편의가 들어갑니다.
7. CACE/LATE가 깨질 때 — 흔한 함정 3가지
7-1. Monotonicity 가정이 깨진다
LATE는 defier가 없다는 가정 위에 있습니다. 쿠폰 캠페인에서는 보통 defier가 거의 없지만, 어떤 자리에서는 “보내준 쿠폰을 거부하고 다른 쿠폰을 가져다 쓰는” 사람이 있을 수 있습니다. 도메인적으로 monotonicity가 깨질 수 있는지 한 번 점검하세요.
7-2. Exclusion restriction이 깨진다
IV의 핵심 가정 중 하나 — 처리 배정 가 결과 에 미치는 영향이 오직 를 통해서만이어야 함. 쿠폰을 받은 것 자체가 “이 브랜드가 나를 신경쓴다”는 신호로 매출을 늘리면 exclusion이 깨집니다. 이 경우 LATE 추정이 편향됩니다.
7-3. Compliance 비율이 너무 작다
Compliance가 5% 이하면 LATE 추정이 매우 큰 분산을 가집니다. 같은 ITT를 매우 작은 분모로 나누기 때문에 결과가 흔들립니다. Compliance 30% 이상은 확보하는 캠페인 설계가 안전합니다.
8. 마치며 — 부분 준수가 보이는 자리에 두 숫자 함께 보고
마케팅 실험의 부분 준수는 일반적입니다. 그 자리마다 ITT 한 숫자만 보고하는 것이 표준이 되어 있고, LATE는 거의 보고되지 않습니다.
ITT와 LATE를 같이 보고하라. 두 숫자가 같은 효과의 다른 단위를 보여준다.
캠페인 보고서에 한 줄을 추가하는 것만으로도 의사결정의 정밀도가 올라갑니다. ITT만 보면 효과를 과소 추정해 캠페인을 너무 빨리 끊을 위험이 있고, LATE만 보면 보내기 자체의 비용을 잊고 캠페인을 너무 크게 운영할 위험이 있습니다. 두 숫자를 함께 보고하는 운영이 안전합니다.
다음 글에서는 또 다른 자리, 가격 탄력성을 마케팅 데이터로 추정하는 도구를 다룹니다. 가격 변경의 매출 효과를 분리하는 자리입니다.
참고
- Angrist, Imbens & Rubin (1996), Identification of Causal Effects Using Instrumental Variables, JASA — IV·LATE 프레임 정리
- Imbens & Angrist (1994), Identification and Estimation of Local Average Treatment Effects, Econometrica — LATE 원전
- Angrist & Pischke (2008), Mostly Harmless Econometrics — IV 입문 표준 교과서
- Wooldridge (2010), Econometric Analysis of Cross Section and Panel Data (2nd edition) — IV 종합 교과서
- linearmodels — Python IV 패키지 — 2SLS·IV-GMM 표준 구현
- huny.log 내부 글: DiD, Geo-lift, Synthetic DiD, Uplift 모델링
통계·ML 카테고리의 다른 글
전체 보기 →-
2026·05·10
마케팅 실험 플랫폼 설계 — 사내 A/B 시스템의 5가지 원칙
광고 플랫폼 자체 A/B로는 부족하고 외부 SaaS는 비쌉니다. 사내 마케팅 실험 플랫폼을 설계할 때 깔아야 할 split assignment·exposure log·SRM 검정·sequential safe·메타 표준 5가지 원칙.
-
2026·05·09
Bayesian A/B 테스트 심화 — prior 잡는 법과 HDI 해석
베이지안 A/B는 "p-value < 0.05"가 아니라 "B가 A보다 좋을 확률 0.92"를 줍니다. 그 확률이 정직하려면 prior를 잘 잡아야 하고, HDI를 잘못 읽으면 함정이 옵니다. 마케터 시선에서 prior·posterior·HDI 정리.
-
2026·05·09
Doubly robust estimation — IPW와 outcome 모델의 결합으로 인과 추정 안정화
PSM·IPW는 propensity 모델이 틀리면 무너지고, 회귀는 outcome 모델이 틀리면 무너집니다. doubly robust는 두 모델을 결합해 둘 중 하나만 맞으면 정직한 효과 추정. 마케팅 인과 분석의 안전판.
-
2026·05·09
Heterogeneous treatment effects — 평균 효과 너머의 개인별 효과
A/B 평균 효과 +5%p가 모든 사람에게 같지 않습니다. 일부에게는 +20%p, 일부에게는 -3%p. CATE·uplift forest로 효과의 이질성을 추정해 타겟 마케팅을 정밀화하는 흐름.