Собесов

Сценарий A/B: α-spending функции Pocock и O'Brien-Fleming

A/B-тестыSequential testingСложнаяSenior

Условие

Опишите α-spending функции Pocock и O'Brien-Fleming. Когда какую использовать?

Решение

Подход

Запланировано K interim looks в моменты t_k = k/K (информационная доля). На каждом looke тратим часть α:

  • Pocock: α(t) = α · ln(1 + (e−1)·t) ≈ равномерно. Порог на каждый look один и тот же z_P.
  • O'Brien-Fleming: α(t) = 2·(1 − Φ(z_{α/2}/√t)). Очень строгие пороги в начале, послабляющиеся к концу. Финальный порог почти как fixed-horizon.

Реализация

import numpy as np
from scipy.stats import norm
 
def pocock_threshold(K, alpha=0.05):
    """Один порог для всех K looks (упрощённо, через симуляцию)."""
    # Из таблиц: для K=5, alpha=0.05 двусторонний: z_P ≈ 2.413
    table = {1: 1.960, 2: 2.178, 3: 2.289, 4: 2.361, 5: 2.413,
             10: 2.555, 20: 2.672}
    return table.get(K, None)
 
def obrien_fleming_thresholds(K, alpha=0.05):
    """Пороги O'Brien-Fleming для K interim looks."""
    # z_k = z_OBF / √(k/K)
    obf_z = {1: 1.960, 2: 1.977, 3: 1.987, 4: 1.992, 5: 1.994}
    z_obf = obf_z.get(K, 2.0)
    return [z_obf * np.sqrt(K/k) for k in range(1, K+1)]
 
print("Pocock K=5:", pocock_threshold(5))  # 2.413 на каждом look
print("OBF K=5:", obrien_fleming_thresholds(5))
# [4.46, 3.15, 2.57, 2.23, 1.99] — почти fixed-horizon в конце

Когда что

  • Pocock: хочется быстро отлавливать сильные ранние эффекты. Платим N в финале (final порог ≈ 2.4 вместо 1.96, мощность падает).
  • O'Brien-Fleming: основная решающая точка в конце, ранние looks только для очень больших эффектов. Final почти не теряет мощности vs fixed-horizon.

Lan-DeMets

Обобщение: если фактические информационные доли отличаются от плана, спендим α через monotone функцию α*(t). Стандартно используется в clinical trials.

Подводные камни

  1. Заранее планируйте K и моменты looks. Ad-hoc «давайте посмотрим раньше» — нарушение α-spending.
  2. После отвергнутой H0 на interim — стоп тест. Не «давайте посмотрим, что будет в финале».
  3. CI на interim тоже корректируется (repeated CI), не обычный 95%.
  4. Для O'Brien-Fleming на первом look нужен z=4+, это эффект 4σ — почти никогда не срабатывает в реальных экспериментах. Это фича, не баг.

Эталонный ответ

Pocock: равномерные пороги ~2.4 на каждый look, мощно ловит ранние эффекты, теряет мощность в финале. O'Brien-Fleming: строгие пороги в начале, финал почти как fixed-horizon. OBF — стандарт когда главное — финальное решение; Pocock — когда важна ранняя остановка.

Хочешь увидеть разбор?

Зарегистрируйся бесплатно — откроется развёрнутое решение этой задачи и ещё 4 на выбор.

Зарегистрироваться и увидеть разбор
Уже есть аккаунт? Войти