dowhy - DoWhyは、因果関係の仮定の明示的なモデリングとテストをサポートする因果関係推論用のPythonライブラリです。DoWhyは、因果推論の統一言語に基づいており、因果グラフィカルモデルと潜在的な結果フレームワークを組み合わせています。

(DoWhy is a Python library for causal inference that supports explicit modeling and testing of causal assumptions. DoWhy is based on a unified language for causal inference, combining causal graphical models and potential outcomes frameworks. )

Created at: 2018-05-31 21:07:04
Language: Python
License: MIT

| BuildStatus | _ | PyPiVersion | _ | PythonSupport |_|ダウンロード|_

.. | PyPiVersion | 画像:: https ://img.shields.io/pypi/v/dowhy.svg .. _PyPiVersion:https ://pypi.org/project/dowhy/

.. | PythonSupport | 画像:: https ://img.shields.io/pypi/pyversions/dowhy.svg .. _PythonSupport:https ://pypi.org/project/dowhy/

.. | BuildStatus | 画像:: https ://github.com/microsoft/dowhy/workflows/Python%20package/badge.svg .. _BuildStatus:https ://github.com/microsoft/dowhy/actions

..|ダウンロード| 画像:: https ://pepy.tech/badge/dowhy .. _ダウンロード:https ://pepy.tech/project/dowhy

DoWhy | 因果推論のためのエンドツーエンドライブラリ

DoWhyと因果推論の4つのステップの紹介|

Microsoft Research Blog <https://www.microsoft.com/en-us/research/blog/dowhy-a-library-for-causal-inference/>
_ |
Video Tutorial <https://note.microsoft.com/MSR-Webinar-DoWhy-Library-Registration-On-Demand.html>
_ |
Arxiv Paper <https://arxiv.org/abs/2011.04216>
_ |
Slides <https://www2.slideshare.net/AmitSharma315/dowhy-an-endtoend-library-for-causal-inference>
_

docs <https://py-why.github.io/dowhy/>
_を読む| オンラインでお試しください!|バインダー|_

..|バインダー| 画像:: https ://mybinder.org/badge_logo.svg .. _Binder:https ://mybinder.org/v2/gh/microsoft/dowhy/master?filepath=docs%2Fsource%2F

DoWhyを使用したケーススタディ

Hotel booking cancellations <https://towardsdatascience.com/beyond-predictive-models-the-causal-story-behind-hotel-booking-cancellations-d29e8558cbaf>
_ |
Effect of customer loyalty programs <https://github.com/microsoft/dowhy/blob/master/docs/source/example_notebooks/dowhy_example_effect_of_memberrewards_program.ipynb>
_ |
Optimizing article headlines <https://medium.com/@akelleh/introducing-the-do-sampler-for-causal-inference-a3296ea9e78d>
_ |
Effect of home visits on infant health (IHDP) <https://towardsdatascience.com/implementing-causal-inference-a-key-step-towards-agi-de2cde8ea599>
_ |
Causes of customer churn/attrition <https://medium.com/geekculture/a-quickstart-for-causal-analysis-decision-making-with-dowhy-2ce2d4d1efa9>
_

..画像:: https ://raw.githubusercontent.com/microsoft/dowhy/master/docs/images/dowhy-schematic.png

コンピューティングシステムは、ヘルスケア、教育、ガバナンスなどの社会的に重要なドメインに頻繁かつ積極的に介入するため、これらの介入の因果関係を正しく予測して理解することが重要です。A / Bテストがなければ、パターン認識と相関分析に基づいて構築された従来の機械学習方法では、意思決定には不十分です。

機械学習ライブラリが予測のために行ったように、「DoWhy」は因果的思考と分析を促進することを目的としたPythonライブラリです。DoWhyは、因果関係の仮定を明示的にモデル化し、可能な限りそれらを検証することに焦点を当てた、因果関係推論のための原則的な4ステップのインターフェースを提供します。DoWhyの主な機能は、最先端の反論APIであり、任意の推定方法の因果関係の仮定を自動的にテストできるため、推論がより堅牢になり、専門家以外の人もアクセスできるようになります。DoWhyは、バックドア、フロントドア、操作変数、およびその他の識別方法の平均因果効果の推定、およびEconMLライブラリとの統合による条件付き効果(CATE)の推定をサポートします。

