Triggering Numerical Example · Optimal vs Conservative · Diluted Impact

Sample Size Formula · Trigger Rate · Simpson’s Paradox · Ratio Metric Dilution

Kohavi (2020) Ch.20.5~20.7 을 깊게 다룬다. Sample size formula 의 derivation 과 trigger 의 numerical 가치, optimal vs conservative triggering 의 trade-off, multiple treatment 시의 conservative bias, post-hoc analysis 의 fallback, diluted impact 의 정밀 formula (Equation 20.3, 20.4, 20.5), Simpson’s paradox 의 위험을 코드와 사례로 풀이한다.

Experimentation
A/B Test
저자

Kwangmin Kim

공개

2026년 05월 08일

1 정의

정의: Numerical Triggering · Diluted Impact

Kohavi (2020) Ch.20.5~20.7 의 정량 분석.

1.0.0.1 Sample Size Formula

저자 인용 (van Belle 2008, Equation 20.1):

\[n = \frac{16\sigma^2}{\Delta^2}\]

Where (95% confidence, 80% power):
  σ² = metric 의 variance
  Δ = minimum detectable absolute effect
1.0.0.2 Diluted Impact

Triggered effect 를 overall population 으로 변환.

Formula 정확성
Equation 20.3 \(\Delta_\theta \cdot N_{\theta C} / (M_{\omega C} \cdot N_{\omega C})\) 정확
Equation 20.4 \((\Delta_\theta / M_{\omega C}) \cdot \tau\) 정확 (20.3 과 같음)
Equation 20.5 (잘못) \((\Delta_\theta / M_{\theta C}) \cdot \tau\) 부정확

원문 인용 (Ch.20.7): “The computation holds when the triggered population is a random sample, but if the triggered population is skewed, as is often the case, then this computation is inaccurate by a factor \(M_{\omega C} / M_{\theta C}\).”

핵심 통찰: Triggered effect 가 overall effect 와 다름. 단순 곱셈 (effect × trigger rate) 은 잘못. Triggered population 의 baseline 이 overall 과 다르면 계산이 차이를 추가로 곱해야 한다.

2 개념 및 원리

2.1 Numerical Example — Sample Size 절감

저자 명시 (Ch.20.5).

2.1.1 Sample Size Formula 의 유도

2.1.1.1 Standard formula

저자 인용 (van Belle 2008, p.31):

\[n = \frac{16\sigma^2}{\Delta^2}\]

2.1.1.2 유도
Two-sample t-test 의 power:
  Power = P(reject H_0 | true effect = Δ)
        = P(|Z| > z_{α/2} | μ_T - μ_C = Δ)

z-score:
  Z = Δ / SE
  SE = sigma × sqrt(2/n)  (equal sample size)

Power = 80% requirement:
  z_β = 0.84

Total z requirement:
  Δ / (sigma × sqrt(2/n)) ≥ z_{α/2} + z_β
  Δ / (sigma × sqrt(2/n)) ≥ 1.96 + 0.84 ≈ 2.80
  Δ² / (2 × sigma² / n) ≥ 7.84
  n ≥ 7.84 × 2 × sigma² / Δ²
  n ≥ 15.68 × sigma² / Δ²
  ≈ 16 × sigma² / Δ²

이 16 의 origin 이 95% × 80% × two-sided.

2.1.1.3 Variance 의 표기
Bernoulli (binary metric):
  σ² = p(1-p)
  Where p = baseline rate

Continuous metric:
  σ² = sample variance
  CLT 후 mean 의 variance: σ² / n

2.1.2 Naive Approach 의 분석

저자 명시.

2.1.2.1 E-commerce 사례
Setup:
  Site: e-commerce
  Conversion rate: 5% (p = 0.05)
  Bernoulli variance: σ² = 0.05 × 0.95 = 0.0475
  MDE (relative): 5% (Δ_relative = 0.05)
  MDE (absolute): Δ = 0.05 × 0.05 = 0.0025
2.1.2.2 Sample size 계산
n = 16 × σ² / Δ²
  = 16 × 0.0475 / 0.0025²
  = 16 × 0.0475 / 0.00000625
  = 0.76 / 0.00000625
  = 121,600 사용자

→ Per variant
→ Total: 243,200 (T + C)

2.1.3 Triggered Approach 의 분석

2.1.3.1 Setup
변경: Checkout flow 의 button color
Trigger condition: 사용자 가 checkout 시작
Trigger rate: 10% (10% of users initiate checkout)

Triggered population 의 conversion:
  Initiated checkout → 50% complete (전반적)
  p_triggered = 0.5

Variance:
  σ²_triggered = 0.5 × 0.5 = 0.25
  → 5x larger than overall (0.0475)
2.1.3.2 Sample size 계산
n_triggered = 16 × 0.25 / Δ²
  Δ_relative = 5% on triggered
  Δ_absolute = 0.5 × 0.05 = 0.025

  n_triggered = 16 × 0.25 / 0.025²
              = 16 × 0.25 / 0.000625
              = 6,400 사용자

→ Per variant (triggered subset 만)

Total user 수 (실험 entry):
  n_total = n_triggered / trigger_rate
          = 6,400 / 0.10
          = 64,000 사용자 per variant

2.1.4 비교

Naive: 121,600 per variant (243,200 total)
Triggered: 64,000 per variant (128,000 total)

Savings: 47%

Time savings (assuming constant rate):
  Naive 가 t 일 → triggered 는 0.53 × t = 0.53t

또한 user repeat:
  실제 사용자 가 multiple visit
  Active user pool 도달 시간 < linear
  → 50% time savings (더 conservative)
2.1.4.1 직관 — Why Triggered 가 더 효율적인가
이유:
  Triggered 의 σ² 가 overall 보다 5x 큼
  But Δ (absolute) 가 10x 큼 (0.5 의 5% vs 0.05 의 5%)

  n ∝ σ² / Δ²
  Triggered 의 n_per_variant: σ² × 5 / Δ² × 100 = σ² / Δ² × 20
  → Per-variant (triggered) 가 1/20

  But trigger rate 1/10:
  Total = (1/20) × 10 = 1/2 = 0.5x
  → Total user 수 절반

→ 50% savings (실험 시간)

이 ratio 가 trigger rate 와 effect 의 관계의 본질.

2.1.5 일반화 — Trigger Rate 의 영향

Trigger rate τ 의 변화:

τ = 0.50 (큰 trigger):
  Naive 가 거의 best (effect 거의 dilute 안 됨)
  Triggered 의 ROI 작음

τ = 0.10 (보통 trigger):
  Triggered 가 ~50% 절감
  표준 ROI

τ = 0.05 (작은 trigger):
  Triggered 가 ~75% 절감
  강한 ROI

τ = 0.01 (매우 작은 trigger):
  Triggered 가 ~95% 절감
  Critical ROI

τ = 0.001 (extremely 작은 trigger):
  Naive 분석 사실상 불가
  Triggered 만 의미

이 trade-off 가 trigger rate 의 결정의 입력.

직관 — Numerical 의 핵심 메시지
2.1.5.1 Sample size 의 quadratic 관계
n ∝ σ² / Δ²

Δ 가 2x 커지면:
  n 이 1/4

Δ 가 10x 커지면:
  n 이 1/100

이 quadratic 효과가 triggered 분석의 sensitivity 폭증 의 root.

2.1.5.2 Triggered 의 이중 효과
Effect 1 — Δ 증가:
  Triggered population 의 absolute effect 가 큼
  (Effect dilution 회피)

Effect 2 — σ² 증가:
  Triggered population 이 baseline 더 큰 variance
  (50% 가 conversion → 0.25 variance vs 5% 의 0.0475)

Net effect:
  Δ 증가 가 σ² 증가 보다 dominant
  → Smaller n_per_variant
2.1.5.3 Trigger rate 의 cost
Trigger rate τ 가 작을수록:
  - Triggered 의 effect 가 더 큼
  - But triggered population 이 더 작음
  - 실험 entry user 수: n_total = n_triggered / τ

  Trade-off:
    Smaller n_triggered (효과 큼)
    Larger 1/τ (entry user 더 많음 위해)
    Net: n_total 의 변화가 미묘
2.1.5.4 결정 framework
대부분 case:
  n_total (triggered) < n_total (naive)
  → Triggered 가 항상 (또는 거의 항상) better

예외:
  Trigger rate 가 매우 큼 (> 50%):
    Naive 의 dilution 가 minor
    Triggered 의 ROI 작음

  Trigger rate 가 매우 작음 (< 0.1%):
    Triggered subset 너무 작음
    Statistical power 부족
    → 실험 자체 어려움

이 framework 이 trigger 결정의 표준.

2.2 Optimal vs Conservative Triggering

저자 명시 (Ch.20.6).

2.2.1 Optimal Triggering

Optimal:
  Triggered = {user | Treatment 와 Control 의 결과가 다른 사용자}
  최소 set
  최대 sensitivity
2.2.1.1 Multi-Treatment 의 optimal

저자 명시.

시나리오:
  Control (C), Treatment 1 (T1), Treatment 2 (T2)

Optimal trigger sets (per pair):
  C vs T1: {user | C(user) ≠ T1(user)}
  C vs T2: {user | C(user) ≠ T2(user)}
  T1 vs T2: {user | T1(user) ≠ T2(user)}

Implementation:
  3 pair 의 별도 trigger
  Counterfactual: C, T1, T2 모두 evaluation per user
  Cost: 3x compute

2.2.2 Conservative Triggering

저자 강조: “In practice, it is sometimes easier to do a non-optimal but conservative triggering, such as including more users than is optimal.”

2.2.2.1 Multi-Treatment 의 conservative
Conservative:
  Triggered = {user | C, T1, T2 중 어느 두 variant 의 결과 다름}
  More inclusive
  Boolean: "이 user 의 variants 가 same?"

Implementation:
  Single boolean log per user
  Counterfactual: C, T1, T2 evaluation
  Cost: 3x compute (still)
  But trigger flag 만 single

For C vs T1 비교:
  Conservative trigger 가 zero-effect user 포함
  (Some users where C == T1 but C ≠ T2)
  Effect dilute 약간
  Sensitivity 손실 (small)
2.2.2.2 Trade-off
Optimal:
  + Maximum sensitivity per pair
  - Implementation 복잡 (3 pair 의 trigger)
  - Logging cost (per pair)

Conservative:
  + Single trigger flag
  - Slight sensitivity 손실
  - Implementation 간단

대부분 case:
  Conservative 의 sensitivity 손실 minimal
  Implementation 의 단순성 가치
  → Conservative 가 표준

2.2.3 Post-hoc Analysis

저자 명시.

2.2.3.1 시나리오 — Counterfactual Logging 실패
실험 진행 중:
  Counterfactual logging 의 implementation bug
  V1 의 일부 user 의 V2 inference 결과 누락
  → Optimal trigger condition 식별 불가

대안:
  Coarser trigger condition 사용
  예: "User-initiated checkout"
  → Optimal 의 superset
  → 일부 zero-effect user 포함
  → Sensitivity 손실 (slight)
2.2.3.2 Implementation
Conservative trigger (post-hoc):
  Trigger = {user | initiated checkout}

  Effect:
    90% non-checkout user 제외
    10% checkout user 분석 (vs 5% optimal)
    → Sensitivity 5/10 = 0.5x
    But still 10x naive

Vs naive:
  Naive: 100% user
  Conservative: 10% user
  Optimal: 5% user (만약 가능)

Sensitivity:
  Naive: 1x
  Conservative: ~5x (effect 가 dilute 안 함)
  Optimal: ~10x (small triggered set)

Conservative 의 ROI:
  Implementation simple
  Sensitivity 50% of optimal
  Naive 보다 5x better
  → 합리적 fallback

