각 연구 설계 상세

ITT·LATE 희석 효과 / 2×2 Factorial 상호작용 / Thompson Sampling / SCM 가상 대조군 / IV 2SLS / Nested Case-Control — 수식·코드·IT 적용 포함

RCT의 ITT 희석 효과와 LATE 복원 원리, Factorial Design의 주 효과·상호작용 분리, Multi-Armed Bandit의 Thompson Sampling 구현, Synthetic Control Method의 가중합 최적화, IV(도구변수) 2SLS 추정, Nested Case-Control·Case-Cohort 비용 절감 설계, 그리고 종단 연구의 LMM·GEE 분석까지 — 별도 확장 파일이 없는 설계를 중심으로 수식·Python 코드·IT 적용 예시를 함께 정리한다.

Statistics
Epidemiology
Experimentation
저자

Kwangmin Kim

공개

2026년 03월 08일

1 각 연구 설계 상세

이 파일은 20번 연구 설계 대분류각 설계 상세 섹션을 분리한 것이다. 관련: 22 — 타당성·편향·인과 추론·효과 지표

1.1 RCT / A/B Test

무작위 배정, 블라인딩, 검정력 분석, Sequential Testing, ITT vs Per-Protocol vs LATE 등 설계 원칙의 상세 설명과 Python/R 코드는 32편 — RCT와 A/B 테스트의 설계 원칙에 있다. 이 절에서는 ITT·PP·LATE의 핵심 차이만 요약한다.

1.1.1 ITT vs Per-Protocol vs LATE

A/B 테스트에서 “처치군”에 배정된 유저가 실제로 처치를 받지 않을 수 있다 (기능 미사용). 이때 분석 전략에 따라 추정하는 효과가 다르다.

핵심 용어

  • ITT (Intention-to-Treat, 배정 의도 분석): 실제 처치 여부와 무관하게 무작위 배정된 그룹 기준으로 분석하는 방법. 기능을 배정받았지만 사용하지 않은 유저도 처치군에 포함한다. “배포하면 전체적으로 어떤 효과가 나는가”를 편향 없이 추정한다.
  • Per-Protocol (PP, 프로토콜 준수 분석): 처치를 실제로 이행한 참여자만 분석하는 방법. 기능을 직접 사용한 유저만 처치군으로 간주한다. 처치의 순수 효능을 보려하지만, 사용 여부가 유저의 자발적 선택이어서 자기선택 편향이 생길 수 있다.
  • LATE (Local Average Treatment Effect, 국소 평균 처치 효과): 순응자(Complier)에 한정한 인과 효과. 순응자는 “배정 여부에 따라 처치 행동이 바뀌는 사람”이며, \(\text{LATE} = \text{ITT} / \text{순응률}\)으로 편향 없이 추정한다.
  • ATE (Average Treatment Effect, 평균 처치 효과): 전체 모집단에 처치를 적용했을 때의 기대 효과 차이 (\(E[Y(1) - Y(0)]\)). ITT는 ATE의 편향 없는 추정량이다.
분석 방법 추정량 수식 특징
ITT (Intention-to-Treat) ATE (배포 효과) \(E[Y \mid Z=1] - E[Y \mid Z=0]\) 배정 기준, 보수적, 편향 없음
Per-Protocol ATT 근사 \(E[Y \mid D=1] - E[Y \mid D=0]\) 실제 사용 기준, 선택 편향 위험
LATE 순응자 ATE \(\frac{ITT}{\text{순응률}}\) 순응자 한정, 편향 없음, IV 필요

1.1.2 수치 예시: 세 분석의 차이

실험 설계:
  처치군 10,000명 배정 → 실제 새 기능 사용자 6,000명
  대조군 10,000명
  실제 효과: 기능 사용 시 전환율 +2%p (10% → 12%)

ITT 분석:
  처치군 전환율 = 0.6 × 12% + 0.4 × 10% = 11.2%
  대조군 전환율 = 10%
  ITT 효과 = 1.2%p  ← 실제 2%p보다 희석됨
  해석: "기능을 배포하면 전체 유저 대비 1.2%p 전환율 개선"

