Source code for dowhy.gcm.independence_test

from .generalised_cov_measure import generalised_cov_based
from .kernel import approx_kernel_based, kernel_based
from .regression import regression_based


[docs]def independence_test(X, Y, conditioned_on=None, method="kernel", **kwargs): """Performs a (conditional) independence test. Three methods for (conditional) independence test are supported at the moment: * `kernel`: Kernel-based (conditional) independence test. * K. Zhang, J. Peters, D. Janzing, B. Schölkopf. *Kernel-based Conditional Independence Test and Application in Causal Discovery*. UAI'11, Pages 804–813, 2011. * A. Gretton, K. Fukumizu, C.-H. Teo, L. Song, B. Schölkopf, A. Smola. *A Kernel Statistical Test of Independence*. NIPS 21, 2007. Here, we utilize the implementations of the https://github.com/cmu-phil/causal-learn package. * `approx_kernel`: Approximate kernel-based (conditional) independence test. * E. Strobl, K. Zhang, S. Visweswaran. *Approximate kernel-based conditional independence tests for fast non-parametric causal discovery*. Journal of Causal Inference, 2019. * `regression`: Regression based (conditional) independence test using a f-test. See :func:`~dowhy.gcm.regression_based` for more details. * `gcm`: (Conditional) independence test based on the Generalised Covariance Measure. See :func:`~dowhy.gcm.generalised_cov_based` for more details. * R. D. Shah and J Peters. *The hardness of conditional independence testing and the generalised covariance measure*, The Annals of Statistics 48(3), 2018 :param X: Observations of X. :param Y: Observations of Y. :param conditioned_on: Observations of conditioning variable if we want to perform a conditional independence test. By default, independence test is carried out. :param method: Method for conditional independence test. The choices are: `kernel` (default): :func:`~dowhy.gcm.kernel_based` (conditional) independence test. `approx_kernel`: :func:`~dowhy.gcm.approx_kernel_based` (conditional) independence test. `regression`: :func:`~dowhy.gcm.regression_based` (conditional) independence test. `gcm`: :func:`~dowhy.gcm.generalised_cov_based` (conditional) independence test. For more information about these methods, see above. :return: p-value of the (conditional) independence test. (Conditional) Independence is the null hypothesis. """ if method == "kernel": return kernel_based(X, Y, Z=conditioned_on, **kwargs) elif method == "approx_kernel": return approx_kernel_based(X, Y, Z=conditioned_on, **kwargs) elif method == "regression": return regression_based(X, Y, Z=conditioned_on, **kwargs) elif method == "gcm": return generalised_cov_based(X, Y, Z=conditioned_on, **kwargs) else: raise ValueError(f'Invalid method "{method}"')