이 conservative 가 production fallback 의 표준.

2.3 Diluted Impact — Overall Treatment Effect

저자 명시 (Ch.20.7).

2.3.1 함정 — Naive Multiplication

저자 강조: “If you improved the revenue by 3% for 10% of users, did you improve your overall revenue by 10%×3% = 0.3%? NO!”

2.3.1.1 Issue
Naive computation:
  Triggered effect: +3%
  Trigger rate: 10%
  Overall: 3% × 10% = 0.3%

But this is wrong:
  Overall could be 0% to 3% (depending on triggered's contribution)
2.3.1.2 Why wrong
Triggered population 의 baseline 이 overall 과 다름:

Case 1: Triggered = 100% revenue (예: checkout users)
  Triggered 의 revenue contribution: 100%
  Triggered effect 3% → overall effect 3%

Case 2: Triggered = 10% revenue (low-value users)
  Triggered 의 revenue contribution: 10%
  Triggered effect 3% → overall effect 0.3%

Case 3: Triggered = 5% revenue (very low-value)
  Triggered 의 revenue contribution: 5%
  Triggered effect 3% → overall effect 0.15%

따라서 trigger rate × triggered effect 가 잘못.
실제 effect = (triggered's revenue share) × triggered effect

2.3.2 정확한 Formula

저자 명시 (Equation 20.3, 20.4).

2.3.2.1 Equation 20.3

\[\text{Diluted impact} = \frac{\Delta_\theta \cdot N_{\theta C}}{M_{\omega C} \cdot N_{\omega C}}\]

Where:
  Δ_θ = absolute effect on triggered (in metric units)
  N_{θC} = triggered Control 의 사용자 수
  M_{ωC} = overall Control 의 metric value
  N_{ωC} = overall Control 의 사용자 수

Numerator:
  Triggered population 의 absolute effect 의 합
  (Δ_θ × N_{θC})

Denominator:
  Overall population 의 metric 의 합
  (M_{ωC} × N_{ωC})
2.3.2.2 Equation 20.4 (equivalent)

\[\text{Diluted impact} = \frac{\Delta_\theta}{M_{\omega C}} \cdot \tau\]

Where:
  τ = N_{θC} / N_{ωC} = trigger rate

  같은 result, different formulation
  Equation 20.3 의 algebraic 변형
2.3.2.3 잘못된 Equation 20.5

저자 명시 잘못 (common mistake):

\[\text{Wrong} = \frac{\Delta_\theta}{M_{\theta C}} \cdot \tau\]

Issue:
  M_{θC} (triggered control 의 metric)
  M_{ωC} (overall control 의 metric)
  대신 나눔 → 다른 결과

Inaccuracy factor:
  M_{ωC} / M_{θC}

만약 triggered = high spender:
  M_{θC} > M_{ωC} (triggered 가 baseline 큼)
  Wrong 가 underestimate

만약 triggered = low spender:
  M_{θC} < M_{ωC}
  Wrong 가 overestimate

2.3.3 사례 — Sub-case

저자 명시.

2.3.3.1 Sub-case 1 — Checkout Change
변경: checkout 흐름 (10% trigger rate)

Triggered = checkout users
  - 100% of revenue (revenue = checkout 만)
  - Triggered's M_θC = $200
  - Overall M_ωC = $20 (대부분 user 의 conversion 0)

Triggered effect: +3% revenue
Δ_θ = $200 × 0.03 = $6

Wrong formula:
  (Δ_θ / M_θC) × τ
  = ($6 / $200) × 0.10
  = 0.03 × 0.10
  = 0.003 (0.3%)

Correct formula:
  (Δ_θ / M_ωC) × τ
  = ($6 / $20) × 0.10
  = 0.30 × 0.10
  = 0.03 (3%)

차이:
  Wrong: 0.3%
  Correct: 3%
  Factor: 10x

이 factor M_ωC/M_θC = $20/$200 = 0.10
  → Wrong 의 결과를 0.10 으로 곱하면 correct
  → 또는 Correct 가 Wrong 의 10x

진정 의미:
  Triggered (checkout users) 가 100% revenue 의 source
  → Triggered effect = overall effect (no dilution)
  → 3% triggered = 3% overall
2.3.3.2 Sub-case 2 — Low Spender Change
변경: 10% low-spender 의 promotion (10% trigger rate)

Triggered = low spenders
  - 10% of users
  - Spend 10% of average user (low-value)
  - Triggered's M_θC = $2 (10% of $20)
  - Overall M_ωC = $20

Triggered effect: +3% on triggered's spend
Δ_θ = $2 × 0.03 = $0.06

Wrong formula:
  ($0.06 / $2) × 0.10
  = 0.03 × 0.10
  = 0.003 (0.3%)

Correct formula:
  ($0.06 / $20) × 0.10
  = 0.003 × 0.10
  = 0.0003 (0.03%)

차이:
  Wrong: 0.3%
  Correct: 0.03%
  Factor: 10x

이 factor M_ωC/M_θC = $20/$2 = 10
  → Wrong 의 결과를 1/10 으로 곱해야 correct
  → 또는 Wrong 이 Correct 의 10x

진정 의미:
  Triggered (low spenders) 가 10% 사용자, 1% revenue 의 source
  → 3% triggered effect 가 overall 에서 0.03% 만 영향
  → Diluted dramatic

이 sub-case 가 함정의 본질. 같은 3% triggered effect 가 dramatically 다른 overall effect.

2.3.4 Ratio Metric 의 Dilution

저자 명시 (Ch.20.7, Deng and Hu 2015): “To dilute ratio metrics, more refined formulas need to be used.”

2.3.4.1 Why ratio?
Ratio metric:
  CTR = clicks / pageviews
  Conversion rate = conversions / visits

Triggered analysis:
  CTR_triggered = triggered_clicks / triggered_pageviews

Dilution to overall:
  CTR_overall ≠ simple multiplication
  Numerator 와 denominator 둘 다 dilute
2.3.4.2 Simpson’s Paradox 의 위험

저자 강조: “ratio metrics can cause Simpson’s paradox (see Chapter 3), where the ratio in the triggered population improves, but the diluted global impact regresses.”

2.3.4.3 시나리오
Triggered:
  CTR_T = 60% (triggered Treatment)
  CTR_C = 50% (triggered Control)
  Triggered effect: +20% relative

Non-triggered:
  CTR_nontriggered_T = 5%
  CTR_nontriggered_C = 5%
  No effect (zero by definition)

Overall:
  Need to combine triggered + non-triggered

Mix proportions:
  Trigger rate: 10%
  Non-trigger: 90%

Overall T:
  CTR = (10% × 60% + 90% × 5%) / 1
      = 6% + 4.5%
      = 10.5%
Overall C:
  CTR = (10% × 50% + 90% × 5%) / 1
      = 5% + 4.5%
      = 9.5%

Overall lift:
  (10.5% - 9.5%) / 9.5% = 10.5%
2.3.4.4 Paradox 의 발생
Triggered lift: +20%
Non-triggered lift: 0%
Overall lift: ~10.5%

→ Mix 의 결과가 sensible

But:
  사용자 행동의 다른 segment 별 differences:
    Triggered + Treatment: pageviews 변화
    Non-triggered + Treatment: pageviews 변화

  만약 segment 별 change 다름:
    Numerator·denominator 의 weight 다름
    Overall ratio 가 sub-segment 와 다른 방향

Simpson's paradox 발생:
  각 segment lift +
  Overall lift -
  (또는 vice versa)
2.3.4.5 정확한 ratio metric dilution

저자 인용 (Deng and Hu 2015): “more refined formulas need to be used.”

Ratio metric 의 정확한 dilution:
  Δ_X / Y = (Δ_X × N_X) / (Y_T × Y_C)
  Where Δ_X = absolute click change

  여러 components 의 weighted combination

  Implementation 복잡
  대부분 platform 의 자동

이 detail 이 modern A/B platform 의 statistical engine.

가정 — Diluted Impact 의 잘못된 보고

가정: 분석가 가 wrong formula 사용 → wrong dilution → 잘못된 launch 결정.

2.3.4.6 시나리오
실험: low-spender 10% 에 promotion
Triggered effect: +3% revenue on triggered

분석가 보고:
  "Triggered effect: +3%"
  "Trigger rate: 10%"
  "Diluted: 0.3%" (Wrong formula 사용)

PM 결정:
  "0.3% lift 면 launch 가치 있음"
  Launch 결정

Production 실측:
  Real impact: 0.03% (correct formula)
  10x less than reported
  ROI 실망
2.3.4.7 결과
Decision quality 위기:
  Lab: 0.3% lift expected
  Production: 0.03% 실제
  Reporting 잘못 → 잘못된 expectation

Why:
  Triggered = low spender (low-value contribution)
  Naive multiplication 이 contribution 무시

Correct decision:
  0.03% lift 가 launch 의 ROI 부족
  Reject 또는 redesign
2.3.4.8 해결
1. Platform 의 자동 diluted impact:
   - Wrong formula 의 차단
   - Correct formula 자동 적용

2. Multiple metric 표시:
   - Triggered effect: +3%
   - Diluted (correct): 0.03%
   - 둘 다 표시 → 의사결정자 의 정확한 input

3. Education:
   - Diluted 의 correct formula 학습
   - Common pitfall 인지

이 enforcement 가 modern platform 의 표준.

2.4 Pitfall 1 의 미리 보기

저자 명시 (Ch.20.9, Pitfall 1) — F-KOH20-4 에서 상세.

2.4.0.1 Tiny Segment 의 generalization
시나리오:
  Triggered = 0.1% of users
  Triggered effect: +5%
  Overall (diluted): 0.005% (negligible)

Decision:
  단순 launch ROI 부족
  But generalization 가능?

저자 사례 (MSN 의 Hotmail link):
  2008: Hotmail link → 새 tab open
    Triggered: hotmail click users (small segment)
    Effect: +8.9% engagement
    Generalization: 모든 link 의 새 tab 으로 확장

  2011: 모든 search result → 새 tab
    Larger segment
    Engagement: +5% on 12M users
    Massive ROI

이 generalization 의 사례가 tiny segment 의 가치 의 예외.

3 왜 필요한가

Numerical · Optimal/Conservative · Diluted impact 부재 시.

  • Sample size 결정 잘못 — 너무 길게 또는 너무 짧게 실험
  • Conservative 의 trade-off 무지 — Optimal 만 추구 → Implementation 복잡
  • Wrong diluted formula — 잘못된 launch 결정

활성 시.

  • Trigger rate 의 정량 ROI
  • Optimal vs conservative 의 합리적 결정
  • Trustworthy diluted impact

이 정량 framework 이 platform 의 statistical maturity.

4 응용 사례 — 실험 platform 의 자동 dilution

Modern platform 의 자동:

Per-experiment scorecard:
  - Triggered effect (Δ_θ)
  - Trigger rate (τ)
  - Triggered effect % (Δ_θ / M_θC)
  - Diluted effect % (Δ_θ / M_ωC × τ)  ← Correct formula
  - Wrong dilution (intentionally absent)

Why both:
  - Triggered effect: feature 자체 의 ROI
  - Diluted effect: business 의 overall impact

Decision:
  Launch 결정은 diluted impact 기반
  Feature 의 quality 평가는 triggered effect
  둘 다 필요한 input

이 자동 reporting 이 mature platform 의 표준.

5 코드 예시 — Sample Size Calculator

Naive vs triggered 의 정량 비교.

import numpy as np
import pandas as pd

def sample_size_for_proportion(p, mde_relative, alpha=0.05, power=0.80):
    """
    Bernoulli metric 의 required sample size per variant.

    p: baseline proportion
    mde_relative: minimum detectable relative effect
    """
    sigma_squared = p * (1 - p)
    delta_absolute = p * mde_relative
    n = 16 * sigma_squared / delta_absolute**2
    return int(np.ceil(n))

# 비교 매트릭스
print("=== Sample Size Comparison Matrix ===\n")
print(f"{'Trigger Rate':>12} {'Triggered p':>14} {'n_triggered':>15} {'n_total':>12} {'Naive n':>12} {'Savings':>10}")
print("-" * 90)

# Naive baseline
p_naive = 0.05
n_naive_per_variant = sample_size_for_proportion(p_naive, mde_relative=0.05)

# Triggered scenarios
scenarios = [
    {"trigger_rate": 0.50, "p_triggered": 0.10},  # large trigger, low p
    {"trigger_rate": 0.30, "p_triggered": 0.17},
    {"trigger_rate": 0.10, "p_triggered": 0.50},  # 저자 example
    {"trigger_rate": 0.05, "p_triggered": 1.00},  # all-or-nothing
    {"trigger_rate": 0.01, "p_triggered": 0.50},
    {"trigger_rate": 0.001, "p_triggered": 0.50},  # very rare trigger
]

for s in scenarios:
    n_triggered = sample_size_for_proportion(s["p_triggered"], mde_relative=0.05)
    n_total_per_variant = int(np.ceil(n_triggered / s["trigger_rate"]))

    savings = (n_naive_per_variant - n_total_per_variant) / n_naive_per_variant * 100

    print(f"{s['trigger_rate']:>12.3f} {s['p_triggered']:>14.2f} {n_triggered:>15,} "
          f"{n_total_per_variant:>12,} {n_naive_per_variant:>12,} {savings:>9.1f}%")

# Diluted impact 계산
print("\n=== Diluted Impact Comparison ===\n")
print("Scenario: triggered effect +3%, trigger rate 10%, M_ω = $20\n")

scenarios_dilution = [
    {"name": "Triggered = checkout (high value)", "M_theta": 200},
    {"name": "Triggered = average users", "M_theta": 20},
    {"name": "Triggered = low spenders", "M_theta": 2},
]

triggered_effect = 0.03
trigger_rate = 0.10
M_omega = 20

for s in scenarios_dilution:
    delta_theta = s["M_theta"] * triggered_effect

    # Wrong formula
    wrong = (delta_theta / s["M_theta"]) * trigger_rate

    # Correct formula
    correct = (delta_theta / M_omega) * trigger_rate

    # Factor
    factor = M_omega / s["M_theta"]

    print(f"{s['name']}:")
    print(f"  M_θC = ${s['M_theta']}, Δ_θ = ${delta_theta:.2f}")
    print(f"  Wrong: {wrong*100:.3f}%")
    print(f"  Correct: {correct*100:.3f}%")
    print(f"  Factor: {factor:.2f}")
    print(f"  Difference: {(correct - wrong) / max(wrong, 1e-9) * 100:+.0f}%\n")
직관 — 시뮬레이션의 메시지
5.0.0.1 Sample Size 의 dramatic 차이
Trigger rate 0.001 (매우 rare):
  Naive: 121,600 users
  Triggered total: 64,000 users (47% savings)

  단 trigger rate 0.001 면 entry user 가 64M (현실 문제)
5.0.0.2 Diluted Impact 의 critical 차이
같은 3% triggered effect:
  High value (M_θC=$200): correct = 0.30%, wrong = 0.30% (일치)
  Low value (M_θC=$2): correct = 0.003%, wrong = 0.30% (100x 차이)

→ Triggered = low spender 일 때 wrong formula 가 100x over-estimate
5.0.0.3 산업 표준 enforcement
Modern platform:
  - Wrong formula 자체 implement 안 함
  - Correct formula 만 자동 적용
  - Triggered + diluted 둘 다 표시

이 enforcement 가 잘못된 의사결정의 차단.

6 관련 주제

선행

다음 글

관련 챕터

다른 카테고리 연결

Subscribe

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