* updated the method signature and docstrings for estimator classes
* bug fixes
* updated the args passing
* fixed the bug in refutation test calls for num_ci_simulations
* used std init args
* updated num simulations to pass weighting test
* updated docstrings to make sure they are in correct format
* Removed output from notebooks
* updated notebooks to fix any bugs
* updated refuter notebook
* updated format
Earlier, DoWhy would automatically add an unobserved variable, but it created confusion.
New behavior:
DoWhy does not add an unobserved variable. User has to provide it.
Identification proceeds as per user-provided graph. Simplified code.
* proceed_when_unidentifiable is redundant. Will be removed in a future version.
* fixed some identification errors with unobserved variables
* removed unobserved c from default graph of datasets.py
* fixed some notebook errors
* added error messages when identification has failed
* Used the d-separation algorithm from networkx
* Updated backdoor identification to be faster
* Refactor code for the new function
* Changed the logic for unobserved confounding to simply remove the unobserved confounder when returning a backdoor set. Simplifies the logic.
PS Stratification needed users to specify both num_strata and clipping_threshold. This PR adds an iterative method to select num_strata automatically given a clipping_threshold. The thumb rule is that the chosen num_strata should lead to at least half of the strata having at least clipping_threshold data points for both treatment and control.
* automatic stratification
* Updated datasets file to take custom std dev for treatment
* Added more noise in treatment in notebooks to simulate a realistic setting
* Updated getting started notebook
* updated sensitivity plots for add common cause refuter
* updated random common cause to include p-value and better docs for notebook
* updated getting started notebook
Checks if effect_modifiers is [] or None in causal_model.py
Fixes a typo in causal graph in member-rewards notebook
removes a top-level import statement for graphviz
* Added identify_vars and different functions to calculate common causes, instruments and effect modifiers
* Added class for Backdoor variable search
* Check for blocked paths during DFS
* Improved memoization
* Added Hitting Set Algorithm to generate backdoor variables per node pair
* Added test file and other changes
* Added 2 more test cases in pytest file
* Added notebook for optimized backdoor identification
* Added docstring
* Add condition to prevent adding colliders to backdoor paths
* Added code for ID Algorithm
* Replaced set and list by OrderedSet
* Need to prepare recursive datastructure for results
* Added function to utils/graph_operations.py
* Added print in a readable fashion
* Updated ID notebook
* IDIdentifier class inherited from CausalIdentifier
* Added initial code for causal discovery example notebook
* Used CDT library for causal discovery. NN based methods not tested yet.
* Made notebook for the Auto-MPG and Sachs dataset
* Added graph refutation to causal discovery example notebook
* Added textual descriptions to causal discovery notebook
* Modified confounder interpreter to work on categorical input and corrected a bug with assigning treatment variable
* Added interpreter example notebook
* Added descriptions for interpreters
* Rectified the SettingWithCopyWarning in confounder distribution interpreter
* Reduced beta to reduce skew in treatment variable
* added estimating_instrument_names support to econml and updated placebo refuter for iv methods.
* fixed bugs and added it to the iv notebook
Signed-off-by: Amit Sharma <amit_sharma@live.com>
* updated dummyoutcome and identifier minor bugs, updated hotel notebook
* causal graph does not add U by its own and identifier does not show all backdoor by default
* updated hotel notebook analysis and removed logging.info from 3 others notebooks
* Updated EconML names and argument parsing.
* Changed EconML namespaces to match v0.8.1. Further name
changes will be implemented in v0.9
* Updated argument parsing. As of v0.9, some `fit` arguments will be
passed in by keyword only
* Updated tests and example notebooks to be compatible with the latest
EconML changes
* Fix Windows compatibility of example notebook
* Point econml dependency to specific branch to debug build failures.
* Account for EconML internal features
* EconML concatenates the common causes W and effect modifiers X
internally so no need to do it explicitly in dowhy.
* EconML has better support for Pandas dataframes so I removed the
casting to numpy array.
* updated econml integration with econml library update
* metalearners are passed the union of common causes and effect modifiers
* Conditional-effects notebook has the new EconML method names
* fixed econml bug for CI intervals,
* removed input prompt from notebooks to enable automatic testing
* added tests for notebooks
* added nbformat, jupyter as req for github actions
* adding jupyter as dependency for workflow runs
* modified readme to be compliant with twine requirements
* updated version to 0.5
* updated docs toc source files, updated notebooks markdown headers, and some docstrings in dowhy code
* updated information about new release
* Added Example Notebook.
Example Notebook demostrating how to use Dowhy to assess the impact of assigning a different room on Hotel Booking Cancellations.
* added support for mediation effects: natural direct effect and natural indirect effect
* Identification is non-parametric, supports confounders for first-stage and second-stage
* Estimation is using a linear model over two stages. TwoStageRegression.
* updated frontdoor code to support common causes of first stage and second stage.
* added jupyter notebook
* fixed test errors
* Backdoor implementation now searches over all possible adjustment sets
* Returns a list of admissible adjustment sets, along with a default (the default is to show the set that covers the maximum number of backdoor paths, and conditions on the maximum number of variables--optimizing for low bias instead of efficiency.
* Changed data structure of IdentifiedEstimand to reflect the above
* As a usability improvement, improved the str output for estimator and identifier
* Updated tests to reflect the changes in identification
[Work in progress]
Support for interpretation of the different objects returned in the dowhy 4-step process.
* CausalModel.interpret()
* CausalEstimate.interpret()
* CausalRefutation.interpret()
Base classes defined for an interpreter, and the two main types of interpreters: TextualInterpreter and VisualInterpreter.
Example implementations of a simple TextualInterpreter that conveys the meaning of an effect estimate, and a Visual PropensityBalanceInterpreter that produces a balance plot for propensity score stratification estimation method.
* added cate estimator to causal estimator and one specific estiamtor for linear regression
* Started with a better error message for estimators that do not support CATE as yet, but then generalized to add error messages for when any specific method is not implemented for an estimator.
* added docstrings for the new functionality
* added a warning if effect modifiers provided are extra from the ones specified before, and fixed a bug for discrete variables
* updated files in prep for release of v0.4
* Effect modifiers can be common causes too. When that occurs, graph shows them as a common cause but they are separately recorded as an effect_modifier too.
* This means that even with graph input to causal model, effect modifiers can be specified.
* updated econml estimator to show a warning whenever x is not a subset of w
* add the ability for custom functions to create dummy outcome
* replace outcome_prediction_function by outcome_function
* fix spelling mistakes in dummy_outcome_refuter
* add type check support
* add test for dummy_outcome_refuter
* example for dummy outcome refuter
A detailed example on how to use the dummy outcome refuter.
* rename the file to match naming convention
* add support for pandas series and dataframes
* add missing pandas dependency
* rename the outcome function
* change the title of the notebook
* convert the title to Camel Case
* fix the p values in the demo
* undo p-value change and fix spellings