因果推論の簡単な紹介については、をチェックしてください

amit-sharma/causal-inference-tutorial <https://github.com/amit-sharma/causal-inference-tutorial/>
KDD 2018 <http://www.kdd.org/kdd2018/>
また、ACMナレッジディスカバリーおよびデータマイニング( )会議で、より包括的なチュートリアルを提供しました
causalinference.gitlab.io/kdd-tutorial <http://causalinference.gitlab.io/kdd-tutorial/>
。因果推論の4つのステップとその機械学習への影響の概要については、MicrosoftResearchからこのビデオチュートリアルにアクセスできます
DoWhy Webinar <https://note.microsoft.com/MSR-Webinar-DoWhy-Library-Registration-On-Demand.html>

DoWhyのドキュメントは

py-why.github.io/dowhy <https://py-why.github.io/dowhy/>
_で入手できます。

..ここにコメントtoctree::..ここにコメント:maxdepth:4 ..ここにコメント:caption:コンテンツ:..コンテンツ::コンテンツ

ニュース

2022.05.27

  • DoWhyはPyWhyの一部になりました

    DoWhyをmicrosoft/dowhyからpy-why/dowhyに移動しました。GitHubはクローン作成やプルなどのためにgitコマンドを自動的にリダイレクトしますが、gitリモートとブックマークを更新することをお勧めします。ドキュメントがhttps://py-why.github.io/dowhyに移動し、古いURLからリダイレクトされていないことに注意してください。

  • GCMベースの推論の実験的サポート

    グラフィカルな因果モデルベースの推論(または要するにGCMベース)のサポートの追加を開始しました。現時点では、これには介入、反事実、および帰属の分布変更のサポートが含まれます。この一環として、シャープレイ値の推定と独立性テストの機能も追加しました。を含むすべてを具体化する過程にあります

    documentation <https://py-why.github.io/dowhy/gcm/>
    。一部はすでにオンになっており
    master <https://github.com/py-why/dowhy>
    、他のパーツはオープンプルリクエストのある機能ブランチ(プレフィックス付き
    gcm-
    )にあり、その他のパーツは数週間以内に新しいプルリクエストとして表示されます。機能とドキュメントをすばやく拡張するため、このスペースを必ずご覧ください。

因果推論の必要性

予測モデルは、観測データの入力と結果を結び付けるパターンを明らかにします。ただし、介入するには、データが存在しない現在の値から入力を変更した場合の影響を見積もる必要があります。事実の推定を含むこのような質問は、意思決定のシナリオでは一般的です。

  • それは機能しますか?
    • システムへの提案された変更は人々の結果を改善しますか?
  • なぜそれが機能したのですか?
    • システムの結果に変化をもたらしたのは何ですか?
  • 私たちは何をすべきか?
    • システムにどのような変更を加えると、人々の成果が向上する可能性がありますか?
  • 全体的な効果は何ですか?
    • システムは人間の行動とどのように相互作用しますか?
    • システムの推奨事項が人々の活動に与える影響は何ですか?

これらの質問に答えるには、因果的な推論が必要です。因果推論には多くの方法がありますが、それらの仮定と結果の堅牢性を比較することは困難です。DoWhyは3つの貢献をします。

  1. すべての仮定が明示的になるように、特定の問題を因果グラフとしてモデル化する原理的な方法を提供します。
  2. グラフィカルモデルの2つの主要なフレームワークと潜在的な結果を組み合わせて、多くの一般的な因果推論方法に統一されたインターフェイスを提供します。
  3. 可能であれば、仮定の妥当性を自動的にテストし、違反に対する見積もりの​​堅牢性を評価します。

DoWhyの動作を確認するには、DoWhyを適用して、顧客のサブスクリプションまたはリワードプログラムの効果を推定し[ ]、データセット、_データセット、_データ

Rewards notebook <https://github.com/microsoft/dowhy/blob/master/docs/source/example_notebooks/dowhy_example_effect_of_memberrewards_program.ipynb>
セットなどのベンチマークデータセットに因果推論方法を実装および評価する方法を
Infant Health and Development Program (IHDP) <https://github.com/microsoft/dowhy/blob/master/docs/source/example_notebooks/dowhy_ihdp_data_example.ipynb>
確認してください。
Infant Mortality (Twins) <https://github.com/microsoft/dowhy/blob/master/docs/source/example_notebooks/dowhy_twins_example.ipynb>
Lalonde Jobs <https://github.com/microsoft/dowhy/blob/master/docs/source/example_notebooks/dowhy_lalonde_example.ipynb>

インストール

DoWhyはPython3.6以降をサポートしています。インストールするには、pipまたはcondaを使用できます。

最新のリリース

pipを使用して最新の

release <https://pypi.org/project/dowhy/>
__をインストールします。

..コード::シェル

pip install dowhy

release <https://anaconda.org/conda-forge/dowhy>
condaを使用して最新の__をインストールします。

..コード::シェル

conda install -c conda-forgedowhy

condaで「環境の解決」の問題に直面した場合は、:code:

conda update --all
を試してから、dowhyをインストールしてください。それでも問題が解決しない場合は、:code:
conda config --set channel_priority false
を使用して、インストールを再試行してください。問題が解決しない場合は、問題を追加してください
here <https://github.com/microsoft/dowhy/issues/197>
_。

開発版

最新の開発バージョンが必要な場合は、このリポジトリのクローンを作成し、リポジトリの最上位フォルダーから次のコマンドを実行します。

..コード::シェル

pip install -e .

要件

DoWhyには次のパッケージが必要です。

  • numpy
  • scipy
  • scikit-learn
  • パンダ
  • networkx(因果グラフを分析するため)
  • matplotlib(一般的なプロット用)
  • sympy(シンボリック式のレンダリング用)

問題が発生した場合は、依存関係を手動でインストールしてみてください。

..コード::シェル

pip install -r requirements.txt

必要に応じて、ドット形式でグラフを入力する場合は、pydot(またはpygraphviz)をインストールします。

グラフの見栄えを良くするために、オプションでpygraphvizをインストールできます。続行するには、最初にgraphvizをインストールし、次にpygraphvizをインストールします(UbuntuおよびUbuntu WSLの場合)。

..コード::シェル

sudo apt install graphviz libgraphviz-dev graphviz-dev pkg-config
## from https://github.com/pygraphviz/pygraphviz/issues/71
pip install pygraphviz --install-option="--include-path=/usr/include/graphviz" \
--install-option="--library-path=/usr/lib/graphviz/"

DoWhyのサンプル因果推論分析

因果推論のほとんどのDoWhy分析では、データを含むpandasデータフレームdfを想定して、書き込みに4行かかります。

..コード::python

from dowhy import CausalModel
import dowhy.datasets

# Load some sample data
data = dowhy.datasets.linear_dataset(
    beta=10,
    num_common_causes=5,
    num_instruments=2,
    num_samples=10000,
    treatment_is_binary=True)

DoWhyは、因果グラフを提供するために、

gml <https://github.com/GunterMueller/UNI_PASSAU_FMI_Graph_Drawing>
_(推奨)と
dot <http://www.graphviz.org/documentation/>
_の2つの形式をサポートしています。データを読み込んだ後、DoWhyの4つの主要な操作を使用します:モデル化推定識別、および反論

..コード::python

# I. Create a causal model from the data and given graph.
model = CausalModel(
    data=data["df"],
    treatment=data["treatment_name"],
    outcome=data["outcome_name"],
    graph=data["gml_graph"])

# II. Identify causal effect and return target estimands
identified_estimand = model.identify_effect()

# III. Estimate the target estimand using a statistical method.
estimate = model.estimate_effect(identified_estimand,
                                 method_name="backdoor.propensity_score_matching")

# IV. Refute the obtained estimate using multiple robustness checks.
refute_results = model.refute_estimate(identified_estimand, estimate,
                                       method_name="random_common_cause")

DoWhyは、その出力の解釈可能性を強調しています。分析のどの時点でも、テストされていない仮定、特定された推定値(存在する場合)、および推定値(存在する場合)を調べることができます。これは、線形回帰推定器の出力例です。

..画像:: https ://raw.githubusercontent.com/microsoft/dowhy/master/docs/images/regression_output.png

完全なコード例については、

Getting Started with DoWhy <https://github.com/microsoft/dowhy/blob/master/docs/source/example_notebooks/dowhy_simple_example.ipynb>
_ノートブックを確認してください。
Conditional Treatment Effects <https://github.com/microsoft/dowhy/blob/master/docs/source/example_notebooks/dowhy-conditional-treatment-effects.ipynb>
_ノートブックに示されているように、EconMLやCausalMLなどの他のライブラリからの条件付き平均治療効果(CATE)推定方法を使用することもできます。DoWhyの使用例については、_でJupyterノートブックを確認する
docs/source/example_notebooks <https://github.com/microsoft/dowhy/tree/master/docs/source/example_notebooks/>
か、_でオンラインで試してください
Binder <https://mybinder.org/v2/gh/microsoft/dowhy/master?filepath=docs%2Fsource%2F>

GCMベースの推論(実験的)

グラフィカルな因果モデルベースの推論、または略してGCMベースの推論は、DoWhyへの実験的な追加です。

documentation for the gcm sub-package <https://py-why.github.io/dowhy/gcm>
詳しくは_をご覧ください。このAPIの基本的なレシピは次のように機能します。

..コード::python

# 1. Modeling cause-effect relationships as a structural causal model
#    (causal graph + functional causal models):
scm = gcm.StructuralCausalModel(nx.DiGraph([('X', 'Y'), ('Y', 'Z')])) # X -> Y -> Z
scm.set_causal_mechanism('X', gcm.EmpiricalDistribution())
scm.set_causal_mechanism('Y', gcm.AdditiveNoiseModel(gcm.ml.create_linear_regressor()))
scm.set_causal_mechanism('Z', gcm.AdditiveNoiseModel(gcm.ml.create_linear_regressor()))

# 2. Fitting the SCM to the data:
gcm.fit(scm, data)

# 3. Answering a causal query based on the SCM:
results = gcm.<causal_query>(scm, ...)

Answering Causal Questions <https://py-why.github.io/dowhy/gcm/user_guide/answering_causal_questions/index.html>
ここで、<causal_query>は、 _で説明されている複数の関数の1つです。

高レベルのPandasAPI

標準のAPIの上にライトレイヤーを追加したdowhy用のさらにシンプルなAPIを作成しました。目標は、因果分析を通常の探索的分析のようにすることです。このAPIを使用するには、:code:をインポートするだけです

dowhy.api
causal
これにより、:code:名前空間が:code:に魔法のように追加されます
pandas.DataFrame
。次に、名前空間を次のように使用できます。

..コード::python

import dowhy.api
import dowhy.datasets

data = dowhy.datasets.linear_dataset(beta=5,
    num_common_causes=1,
    num_instruments = 0,
    num_samples=1000,
    treatment_is_binary=True)

# data['df'] is just a regular pandas.DataFrame
data['df'].causal.do(x='v0', # name of treatment variable
                     variable_types={'v0': 'b', 'y': 'c', 'W0': 'c'},
                     outcome='y',
                     common_causes=['W0']).groupby('v0').mean().plot(y='y', kind='bar')

..画像:: https ://raw.githubusercontent.com/microsoft/dowhy/master/docs/images/do_barplot.png

一部のメソッドでは、:code:

variable_types
フィールドを指定する必要があります。これは:code:
dict
である必要があります。ここで、キーは変数名であり、値は順序付き離散の場合は「o」、順序なし離散の場合は「u」、離散の場合は「d」、連続の場合は「c」です。

注:: code :

variable_types
が指定されていない場合は、次の暗黙的な変換を使用します:::

int->'c' float->'c' binary->'b' category->'d'

現在、タイムスタンプのサポートは追加されていません。

因果的名前空間の:code:

do
メソッドは、データセットと同じ長さの$ P(outcome | do(X = x))$からランダムなサンプルを生成し、この結果を新しい:code:として返します
DataFrame
。このサンプルを使用して通常の:code:操作を引き続き実行
DataFrame
できるため、統計を計算し、因果関係の結果のプロットを作成できます。

:code:

do
メソッドは下位レベルの:code:
dowhy
オブジェクトの上に構築されているため、:code:の代わりにグラフを指定すると、グラフを取得して自動的に識別を実行できます
common_causes

詳細については、

Pandas API <https://github.com/microsoft/dowhy/blob/master/docs/source/example_notebooks/dowhy_causal_api.ipynb>
_ノートブックまたは_ノートブックを確認してください
Do Sampler <https://github.com/microsoft/dowhy/blob/master/docs/source/example_notebooks/do_sampler_demo.ipynb>

グラフィカルモデルと潜在的な結果:両方の長所

DoWhyは、因果推論のための2つの最も強力なフレームワークであるグラフィカルモデルと潜在的な結果に基づいて構築されています。仮定をモデル化し、ノンパラメトリックな因果効果を特定するために、グラフベースの基準と微積分を使用します。見積もりでは、主に潜在的な結果に基づく方法に切り替えます。

因果推論のための統一言語

DoWhyは、因果推論のための単純な統一言語に基づいています。因果推論は難しいように思われるかもしれませんが、ほとんどすべての方法は4つの重要なステップに従います。

  1. 仮定を使用して因果推論問題をモデル化します。
  2. これらの仮定の下での因果効果の式を特定します(「因果推定」)。
  3. マッチングや操作変数などの統計的手法を使用して式を推定します。
  4. 最後に、さまざまな堅牢性チェックを使用して、見積もりの​​妥当性を検証します。

このワークフローは、DoWhyの4つの主要な動詞によってキャプチャできます。

  • モデル
  • 識別
  • 見積もり
  • 反論

これらの動詞を使用して、DoWhyはさまざまなメソッドをサポートできる因果推論エンジンを実装します。モデルは事前知識を正式な因果グラフとしてエンコードし、識別はグラフベースの方法を使用して因果効果を識別し、推定
統計的方法を使用して識別された推定値を推定し、最後に反論は仮定に対する頑健性をテストすることによって得られた推定を反駁 しようとします。

利用可能な因果推論ソフトウェアと比較した主な違い

DoWhyは、因果推論に利用可能なソフトウェアと比較して、次の3つの重要な違いをもたらします。

明示的な識別の仮定 仮定は、DoWhyの第一級市民です。

Each analysis starts with a
building a causal model. The assumptions can be viewed graphically or in terms
of conditional independence statements. Wherever possible, DoWhy can also
automatically test for stated assumptions using observed data.

識別と推定の分離 識別が原因の問題です。推定は単に統計的な問題です。

DoWhy
respects this boundary and treats them separately. This focuses the causal
inference effort on identification, and frees up estimation using any
available statistical estimator for a target estimand. In addition, multiple
estimation methods can be used for a single identified_estimand and
vice-versa.

自動化された堅牢性チェック 主要な識別の仮定が満たされない場合はどうなりますか?

The most critical, and often skipped, part of causal analysis is checking the
robustness of an estimate to unverified assumptions. DoWhy makes it easy to
automatically run sensitivity and robustness checks on the obtained estimate.

最後に、DoWhyは簡単に拡張できるため、4つの動詞の他の実装を共存させることができます(たとえば、EconMLおよびCausalMLライブラリからの推定動詞の実装をサポートします)。4つの動詞は相互に独立しているため、それらの実装は任意の方法で組み合わせることができます。

以下は、これらの各動詞の現在の実装に関する詳細です。

因果推論の4つのステップ

I.因果関係の問題をモデル化する

DoWhyは、問題ごとに根本​​的な因果関係のグラフィカルモデルを作成します。これは、各因果関係の仮定を明確にするのに役立ちます。このグラフは完全である必要はありません---いくつかの変数に関する事前知識を表す部分的なグラフを提供できます。DoWhyは、残りの変数を潜在的な交絡因子と自動的に見なします。

現在、DoWhyはグラフ入力に

