
이중차분법
광고 캠페인, 가격 인하, 리브랜딩 등 특정 마케팅 개입이 실제로 매출이나 고객 행동에 어떤 영향을 미쳤는지 평가할 때 유용한 분석 기법
마케팅에서 이중차분법이 필요한 이유
지역별 광고 캠페인 효과 분석
✅상황: 한 식음료 브랜드가 서울에서만 TV 광고 캠페인을 시작함. 캠페인을 하지 않은 부산과 캠페인을 한 서울의 광고 전후 매출 데이터를 비교해 광고 효과를 추정해보고 싶음.

✅분석과정
1. 처리집단의 변화: 서울은 광고 후 +500만원 증가
2. 통제집단의 변화: 부산도 +200만원 증가 (광고를 하지 않았는데도)
3. 이중차분법 추정치: (1500-1000) - (1100-900) = 500-200 = +300만원
-> 순수하게 광고 캠페인으로 생긴 매출 증가는 300만원으로 추정
통제집단이 있으면, 마케팅 효과를 더 과학적으로 분석 가능
통제집단 선정 기준
예시 코드
import numpy as np
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
# 3개월간 수집한 매출 데이터
np.random.seed(42)
campaign_before = np.random.normal(100, 8, 20) # 서울 캠페인 전
campaign_after = np.random.normal(115, 8, 20) # 서울 캠페인 후
control_before = np.random.normal(95, 8, 20) # 부산 캠페인 전
control_after = np.random.normal(100, 8, 20) # 부산 캠페인 후
data = pd.DataFrame({
'region':['Seoul']*40 + ['Busan']*40,
'time': ['before']*20 + ['after']*20 + ['before']*20 + ['after']*20,
'sales': np.concatenate([campaign_before, campaign_after, control_before, control_after])
})
# 시각화 그래프
avg_data = data.groupby(['region', 'time'])['sales].mean().reset_index()
plt.figure(figsize=(10, 6))
sns.lineplot(data=avg_data, x='time', y='sales', hue='region', marker='o', linewidth=3, markersize=10)
plt.title('에코프레시 캠페인 전후 매출 변화')
plt.xlabel('시점')
plt.ylabel('매출 (만원)')
plt.legend(title='지역')
plt.show()

평행 추세 가정이 시각적으로는 대체로 만족되는 것으로 보임
# CEO 앞에서 실시간 계산
means = data.groupby(['region', 'time'])['sales'].mean()
print("그룹별 평균 매출:")
print(means)
# DID 계산 - 핵심 순간
campaign_before = means['Seoul', 'before']
campaign_after = means['Seoul', 'after']
control_before = means['Busan', 'before']
control_after = means['Busan', 'after']
diff_campaign = campaign_after - campaign_before
diff_control = control_after - control_before
did_effect = diff_campaign - diff_control
print(f"\n서울 지역 변화: {diff_campaign:.2f}만원")
print(f"부산 지역 변화: {diff_control:.2f}만원")
print(f"DID 효과: {did_effect:.2f}만원")

즉, 외부 요인(계절, 전반적 시장 성장 등)을 통제한 순수한 마케팅 효과는 약 9.28만 원이라고 판단