Per-Protocol 분석:
  실제 사용자 6,000명 전환율 = 12%
  대조군 = 10%
  PP 효과 = 2%p  ← 정확해 보이지만...
  문제: 사용자 6,000명이 자기 선택 → 원래 전환율이 11%였을 수 있음
        → 실제 효과는 1%p인데 2%p로 과대 추정

LATE (도구변수):
  LATE = ITT / 순응률 = 1.2%p / 0.6 = 2.0%p
  해석: "기능을 실제로 사용한 순응자의 인과 효과 = 2%p"
  → 선택 편향 없이 순응자의 진짜 효과를 복원

1.2 코호트 연구 (Cohort Study)

구조, 전향적/후향적 차이, RR 수식과 CI, 인시던스 레이트, Python/R 코드는 33편 — 관찰 연구 설계에 있다. 이 절에서는 33편에 없는 코호트 vs 종단 연구 구분과 IT 리텐션 코드를 다룬다.

1.2.1 코호트 vs 종단 연구

혼동하기 쉬운 두 개념을 구분한다:

구분 코호트 연구 (Cohort Study) 종단 연구 (Longitudinal Study)
초점 노출 → 결과 (인과 탐색) 시간에 따른 변화 패턴
비교 구조 노출군 vs 비노출군 같은 집단의 시점 간 비교
분석 RR, HR, 생존분석 성장 곡선, 반복측정 ANOVA, LMM
IT 예시 기능 사용자 vs 미사용자 이탈률 비교 사용자의 월별 engagement 추이

1.2.2 IT 적용: 가입 월 기반 코호트 리텐션

import pandas as pd
import numpy as np

# --- 시뮬레이션 데이터 ---
np.random.seed(42)
n = 5000
df = pd.DataFrame({
    "user_id": range(n),
    "signup_date": pd.date_range("2025-01-01", periods=365, freq="D")[
        np.random.randint(0, 365, n)
    ],
    "last_active": pd.date_range("2025-01-01", periods=365, freq="D")[
        np.random.randint(0, 365, n)
    ]
})
df["last_active"] = df[["signup_date", "last_active"]].max(axis=1) + pd.to_timedelta(
    np.random.exponential(60, n), unit="D"
)

# --- 코호트 구성 ---
df["cohort"] = df["signup_date"].dt.to_period("M")
df["tenure_months"] = (
    (df["last_active"] - df["signup_date"]).dt.days / 30.44
).astype(int)

# --- 코호트별 리텐션 테이블 ---
cohort_sizes = df.groupby("cohort")["user_id"].nunique()

retention_data = []
for month_offset in range(13):
    active = df[df["tenure_months"] >= month_offset].groupby("cohort")["user_id"].nunique()
    retention = (active / cohort_sizes).rename(f"M+{month_offset}")
    retention_data.append(retention)

retention_table = pd.concat(retention_data, axis=1)
print("=== 코호트 리텐션 테이블 ===")
print(retention_table.round(2))

1.2.3 RR (Relative Risk) 수식

RR (Relative Risk, 상대 위험도): 비노출군 대비 노출군의 결과 발생 확률 비율. 1보다 크면 노출이 위험을 높이고, 1보다 작으면 노출이 보호 효과를 가진다. 코호트 연구에서 발생률을 알 수 있을 때 사용 가능하다.

\[RR = \frac{P(\text{결과} \mid \text{노출})}{P(\text{결과} \mid \text{비노출})} = \frac{a / (a+b)}{c / (c+d)}\]

  • \(RR = 1\): 연관 없음
  • \(RR > 1\): 노출이 위험 증가
  • \(RR < 1\): 노출이 보호 효과

1.3 케이스-컨트롤 연구 (Case-Control Study)

OR 수식, OR vs RR 괴리, Fisher’s exact test, 로지스틱 회귀, Python/R 코드는 33편에 있다. 이 절에서는 33편에 없는 후향적 코호트 vs 케이스-컨트롤 구분을 다룬다.

