From 4f8be7f30dde0c59df8224960052dfee71a06b35 Mon Sep 17 00:00:00 2001 From: chaerin Date: Sat, 16 May 2026 18:02:45 +0900 Subject: [PATCH] =?UTF-8?q?docs:=20=EC=9D=B4=EC=A7=88=EC=A0=81=20=EC=B2=98?= =?UTF-8?q?=EC=B9=98=20=ED=9A=A8=EA=B3=BC=20=EB=85=B8=ED=8A=B8=EB=B6=81=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../hatarogeneous_treatment_effects_ko.ipynb | 434 ++++++++++++++++++ 1 file changed, 434 insertions(+) create mode 100644 book/why_causal_inference/hatarogeneous_treatment_effects_ko.ipynb diff --git a/book/why_causal_inference/hatarogeneous_treatment_effects_ko.ipynb b/book/why_causal_inference/hatarogeneous_treatment_effects_ko.ipynb new file mode 100644 index 0000000..f1a7f25 --- /dev/null +++ b/book/why_causal_inference/hatarogeneous_treatment_effects_ko.ipynb @@ -0,0 +1,434 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "c01", + "metadata": {}, + "source": [ + "# 이질적 처치 효과(HTE)\n", + "\n", + "게임에 어떤 처치를 시행했을 때, 모든 유저에게 같은 효과가 나타날까요?\n", + "\n", + "직관적으로 그렇지 않습니다. 매일 접속하는 헤비 유저와 가끔 접속하는 라이트 유저는 같은 처치에 다르게 반응할 수 있습니다.\n", + "\n", + "이처럼 처치 효과가 개인마다 다른 현상을 HTE(Heterogeneous Treatment Effects, 이질적 처치 효과)라고 합니다." + ] + }, + { + "cell_type": "markdown", + "id": "c02", + "metadata": {}, + "source": [ + "## 반사실 문제와 처치 효과\n", + "\n", + "개인별 처치 효과(ITE)는 처치를 받은 경우와 받지 않은 경우의 결과 차이입니다.\n", + "\n", + "```\n", + "ITE_i = Y_i(1) - Y_i(0)\n", + "```\n", + "\n", + "문제는 같은 유저를 두 상태에서 동시에 관찰할 수 없다는 점입니다. 이것이 반사실(counterfactual) 문제입니다.\n", + "\n", + "| 유저 | 처치 여부 | Y(1) 처치 시 | Y(0) 미처치 시 | ITE |\n", + "|------|-----------|------------|--------------|-----|\n", + "| 유저 A | 처치 받음 | 관찰 가능 ✓ | 관찰 불가 ✗ | 계산 불가 |\n", + "| 유저 B | 처치 안 받음 | 관찰 불가 ✗ | 관찰 가능 ✓ | 계산 불가 |\n", + "\n", + "그래서 집단 평균인 ATE를 추정합니다.\n", + "\n", + "```\n", + "ATE = E[Y(1) - Y(0)]\n", + "```\n", + "\n", + "그런데 ATE는 이질성을 숨깁니다. 유저마다 처치 효과가 달라도 평균이 이를 가려버립니다.\n", + "\n", + "이 차이를 분석하는 것이 HTE이고, 특성 X를 조건으로 수치화한 것이 CATE입니다.\n", + "\n", + "```\n", + "CATE(X) = E[Y(1) - Y(0) | X]\n", + "```\n", + "\n", + "| 개념 | 정의 | 비고 |\n", + "|------|------|------|\n", + "| ITE | 개인 처치 효과 | 반사실 문제로 직접 관측 불가 |\n", + "| ATE | ITE의 전체 평균 | 이질성을 무시 |\n", + "| HTE | ITE가 개인마다 다른 현상 | ATE가 숨기는 것 |\n", + "| CATE | 특성 X별 ITE 평균 | HTE를 수치화하는 도구 |" + ] + }, + { + "cell_type": "markdown", + "id": "c03", + "metadata": {}, + "source": [ + "## 실험 설계\n", + "\n", + "어느 게임 회사가 2022년 6월 25일 특정 처치를 시행했습니다.\n", + "\n", + "| 구간 | 기간 | 의미 |\n", + "|------|------|------|\n", + "| T=0 | 2022-06-18 ~ 06-25 | 처치 직전 7일 |\n", + "| T=1 | 2022-06-25 ~ 07-02 | 처치 직후 7일 |\n", + "\n", + "처치를 받지 않은 통제군이 따로 없어, 처치 1주일 전 기간을 가짜 통제군(pseudo-control)으로 사용합니다. 요일 구성이 동일하여 요일 효과를 통제합니다." + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "id": "c04", + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "import matplotlib.ticker as mtick\n", + "import json\n", + "from pathlib import Path\n", + "import warnings\n", + "warnings.filterwarnings('ignore')\n", + "\n", + "plt.rcParams['font.family'] = 'Malgun Gothic'\n", + "plt.rcParams['axes.unicode_minus'] = False\n", + "plt.rcParams['figure.dpi'] = 100\n", + "plt.rcParams['axes.spines.top'] = False\n", + "plt.rcParams['axes.spines.right'] = False\n", + "\n", + "BASE = Path('backend-ts_v0.1/GAME_C_JUL')\n", + "CACHE = Path('features_game_c_jul.parquet')" + ] + }, + { + "cell_type": "code", + "execution_count": 44, + "id": "c05", + "metadata": {}, + "outputs": [], + "source": [ + "def extract_features(filepath):\n", + " df = pd.read_parquet(filepath)\n", + " if len(df) == 0:\n", + " return None\n", + " return {\n", + " 'n_logins': int((df['action'] == 1).sum()),\n", + " 'n_get': int((df['action'] == 2).sum()),\n", + " 'n_post': int((df['action'] == 3).sum()),\n", + " 'n_put': int((df['action'] == 4).sum()),\n", + " 'n_actions': len(df),\n", + " 'n_days': int(df['timestamp'].dt.date.nunique()),\n", + " }\n", + "\n", + "if CACHE.exists():\n", + " data = pd.read_parquet(CACHE)\n", + "else:\n", + " with open(BASE / 'info.json', encoding='utf-8') as f:\n", + " info = json.load(f)\n", + " records = []\n", + " for item in info:\n", + " fp = BASE / item['X']\n", + " if not fp.exists():\n", + " continue\n", + " feats = extract_features(fp)\n", + " if feats is None:\n", + " continue\n", + " feats.update({'T': item['T'], 'Y0': item['Y'][0], 'Y1': item['Y'][1], 'Y2': item['Y'][2]})\n", + " records.append(feats)\n", + " data = pd.DataFrame(records)\n", + " data.to_parquet(CACHE, index=False)" + ] + }, + { + "cell_type": "markdown", + "id": "c06", + "metadata": {}, + "source": [ + "## 1단계 — ATE: 전체 평균 처치 효과\n", + "\n", + "처치 전후 재방문율을 비교합니다.\n", + "\n", + "```\n", + "ATE = E[Y | T=1] - E[Y | T=0]\n", + "```" + ] + }, + { + "cell_type": "code", + "execution_count": 41, + "id": "c07", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "T=0 재방문율: 55.7%\n", + "T=1 재방문율: 57.9%\n", + "ATE: +2.2%\n" + ] + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "rate_t0 = data.loc[data['T'] == 0, 'Y2'].mean()\n", + "rate_t1 = data.loc[data['T'] == 1, 'Y2'].mean()\n", + "ate = rate_t1 - rate_t0\n", + "\n", + "print(f'T=0 재방문율: {rate_t0:.1%}')\n", + "print(f'T=1 재방문율: {rate_t1:.1%}')\n", + "print(f'ATE: {ate:+.1%}')\n", + "\n", + "fig, ax = plt.subplots(figsize=(5, 4))\n", + "ax.bar(['처치 전 (T=0)', '처치 후 (T=1)'], [rate_t0, rate_t1],\n", + " color=['#BBBBBB', '#4477AA'], width=0.4)\n", + "ax.yaxis.set_major_formatter(mtick.PercentFormatter(1.0))\n", + "ax.set_ylim(0, max(rate_t0, rate_t1) * 1.3)\n", + "for i, v in enumerate([rate_t0, rate_t1]):\n", + " ax.text(i, v + 0.008, f'{v:.1%}', ha='center', va='bottom')\n", + "ax.set_title(f'ATE = {ate:+.1%}')\n", + "plt.tight_layout()\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "c08", + "metadata": {}, + "source": [ + "## 2단계 — HTE: 효과는 모든 유저에게 같았을까?\n", + "\n", + "ATE는 전체 평균입니다. 처치 효과가 유저마다 다르다면 평균이 그 차이를 숨깁니다.\n", + "\n", + "유저를 특성에 따라 그룹으로 나눠 처치 효과를 비교하는 것을 sub-group analysis라고 합니다.\n", + "\n", + "접속 횟수 중앙값을 기준으로 라이트/코어 유저로 나눠 각 그룹의 처치 효과를 비교합니다." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "c09", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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cMIJVrx4cevbt69ddtllNmbMGFu4cKENHz7cZYWqx0fv3r1dQKNu3bo2adIkt71HvT+0VK6W0pUmTZq4AEv9+vUtLi7ONU8NlQUCAAAKn4jU4G5iQDaoc76ax6l2OjhtGACOJfY/QMHB5xUA2EfmNYIgAAAAAAAgLNATBAAAAAAAhAWCIAAAAAAAICwQBCmAhgwZ4prDBZs9e7Zb8i8t//d//2c333zzUZe//vrrdsMNN+TKc9Pj63kAKJzy0/5HDTHVCBNAoIiICLeiTlbl5nigoBg0aJA7BXv00UftiSeeyJPnBKBg0j5D+46C6N1337VbbrklbL4XWB2mgNi4caMlJCS437ds2WI7duywlStXuvPqgF+tWrUMb7d582b3u3e7okWLWu3atTP9HM4880z7448/3O+6n1KlSrnfdR9LlizJ4SsEkF/lh/3PDz/8YB9//HHAZX///bcLymh1D0+bNm2sVatW2XiVQMEwd+5cu+KKKwIu27Nnj1s6ONTBvL9Nmza5pYIVtNRnt0+fPnb//fdn+JhaWrhfv35WunTpkNdrHzBv3jwrKObPn2+HDh1yv69du9b9/Pbbb91PNXf3VhECUDg9++yz9uKLL6Z5vcY6q1atcquNBY9rtA/95ptvLDY21u67776QE0MFxffff2+7d+92v2t89tdff/n2hZLe5FZBRxCkgHj77bftiy++cL+vX7/eDh486Pvibty4sb3wwgsZ3k4f3F27drkPr1SpUsX+97//ZekgRJKTk61YsWL2559/WokSJbL1ehITE61169b20ksv2TXXXOMu279/v23bts09L9H1ev6Z9fvvv7sI5i+//GJFihRx0dhrr73WvU9XXnmlffXVV1ayZMlsPV8gnOWH/Y/2NTVr1gy4TMueBkvrIO1Y739k3759bqlVvc7//Oc/7jL2P8htLVq0cMEMf/q+y0zmR/fu3a158+ZuSWHdxyWXXGInnniiXX311RneVjOBCobkREpKil144YX21FNP2TnnnGM5tWLFCpdhpn2QXlcot99+u82aNcsXgJXXXnvNfU79aX8g5cqVOyoIosDveeedZ5MnT3YZaAAKtoceesid0lKjRo2Ql3fr1s1NtIwfP95NxFx88cVun6B9a1b17NnT7YO7du1qOaVjMi0TrzFNWs9FgZ8BAwa48Y7nvffeszVr1vjOa1LJ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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "median_logins = data['n_logins'].median()\n", + "groups = {\n", + " f'라이트 (< {int(median_logins)}회)': data[data['n_logins'] < median_logins],\n", + " f'코어 (≥ {int(median_logins)}회)': data[data['n_logins'] >= median_logins],\n", + "}\n", + "\n", + "stats = {\n", + " label: {'T0': g[g['T'] == 0]['Y2'].mean(), 'T1': g[g['T'] == 1]['Y2'].mean()}\n", + " for label, g in groups.items()\n", + "}\n", + "for s in stats.values():\n", + " s['effect'] = s['T1'] - s['T0']\n", + "\n", + "COLORS = ['#4477AA', '#EE6677']\n", + "fig, axes = plt.subplots(1, 2, figsize=(11, 4))\n", + "\n", + "ax = axes[0]\n", + "for i, (label, s) in enumerate(stats.items()):\n", + " ax.plot([0, 1], [s['T0'], s['T1']], color=COLORS[i], marker='o',\n", + " linewidth=2, markersize=7, label=label)\n", + " ax.text(-0.06, s['T0'], f'{s[\"T0\"]:.1%}', ha='right', va='center', color=COLORS[i])\n", + " ax.text(1.06, s['T1'], f'{s[\"T1\"]:.1%}', ha='left', va='center', color=COLORS[i])\n", + "ax.set_xticks([0, 1])\n", + "ax.set_xticklabels(['처치 전 (T=0)', '처치 후 (T=1)'])\n", + "ax.set_xlim(-0.35, 1.35)\n", + "ax.yaxis.set_major_formatter(mtick.PercentFormatter(1.0))\n", + "ax.set_title('처치 전후 재방문율')\n", + "ax.legend(loc='upper left')\n", + "\n", + "ax = axes[1]\n", + "labels = list(stats.keys())\n", + "effects = [s['effect'] for s in stats.values()]\n", + "ax.bar(labels, effects, color=COLORS, width=0.35)\n", + "ax.axhline(ate, color='#888888', linestyle='--', linewidth=1.2, label=f'전체 ATE ({ate:+.1%})')\n", + "ax.axhline(0, color='black', linewidth=0.8)\n", + "ax.yaxis.set_major_formatter(mtick.PercentFormatter(1.0))\n", + "ax.set_title('그룹별 처치 효과')\n", + "for i, v in enumerate(effects):\n", + " offset, va = (0.003, 'bottom') if v >= 0 else (-0.003, 'top')\n", + " ax.text(i, v + offset, f'{v:+.1%}', ha='center', va=va)\n", + "ax.legend()\n", + "\n", + "plt.tight_layout()\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "c10", + "metadata": {}, + "source": [ + "## 3단계 — CATE: HTE를 연속적으로 수치화하기\n", + "\n", + "그룹 비교로는 \"두 그룹이 다르다\"는 것만 알 수 있습니다.\n", + "상호작용 모델을 사용하면 특성 X에 따라 처치 효과가 어떻게 달라지는지 연속적으로 추정할 수 있습니다.\n", + "\n", + "```\n", + "Y = β₀ + β₁T + β₂X + β₃(T×X) + ε\n", + "\n", + "CATE(X) = ∂Ŷ/∂T = β₁ + β₃·X\n", + "```\n", + "\n", + "β₁은 X와 무관한 기본 처치 효과이고, β₃는 X가 1 증가할 때 처치 효과가 변하는 크기입니다.\n", + "\n", + "| β₃의 부호 | 의미 |\n", + "|-----------|------|\n", + "| β₃ > 0 | X가 클수록 처치 효과 증가 |\n", + "| β₃ < 0 | X가 클수록 처치 효과 감소 |\n", + "| β₃ ≈ 0 | HTE 없음 — ATE로 충분 |" + ] + }, + { + "cell_type": "code", + "execution_count": 43, + "id": "c11", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "β₁ (기본 처치 효과): +0.1679\n", + "β₃ (접속 횟수당 효과 변화): -0.009004\n", + "\n", + "접속 1회 (p5 ): CATE = +15.9%\n", + "접속 14회 (중앙): CATE = +4.2%\n", + "접속 31회 (p95): CATE = -11.1%\n" + ] + } + ], + "source": [ + "from numpy.linalg import lstsq\n", + "\n", + "X_var = 'n_logins'\n", + "model_data = data[['T', X_var, 'Y2']].dropna().copy()\n", + "model_data['T_x_X'] = model_data['T'] * model_data[X_var]\n", + "\n", + "X_mat = np.column_stack([\n", + " np.ones(len(model_data)), model_data['T'], model_data[X_var], model_data['T_x_X']\n", + "])\n", + "coef, _, _, _ = lstsq(X_mat, model_data['Y2'].values, rcond=None)\n", + "beta0, beta_T, beta_X, beta_TX = coef\n", + "\n", + "print(f'β₁ (기본 처치 효과): {beta_T:+.4f}')\n", + "print(f'β₃ (접속 횟수당 효과 변화): {beta_TX:+.6f}')\n", + "print()\n", + "\n", + "for pct, label in [(0.05, 'p5 '), (0.50, '중앙'), (0.95, 'p95')]:\n", + " x_val = int(model_data[X_var].quantile(pct))\n", + " print(f'접속 {x_val:2d}회 ({label}): CATE = {beta_T + beta_TX * x_val:+.1%}')\n", + "\n", + "model_data['cate'] = beta_T + beta_TX * model_data[X_var]" + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "id": "c12", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAABEEAAAGGCAYAAACUtJ9/AAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjksIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvJkbTWQAAAAlwSFlzAAAPYQAAD2EBqD+naQAAketJREFUeJzt3Qd4U1UbB/B/94IWyh5lW/beew/ZiIgMQVYZspfChyKCMkS2orIEUYYsWbKHQoGy996jQEtLW7pHvuc9NbEtTWlL2yTN//c8F25ObtKbm3Xy3ve8x0Kj0WhARERERERERJTJWRp6B4iIiIiIiIiIMgKDIERERERERERkFhgEISIiIiIiIiKzwCAIEREREREREZkFBkGIiIiIiIiIyCwwCEJEREREREREZoFBECIiIiIiIiIyCwyCEGUS165dw5o1awy6Dy1atMCVK1dea3/x4gX69++P0NBQGNLvv/+O48ePp+q2rVq1wpdffpnodYcOHYK9vf0b76NgwYLYsGFDiu8/uaKjoxESEoK09OjRI1hYWKj/iYiIMtKgQYPw8ccfv9V9LF68GFevXk2zfSIi08cgCJERkx/X8gNU31KpUiXdtvLj/uuvv072fbds2RL/+9//0nR///77bwQGBr7WHhQUhGXLliE8PDxZ9zNw4ED07t072X83W7Zs6lglVKRIkXhBh59//jnR7TKLzZs3o0yZMobeDSIiMgP+/v74/PPPUbFiRWTJkgU2NjbImzcv2rRpgz///DNd//bLly9VP+jevXuvXSftp06d0l2eOXMmzp8/j8zK19dXPeZbt27p3UZORElAiYhiWf/7PxEZoTp16sDb21t3uXHjxhgwYAC6d++uLkuHIzUePnwIT09PPHnyBF988QXs7OxSdT/ypZtQ7dq1413+559/VAZESkg2SUREBNKCdJDOnTun1l+9epXs2/34449YvXq17vLly5fVfu3bt0/X9t1336FmzZp672PYsGE4e/as7rKPj4/qMM6bNy9eYCY1gQsJNiU8RhJsiomJUR2ihFxcXOK9XrZv34527drpvf9Ro0Zhzpw5Kd4vIiLK/B4/foy6desif/78mDRpEsqVK4esWbOqPsvWrVvRo0cPDB48GN9+++1rt120aJH6ftRHbhv3+zc1bty4AWvr2J85adWfMHaSDRoVFZXodRqNRu/t5GRR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ta3U2rBMj22ljkcyUzuNYduENSlSsm0eVxuM71obRy4/xso9lxEcFomAkAh8veY4Dp7Pj+EdqyBHMj6I5X5T8l42hm2Te8yMZVvT++wx/GdEun32WFom+7WWXtvqIydhVq1ahZcvX+L27dvYunWrGjYmmak1a9Z8q/smIiIiMx8OM336dBUJlQjo7Nmz9Y4BJyIyZhLAqF+uIGZ7NET1kv/NFON55Qn6z9mN3afuJVm8k4iMh/RL9u3bp5b9+/erM8YNGjTQ1TMhIiIiSnUQRIIfFy5cUAXzpFidZIW8++67b5zVgYjIGGXLYo/RnathZKcqcHaMPRv9KiwSszecxMQV/+D5yxBD7yIRvUG2bNlUJohkgEjBWymUKoGRsmXLqiK4RERERG9dGLV69epqRgKpkiwFUWvXro3cuXPj448/VhX6iYhMSc3S+THboxHqli2gazt145nKCtl2/HaS0ygTkWElzNqS2ZZk2K4ERYYOHYoVK1YYbN+IiIjIxIMgYWFh8aZtlOlRe/bsiYMHD6ppAXPmzImBAwem134SEaWbrI62GNqhMsZ1qY7sWexUW2hEFBZsOYNxSw7jse8rHn0iIzR27NhE22UaXpkCWKZw5vA2IiIiSlUQpEmTJirYkZjixYujUaNGaiEiMlVV3smjskIaV3LTtV2464OB8/dg4z83EM2sECKjMmbMGL3XvfPOO9i7dy8LuBPRW5Ei0trfOcktKE1EmSQIInVA6tatq/d6qQ9y7NixtNovIiKDcLS3gUfripjYrSZyusTOFBMeGY0fd5zHqB8P4P6zQD4zREREZkICHzLblCwMghCZWRDEyckpyev5oUBEmUn5ornw7YCGaFm1CLQTgV994IfBC/bi94NXERUdY+A9JCJ9pFYZERER0VsFQaQGSFBQkN7rpV5I3JohRESmzt7WGh+3LIcvPqqDvK6xgeDI6Bis2H0JQxftx60nLw29i0RmT2aou3v3brzjwDogRJRWZCZMb29vtcg6EZlREKRjx46YP3++3uul+FitWrXSar+IiIxGKTdXzOzXAO1qFYPFv2kht71fYuiiffhlzyVERHGacCJDeP78OcqUKYPSpUujWrVqePUqtoixhfaNSkT0lqKiotRU3LLIOhGZURDk008/xZo1a9TUcxEREfHOtixevBjjx4/Hl19+mV77SURkULY2Vuje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PHny2nXBwcGafPnyaX799Vd1+eTJk+qyvJbM/djIdJynT59W6zJtm0xR6e7urm6T2cm0m7///rv6LtJOkSvTo8r7iJ8z5i2x2WE2bdqkpnOV14a8VyZNmvTarAop6efIFK/a6XGFbCOzfGhnvYg7M4opSclnSnKOqdyfHBuZ6UR8++23uuMmx6tWrVoaU5ec10tyPpNkxpyGDRtqvLy8dN911atXV7MRySwU8jzEnYXGHPrNPG5p16eWmXhk+mZ/f39NeHi4pnfv3q/NsifHv2bNmrrvVfksk/eskBmL4s5iZE797jkmduwYBEkn8gEvH/g5c+ZUb7SFCxem158yKS1bttTkypVLHZP69eurubrp9Q8d7ReftMnxkmmnLly4oDH34yKdHpnDPH/+/Gp6rf79+2faafESI18eFhYW6v0Td2nRooW6/tSpU2qOdnnNSAdTjp+5SOrY3L9/X01nKT/+5cdIly5dNHfv3tWYy3dR06ZN1WuiWLFiatrNY8eO6a7n54z5SiwIImbNmqUCqHny5NF07dpVNzWi/FCXzq/2M/dN/ZynT5+qz6HAwEBd25EjRzRlypRR78M+ffpoIiIiNKboTZ8pMj356tWr33hMtT788EMVLNGSH2cSKClUqJCaNjczfP/re71I4H748OHJ/kz68ccf420vPv/8c42bm5u63bp16zTm0G/mcUu7PvX777+vC5BIwGnMmDFqO3nPSuBOfvzHDcLJ56AE37S8vb01jRs3Vs+R/P/gwQONufS73zfhY2ch/2Rc3gkRERERERERkWGwQAURERERERERmQUGQYiIiIiIiIjILDAIQkRERERERERmgUEQIiIiIiIiIjILDIIQERERERERkVlgEISIiIiIiIiIzAKDIERERERERERkFhgEISIiIiIiIiKzwCAIEb1m9erVGDZsWIYcmRkzZuCzzz57rb1Lly44duwYnx0iIiJKFwEBAZg4cSLKlCmDokWLIk+ePKhVqxZCQkJ028ydOxd2dnZ48eKFrq1EiRIoUqQIChYsCAsLC7UuS9OmTdX1X375JbJmzaprl+W7777js0hkJKwNvQNElLFmzZqlFvHq1SvY2NioL3exY8cO1KxZE2FhYQgKCnrjfTVs2BAff/wx+vTpk6J9aNasGa5du/Za4EW4ubmp4IePjw/Cw8OTvJ+nT5+qjog8DiIiIqLkev78ORo1aoQPP/xQ9TtcXFyg0Whw5MgRWFlZ6bZbvnw5ypYtq/opI0aMUG23bt1S/9+7dw+lSpVS/yfUo0cP/Pjjj3xCiIwQM0GIzMz48ePh6+urllatWuGbb77RXZYASHJIcGLSpEkqeLJgwQIcPnw4Rfuwb98+XLp0CRMmTED79u3Rrl07fPrpp7h48WKKsj+2bNmC4OBgHDx4ECn17NkzVKlSBf7+/kgtOdMzaNAgpJXZs2fjhx9+SPXtIyIiULt2bZw7dy7N9omIiCgzGjBgAD766CN88cUXKgAiJKujfv36upNDXl5eiIyMxNdff41ly5YZeI+JKK0wCEJkpiSQceLECezcuVNdXrt2rcrQkGXOnDmvbf/w4UP88ccfGD16NOrWrYv8+fPjr7/+UsuKFSvQuHFjLF68GJ6enurH+Jv+tvxYf/z4MTp06ID33nsPgYGBqk3+f5Po6GgVLJAAjGSvSCBi8+bNKXr88jimTJmC7Nmzw1iMHTsWQ4YMSfXtbW1t8dNPP6FXr17qbBYRERG97v79++oEyqhRo5I8PBL46N27N1q0aKGGw5w8eZKHkygTYBCEyEzJkJgGDRqoDJCVK1fi3XffxdKlS9UiX/gJyRAZSf/s2LGjOjMiP9YHDx6ssg5++eUXrFmzRm23bt06dSYlKXfv3lVnViQLpWXLlmjevDn+97//wd7eHlevXk30NjExMarDIrepWLEirl+/roI4rVu3xqFDh7B+/XqV2TF9+nTs3bs3yb//4MED9XckAyWzqVChghp7LFkyRERE9LrTp0+r70vpd+gTGhqqTv7IiQUZHiP/MxuEKHNgEITIDEnGhnyx//zzz9i2bZsq1iVtkt0hP6Bz5Mjx2m3eeecdNXxFAieWlrEfHU+ePNHV48ibN68KisyfP1/VGUmKu7s7SpYsqQqITZ48WQ0rkSCMZGVUrlw50dvI35SgR86cOVXQQ/6OFB0T+fLlU0GYjRs3wsHBIdGxuXFt374dnTp10l2WII52aJDslxRGk+E5KXXlyhW0bdsWxYsXR+HChdGtWzd4e3vHG4IjBV+l7ols8/3336sOmHZ/pb6KFIoV8hhlnLGMRS5Xrhxy5cqlaq9I8EjIMKC+ffuq50X2V7JItN5//311LIiIiCjxjFTJKk3Khg0bUL16dRQoUED3HS1ZsxIcSY7ffvstXmHUs2fP8qkgMhIMghCZGZn1RbImJKtCxsBK8EKKgElmxf79+xO9jVyfLVu215bdu3errJGE7XJ2JSkS0JBhLPKDXwIH0jH4/PPPceDAATWkQx+ZRcbDw0MFQhIjld1HjhypxvkmRdJZ69Sp89pjlGCKNsNEAkQpqTUihVxlSJCML759+zbu3Lmj9kcyZySLRUjgRYIWEvSQwrCXL19OsvirZKw8evRI1UqR7f/55x9dAdmZM2eqgMiNGzdUgdiBAwfqbifDlY4fP57sfSciIjInciJCvu+TCoRI1of0A+RkhSyShSpDdiU4khxSGFW+77WLvpM8RJTxODsMkZmR4l6SQSFZCfLjWYIgzs7Oqq6HltTokPGvWvXq1cPLly/T5O9L0EPOjkhgQGqHyI98CQTIMJxFixapaekkoyQhqcguQ20Skg5M3CruWpIZETc7ImFFeHnccRUrVkw3y42csZHHf+rUKRXYSI5ff/1VVZnv2rWruiz7NHXqVJXJceHCBfV4pRMkbXKdLN9++62q4aGPFGaTArQyvEiyczp37qz2SfZTrpP7k0wTyeCR4IqWPDZ5fomIiOh11apVU9+r8h2cWC0uOZlx/vx5le0a9+TMkiVLVHBETngQkeliEITIzEjAQ8i0bVFRUZg2bdpr22zdulUNx5BhImlNsk/kDIy1tbUKBEiqqfygl6wGGeIhZ1okgyIhGf4iS1xSz0SmyJUsjJSQgIR2SI+WBBLikqE5sj/JJR0mGb4Slzw+GRYjRWWlpooEKuIGbJycnJIcOiTDXOLup+yTNrgxbtw49fxJR06mKpasGvlbQoImb0rzJSIiMlfy3SonfyRDU4bRStaGBDvke1UKvksfSOqGJcxOleGmw4cPVzXSpP9BRKaJw2GIzJjMAiNDSxIuMmRGXxaJZBkktkjNCsmgeBMZWyu1LKTAmHQ6PvzwQ9UJkarrMtuLFDeVH/vyw17uMz3I/Uo2SFqSOh83b958LdgiQ1oky0TOOMlsOHFJTZWkhsMkRTpmUk9FisxKcEVqmmhJoCR37typfCRERESZn2S5yjBcGZ4r39PSh5HAxu+//64WCXgkJP0TqWEmWZ4prQnSs2fPdHokRJRSDIIQmTGZJlayKRIuCxcuTHR7mcFFhtAktrzNtHESKJg9e7YaHiOppkKmry1btizSQ9WqVXHs2LE0vU9Jjd21a5cqOCskE0OCFFIfRR6HTP8r2S5z585V10uWiWRzJMxISS6ZiljuQ7JopMCstkCtkHogNWvWTKNHRkRElDmVL19e1fiQobna2h1SaF2GmrZv3z7R22zatEkVUhcS3JBMz4Sk4HtQUFC8miDaml5EZHgMghCRwUgWhARcJOtDprbdt2+fOrsidTX0TZWbFmQGl7SeQlYyXGT/ZZiRZIWULl1aZbdo65hIuq3MSiOdJynAKmeg5KyQBEFkWExqgiAyrEiWiRMnxquXIn8j7uw3REREREQUy0Kj0Wj+XSciMyJnKST7IkuWLK9dJ9O/yY/olNQEkbMcUhj0TdPTaknxU5nGVcbcSvFPbR0QGY8rRVJlqI52Fhn5oZ8YbU2Q1BRtlalqZaaZ5s2bw1BkZhepiRIQEJBm9ynBI0nhlWKsiRWMJSIiIiIyZwyCEFGa8PPzU7O7fPHFF8naXrIkJAAjwzn0kRoakmGhjwRMZLaUWrVqpXh/tamukr0hxVr1mTdvnloSq48iNU1SQgI6zZo1U49ZapJIJogMzZEsmLQgw22aNGmi9lful4iIiIiI4mMQhIgog0jmyc6dO1WGhqOjowqijB8//rXq80RERERElD4YBCEiIiIiIiIis8DCqERERERERERkFhgEISIiIiIiIiKzwCAIEREREREREZkFBkGIiIiIiIiIyCwwCEJEREREREREZoFBECIiIiIiIiIyCwyCEBEREREREZFZYBCEiIiIiIiIiMwCgyBEREREREREBHPwfzhz1HRhFFG8AAAAAElFTkSuQmCC", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "x_min = int(model_data[X_var].quantile(0.05))\n", + "x_max = int(model_data[X_var].quantile(0.95))\n", + "x_range = np.arange(x_min, x_max + 1)\n", + "cate_line = beta_T + beta_TX * x_range\n", + "\n", + "fig, axes = plt.subplots(1, 2, figsize=(11, 4))\n", + "\n", + "ax = axes[0]\n", + "ax.plot(x_range, cate_line, color='#4477AA', linewidth=2)\n", + "ax.axhline(ate, color='#888888', linestyle='--', label=f'ATE = {ate:+.1%}')\n", + "ax.axhline(0, color='black', linewidth=0.8)\n", + "ax.fill_between(x_range, cate_line, 0,\n", + " where=(cate_line > 0), alpha=0.1, color='#4477AA')\n", + "ax.fill_between(x_range, cate_line, 0,\n", + " where=(cate_line <= 0), alpha=0.1, color='#EE6677')\n", + "ax.yaxis.set_major_formatter(mtick.PercentFormatter(1.0))\n", + "ax.set_xlabel('접속 횟수 (n_logins)')\n", + "ax.set_ylabel('CATE')\n", + "ax.set_title('접속 횟수별 처치 효과')\n", + "ax.legend()\n", + "\n", + "ax = axes[1]\n", + "plot_data = model_data.loc[model_data[X_var] <= x_max, 'cate']\n", + "ax.hist(plot_data, bins=30, color='#4477AA', alpha=0.75, edgecolor='white')\n", + "ax.axvline(ate, color='#888888', linestyle='--', label=f'ATE = {ate:+.1%}')\n", + "ax.axvline(0, color='black', linewidth=0.8)\n", + "ax.xaxis.set_major_formatter(mtick.PercentFormatter(1.0))\n", + "ax.set_xlabel('CATE')\n", + "ax.set_ylabel('유저 수')\n", + "ax.set_title('유저별 CATE 분포')\n", + "ax.legend()\n", + "\n", + "plt.tight_layout()\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "c13", + "metadata": {}, + "source": [ + "## 정리\n", + "\n", + "| 개념 | 핵심 질문 |\n", + "|------|----------|\n", + "| ATE | 처치가 전반적으로 효과 있는가? |\n", + "| HTE | 처치 효과가 개체마다 다른가? |\n", + "| CATE | 특성 X를 가진 유저에게 얼마나 효과적인가? |\n", + "\n", + "1. ATE: 처치 후 전체 재방문율이 소폭 상승\n", + "2. HTE: 라이트 유저와 코어 유저의 처치 효과가 다름 (sub-group analysis)\n", + "3. CATE: 접속 횟수가 많을수록 처치 효과 감소 (β₃ < 0, 상호작용 모델)" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "name": "python", + "version": "3.13.5" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +}