Джатин Мадан

ПРИМЕР 1.Наблюдение за причинно-следственными связями с помощью CausalImpact

Давайте посмотрим на это на примере. Рассмотрим следующие данные о погибших или серьезно раненых водителях автомобилей и водителях легковых автомобилей, погибших в период с 1969 по 1984 год в Великобритании.

В этом мы используем библиотеку CausalImpact для оценки причинно-следственного эффекта вмешательства путем указания периодов до и после вмешательства и учета сезонности. Библиотека использует байесовские структурные модели временных рядов для оценки гипотетического результата, что позволяет нам оценить влияние вмешательства на переменную результата.

pre_period  = [ pd.Timestamp('1969-01-01') , pd.Timestamp('1982-01-01') ]
post_period = [ pd.Timestamp('1982-02-01') , pd.Timestamp('1984-12-01') ]

ci = CausalImpact(xdat.loc[:,"car_ksi"],  pre_period, post_period, 
                  nseasons=[{'period': 12}], prior_level_sd=0.05)
print(ci.summary())
## OUTPUT##
Posterior Inference {Causal Impact}
                          Average            Cumulative
Actual                    7.25               253.69
Prediction (s.d.)         7.35 (0.04)        257.37 (1.41)
95% CI                    [7.27, 7.43]       [254.52, 260.06]
Absolute effect (s.d.)    -0.1 (0.04)        -3.67 (1.41)
95% CI                    [-0.18, -0.02]     [-6.36, -0.82]
Relative effect (s.d.)    -1.43% (0.55%)     -1.43% (0.55%)
95% CI                    [-2.47%, -0.32%]   [-2.47%, -0.32%]
Posterior tail-area probability p: 0.0
Posterior prob. of a causal effect: 99.5%

Суммируя отдельные точки данных в течение периода после вмешательства
(который лишь иногда можно осмысленно интерпретировать), переменная ответа
имела общее значение 253,69. Напротив, если бы интервенция не состоялась, мы ожидали бы, что сумма составит 257,37. 95% интервал этого прогноза составляет [254,52, 260,06].

Приведенные выше результаты даны в виде абсолютных чисел. В относительном
выражении переменная отклика показала снижение на -1,43%. 95%
интервал этого процента составляет [-2,47%, -0,32%].

Это означает, что отрицательный эффект, наблюдаемый в течение периода вмешательства, является статистически значимым. Если экспериментатор ожидал положительного эффекта, рекомендуется перепроверить, не могли ли аномалии в контрольных переменных вызвать чрезмерно оптимистичное ожидание того, что должно было произойти в переменной отклика в отсутствие вмешательства.

Вероятность получения этого эффекта случайно очень мала
(вероятность байесовской односторонней хвостовой области p = 0,0). Это означает, что причинный эффект можно считать статистически значимым.

ПРИМЕР 2. Наблюдение за причинно-следственными связями с помощью DoWhy

DoWhy – это сквозная библиотека для причинно-следственного анализа, основанная на последних исследованиях в области моделирования предположений и проверок надежности. В частности, DoWhy организован вокруг четырех ключевых шагов, которые необходимы для любого причинно-следственного анализа: Моделирование, Идентификация, Оценка и Опровержение. Модель кодирует предшествующие знания в виде формального причинно-следственного графа, идентификация использует основанный на графе методы определения причинного эффекта, оценка использует статистические методы для оценки выявленной оценки и, наконец, опровергает попытки опровергнуть полученную оценку путем проверки надежности исходных предположений модели.

Здесь у нас есть набор данных о привычках пользователей в отношении расходов за 12-месячный период, который включает информацию о месяце регистрации каждого пользователя, его расходах в каждом месяце и о том, принадлежат ли они к лечебной группе (т. е. подписались ли они).

## Model a causal problem
import dowhy
from dowhy import CausalModel
model = dowhy.CausalModel(data=df_i_signupmonth,
                          graph=causal_graph.replace("\n", " "),
                          treatment="treatment",
                          outcome="post_spends")
model.view_model()

В DoWhy причинно-следственная модель — это объект, который инкапсулирует различные аспекты процесса причинно-следственного анализа, такие как данные, обработка, результат и предположения о причинно-следственных связях между переменными. Одним из ключевых компонентов причинно-следственной модели в DoWhy является причинно-следственный граф, который обычно представляется в виде DAG.

DAG в DoWhy используется для представления предполагаемых причинно-следственных связей между переменными, визуально отображая структуру этих отношений. Причинно-следственная диаграмма, как DAG, является важным входом при создании объекта CausalModel в DoWhy. Он помогает направлять идентификацию, оценку и опровержение причинно-следственных связей.

## Identify a target estimand under the model
identified_estimand = model.identify_effect(proceed_when_unidentifiable=True)
print(identified_estimand)

##OUTPUT##
Estimand type: EstimandType.NONPARAMETRIC_ATE
### Estimand : 1
Estimand name: backdoor
Estimand expression:
     d                                   
────────────(E[post_spends|signup_month])
d[treatment]                             
Estimand assumption 1, Unconfoundedness: If U→{treatment} and U→post_spends then P(post_spends|treatment,signup_month,U) = P(post_spends|treatment,signup_month)
### Estimand : 2
Estimand name: iv
Estimand expression:
 ⎡                                                             -1⎤
 ⎢       d                      ⎛       d                     ⎞  ⎥
E⎢────────────────(post_spends)⋅⎜────────────────([treatment])⎟  ⎥
 ⎣d[Z  pre_spends]              ⎝d[Z  pre_spends]             ⎠  ⎦