핵심 용어

  • 케이스-컨트롤 연구: 결과가 발생한 집단(케이스)과 발생하지 않은 집단(컨트롤)을 역방향으로 비교해 과거 노출 여부를 조사하는 설계. 결과가 드물 때 코호트 연구보다 훨씬 효율적이다.
  • OR (Odds Ratio, 오즈비): 케이스군의 노출 오즈 대 컨트롤군의 노출 오즈의 비율. 케이스-컨트롤 연구에서는 발생률을 알 수 없어 RR을 직접 계산할 수 없고, OR만 계산 가능하다. 결과 발생 확률이 10% 미만으로 낮을 때 OR \(\approx\) RR로 해석할 수 있다.
  • 매칭(Matching): 케이스와 컨트롤을 나이·성별 등 교란 변수 기준으로 짝지어 선택함으로써 교란을 제거하는 방법. 매칭된 쌍은 이후 조건부 로지스틱 회귀로 분석한다.

1.3.1 후향적 코호트 vs 케이스-컨트롤

둘 다 과거 데이터를 사용하지만 집단 구성 기준이 다르다:

후향적 코호트:                     케이스-컨트롤:
  "노출" 기준으로 집단 구성           "결과" 기준으로 집단 구성
  노출군 ──→ 결과 발생?             케이스(결과+) ──→ 과거 노출?
  비노출군 ──→ 결과 발생?           컨트롤(결과-) ──→ 과거 노출?
  → RR 계산 가능                    → OR만 계산 가능 (발생률 모름)

IT로 대응하면:
  후향적 코호트: "기능 X를 쓴 유저 vs 안 쓴 유저 → 이탈했는가?"
  케이스-컨트롤: "이탈한 유저 vs 유지 유저 → 과거에 기능 X를 썼는가?"

언제 케이스-컨트롤이 유리한가? 결과가 드물 때. 예를 들어 이탈률이 2%인 서비스에서 코호트 방식으로 10,000명을 추적하면 이탈자가 200명밖에 안 나온다. 케이스-컨트롤은 이탈자 200명을 직접 모집하고 매칭된 컨트롤 200명을 선택하므로, 같은 검정력을 훨씬 적은 비용으로 달성한다.


1.4 단면 연구 (Cross-sectional Study)

유병률, 교차 분석, Python SQL 예시는 33편에 있다.

단면 연구는 특정 시점의 스냅샷으로 노출과 결과를 동시에 측정한다. 시간적 선후 관계를 알 수 없으므로 인과 방향이 불명확하다.

  • IT 예시: “기능X 사용자의 만족도가 낮다” → 기능X가 불만족을 유발하는지, 불만족한 사용자가 기능X를 쓰는지 알 수 없음
  • 가치: 가설 생성 단계에서 유용 → 코호트/RCT로 인과 확인
단면 → 코호트 → RCT 확장 흐름:

단면: "다크모드 사용자의 세션 시간이 길다" (관찰, 인과 불명)
  ↓ 가설: 다크모드 → 세션 시간 증가?
코호트: 다크모드 전환 전후 세션 시간 추적 (시간 선후 확인)
  ↓ 연관 확인?
RCT: 다크모드를 무작위 배정하여 인과 검증

1.5 준실험적 설계 요약

상세는 34편 — 준실험적 설계: ITS, RDD, Stepped Wedge 참조.

무작위 배정이 불가능할 때 자연 실험 상황을 활용해 인과 효과를 추정하는 설계들이다.

  • DiD (Difference-in-Differences, 이중 차분): 처치군-대조군 각각의 처치 전후 변화량을 서로 빼서 처치 효과를 분리하는 방법. “처치가 없었다면 두 집단이 동일한 추세를 따랐을 것”이라는 평행 추세 가정이 핵심이다.
  • ITS (Interrupted Time Series, 단절 시계열): 처치 시점을 기준으로 시계열의 수준과 기울기 변화를 추정하는 방법. 단일 집단 데이터만으로도 분석 가능하지만, 별도 대조군이 없으면 외부 사건의 영향을 배제하기 어렵다.
  • RDD (Regression Discontinuity Design, 회귀 불연속 설계): 임계값을 기준으로 처치가 결정될 때, 임계값 근방에서 처치 여부가 사실상 무작위임을 이용해 인과 효과를 추정하는 방법.
  • Stepped Wedge: 모든 클러스터가 순차적으로 처치군으로 전환하되, 전환 시점을 무작위 배정하는 설계. 윤리적 이유로 대조군을 영구적으로 유지할 수 없을 때 유용하다.
  • SCM (Synthetic Control Method, 합성 대조군 방법): 여러 대조 단위의 가중합으로 가상의 대조 집단을 구성해 인과 효과를 추정하는 방법. 처치 단위가 하나뿐일 때 DiD의 대안이 된다.
설계 핵심 아이디어 핵심 가정 IT 적용
DiD 처치/대조 × 전/후 비교 평행 추세 지역별 순차 출시
ITS 개입 전후 시계열 추세 비교 추세 연속성 알고리즘/정책 변경
RDD 임계값 근방 ≈ 무작위 배정 비조작, 연속성 등급 기반 혜택
Stepped Wedge 모든 클러스터가 순차 전환 시간 효과 통제 단계적 롤아웃
SCM 가상 대조군을 가중합으로 생성 가중합 재현성 단일 지역 정책 효과

1.6 Factorial Design

Factorial Design은 복수의 처치(factor)를 동시에 교차 배정하는 설계다. 32편의 단일 처치 A/B 테스트와 달리, 처치 간 상호작용(interaction)을 검출할 수 있다.

1.6.1 2×2 Factorial 구조

                 요인 B (가격)
                 B₀ (기존)    B₁ (할인)
요인 A (UI)  A₀  ┌──────────┬──────────┐
             (기존)│ 그룹 1   │ 그룹 2   │
                  │ 기존UI+  │ 기존UI+  │
                  │ 기존가격  │ 할인가격  │
             A₁  ├──────────┼──────────┤
             (신규)│ 그룹 3   │ 그룹 4   │
                  │ 신규UI+  │ 신규UI+  │
                  │ 기존가격  │ 할인가격  │
                  └──────────┴──────────┘

1.6.2 상호작용 효과(Interaction)의 직관

주 효과(Main Effect): 한 요인의 평균적 효과

  • A의 주 효과 = (그룹3 + 그룹4)/2 − (그룹1 + 그룹2)/2
  • B의 주 효과 = (그룹2 + 그룹4)/2 − (그룹1 + 그룹3)/2

상호작용 효과: “한 요인의 효과가 다른 요인의 수준에 따라 달라지는 정도”

예시: 전환율 결과

                B₀ (기존가격)   B₁ (할인가격)
A₀ (기존 UI)      10%             15%         ← 할인 효과 +5%p
A₁ (신규 UI)      12%             22%         ← 할인 효과 +10%p

주 효과만 보면:
  UI 효과 = (12+22)/2 - (10+15)/2 = 17 - 12.5 = +4.5%p
  가격 효과 = (15+22)/2 - (10+12)/2 = 18.5 - 11 = +7.5%p

상호작용:
  신규 UI에서 할인 효과가 5%p 더 크다 (10% vs 5%)
  → UI × 가격 상호작용 = (22-12) - (15-10) = 10 - 5 = +5%p
  → "신규 UI에서 할인이 시너지를 낸다"

상호작용이 있으면 주 효과만으로는 최적 조합을 찾을 수 없다. 반드시 Factorial Design으로 교차 배정해야 한다.

1.6.3 A/B 테스트와의 비교

측면 순차적 A/B 2회 2×2 Factorial
실험 횟수 2회 (A → B) 1회
상호작용 검출 불가 검출 가능
표본 효율 각 요인 n/2 각 요인 n (공유)
복잡성 낮음 중간
주의사항 시간 효과 혼입 셀별 표본 크기 감소

1.6.4 Python 코드: 2-way ANOVA

import pandas as pd
import numpy as np
import statsmodels.api as sm
from statsmodels.formula.api import ols

# --- 시뮬레이션: UI × 가격 Factorial ---
np.random.seed(42)
n_per_cell = 500

data = []
for ui in [0, 1]:
    for price in [0, 1]:
        # 주 효과 + 상호작용 + 노이즈
        base = 10
        ui_effect = 2 * ui
        price_effect = 5 * price
        interaction = 5 * ui * price  # 상호작용!
        y = np.random.normal(
            base + ui_effect + price_effect + interaction,
            8,
            n_per_cell
        )
        for val in y:
            data.append({"ui": ui, "price": price, "conversion": val})

df = pd.DataFrame(data)

# 2-way ANOVA
model = ols("conversion ~ C(ui) * C(price)", data=df).fit()
anova_table = sm.stats.anova_lm(model, typ=2)
print(anova_table)

1.7 Multi-Armed Bandit (MAB)

MAB는 탐색(exploration)과 수확(exploitation)을 동적으로 균형맞추는 적응적 설계다. 전통적 A/B 테스트가 실험 기간 동안 고정 비율(50:50)로 배정하는 반면, MAB는 좋은 성과를 보이는 변형에 점점 더 많은 트래픽을 할당한다.

1.7.1 A/B 테스트 vs MAB

A/B Test:
  실험 기간 전체에 걸쳐 50:50 고정 배정
  실험 종료 후 최적 변형을 선택
  → 실험 기간 동안 열등한 변형에도 50% 트래픽 소모 ("regret")

MAB:
  초기에는 균등 배정, 성과에 따라 배정 비율을 동적 조정
  좋은 변형에 더 많은 트래픽 → 누적 보상 최대화
  → 실험 기간 동안의 기회비용을 줄임

Trade-off:
  A/B Test: 통계적 추론(p-value, CI)에 최적
  MAB: 누적 보상 최대화에 최적, 통계적 추론은 어려움

1.7.2 Thompson Sampling

베이지안 MAB의 대표적 알고리즘. 각 변형의 성공률에 대한 사후분포에서 샘플링하여 배정을 결정한다.

메커니즘:

  1. 각 변형(arm)의 성공률을 Beta 분포로 모델링: \(\theta_k \sim \text{Beta}(\alpha_k, \beta_k)\)
  2. 각 시행에서 모든 변형의 사후분포에서 한 값씩 샘플링
  3. 가장 높은 샘플을 뽑은 변형을 선택하여 노출
  4. 관측된 결과로 사후분포를 업데이트: 성공이면 \(\alpha_k + 1\), 실패면 \(\beta_k + 1\)
import numpy as np

class ThompsonSampling:
    """
    이진 결과(전환 여부)에 대한 Thompson Sampling.
    각 arm의 전환율을 Beta 분포로 추정한다.
    """
    def __init__(self, n_arms):
        # Beta(1, 1) = Uniform(0, 1): 무정보 사전분포
        self.alpha = np.ones(n_arms)  # 성공 횟수 + 1
        self.beta = np.ones(n_arms)   # 실패 횟수 + 1

    def select_arm(self):
        """각 arm의 사후분포에서 샘플링, 최대값의 arm 선택."""
        samples = np.random.beta(self.alpha, self.beta)
        return np.argmax(samples)

    def update(self, arm, reward):
        """관측 결과로 사후분포 업데이트."""
        if reward == 1:
            self.alpha[arm] += 1
        else:
            self.beta[arm] += 1

    def get_estimates(self):
        """각 arm의 추정 전환율 (사후 평균)."""
        return self.alpha / (self.alpha + self.beta)


# --- 시뮬레이션 ---
np.random.seed(42)
true_rates = [0.10, 0.12, 0.15]  # 3개 변형의 실제 전환율
n_trials = 10000
ts = ThompsonSampling(n_arms=3)

rewards = []
selections = []
for t in range(n_trials):
    arm = ts.select_arm()
    reward = np.random.binomial(1, true_rates[arm])
    ts.update(arm, reward)
    rewards.append(reward)
    selections.append(arm)

# 결과
print("=== Thompson Sampling 결과 ===")
print(f"추정 전환율: {ts.get_estimates().round(4)}")
print(f"실제 전환율: {true_rates}")
for k in range(3):
    count = selections.count(k)
    print(f"Arm {k}: {count}회 선택 ({count/n_trials:.1%})")

1.7.3 MAB의 한계

한계 설명
통계적 추론 어려움 배정 비율이 결과에 의존하므로 표준 p-value/CI 부적절
지연된 보상 전환이 수일 후 발생하면 즉시 업데이트 불가
맥락 무시 기본 MAB는 사용자 특성을 고려하지 않음 (→ Contextual Bandit)
비정상성 최적 변형이 시간에 따라 바뀔 수 있음

1.8 Synthetic Control Method (SCM)

SCM은 단일 처치 단위에 대해 가상의 대조군을 만드는 준실험적 방법이다. Abadie, Diamond & Hainmueller (2010)가 제안했다.

1.8.1 DiD vs SCM

측면 DiD SCM
대조군 사전 선정된 대조 집단 여러 대조 단위의 가중합으로 구성
가정 평행 추세 가중합이 처치 전 추세를 재현
처치 단위 수 다수 가능 보통 1개 (소수)
가중치 없음 (단순 차분) 데이터 기반으로 최적화

1.8.2 직관

상황: 한국에서만 새 정책 적용, 효과를 알고 싶음

DiD 접근: 한국 vs 일본 (평행 추세 가정)
  → 일본이 한국과 추세가 다르면 편향

SCM 접근: "가상 한국"을 만듦
  가상 한국 = 0.4 × 일본 + 0.3 × 대만 + 0.2 × 싱가포르 + 0.1 × 홍콩
  → 정책 적용 전 한국의 추세를 가장 잘 재현하는 가중합
  → 정책 적용 후: 실제 한국 - 가상 한국 = 처치 효과

1.8.3 Python 코드 (간략)

import numpy as np
from scipy.optimize import minimize

def synthetic_control(Y_treat_pre, Y_donors_pre, Y_donors_post):
    """
    처치 전 기간에서 처치 단위를 가장 잘 재현하는 가중치를 찾는다.

    Parameters
    ----------
    Y_treat_pre : array (T_pre,)
    Y_donors_pre : array (T_pre, J)  J = 후보 대조 단위 수
    Y_donors_post : array (T_post, J)
    """
    J = Y_donors_pre.shape[1]

    def objective(w):
        synthetic = Y_donors_pre @ w
        return np.sum((Y_treat_pre - synthetic) ** 2)

    # 제약: 가중치 합 = 1, 각 가중치 >= 0
    constraints = {"type": "eq", "fun": lambda w: np.sum(w) - 1}
    bounds = [(0, 1)] * J
    w0 = np.ones(J) / J

    result = minimize(objective, w0, bounds=bounds, constraints=constraints)
    weights = result.x

    # 처치 후 반사실
    Y_synthetic_post = Y_donors_post @ weights
    return weights, Y_synthetic_post

1.9 도구 변수 (Instrumental Variables, IV)

IV의 정의, 2SLS 수식, Weak Instruments, LATE 해석, Python/R 코드는 35편 — 인과 추론 프레임워크에 있다. 이 절에서는 35편에 간략한 IT Encouragement Design을 상세히 다룬다.

핵심 용어

  • 도구변수 (IV, Instrumental Variable): 처치 변수(\(T\))에 영향을 주지만, 결과(\(Y\))에는 오직 처치를 통해서만 영향을 미치는 변수(\(Z\)). 미관측 교란이 있어 처치 효과를 직접 추정할 수 없을 때, IV를 이용해 우회적으로 인과 효과를 추정한다.
  • 2SLS (Two-Stage Least Squares, 이단계 최소자승법): IV 추정의 가장 일반적인 방법. 1단계에서 IV로 처치 변수를 예측하고, 2단계에서 예측된 처치값으로 결과를 회귀한다. 교란과 무관한 처치의 외생적 변동만 이용하므로 편향이 없다.
  • Exclusion Restriction (배제 제약): IV가 결과에 처치를 통해서만 영향을 미친다는 가정. 이 가정이 깨지면 IV 추정에 편향이 생긴다.

1.9.1 IT Encouragement Design

A/B 테스트에서 기능을 강제로 사용시킬 수 없을 때, Encouragement Design이 대안이 된다. 알림/이메일을 무작위 발송(Z)하여 기능 사용(T)을 장려하고, 기능 사용이 결과(Y)에 미치는 효과를 추정한다.

상황:
  새 추천 기능을 출시했지만, 유저가 직접 활성화해야 함
  → 기능 사용 여부를 무작위 배정할 수 없음 (유저의 선택)
  → 관심 많은 유저가 기능을 더 많이 쓸 것 → 교란

Encouragement Design:
  Z(알림 발송)을 무작위 배정 → 알림 받은 유저가 기능을 더 많이 활성화
  → Z는 도구변수 역할

  알림 발송(Z) ──→ 기능 사용(T) ──→ 구매(Y)
                      ↑               ↑
                      └── 관심도(U) ──┘

  Z의 3가지 조건 충족:
  1. Relevance: 알림 → 기능 사용 확률 ↑ (검증 가능)
  2. Exclusion: 알림 자체가 구매에 직접 영향 없음 (가정, 주의 필요)
  3. Independence: 알림 발송이 무작위이므로 U와 독립

  LATE = ITT 효과 / 순응률
       = (구매|알림O - 구매|알림X) / (기능사용|알림O - 기능사용|알림X)

Exclusion restriction 주의: “알림 자체가 구매에 직접 영향을 주지 않는다”는 가정이 위배될 수 있다. 예를 들어 알림에 할인 쿠폰이 포함되면, 알림 → 구매 직접 경로가 생겨 IV 가정이 깨진다. 알림 내용이 순수하게 “기능 소개”여야 한다.

1.9.2 Python: LATE 추정

from linearmodels.iv import IV2SLS

# Z: 알림 발송 (instrument, 무작위)
# D: 기능 사용 (endogenous treatment)
# Y: 구매 여부 (outcome)

model = IV2SLS.from_formula("Y ~ 1 + [D ~ Z]", data=df)
result = model.fit(cov_type="robust")
print(result.summary)
# result.params["D"] = LATE 추정량

1.10 Nested Case-Control & Case-Cohort

코호트 연구 내에서 비용을 절감하기 위한 하이브리드 설계들이다.

1.10.1 Nested Case-Control

전체 코호트 (10,000명)
   │
   ├─ 추적 중 결과 발생자 → 케이스 (200명)
   │
   └─ 결과 미발생자 중 매칭 → 컨트롤 (200명 × 매칭 비율)
       (케이스 발생 시점 기준 위험 집합에서 추출)

장점: 전체 코호트의 바이오마커/비용이 큰 변수를
      케이스 + 컨트롤에 대해서만 측정 → 비용 절감
단점: 일부 정보 손실 (비선택 개체 미활용)

IT 적용: 전체 사용자 코호트에서 이탈자(케이스)를 식별하고, 이탈 시점에 활성이었던 사용자 중 매칭된 컨트롤을 선택하여, 비용이 큰 심층 로그 분석을 케이스+컨트롤에 대해서만 수행한다.

1.10.2 Case-Cohort

전체 코호트 (10,000명)
   │
   ├─ 추적 중 결과 발생자 → 케이스 (전수)
   │
   └─ 전체 코호트의 랜덤 서브샘플 → 서브코호트 (1,000명)
       (결과 발생 여부와 무관하게 선정)

분석: 케이스 전수 + 서브코호트를 결합하여 분석
장점: 서브코호트를 여러 결과에 대해 재사용 가능
      (Nested CC는 결과마다 새 컨트롤 필요)

1.10.3 비교