gml <https://github.com/GunterMueller/UNI_PASSAU_FMI_Graph_Drawing>
_(推奨)と
dot <http://www.graphviz.org/documentation/>
_の2つの形式をサポートしています。networkxでうまく機能するため、入力形式としてgmlを使用することを強くお勧めします。グラフは、.gmlファイルまたは文字列として提供できます。ドット形式を使用する場合は、追加のパッケージをインストールする必要があります(pydotまたはpygraphviz、上記のインストールセクションを参照)。.dotファイルと文字列形式の両方がサポートされています。

推奨されていませんが、グラフを提供する代わりに、一般的な原因や手段を直接指定することもできます。

因果的仮定を指定するためにサポートされている形式

* **Graph**: Provide a causal graph in either gml or dot format. Can be a text file
  or a string.
* **Named variable sets**: Instead of the graph, provide variable names that
  correspond to relevant categories, such as common causes, instrumental variables, effect
  modifiers, frontdoor variables, etc.

Examples of how to instantiate a causal model are in the `Getting Started
<https://github.com/microsoft/dowhy/blob/master/docs/source/example_notebooks/dowhy_simple_example.ipynb>`_
notebook.

.. i comment image:: causal_model.png

II. Identify a target estimand under the model
----------------------------------------------

Based on the causal graph, DoWhy finds all possible ways of identifying a desired causal effect based on
the graphical model. It uses graph-based criteria and do-calculus to find
potential ways find expressions that can identify the causal effect. 

Supported identification criteria
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

* Back-door criterion
* Front-door criterion
* Instrumental Variables
* Mediation (Direct and indirect effect identification)

Different notebooks illustrate how to use these identification criteria. Check
out the `Simple Backdoor <https://github.com/microsoft/dowhy/blob/master/docs/source/example_notebooks/dowhy_confounder_example.ipynb>`_ notebook for the back-door criterion, and the `Simple IV <https://github.com/microsoft/dowhy/blob/master/docs/source/example_notebooks/dowhy-simple-iv-example.ipynb>`_ notebook for the instrumental variable criterion.

III. Estimate causal effect based on the identified estimand
------------------------------------------------------------

DoWhy supports methods based on both back-door criterion and instrumental
variables. It also provides a non-parametric confidence intervals and a permutation test for testing
the statistical significance of obtained estimate. 

Supported estimation methods 
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

* Methods based on estimating the treatment assignment
    * Propensity-based Stratification
    * Propensity Score Matching
    * Inverse Propensity Weighting

* Methods based on estimating the outcome model
    * Linear Regression
    * Generalized Linear Models

* Methods based on the instrumental variable equation
    * Binary Instrument/Wald Estimator
    * Two-stage least squares
    * Regression discontinuity

* Methods for front-door criterion and general mediation
    * Two-stage linear regression

Examples of using these methods are in the `Estimation methods
<https://github.com/microsoft/dowhy/blob/master/docs/source/example_notebooks/dowhy_estimation_methods.ipynb>`_
notebook. 

Using EconML and CausalML estimation methods in DoWhy

DoWhyを使用すると、外部推定メソッドを簡単に呼び出すことができます。

EconML <https://github.com/microsoft/econml>
現在、 _および
CausalML <https://github.com/uber/causalml>
_パッケージとの統合をサポートしています。これは、EconMLの二重機械学習推定量を使用して条件付き治療効果を推定する例です。

..コード::python

from sklearn.preprocessing import PolynomialFeatures
from sklearn.linear_model import LassoCV
from sklearn.ensemble import GradientBoostingRegressor
dml_estimate = model.estimate_effect(identified_estimand, method_name="backdoor.econml.dml.DML",
                    control_value = 0,
                    treatment_value = 1,
                    target_units = lambda df: df["X0"]>1,
                    confidence_intervals=False,
                    method_params={
                        "init_params":{'model_y':GradientBoostingRegressor(),
                                       'model_t': GradientBoostingRegressor(),
                                       'model_final':LassoCV(), 
                                       'featurizer':PolynomialFeatures(degree=1, include_bias=True)},
                        "fit_params":{}}
					)

その他の例は

Conditional Treatment Effects with DoWhy <https://github.com/microsoft/dowhy/blob/master/docs/source/example_notebooks/dowhy-conditional-treatment-effects.ipynb>
_ノートブックにあります。

IV。得られた見積もりに反論する

因果推定量からの効果推定を検証するために複数の反論方法にアクセスできることは、DoWhyを使用する主な利点です。

サポートされている反論方法

* **Add Random Common Cause**: Does the estimation method change its estimate after
  we add an independent random variable as a common cause to the dataset?
  (*Hint: It should not*)
* **Placebo Treatment**: What happens to the estimated causal effect when we
  replace the true treatment variable with an independent random variable?
  (*Hint: the effect should go to zero*)
* **Dummy Outcome**: What happens to the estimated causal effect when we replace
  the true outcome variable with an independent random variable? (*Hint: The
  effect should go to zero*)
* **Simulated Outcome**: What happens to the estimated causal effect when we
  replace the dataset with a simulated dataset based on a known data-generating
  process closest to the given dataset? (*Hint: It should match the effect parameter
  from the data-generating process*)
* **Add Unobserved Common Causes**: How sensitive is the effect estimate when we
  add an additional common cause (confounder) to the dataset that is correlated
  with the treatment and the outcome? (*Hint: It should not be too sensitive*)
* **Data Subsets Validation**: Does the estimated effect change significantly when
  we replace the given dataset with a randomly selected subset? (*Hint: It
  should not*)
* **Bootstrap Validation**: Does the estimated effect change significantly when we 
  replace the given dataset with bootstrapped samples from the same dataset? (*Hint: It should not*)

Examples of using refutation methods are in the `Refutations <https://github.com/microsoft/dowhy/blob/master/docs/source/example_notebooks/dowhy_refuter_notebook.ipynb>`_ notebook. For an advanced refutation that uses a simulated dataset based on user-provided or learnt data-generating processes, check out the `Dummy Outcome Refuter <https://github.com/microsoft/dowhy/blob/master/docs/source/example_notebooks/dowhy_demo_dummy_outcome_refuter.ipynb>`_ notebook. 
As a practical example, `this notebook <https://github.com/microsoft/dowhy/blob/master/docs/source/example_notebooks/dowhy_refutation_testing.ipynb>`_ shows an application of refutation methods on evaluating effect estimators for the Infant Health and Development Program (IHDP) and Lalonde datasets. 

Citing this package
====================
If you find DoWhy useful for your research work, please cite us as follows:

Amit Sharma, Emre Kiciman, et al. DoWhy: A Python package for causal inference. 2019. https://github.com/microsoft/dowhy

Bibtex::

  @misc{dowhy,
  author={Sharma, Amit and Kiciman, Emre and others},
  title={Do{W}hy: {A Python package for causal inference}},
  howpublished={https://github.com/microsoft/dowhy},
  year={2019}
  }

Alternatively, you can cite our Arxiv paper on DoWhy. 

Amit Sharma, Emre Kiciman. DoWhy: An End-to-End Library for Causal Inference. 2020. https://arxiv.org/abs/2011.04216

Bibtex::

  @article{dowhypaper,
  title={DoWhy: An End-to-End Library for Causal Inference},
  author={Sharma, Amit and Kiciman, Emre},
  journal={arXiv preprint arXiv:2011.04216},
  year={2020}
  }

Roadmap 
=======
The `projects <https://github.com/microsoft/dowhy/projects>`_ page lists the next steps for DoWhy. If you would like to contribute, have a look at the current projects. If you have a specific request for DoWhy, please `raise an issue <https://github.com/microsoft/dowhy/issues>`_.

Contributing
============

This project welcomes contributions and suggestions. For a guide to contributing and a list of all contributors, check out `CONTRIBUTING.md <https://github.com/microsoft/dowhy/blob/master/CONTRIBUTING.md>`_. Our contributor code of conduct is available [here](https://github.com/py-why/governance/blob/main/CODE-OF-CONDUCT.md). You can also join the DoWhy development channel on Discord: |discord|_

.. |discord| image:: https://img.shields.io/discord/818456847551168542
.. _discord: https://discord.gg/cSBGb3vsZb