Estimand assumption 1, As-if-random: If U→→post_spends then ¬(U →→{Z,pre_spends})
Estimand assumption 2, Exclusion: If we remove {Z,pre_spends}→{treatment}, then ¬({Z,pre_spends}→post_spends)
### Estimand : 3
Estimand name: frontdoor
No such variable(s) found!

На этом этапе представлены различные причинно-следственные оценки причинно-следственного влияния лечения на результат. Каждая оценка основана на различных стратегиях идентификации (задняя дверь, инструментальная переменная или входная дверь) и опирается на определенные предположения о причинно-следственных связях между переменными. Эти оценки представляют величины, которые мы стремимся оценить в каузальном анализе с учетом предполагаемой каузальной структуры.

## Estimate causal effect based on the identified estimand
estimate = model.estimate_effect(identified_estimand,
                                 method_name='backdoor.propensity_score_matching',
                                 target_units='att')
print(estimate)

##OUTPUT##
*** Causal Estimate ***
## Identified estimand
Estimand type: EstimandType.NONPARAMETRIC_ATE
### Estimand : 1
Estimand name: backdoor
Estimand expression:
     d                                   
────────────(E[post_spends|signup_month])
d[treatment]                             
Estimand assumption 1, Unconfoundedness: If U→{treatment} and U→post_spends then P(post_spends|treatment,signup_month,U) = P(post_spends|treatment,signup_month)
## Realized estimand
b: post_spends~treatment+signup_month
Target units: att
## Estimate
Mean value: 86.26916725642847

Выходные данные показывают, что средний эффект лечения на обработанных (ATT) составляет приблизительно 86,27. Это означает, что в среднем post_spends группы лечения увеличились примерно на 86,27 единицы по сравнению с тем, что они потратили бы в отсутствие лечения.

##Refute the obtained estimate 
refutation = model.refute_estimate(identified_estimand, estimate, method_name='placebo_treatment_refuter',
                     placebo_type='permute', num_simulations=20)
print(refutation)

## OUTPUT##
Refute: Use a Placebo Treatment
Estimated effect:86.26916725642847
New effect:-6.033203585751362
p value:0.22788907814083004
  • Предполагаемый эффект: 86,27 (исходная оценка причинного эффекта)
  • Новый эффект: -6,03 (оценка причинно-следственной связи при лечении плацебо)
  • р-значение: 0,23

Новый эффект лечения плацебо значительно отличается от первоначального предполагаемого эффекта, что является хорошим признаком. Значение p, равное 0,23, превышает стандартный уровень значимости (например, 0,05), указывая на то, что мы не можем отвергнуть нулевую гипотезу о том, что первоначальный предполагаемый эффект обусловлен только случайностью.

Таким образом, тест опровержения при лечении плацебо свидетельствует о том, что первоначальная оценка причинно-следственной связи является надежной, а не только случайной.

Рекомендации

  1. DoWhy: сквозная библиотека для причинно-следственных связей
  2. Причинный вывод и его основы
  3. Введение в причинно-следственные связи
  4. Анализ причинно-следственных связей временных рядов в Python

Лицензия

Весь код в этой записной книжке доступен как открытый исходный код по лицензии MIT.

Все тексты и изображения можно использовать бесплатно по лицензии Creative Commons Attribution 3.0. https://creativecommons.org/licenses/by/3.0/us/

Эти лицензии позволяют людям распространять, микшировать, настраивать и развивать произведение даже в коммерческих целях, если они отдают должное оригинальному творению.

Copyright 2023 AI Skunks https://github.com/aiskunks

Настоящим предоставляется бесплатное разрешение любому лицу, получившему копию этого программного обеспечения и связанных с ним файлов документации («Программное обеспечение»), работать с Программным обеспечением без ограничений, включая, помимо прочего, права на использование, копирование, изменение, слияние. публиковать, распространять, сублицензировать и/или продавать копии Программного обеспечения, а также разрешать лицам, которым предоставляется Программное обеспечение, делать это при соблюдении следующих условий:

Приведенное выше уведомление об авторских правах и это уведомление о разрешении должны быть включены во все копии или существенные части Программного обеспечения.

ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ПРЕДОСТАВЛЯЕТСЯ «КАК ЕСТЬ», БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ, ЯВНЫХ ИЛИ ПОДРАЗУМЕВАЕМЫХ, ВКЛЮЧАЯ, ПОМИМО ПРОЧЕГО, ГАРАНТИИ КОММЕРЧЕСКОЙ ПРИГОДНОСТИ, ПРИГОДНОСТИ ДЛЯ ОПРЕДЕЛЕННОЙ ЦЕЛИ И НЕНАРУШЕНИЯ ПРАВ. НИ ПРИ КАКИХ ОБСТОЯТЕЛЬСТВАХ АВТОРЫ ИЛИ ОБЛАДАТЕЛИ АВТОРСКИМ ПРАВОМ НЕ НЕСУТ ОТВЕТСТВЕННОСТИ ЗА ЛЮБЫЕ ПРЕТЕНЗИИ, УЩЕРБ ИЛИ ИНУЮ ОТВЕТСТВЕННОСТЬ, БУДУТ СВЯЗАННЫЕ С ДОГОВОРОМ, ДЕЛОМ ИЛИ ИНЫМ ОБРАЗОМ, ВОЗНИКАЮЩИЕ ИЗ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ ИЛИ ИСПОЛЬЗОВАНИЯ, ИЛИ В СВЯЗИ С ПРОГРАММНЫМ ОБЕСПЕЧЕНИЕМ, ИЛИ ИСПОЛЬЗОВАНИЕМ ИЛИ ДРУГИМИ СДЕЛКАМИ В ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ.