Документация Post Analysis Toolkit
Установка
В ноутбуке или Python-скрипте
%pip install post-analysis-toolkit
Один раз на персональном Databricks-кластере
В настройках кластера откройте Libraries, добавьте библиотеку из PyPI с именем post-analysis-toolkit и установите её. После запуска кластера пакет будет доступен во всех его ноутбуках и Python-задачах.
Объекты результатов
PanelConfig
Вспомогательный dataclass с именами колонок.
outcome_col, time_col, unit_col, treated_col, post_col, cluster_col, weight_col
InterventionConfig
Вспомогательный dataclass для окна интервенции и treated-сущностей.
intervention_time, treated_unit, treated_units, donor_units, pre_period, post_period
MethodResult
method, summary, details, figures, metadata
DiagnosticResult
method, checks, details, figures, metadata
Как связаны функции и result-объекты
| Тип функции | Что делает | Что возвращает | Главные поля |
check_*_assumptions(...) | Проверяет предпосылки применения метода. | DiagnosticResult | checks, details, figures, metadata |
fit_*(...) | Считает основной эффект метода. | MethodResult | summary, details, figures, metadata |
run_*_robustness(...) | Проверяет устойчивость результата. | MethodResult | summary, details, figures, metadata |
Практическое правило:
- Если функция начинается с
check_, почти всегда сначала смотри diag.checks.
- Если функция начинается с
fit_, почти всегда сначала смотри result.summary.
- Если функция начинается с
run_ и заканчивается на _robustness, сначала смотри robust.summary, потом уже детальные таблицы и графики.
Типовой паттерн использования
diag = check_did_assumptions(...)
display(diag.checks)
result = fit_did_regression(...)
display(result.summary)
display(result.details["coefficients"])
robust = run_did_robustness(...)
display(robust.summary)
Общие соглашения по данным
time_col должен корректно парситься через pandas.to_datetime.
- Бинарные флаги ожидаются в формате
0/1.
- Outcome и covariates должны быть числовыми.
- Для
PSM и Doubly Robust категориальные covariates нужно заранее закодировать.
- Графики, которые возвращает пакет, это
matplotlib figures.
Расшифровка output-таблиц
После вызова fit_* основные результаты находятся в result.summary. Набор колонок зависит от метода, а MDE-поля имеют общий смысл.
| Колонки | Расшифровка |
mde_absolute, mde_relative, mde_cumulative | Абсолютный, относительный и cumulative MDE. |
mde_type, mde_mode_resolved, mde_simulation_kind | Фактический тип и режим расчёта MDE. |
mde_alpha, mde_power, mde_n_simulations | Параметры расчёта MDE; для аналитического режима симуляции не используются. |
proxy_mde_* | Ориентировочный proxy-MDE; заполнен только при mde_mode="proxy". |
Ключевые поля по методам
| Метод | Основные колонки summary | Что означают |
| DiD | treated_pre/post, control_pre/post, estimate, relative_effect_vs_treated_pre, std_error | Средние до/после по группам, DiD-эффект, относительный эффект и стандартная ошибка. |
| Event Study | event_bin, period_type, estimate, std_error, ci_low/high | Эффект и интервал для каждого event-time бина. |
| DDD | formula, estimate, std_error, p_value, ci_low/high | Тройная interaction-оценка, её неопределённость и доверительный интервал. |
| Synthetic Control | pre_rmse, pre_r2, pre_corr, avg_post_effect | Качество pre-fit и средний post-period gap. |
| Causal Impact | average_actual/predicted_post, average_abs/rel_effect, posterior_tail_area, validation_r2/rmse/wape | Фактический и контрфактический post-period, эффект, posterior-значимость и качество validation. |
| ITS | avg_actual/counterfactual_post, avg_abs/rel_effect, level_change_coef, slope_change_coef_per_day | Post-period effect, скачок уровня и изменение наклона. |
| RDD | cutoff, bandwidth, estimate, std_error, p_value | Спецификация вокруг cutoff и discontinuity-эффект. |
| PSM | estimate, treated_mean, matched_control_mean, propensity_auc, matched_pairs_n | ATT, средние после matching, качество propensity-модели и размер matching. |
| Doubly Robust | estimate, std_error, propensity_auc, model_family, max_ipw_weight | DR-оценка, неопределённость, качество propensity и диагностика весов. |
MDE и чувствительность
Стандартные настройки
По умолчанию используются alpha=0.05, power=0.80 и двусторонний тест alternative="two-sided". Если метрика и дизайн допускают аналитическую оценку, базовый ориентир — t-test через корректную стандартную ошибку.
MDE относится к конкретному estimand. В результате нужно отдельно показывать абсолютный, относительный и cumulative MDE.
| Форма | Смысл | Как читать |
| absolute | Разница в единицах outcome | Например, +12 заказов в день |
| relative | MDE_abs / baseline | Минимальный процентный lift относительно явно указанного baseline |
| cumulative | Эффект за весь post-period | Сумма или другая заранее определенная агрегация |
Где смотреть MDE
MDE находится в result.summary соответствующей fit_*-функции.
| Объект | Основные поля | Статус текущей версии |
Все fit_* | mde_absolute, mde_relative, mde_cumulative, mde_type, mde_simulation_kind, mde_mode_resolved | Основной MDE; по умолчанию auto |
Все fit_* | details["mde_power_curve"] | Мощность по сетке абсолютных эффектов |
Все fit_* | metadata["mde_mode"], metadata["mde_random_state"] | Настройки расчета |
Все fit_* | proxy_mde_* | Заполнены только при mde_mode="proxy" |
Поля с префиксом proxy_mde — это быстрый screening, а не строгий MDE конкретного сложного дизайна.
Режимы MDE
| Режим | Что делает | Когда использовать |
auto | Если есть корректная стандартная ошибка, выбирает analytic; иначе — parametric. | Режим по умолчанию. |
analytic | Считает MDE по стандартной ошибке без генерации данных и повторных запусков модели. | Быстрый расчёт для метода с аналитической SE. |
parametric | Генерирует случайные оценки вокруг кандидатных эффектов с шумом, соответствующим SE, и строит power curve. | Рабочий приближённый расчёт. |
resampling | Создаёт псевдоданные, ресэмплирует остатки, переоценивает модель и строит power curve. | Финальный расчёт сложных методов; медленнее. |
proxy | Оценивает MDE по уровню шума без полноценной симуляции мощности. | Быстрый screening, не основной вывод. |
Как именно выполняются текущие симуляции
Для каждой точки сетки абсолютных эффектов delta пакет генерирует n_simulations оценок по схеме:
simulated_estimate = delta + Normal(0, uncertainty_scale)
uncertainty_scale равен SE для DiD, Event Study, DDD, RDD, PSM и Doubly Robust. Для Event Study это стандартная ошибка конкретного коэффициента конкретного временного бина, поэтому MDE строится отдельно для каждого бина. Для Synthetic Control, Causal Impact и ITS он строится из ошибки префита: pre-fit RMSE / sqrt(n_post) или validation RMSE / sqrt(n_post).
Для каждого delta считается доля симуляций, где нулевая гипотеза отвергнута. Это estimated power. В таблице есть и effect_relative — эффект относительно baseline. Например, effect_absolute=2000, effect_relative=0.02, estimated_power=0.81 означает мощность около 81% при эффекте 2% от baseline. Таблица power curve доступна в result.details["mde_power_curve"], а минимальный delta, достигший целевой мощности, записывается в result.summary["mde_absolute"].
Ошибка прогноза: RMSE остаётся основной метрикой ошибки и noise scale для MDE. Для интерпретации используется относительный RMSE: RMSE, делённый на средний уровень метрики в предпериоде.
Параметрический режим не создает новые строки исходного датафрейма и не переобучает полный pipeline на каждом повторе. Поэтому не выполняются повторный подбор доноров, matching, оптимизация весов Synthetic Control, state-space fit Causal Impact или полный пересчет ITS. Это быстрый MDE на основе параметрической симуляции.
Режим mde_mode="resampling" создает псевдоданные вокруг fitted/counterfactual значений без эффекта, ресэмплирует центрированные остатки, добавляет кандидатный эффект и заново запускает оцениватель. Для нестандартного pipeline можно передать mde_simulator с сигнатурой (effect, rng, n_simulations) -> array[estimate].
Для воспроизводимости используется random_state; для собственной сетки эффектов — mde_effect_grid.
Для параметрического и resampling-режимов число повторов задается параметром n_simulations: 500 для отладки, 2000 для рабочего расчета и 5000+ для финального отчета. В результатах нужно сохранять alpha, power, alternative, n_simulations, random_state, power curve и три формы MDE.
| Параметр | Тип / значения | Описание |
mde_mode | str: auto, analytic, parametric, resampling, proxy | Режим расчета MDE; default — auto. |
alpha | float от 0 до 1 | Уровень ошибки первого рода; default — 0.05. |
power | float от 0 до 1 | Целевая мощность; default — 0.80. |
alternative | str: two-sided, greater, less | Направление теста; default — two-sided. |
n_simulations | int > 0 | Число повторов в параметрическом или resampling-режиме; default — 2000. |
random_state | int или None | Seed генератора случайных чисел. |
mde_effect_grid | iterable чисел или None | Пользовательская сетка абсолютных эффектов. |
mde_simulator | callable или None | Пользовательская функция resampling-режима; принимает effect, генератор rng и число повторов, возвращает массив оценок. |
Difference-in-Differences (DiD)
Формат данных для функции
| sale_date | unit | metric | treated_flag | post_flag |
| 2026-02-10 | Batumi | 0.084 | 1 | 0 |
| 2026-02-10 | Tbilisi | 0.121 | 0 | 0 |
| 2026-02-25 | Batumi | 0.116 | 1 | 1 |
compute_classic_did(...)
compute_classic_did(
df, outcome_col, treated_col, post_col,
weight_col=None, label="classic_did",
mde_mode="auto", alpha=0.05, power=0.80,
alternative="two-sided", n_simulations=2000,
random_state=None, mde_effect_grid=None,
mde_simulator=None,
)
| Параметр | Тип / значения | Обязателен | Описание |
| df | pd.DataFrame | да | Датафрейм с наблюдениями treated/control и pre/post. |
| outcome_col | str | да | Имя числовой колонки с целевой метрикой. |
| treated_col | str | да | Имя бинарной колонки `0/1`, где `1` означает treated-группу. |
| post_col | str | да | Имя бинарной колонки `0/1`, где `1` означает post-период. |
| weight_col | str или None | нет | Необязательная колонка весов для расчета взвешенных средних. |
| label | str | нет | Техническая подпись метода в выходном объекте. |
Возвращает summary с 2x2 cell means и эффектом, а также details["cell_means"].
Параметры MDE
| Параметр | Тип / значения | Описание |
mde_mode | auto, analytic, parametric, resampling, proxy | Режим расчета MDE; по умолчанию auto. |
alpha | float от 0 до 1 | Уровень ошибки первого рода; по умолчанию 0.05. |
power | float от 0 до 1 | Целевая мощность; по умолчанию 0.80. |
alternative | two-sided, greater, less | Направление теста; по умолчанию two-sided. |
n_simulations | int > 0 | Число повторов; по умолчанию 2000. |
random_state | int или None | Seed генератора случайных чисел. |
mde_effect_grid | iterable чисел или None | Явная сетка абсолютных эффектов. |
mde_simulator | callable или None | Свой симулятор для resampling-режима. |
fit_did_regression(...)
fit_did_regression(
df, outcome_col, time_col, treated_col, post_col,
covariates=None, cluster_col=None, unit_col=None,
twfe=False, log_transform=False, relative=False,
weight_col=None, label="did_regression",
mde_mode="auto", alpha=0.05, power=0.80,
alternative="two-sided", n_simulations=2000,
random_state=None, mde_effect_grid=None,
mde_simulator=None,
)
| Параметр | Тип / значения | Обязателен | Описание |
| df | pd.DataFrame | да | Панельный датафрейм с treated/control наблюдениями. |
| outcome_col | str | да | Имя outcome-колонки. |
| time_col | str | да | Имя временной колонки. |
| treated_col | str | да | Имя бинарного treated-флага. |
| post_col | str | да | Имя бинарного post-флага. |
| covariates | list[str] или None | нет | Список дополнительных регрессоров. |
| cluster_col | str или None | нет | Колонка уровня кластеризации ошибок. |
| unit_col | str или None | нет | Идентификатор unit. Обязателен для `twfe=True` и обычно нужен для `relative=True`. |
| twfe | bool | нет | Если `True`, модель добавляет unit fixed effects и time fixed effects. |
| log_transform | bool | нет | Если `True`, outcome преобразуется через `log` или `log1p`. |
| relative | bool | нет | Если `True`, outcome индексируется на среднее предпериода внутри unit. |
| weight_col | str или None | нет | Колонка весов для `WLS`. |
| label | str | нет | Техническая подпись метода в выходном объекте. |
Возвращает summary по эффекту, коэффициенты и analysis frame.
Параметры MDE
| Параметр | Тип / значения | Описание |
mde_mode | auto, analytic, parametric, resampling, proxy | Режим расчета MDE; по умолчанию auto. |
alpha | float от 0 до 1 | Уровень ошибки первого рода; по умолчанию 0.05. |
power | float от 0 до 1 | Целевая мощность; по умолчанию 0.80. |
alternative | two-sided, greater, less | Направление теста; по умолчанию two-sided. |
n_simulations | int > 0 | Число повторов; по умолчанию 2000. |
random_state | int или None | Seed генератора случайных чисел. |
mde_effect_grid | iterable чисел или None | Явная сетка абсолютных эффектов. |
mde_simulator | callable или None | Свой симулятор для resampling-режима. |
check_did_assumptions(...)
fpr_placebo_count задаёт число placebo-прогонов для эмпирической FPR; по умолчанию 20.
check_did_assumptions(
df, outcome_col, time_col, treated_col, post_col,
intervention_time, unit_col=None, cluster_col=None,
event_bin_size=7, label="did_assumptions",
)
| Параметр | Тип / значения | Обязателен | Описание |
| df | pd.DataFrame | да | Панельный датафрейм. |
| outcome_col | str | да | Колонка outcome. |
| time_col | str | да | Временная колонка. |
| treated_col | str | да | Бинарный флаг treated-группы. |
| post_col | str | да | Бинарный флаг post-периода. |
| intervention_time | дата / str / pd.Timestamp | да | Дата старта интервенции. |
| unit_col | str или None | нет | Идентификатор unit; полезен для event study на unit-level panel. |
| cluster_col | str или None | нет | Уровень кластеризации SE в pre-trend regression и event study. |
| event_bin_size | int | нет | Размер временного бина для event study в днях. |
| label | str | нет | Техническая подпись диагностического прогона. |
Что проверяет: визуальную форму предпериода, разницу наклонов и корреляцию на предпериоде, joint-test лидов через event study, стабильность состава и явные параллельные изменения.
Возвращает локализованные проверки, event-study таблицы и диагностические графики.
run_did_robustness(...)
run_did_robustness(
df, outcome_col, time_col, treated_col, post_col,
intervention_time=None, unit_col=None, cluster_col=None,
twfe_options=(False, True), log_options=(False, True),
relative_options=(False, True), placebo_offsets_days=(28, 21, 14),
pre_period_days_options=(None, 28, 56, 84),
)
| Параметр | Тип / значения | Обязателен | Описание |
| df | pd.DataFrame | да | Панельный датафрейм. |
| outcome_col | str | да | Имя outcome-колонки. |
| time_col | str | да | Имя временной колонки. |
| treated_col | str | да | Имя treated-флага. |
| post_col | str | да | Имя post-флага. |
| intervention_time | дата / str / pd.Timestamp / None | нет | Дата интервенции для placebo-прогонов на предпериоде. |
| unit_col | str или None | нет | Идентификатор unit; нужен для части спецификаций. |
| cluster_col | str или None | нет | Уровень кластеризации ошибок. |
| twfe_options | tuple[bool, ...] или list[bool] | нет | Набор значений `twfe` для перебора. |
| log_options | tuple[bool, ...] или list[bool] | нет | Набор значений `log_transform` для перебора. |
| relative_options | tuple[bool, ...] или list[bool] | нет | Набор значений `relative` для перебора. |
| placebo_offsets_days | tuple[int, ...] или list[int] | нет | Сдвиги назад в днях для A/A placebo-прогонов. |
| pre_period_days_options | iterable[int или None] | нет | Окна предпериода для sensitivity-проверки. |
Как проверяет устойчивость: перебирает спецификации twfe / log / relative, сравнивает эффект между ними и делает placebo-прогоны на предпериоде с псевдо-датами интервенции.
Event Study
Формат данных для функции
Event Study — самостоятельная регрессионная оценка динамики эффекта. Она возвращает отдельную оценку для каждого временного бина относительно пропущенного эталонного бина, а не один суммарный коэффициент за весь постпериод.
| sale_date | unit | outcome | treated_flag |
| 2026-02-10 | Batumi | 120 | 1 |
| 2026-02-10 | Tbilisi | 240 | 0 |
| 2026-02-25 | Batumi | 155 | 1 |
fit_event_study(...)
fit_event_study(
df, outcome_col, time_col, treated_col, intervention_time,
unit_col=None, cluster_col=None, event_bin_size=7, reference_bin=-1,
covariates=None, label="event_study", mde_mode="auto",
alpha=0.05, power=0.80, alternative="two-sided",
n_simulations=2000, random_state=None, mde_effect_grid=None,
mde_simulator=None,
)
| Параметр | Тип / значения | Обязателен | Описание |
| df | pd.DataFrame | да | Панель с outcome, временем и treated-флагом. |
| outcome_col | str | да | Числовая целевая метрика. |
| time_col | str | да | Временная колонка. |
| treated_col | str | да | Бинарный флаг treated-группы. |
| intervention_time | дата / str / pd.Timestamp | да | Момент начала вмешательства. |
| unit_col | str или None | нет | Идентификатор юнита; добавляет фиксированные эффекты юнитов. |
| cluster_col | str или None | нет | Колонка для кластеризации стандартных ошибок. |
| event_bin_size | int | нет | Размер бина в днях; по умолчанию 7. |
| reference_bin | int | нет | Эталонный пропущенный бин; по умолчанию -1. |
| covariates | list[str] или None | нет | Дополнительные числовые регрессоры. |
| label | str | нет | Техническая подпись результата. |
Параметры MDE
| Параметр | Тип / значения | Описание |
mde_mode | auto, analytic, parametric, resampling, proxy | Режим MDE для каждого event-бина; по умолчанию auto. |
alpha | float от 0 до 1 | Уровень ошибки первого рода; по умолчанию 0.05. |
power | float от 0 до 1 | Целевая мощность; по умолчанию 0.80. |
alternative | two-sided, greater, less | Направление теста; по умолчанию two-sided. |
n_simulations | int > 0 | Число повторов; по умолчанию 2000. |
random_state | int или None | Seed генератора случайных чисел. |
mde_effect_grid | iterable чисел или None | Явная сетка абсолютных эффектов. |
mde_simulator | callable или None | Свой симулятор для resampling-режима. |
В summary одна строка соответствует одному event-бину и содержит эффект, доверительный интервал, p-value и MDE. В details["event_study_summary"] лежит общий joint-тест лидов, а в figures["event_study"] — график коэффициентов.
check_event_study_assumptions(...) и run_event_study_robustness(...)
check_event_study_assumptions проверяет reference-бин, число pre/post-бинов, joint-тест pre-period коэффициентов и максимальный абсолютный pre-period коэффициент. run_event_study_robustness повторяет оценку для разных размеров event-бина, reference-бинов и окон предпериода. Результаты sensitivity лежат в robust.summary и robust.details["sensitivity"].
Triple Difference (DDD)
Формат данных для функции
| sale_date | unit | treated_flag | post_flag | subgroup_flag | outcome |
| 2026-02-10 | Batumi | 1 | 0 | 0 | 0.071 |
| 2026-02-10 | Batumi | 1 | 0 | 1 | 0.083 |
| 2026-02-10 | Tbilisi | 0 | 0 | 0 | 0.069 |
fit_triple_difference(...)
fit_triple_difference(
df, outcome_col, time_col, treated_col, post_col, subgroup_col,
covariates=None, cluster_col=None, unit_col=None,
twfe=False, log_transform=False, relative=False,
label="triple_difference",
mde_mode="auto", alpha=0.05, power=0.80,
alternative="two-sided", n_simulations=2000,
random_state=None, mde_effect_grid=None,
mde_simulator=None,
)
| Параметр | Тип / значения | Обязателен | Описание |
| df | pd.DataFrame | да | Панель `unit x time x subgroup`. |
| outcome_col | str | да | Имя outcome-колонки. |
| time_col | str | да | Временная колонка. |
| treated_col | str | да | Флаг treated-группы. |
| post_col | str | да | Флаг post-периода. |
| subgroup_col | str | да | Бинарная колонка подгруппы, где `1` означает affected subgroup. |
| covariates | list[str] или None | нет | Дополнительные регрессоры. |
| cluster_col | str или None | нет | Уровень кластеризации ошибок. |
| unit_col | str или None | нет | Идентификатор unit. Обязателен для `twfe=True` и обычно нужен для `relative=True`. |
| twfe | bool | нет | Добавлять unit FE и time FE. |
| log_transform | bool | нет | Логарифмировать outcome. |
| relative | bool | нет | Индексировать outcome по baseline внутри `unit x subgroup`. |
| label | str | нет | Техническая подпись метода в output. |
Параметры MDE
| Параметр | Тип / значения | Описание |
mde_mode | auto, analytic, parametric, resampling, proxy | Режим расчета MDE; по умолчанию auto. |
alpha | float от 0 до 1 | Уровень ошибки первого рода; по умолчанию 0.05. |
power | float от 0 до 1 | Целевая мощность; по умолчанию 0.80. |
alternative | two-sided, greater, less | Направление теста; по умолчанию two-sided. |
n_simulations | int > 0 | Число повторов; по умолчанию 2000. |
random_state | int или None | Seed генератора случайных чисел. |
mde_effect_grid | iterable чисел или None | Явная сетка абсолютных эффектов. |
mde_simulator | callable или None | Свой симулятор для resampling-режима. |
check_triple_difference_assumptions(...)
check_triple_difference_assumptions(
df, outcome_col, time_col, treated_col, post_col, subgroup_col,
intervention_time, unit_col, cluster_col=None,
event_bin_size=7, label="triple_difference_assumptions",
)
| Параметр | Тип / значения | Обязателен | Описание |
| df | pd.DataFrame | да | Панель `unit x time x subgroup`. |
| outcome_col | str | да | Имя outcome-колонки. |
| time_col | str | да | Временная колонка. |
| treated_col | str | да | Флаг treated-группы. |
| post_col | str | да | Флаг post-периода. |
| subgroup_col | str | да | Флаг подгруппы. |
| intervention_time | дата / str / pd.Timestamp | да | Дата старта интервенции. |
| unit_col | str | да | Идентификатор unit; нужен для построения subgroup-gap panel. |
| cluster_col | str или None | нет | Уровень кластеризации ошибок. |
| event_bin_size | int | нет | Размер event-study бина в днях. |
| label | str | нет | Техническая подпись диагностического прогона. |
Что проверяет: полноту ячеек subgroup внутри unit x time, тренды subgroup gap на предпериоде, event-study лиды для этого gap, стабильность состава и параллельные изменения.
run_triple_difference_robustness(...)
run_triple_difference_robustness(
df, outcome_col, time_col, treated_col, post_col, subgroup_col,
intervention_time=None, unit_col=None, cluster_col=None,
twfe_options=(False, True), log_options=(False, True),
relative_options=(False, True), placebo_offsets_days=(28, 21, 14),
pre_period_days_options=(None, 28, 56, 84),
)
| Параметр | Тип / значения | Обязателен | Описание |
| df | pd.DataFrame | да | Панель `unit x time x subgroup`. |
| outcome_col | str | да | Имя outcome-колонки. |
| time_col | str | да | Временная колонка. |
| treated_col | str | да | Флаг treated-группы. |
| post_col | str | да | Флаг post-периода. |
| subgroup_col | str | да | Флаг подгруппы. |
| intervention_time | дата / str / pd.Timestamp или None | нет | Дата интервенции для placebo-прогонов. |
| unit_col | str или None | нет | Идентификатор unit; нужен для части спецификаций. |
| cluster_col | str или None | нет | Уровень кластеризации ошибок. |
| twfe_options | tuple[bool, ...] или list[bool] | нет | Набор значений `twfe` для перебора. |
| log_options | tuple[bool, ...] или list[bool] | нет | Набор значений `log_transform` для перебора. |
| relative_options | tuple[bool, ...] или list[bool] | нет | Набор значений `relative` для перебора. |
| placebo_offsets_days | tuple[int, ...] или list[int] | нет | Сдвиги назад в днях для placebo-прогонов. |
| pre_period_days_options | iterable[int или None] | нет | Окна предпериода для sensitivity-проверки. |
Как проверяет устойчивость: перебирает DDD-спецификации twfe / log / relative, сравнивает стабильность тройного коэффициента и делает placebo-прогоны на предпериоде.
Synthetic Control
Формат данных для функции
| sale_date | unit | metric |
| 2026-02-10 | Batumi | 0.084 |
| 2026-02-10 | Tbilisi | 0.121 |
| 2026-02-10 | Kutaisi | 0.097 |
fit_synthetic_control(...)
fit_synthetic_control(
df, outcome_col, unit_col, time_col, treated_unit, intervention_time,
donor_units=None, max_controls=10, nonnegative_weights=True,
label="synthetic_control",
mde_mode="auto", alpha=0.05, power=0.80,
alternative="two-sided", n_simulations=2000,
random_state=None, mde_effect_grid=None,
mde_simulator=None,
)
| Параметр | Тип / значения | Обязателен | Описание |
| df | pd.DataFrame | да | Long-panel формата `unit x time`. |
| outcome_col | str | да | Имя outcome-колонки. |
| unit_col | str | да | Колонка идентификатора unit. |
| time_col | str | да | Временная колонка. |
| treated_unit | str | да | Название treated unit. |
| intervention_time | дата / str / pd.Timestamp | да | Дата старта интервенции. |
| donor_units | list[str] или None | нет | Необязательный whitelist доноров. |
| max_controls | int | нет | Максимум доноров после ранжирования. |
| nonnegative_weights | bool | нет | Если `True`, веса ограничиваются неотрицательностью. |
| label | str | нет | Техническая подпись метода в output. |
Возвращает summary, веса, выровненные ряды и два графика: actual/counterfactual и gap.
Параметры MDE
| Параметр | Тип / значения | Описание |
mde_mode | auto, analytic, parametric, resampling, proxy | Режим расчета MDE; по умолчанию auto. |
alpha | float от 0 до 1 | Уровень ошибки первого рода; по умолчанию 0.05. |
power | float от 0 до 1 | Целевая мощность; по умолчанию 0.80. |
alternative | two-sided, greater, less | Направление теста; по умолчанию two-sided. |
n_simulations | int > 0 | Число повторов; по умолчанию 2000. |
random_state | int или None | Seed генератора случайных чисел. |
mde_effect_grid | iterable чисел или None | Явная сетка абсолютных эффектов. |
mde_simulator | callable или None | Свой симулятор для resampling-режима. |
check_synthetic_control_assumptions(...)
check_synthetic_control_assumptions(
df, outcome_col, unit_col, time_col, treated_unit,
intervention_time, donor_units=None, max_controls=10,
pre_period_days_options=(None, 28, 56, 84),
)
| Параметр | Тип / значения | Обязателен | Описание |
| df | pd.DataFrame | да | Панель `unit x time`. |
| outcome_col | str | да | Имя outcome-колонки. |
| unit_col | str | да | Идентификатор unit. |
| time_col | str | да | Временная колонка. |
| treated_unit | str | да | Название treated unit. |
| intervention_time | дата / str / pd.Timestamp | да | Дата интервенции. |
| donor_units | list[str] или None | нет | Необязательный whitelist доноров. |
| max_controls | int | нет | Максимум доноров после ранжирования. |
| pre_period_days_options | iterable[int или None] | нет | Окна предпериода для sensitivity-проверки. |
Что проверяет: размер и чистоту donor pool, качество pre-fit synthetic ряда и риск загрязнения donor pool treated-изменениями.
run_synthetic_control_robustness(...)
run_synthetic_control_robustness(
df, outcome_col, unit_col, time_col, treated_unit,
intervention_time, donor_units=None, max_controls=10,
)
| Параметр | Тип / значения | Обязателен | Описание |
| df | pd.DataFrame | да | Панель `unit x time`. |
| outcome_col | str | да | Имя outcome-колонки. |
| unit_col | str | да | Идентификатор unit. |
| time_col | str | да | Временная колонка. |
| treated_unit | str | да | Название treated unit. |
| intervention_time | дата / str / pd.Timestamp | да | Дата интервенции. |
| donor_units | list[str] или None | нет | Список допустимых доноров. |
| max_controls | int | нет | Максимум доноров после ранжирования. |
Как проверяет устойчивость: строит in-space placebo на донорах, считает leave-one-out варианты и проверяет, не держится ли вывод на одном доноре.
Causal Impact
Формат данных для функции
fit_causal_impact(...)
fit_causal_impact(
df, outcome_col, unit_col, time_col, treated_unit, intervention_time,
donor_units=None, max_controls=10, pre_period=None, post_period=None,
label="causal_impact",
mde_mode="auto", alpha=0.05, power=0.80,
alternative="two-sided", n_simulations=2000,
random_state=None, mde_effect_grid=None,
mde_simulator=None,
)
| Параметр | Тип / значения | Обязателен | Описание |
| df | pd.DataFrame | да | Long-panel формата `unit x time`. |
| outcome_col | str | да | Имя outcome-колонки. |
| unit_col | str | да | Идентификатор unit. |
| time_col | str | да | Временная колонка. |
| treated_unit | str | да | Название treated unit. |
| intervention_time | дата / str / pd.Timestamp | да | Дата старта интервенции. |
| donor_units | list[str] или None | нет | Whitelist доноров, если не хотим использовать всех. |
| max_controls | int | нет | Максимум доноров после ранжирования. |
| pre_period | tuple[start, end] или None | нет | Явное окно предпериода. |
| post_period | tuple[start, end] или None | нет | Явное окно постпериода. |
| label | str | нет | Техническая подпись метода в output. |
Параметры MDE
| Параметр | Тип / значения | Описание |
mde_mode | auto, analytic, parametric, resampling, proxy | Режим расчета MDE; по умолчанию auto. |
alpha | float от 0 до 1 | Уровень ошибки первого рода; по умолчанию 0.05. |
power | float от 0 до 1 | Целевая мощность; по умолчанию 0.80. |
alternative | two-sided, greater, less | Направление теста; по умолчанию two-sided. |
n_simulations | int > 0 | Число повторов; по умолчанию 2000. |
random_state | int или None | Seed генератора случайных чисел. |
mde_effect_grid | iterable чисел или None | Явная сетка абсолютных эффектов. |
mde_simulator | callable или None | Свой симулятор для resampling-режима. |
check_causal_impact_assumptions(...)
fpr_placebo_count задаёт число placebo-прогонов Causal Impact для эмпирической FPR; по умолчанию 20.
check_causal_impact_assumptions(
df, outcome_col, unit_col, time_col, treated_unit, intervention_time,
donor_units=None, max_controls=10, pre_period=None, post_period=None,
)
| Параметр | Тип / значения | Обязателен | Описание |
| df | pd.DataFrame | да | Long-panel формата `unit x time`. |
| outcome_col | str | да | Имя outcome-колонки. |
| unit_col | str | да | Идентификатор unit. |
| time_col | str | да | Временная колонка. |
| treated_unit | str | да | Название treated unit. |
| intervention_time | дата / str / pd.Timestamp | да | Дата интервенции. |
| donor_units | list[str] или None | нет | Допустимые доноры для donor-pool. |
| max_controls | int | нет | Максимум доноров после ранжирования. |
| pre_period | tuple[start, end] или None | нет | Явное окно предпериода для donor/pre-fit diagnostics. |
| post_period | tuple[start, end] или None | нет | Явное окно постпериода, если нужно фиксировать анализ вручную. |
Что проверяет: полноту aligned panel, число и качество выбранных доноров, качество pre-fit на train/validation и чувствительность дизайна через proxy MDE.
run_causal_impact_robustness(...)
run_causal_impact_robustness(
df, outcome_col, unit_col, time_col, treated_unit, intervention_time,
donor_units=None, max_controls=10, placebo_offsets_days=(28, 21, 14),
pre_period_days_options=(None, 28, 56, 84),
)
| Параметр | Тип / значения | Обязателен | Описание |
| df | pd.DataFrame | да | Long-panel формата `unit x time`. |
| outcome_col | str | да | Имя outcome-колонки. |
| unit_col | str | да | Идентификатор unit. |
| time_col | str | да | Временная колонка. |
| treated_unit | str | да | Название treated unit. |
| intervention_time | дата / str / pd.Timestamp | да | Дата интервенции. |
| donor_units | list[str] или None | нет | Список допустимых доноров. |
| max_controls | int | нет | Максимум доноров после ранжирования. |
| placebo_offsets_days | tuple[int, ...] или list[int] | нет | Сдвиги назад в днях для placebo A/A прогонов. |
| pre_period_days_options | iterable[int или None] | нет | Окна предпериода для sensitivity-проверки. |
Как проверяет устойчивость: запускает placebo с более ранними датами интервенции, делает leave-one-out по донорам и смотрит, не исчезает ли эффект после исключения одного донора.
Interrupted Time Series (ITS)
Формат данных для функции
| sale_date | metric | weather_temp | holiday_flag |
| 2026-01-01 | 125.0 | 8.3 | 1 |
| 2026-02-25 | 149.0 | 10.4 | 0 |
build_standard_its_features(...)
build_standard_its_features(
df, time_col, intervention_time,
include_day_of_week=True, include_month_start=True, include_month_end=True,
holiday_dates=None, extra_feature_cols=None,
)
| Параметр | Тип / значения | Обязателен | Описание |
| df | pd.DataFrame | да | Датафрейм с временным рядом. |
| time_col | str | да | Временная колонка. |
| intervention_time | дата / str / pd.Timestamp | да | Дата интервенции. |
| include_day_of_week | bool | нет | Добавлять ли day-of-week dummy-признаки. |
| include_month_start | bool | нет | Добавлять ли флаг начала месяца. |
| include_month_end | bool | нет | Добавлять ли флаг конца месяца. |
| holiday_dates | dict[date, str] или None | нет | Словарь вида `{дата: имя_фичи}` для праздничных флагов. |
| extra_feature_cols | list[str] или None | нет | Уже существующие внешние признаки, которые нужно включить в итоговый список фичей. |
fit_its(...)
fit_its(
df, outcome_col, time_col, intervention_time,
feature_cols=None, extra_feature_cols=None,
standardize_features=True, validation_days=14,
hac_lags=7, label="its",
mde_mode="auto", alpha=0.05, power=0.80,
alternative="two-sided", n_simulations=2000,
random_state=None, mde_effect_grid=None,
mde_simulator=None,
)
| Параметр | Тип / значения | Обязателен | Описание |
| df | pd.DataFrame | да | Временной ряд. |
| outcome_col | str | да | Имя outcome-колонки. |
| time_col | str | да | Временная колонка. |
| intervention_time | дата / str / pd.Timestamp | да | Дата интервенции. |
| feature_cols | list[str] или None | нет | Явный список признаков, если фичи подготовлены вручную. |
| extra_feature_cols | list[str] или None | нет | Дополнительные признаки, если используется стандартная ветка feature engineering. |
| standardize_features | bool | нет | Если `True`, пакет сам строит стандартные ITS-фичи. |
| validation_days | int | нет | Размер holdout-валидации на предпериоде. |
| hac_lags | int | нет | Число лагов для `HAC/Newey-West` ковариации. |
| label | str | нет | Техническая подпись метода в output. |
Параметры MDE
| Параметр | Тип / значения | Описание |
mde_mode | auto, analytic, parametric, resampling, proxy | Режим расчета MDE; по умолчанию auto. |
alpha | float от 0 до 1 | Уровень ошибки первого рода; по умолчанию 0.05. |
power | float от 0 до 1 | Целевая мощность; по умолчанию 0.80. |
alternative | two-sided, greater, less | Направление теста; по умолчанию two-sided. |
n_simulations | int > 0 | Число повторов; по умолчанию 2000. |
random_state | int или None | Seed генератора случайных чисел. |
mde_effect_grid | iterable чисел или None | Явная сетка абсолютных эффектов. |
mde_simulator | callable или None | Свой симулятор для resampling-режима. |
check_its_assumptions(...)
fpr_placebo_count задаёт число placebo-прогонов для эмпирической FPR; по умолчанию 20.
check_its_assumptions(
df, outcome_col, time_col, intervention_time,
feature_cols=None, standardize_features=True,
validation_days=14, hac_lags=7,
recommended_min_pre_days=42, label="its_assumptions",
)
| Параметр | Тип / значения | Обязателен | Описание |
| df | pd.DataFrame | да | Временной ряд. |
| outcome_col | str | да | Имя outcome-колонки. |
| time_col | str | да | Временная колонка. |
| intervention_time | дата / str / pd.Timestamp | да | Дата интервенции. |
| feature_cols | list[str] или None | нет | Явный список признаков, если стандартные ITS-фичи не подходят. |
| standardize_features | bool | нет | Если `True`, пакет строит стандартный набор ITS-фичей автоматически. |
| validation_days | int | нет | Длина holdout-валидации на предпериоде. |
| hac_lags | int | нет | Число лагов для `HAC/Newey-West` ковариации. |
| recommended_min_pre_days | int | нет | Эвристический ориентир минимальной длины предпериода. |
| label | str | нет | Техническая подпись диагностического прогона. |
Что проверяет: длину и полноту предпериода, holdout-качество прогноза, автокорреляцию и выбросы в остатках, а также явные внешние изменения, которые ломают single-series дизайн.
run_its_robustness(...)
run_its_robustness(
df, outcome_col, time_col, intervention_time,
pre_window_days_options=(56, 84, 112),
placebo_offsets_days=(28, 21, 14),
feature_sets=None, hac_lags=7,
)
| Параметр | Тип / значения | Обязателен | Описание |
| df | pd.DataFrame | да | Временной ряд. |
| outcome_col | str | да | Имя outcome-колонки. |
| time_col | str | да | Временная колонка. |
| intervention_time | дата / str / pd.Timestamp | да | Дата интервенции. |
| pre_window_days_options | tuple[int, ...] или list[int] | нет | Набор длин предпериода для sensitivity-check. |
| placebo_offsets_days | tuple[int, ...] или list[int] | нет | Набор placebo-сдвигов на предпериоде. |
| feature_sets | dict[str, list[str]] или None | нет | Словарь наборов признаков для перебора. |
| hac_lags | int | нет | Число лагов для `HAC/Newey-West`. |
Как проверяет устойчивость: меняет длину предпериода, запускает placebo на более ранних датах и сравнивает эффект на разных наборах признаков.
Regression Discontinuity Design (RDD)
Формат данных для функции
| running | outcome | x1 |
| -0.42 | 2.83 | 0.17 |
| -0.03 | 3.12 | -0.48 |
| 0.07 | 4.11 | 0.32 |
fit_rdd(...)
fit_rdd(
df, outcome_col, running_col, cutoff,
covariates=None, bandwidth=None,
polynomial_order=1, kernel="triangular",
label="rdd",
mde_mode="auto", alpha=0.05, power=0.80,
alternative="two-sided", n_simulations=2000,
random_state=None, mde_effect_grid=None,
mde_simulator=None,
)
| Параметр | Тип / значения | Обязателен | Описание |
| df | pd.DataFrame | да | Срез данных с running variable. |
| outcome_col | str | да | Имя outcome-колонки. |
| running_col | str | да | Колонка running variable. |
| cutoff | float или int | да | Порог assignment rule. |
| covariates | list[str] или None | нет | Дополнительные ковариаты для локальной регрессии. |
| bandwidth | float или None | нет | Локальное окно вокруг cutoff; `None` означает использовать весь диапазон. |
| polynomial_order | int | нет | Порядок полинома для функции running variable. |
| kernel | str | нет | Тип весов, например `triangular`. |
| label | str | нет | Техническая подпись метода в output. |
Параметры MDE
| Параметр | Тип / значения | Описание |
mde_mode | auto, analytic, parametric, resampling, proxy | Режим расчета MDE; по умолчанию auto. |
alpha | float от 0 до 1 | Уровень ошибки первого рода; по умолчанию 0.05. |
power | float от 0 до 1 | Целевая мощность; по умолчанию 0.80. |
alternative | two-sided, greater, less | Направление теста; по умолчанию two-sided. |
n_simulations | int > 0 | Число повторов; по умолчанию 2000. |
random_state | int или None | Seed генератора случайных чисел. |
mde_effect_grid | iterable чисел или None | Явная сетка абсолютных эффектов. |
mde_simulator | callable или None | Свой симулятор для resampling-режима. |
check_rdd_assumptions(...)
check_rdd_assumptions(
df, outcome_col, running_col, cutoff,
covariates=None, bandwidth=None,
density_bins=20, label="rdd_assumptions",
)
| Параметр | Тип / значения | Обязателен | Описание |
| df | pd.DataFrame | да | Срез данных с running variable. |
| outcome_col | str | да | Имя outcome-колонки. |
| running_col | str | да | Колонка running variable. |
| cutoff | float или int | да | Порог assignment rule. |
| covariates | list[str] или None | нет | Ковариаты для continuity-check около cutoff. |
| bandwidth | float или None | нет | Окно вокруг cutoff. |
| density_bins | int | нет | Число бинов для density diagnostic. |
| label | str | нет | Техническая подпись диагностического прогона. |
Что проверяет: число наблюдений по обе стороны cutoff, скачок плотности около порога и непрерывность ковариат рядом с cutoff.
run_rdd_robustness(...)
run_rdd_robustness(
df, outcome_col, running_col, cutoff,
covariates=None,
bandwidth_options=(None, 0.5, 1.0),
polynomial_orders=(1, 2),
placebo_cutoffs=None,
)
| Параметр | Тип / значения | Обязателен | Описание |
| df | pd.DataFrame | да | Срез данных с running variable. |
| outcome_col | str | да | Имя outcome-колонки. |
| running_col | str | да | Колонка running variable. |
| cutoff | float или int | да | Основной cutoff. |
| covariates | list[str] или None | нет | Дополнительные ковариаты. |
| bandwidth_options | tuple[float | None, ...] или list[float | None] | нет | Набор bandwidth для sensitivity-check. |
| polynomial_orders | tuple[int, ...] или list[int] | нет | Набор порядков полинома для перебора. |
| placebo_cutoffs | list[float] или None | нет | Список ложных cutoff. Если `None`, пакет подбирает их автоматически. |
Как проверяет устойчивость: меняет bandwidth, меняет порядок полинома и проверяет, не возникает ли похожий эффект на placebo-cutoff.
Propensity Score Matching (PSM)
Формат данных для функции
| treatment_flag | outcome | x1 | x2 | x3 |
| 1 | 4.21 | 0.73 | -0.41 | 1 |
| 0 | 2.87 | -0.34 | 0.58 | 0 |
| 1 | 3.95 | 0.62 | -0.15 | 1 |
check_psm_assumptions(...)
check_psm_assumptions(
df, outcome_col, treatment_col, covariate_cols,
propensity_model=None, caliper=None, n_neighbors=1,
label="psm_assumptions",
)
| Параметр | Тип / значения | Обязателен | Описание |
| df | pd.DataFrame | да | Observational dataset. |
| outcome_col | str | да | Имя outcome-колонки. |
| treatment_col | str | да | Бинарный treatment-флаг `0/1`. |
| covariate_cols | list[str] | да | Список ковариат для propensity-модели. |
| propensity_model | sklearn-estimator или None | нет | Пользовательская модель propensity score. |
| caliper | float или None | нет | Ограничение расстояния по propensity score при matching. |
| n_neighbors | int | нет | Число соседей на одно treated-наблюдение. |
| label | str | нет | Техническая подпись диагностического прогона. |
Что проверяет: overlap и common support, слишком сильное разделение групп propensity-моделью, баланс ковариат до и после matching и долю treated без мэтча.
fit_psm(...)
fit_psm(
df, outcome_col, treatment_col, covariate_cols,
propensity_model=None, caliper=None, n_neighbors=1,
label="psm_att",
mde_mode="auto", alpha=0.05, power=0.80,
alternative="two-sided", n_simulations=2000,
random_state=None, mde_effect_grid=None,
mde_simulator=None,
)
| Параметр | Тип / значения | Обязателен | Описание |
| df | pd.DataFrame | да | Observational dataset. |
| outcome_col | str | да | Имя outcome-колонки. |
| treatment_col | str | да | Бинарный treatment-флаг `0/1`. |
| covariate_cols | list[str] | да | Список ковариат для propensity-модели. |
| propensity_model | sklearn-estimator или None | нет | Пользовательская propensity-модель. |
| caliper | float или None | нет | Ограничение расстояния при мэтчинге. |
| n_neighbors | int | нет | Число контрольных соседей на одно treated-наблюдение. |
| label | str | нет | Техническая подпись метода в output. |
Параметры MDE
| Параметр | Тип / значения | Описание |
mde_mode | auto, analytic, parametric, resampling, proxy | Режим расчета MDE; по умолчанию auto. |
alpha | float от 0 до 1 | Уровень ошибки первого рода; по умолчанию 0.05. |
power | float от 0 до 1 | Целевая мощность; по умолчанию 0.80. |
alternative | two-sided, greater, less | Направление теста; по умолчанию two-sided. |
n_simulations | int > 0 | Число повторов; по умолчанию 2000. |
random_state | int или None | Seed генератора случайных чисел. |
mde_effect_grid | iterable чисел или None | Явная сетка абсолютных эффектов. |
mde_simulator | callable или None | Свой симулятор для resampling-режима. |
run_psm_robustness(...)
run_psm_robustness(
df, outcome_col, treatment_col, covariate_cols,
caliper_options=(None, 0.05, 0.1),
neighbor_options=(1, 3),
)
| Параметр | Тип / значения | Обязателен | Описание |
| df | pd.DataFrame | да | Observational dataset. |
| outcome_col | str | да | Имя outcome-колонки. |
| treatment_col | str | да | Бинарный treatment-флаг. |
| covariate_cols | list[str] | да | Список ковариат. |
| caliper_options | tuple[float | None, ...] или list[float | None] | нет | Набор значений `caliper` для sensitivity-check. |
| neighbor_options | tuple[int, ...] или list[int] | нет | Набор значений `n_neighbors` для перебора. |
Как проверяет устойчивость: меняет жесткость matching через caliper, меняет число соседей и сравнивает стабильность ATT.
Doubly Robust
Формат данных для функции
check_doubly_robust_assumptions(...)
check_doubly_robust_assumptions(
df, outcome_col, treatment_col, covariate_cols,
propensity_model=None, outcome_model=None,
clip=0.01, label="doubly_robust_assumptions",
)
| Параметр | Тип / значения | Обязателен | Описание |
| df | pd.DataFrame | да | Observational dataset. |
| outcome_col | str | да | Имя outcome-колонки. |
| treatment_col | str | да | Бинарный treatment-флаг `0/1`. |
| covariate_cols | list[str] | да | Список ковариат. |
| propensity_model | sklearn-estimator или None | нет | Пользовательская propensity-модель. |
| outcome_model | sklearn-estimator или None | нет | Пользовательская outcome-модель. |
| clip | float | нет | Порог clipping propensity score снизу и сверху. |
| label | str | нет | Техническая подпись диагностического прогона. |
Что проверяет: overlap propensity score, баланс ковариат до и после взвешивания и наличие экстремальных весов, которые могут дестабилизировать AIPW.
fit_doubly_robust(...)
fit_doubly_robust(
df, outcome_col, treatment_col, covariate_cols,
propensity_model=None, outcome_model=None,
clip=0.01, model_family="linear",
label="doubly_robust_ate",
mde_mode="auto", alpha=0.05, power=0.80,
alternative="two-sided", n_simulations=2000,
random_state=None, mde_effect_grid=None,
mde_simulator=None,
)
| Параметр | Тип / значения | Обязателен | Описание |
| df | pd.DataFrame | да | Observational dataset. |
| outcome_col | str | да | Имя outcome-колонки. |
| treatment_col | str | да | Бинарный treatment-флаг `0/1`. |
| covariate_cols | list[str] | да | Список ковариат. |
| propensity_model | sklearn-estimator или None | нет | Пользовательская propensity-модель. |
| outcome_model | sklearn-estimator или None | нет | Пользовательская outcome-модель. |
| clip | float | нет | Порог clipping propensity score. |
| model_family | str | нет | Семейство дефолтных моделей, если свои estimators не переданы. |
| label | str | нет | Техническая подпись метода в output. |
Параметры MDE
| Параметр | Тип / значения | Описание |
mde_mode | auto, analytic, parametric, resampling, proxy | Режим расчета MDE; по умолчанию auto. |
alpha | float от 0 до 1 | Уровень ошибки первого рода; по умолчанию 0.05. |
power | float от 0 до 1 | Целевая мощность; по умолчанию 0.80. |
alternative | two-sided, greater, less | Направление теста; по умолчанию two-sided. |
n_simulations | int > 0 | Число повторов; по умолчанию 2000. |
random_state | int или None | Seed генератора случайных чисел. |
mde_effect_grid | iterable чисел или None | Явная сетка абсолютных эффектов. |
mde_simulator | callable или None | Свой симулятор для resampling-режима. |
run_doubly_robust_robustness(...)
run_doubly_robust_robustness(
df, outcome_col, treatment_col, covariate_cols,
clip_options=(0.01, 0.025, 0.05),
model_families=("linear", "forest"),
)
| Параметр | Тип / значения | Обязателен | Описание |
| df | pd.DataFrame | да | Observational dataset. |
| outcome_col | str | да | Имя outcome-колонки. |
| treatment_col | str | да | Бинарный treatment-флаг `0/1`. |
| covariate_cols | list[str] | да | Список ковариат. |
| clip_options | tuple[float, ...] или list[float] | нет | Набор clipping-порогов для перебора. |
| model_families | tuple[str, ...] или list[str] | нет | Набор семейств моделей для sensitivity-check. |
Как проверяет устойчивость: меняет clipping propensity score, меняет семейство nuisance-моделей и сравнивает стабильность итогового ATE.
Совместимость окружения
ensure_runtime_compat()
from post_analysis_toolkit.compat import ensure_runtime_compat