특성 Nested Case-Control Case-Cohort
컨트롤 선택 매칭 (시점별 위험 집합) 랜덤 서브샘플 (고정)
여러 결과 분석 결과마다 새 컨트롤 서브코호트 재사용
분석 방법 조건부 로지스틱 가중 Cox 모델
IT 적용 단일 이탈 원인 심층 분석 이탈, 업그레이드, 불만 등 복수 결과

1.11 종단 연구 (Longitudinal Study)

동일한 개체를 반복 측정하여 시간에 따른 변화를 추적하는 설계다.

1.11.1 코호트와의 차이

  • 코호트: 노출 → 결과의 인과 관계에 초점
  • 종단: 시간에 따른 변화 패턴(궤적) 자체에 초점

1.11.2 분석 방법

방법 특징 IT 적용
Repeated Measures ANOVA 시점 간 차이 검정, 구형성 가정 주간 engagement 비교
LMM (Linear Mixed Model) 개인별 랜덤 절편/기울기, 결측 허용 사용자별 학습 곡선 모델링
GEE 모집단 평균 효과 추정 정책 효과의 평균적 추세
Growth Curve Model 비선형 궤적 모델링 사용자 engagement 성장 패턴

방법론 개념 요약

  • LMM (Linear Mixed Model, 선형 혼합 모형): 모든 개체에 공통인 고정 효과(Fixed Effects)와 개인별 랜덤 효과(Random Effects)를 동시에 추정하는 모형. 개체 간 변동과 시점 내 변동을 분리하여, 무작위 결측(MAR)이 있어도 분석할 수 있고 개인별 성장 궤적도 모델링할 수 있다.
  • GEE (Generalized Estimating Equations, 일반화 추정 방정식): 개인별 궤적보다 모집단 평균 추세를 추정하는 방법. 개체 내 반복측정 상관 구조를 작업 상관 행렬(working correlation matrix)로 지정해 표준오차를 보정한다. 정책 효과의 “전체 평균적” 추세를 볼 때 적합하다.
  • Growth Curve Model (성장 곡선 모형): LMM의 확장으로, 시간에 따른 비선형 궤적(지수적·S자형 등)을 모델링한다. 개체마다 성장 속도와 출발점이 다를 수 있음을 허용한다.

1.11.3 바이오마커 추적 연구 구조

의학에서의 종단 설계를 IT에 대응시키면:

의학:
  환자 코호트 → 3개월마다 혈압 측정 → 치료 반응 궤적 분석

IT:
  사용자 코호트 → 주마다 engagement 지표 측정 → 기능 도입 후 행동 변화 분석

공통 구조:
  Y_ij = β₀ + β₁·시간_j + β₂·처치_i + β₃·(시간×처치)_ij + u_i + ε_ij
  └── LMM으로 적합, u_i는 개인별 랜덤 효과

1.12 요약 비교표

설계 처치 배정 시간 방향 핵심 지표 인과 강도 IT 적용
RCT/A/B 연구자 (무작위) 전향 ATE, RR ★★★★★ A/B 테스트
Factorial 연구자 (교차) 전향 주효과+상호작용 ★★★★★ 복수 처치 동시 실험
MAB 적응적 전향 누적 보상 ★★★☆☆ 실시간 최적 배분
전향적 코호트 자연 발생 전향 RR, HR ★★★☆☆ 기능 출시 후 추적
후향적 코호트 자연 발생 후향 RR ★★★☆☆ 로그 기반 분석
케이스-컨트롤 자연 발생 후향 OR ★★☆☆☆ 이탈 원인 탐색
단면 없음 스냅샷 유병률 ★☆☆☆☆ DAU 스냅샷
DiD / ITS / RDD 자연 실험 전/후 ATT, LATE ★★★★☆ 정책/알고리즘 변경
SCM 자연 실험 전/후 처치 효과 ★★★★☆ 단일 지역 정책
IV 자연 실험 LATE ★★★★☆ Encouragement Design

다음 파일: 22 — 타당성·편향·인과 추론·효과 지표

Subscribe

Enjoy this blog? Get notified of new posts by email: