huny.log

기술 포스트 · 통계·ML

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%가 동시에 나올 수 있습니다. 어느 쪽이 의사결정 단위로 적합한지가 운영의 핵심입니다.

ITT vs CACE/LATE — 부분 준수 환경의 두 가지 효과 측정
ITT는 배정 자체의 효과(보낸 모든 사람의 평균). CACE는 진짜 쓴 사람만의 효과. 의사결정 단위에 따라 다른 답이 적합하다.

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 sm
from 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. 1단계 — 로 회귀해 예측
  2. 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만 보면 보내기 자체의 비용을 잊고 캠페인을 너무 크게 운영할 위험이 있습니다. 두 숫자를 함께 보고하는 운영이 안전합니다.

다음 글에서는 또 다른 자리, 가격 탄력성을 마케팅 데이터로 추정하는 도구를 다룹니다. 가격 변경의 매출 효과를 분리하는 자리입니다.

참고

통계·ML 카테고리의 다른 글

전체 보기 →