The TestEstimator and TestRefuter were falsely interpreted as unit test classes due to their "Test" prefix.

Signed-off-by: Patrick Bloebaum <bloebp@amazon.com>
This commit is contained in:
Patrick Bloebaum 2023-12-11 07:41:27 -08:00 коммит произвёл Patrick Blöbaum
Родитель 711e6ba902
Коммит 1f9ee6be46
21 изменённых файлов: 72 добавлений и 96 удалений

Просмотреть файл

@ -5,7 +5,7 @@ from dowhy import EstimandType, identify_effect_auto
from dowhy.graph import build_graph_from_str from dowhy.graph import build_graph_from_str
class TestEstimator(object): class SimpleEstimator(object):
def __init__(self, error_tolerance, Estimator, identifier_method="backdoor"): def __init__(self, error_tolerance, Estimator, identifier_method="backdoor"):
print("Error tolerance is", error_tolerance) print("Error tolerance is", error_tolerance)
self._error_tolerance = error_tolerance self._error_tolerance = error_tolerance

Просмотреть файл

@ -1 +1 @@
from dowhy.causal_estimators.propensity_score_weighting_estimator import PropensityScoreWeightingEstimator

Просмотреть файл

@ -1,6 +1,3 @@
import subprocess
import sys
import pytest import pytest
from pytest import mark from pytest import mark

Просмотреть файл

@ -1,11 +1,10 @@
import itertools
import re import re
import numpy as np import numpy as np
import pandas as pd import pandas as pd
import pytest import pytest
from sklearn.ensemble import GradientBoostingClassifier, GradientBoostingRegressor from sklearn.ensemble import GradientBoostingClassifier, GradientBoostingRegressor
from sklearn.linear_model import LogisticRegression, LogisticRegressionCV from sklearn.linear_model import LogisticRegressionCV
from sklearn.model_selection import train_test_split from sklearn.model_selection import train_test_split
from sklearn.preprocessing import PolynomialFeatures from sklearn.preprocessing import PolynomialFeatures

Просмотреть файл

@ -1,10 +1,9 @@
import pytest
import statsmodels.api as sm import statsmodels.api as sm
from pytest import mark from pytest import mark
from dowhy.causal_estimators.generalized_linear_model_estimator import GeneralizedLinearModelEstimator from dowhy.causal_estimators.generalized_linear_model_estimator import GeneralizedLinearModelEstimator
from .base import TestEstimator from .base import SimpleEstimator
@mark.usefixtures("fixed_seed") @mark.usefixtures("fixed_seed")
@ -59,7 +58,7 @@ class TestGeneralizedLinearModelEstimator(object):
outcome_is_binary, outcome_is_binary,
identifier_method, identifier_method,
): ):
estimator_tester = TestEstimator(error_tolerance, Estimator, identifier_method) estimator_tester = SimpleEstimator(error_tolerance, Estimator, identifier_method)
estimator_tester.average_treatment_effect_testsuite( estimator_tester.average_treatment_effect_testsuite(
num_common_causes=num_common_causes, num_common_causes=num_common_causes,
num_instruments=num_instruments, num_instruments=num_instruments,

Просмотреть файл

@ -5,7 +5,7 @@ from pytest import mark
from dowhy.causal_estimators.instrumental_variable_estimator import InstrumentalVariableEstimator from dowhy.causal_estimators.instrumental_variable_estimator import InstrumentalVariableEstimator
from .base import TestEstimator from .base import SimpleEstimator
@mark.usefixtures("fixed_seed") @mark.usefixtures("fixed_seed")
@ -52,7 +52,7 @@ class TestInstrumentalVariableEstimator(object):
outcome_is_binary, outcome_is_binary,
identifier_method, identifier_method,
): ):
estimator_tester = TestEstimator(error_tolerance, Estimator, identifier_method=identifier_method) estimator_tester = SimpleEstimator(error_tolerance, Estimator, identifier_method=identifier_method)
# Not using testsuite from .base/TestEstimtor, custom code below # Not using testsuite from .base/TestEstimtor, custom code below
args_dict = { args_dict = {
"num_common_causes": num_common_causes, "num_common_causes": num_common_causes,

Просмотреть файл

@ -1,9 +1,8 @@
import pytest
from pytest import mark from pytest import mark
from dowhy.causal_estimators.linear_regression_estimator import LinearRegressionEstimator from dowhy.causal_estimators.linear_regression_estimator import LinearRegressionEstimator
from .base import TestEstimator from .base import SimpleEstimator
@mark.usefixtures("fixed_seed") @mark.usefixtures("fixed_seed")
@ -92,7 +91,7 @@ class TestLinearRegressionEstimator(object):
treatment_is_category, treatment_is_category,
outcome_is_binary, outcome_is_binary,
): ):
estimator_tester = TestEstimator(error_tolerance, Estimator) estimator_tester = SimpleEstimator(error_tolerance, Estimator)
estimator_tester.average_treatment_effect_testsuite( estimator_tester.average_treatment_effect_testsuite(
num_common_causes=num_common_causes, num_common_causes=num_common_causes,
num_instruments=num_instruments, num_instruments=num_instruments,

Просмотреть файл

@ -1,9 +1,8 @@
import pytest
from pytest import mark from pytest import mark
from dowhy.causal_estimators.propensity_score_matching_estimator import PropensityScoreMatchingEstimator from dowhy.causal_estimators.propensity_score_matching_estimator import PropensityScoreMatchingEstimator
from .base import TestEstimator from .base import SimpleEstimator
@mark.usefixtures("fixed_seed") @mark.usefixtures("fixed_seed")
@ -51,7 +50,7 @@ class TestPropensityScoreMatchingEstimator(object):
treatment_is_binary, treatment_is_binary,
outcome_is_binary, outcome_is_binary,
): ):
estimator_tester = TestEstimator(error_tolerance, Estimator) estimator_tester = SimpleEstimator(error_tolerance, Estimator)
estimator_tester.average_treatment_effect_testsuite( estimator_tester.average_treatment_effect_testsuite(
num_common_causes=num_common_causes, num_common_causes=num_common_causes,
num_instruments=num_instruments, num_instruments=num_instruments,

Просмотреть файл

@ -1,9 +1,8 @@
import pytest
from pytest import mark from pytest import mark
from dowhy.causal_estimators.propensity_score_stratification_estimator import PropensityScoreStratificationEstimator from dowhy.causal_estimators.propensity_score_stratification_estimator import PropensityScoreStratificationEstimator
from .base import TestEstimator from .base import SimpleEstimator
@mark.usefixtures("fixed_seed") @mark.usefixtures("fixed_seed")
@ -51,7 +50,7 @@ class TestPropensityScoreStratificationEstimator(object):
treatment_is_binary, treatment_is_binary,
outcome_is_binary, outcome_is_binary,
): ):
estimator_tester = TestEstimator(error_tolerance, Estimator) estimator_tester = SimpleEstimator(error_tolerance, Estimator)
estimator_tester.average_treatment_effect_testsuite( estimator_tester.average_treatment_effect_testsuite(
num_common_causes=num_common_causes, num_common_causes=num_common_causes,
num_instruments=num_instruments, num_instruments=num_instruments,

Просмотреть файл

@ -1,12 +1,8 @@
import numpy as np
import pytest
from pytest import mark from pytest import mark
from sklearn.linear_model import LinearRegression
import dowhy.api
from dowhy.causal_estimators.propensity_score_weighting_estimator import PropensityScoreWeightingEstimator from dowhy.causal_estimators.propensity_score_weighting_estimator import PropensityScoreWeightingEstimator
from .base import TestEstimator from .base import SimpleEstimator
@mark.usefixtures("fixed_seed") @mark.usefixtures("fixed_seed")
@ -54,7 +50,7 @@ class TestPropensityScoreWeightingEstimator(object):
treatment_is_binary, treatment_is_binary,
outcome_is_binary, outcome_is_binary,
): ):
estimator_tester = TestEstimator(error_tolerance, Estimator) estimator_tester = SimpleEstimator(error_tolerance, Estimator)
estimator_tester.average_treatment_effect_testsuite( estimator_tester.average_treatment_effect_testsuite(
num_common_causes=num_common_causes, num_common_causes=num_common_causes,
num_instruments=num_instruments, num_instruments=num_instruments,

Просмотреть файл

@ -1,9 +1,8 @@
import pytest
from pytest import mark from pytest import mark
from dowhy.causal_estimators.regression_discontinuity_estimator import RegressionDiscontinuityEstimator from dowhy.causal_estimators.regression_discontinuity_estimator import RegressionDiscontinuityEstimator
from .base import TestEstimator from .base import SimpleEstimator
@mark.usefixtures("fixed_seed") @mark.usefixtures("fixed_seed")
@ -54,7 +53,7 @@ class TestRegressionDiscontinuityEstimator(object):
outcome_is_binary, outcome_is_binary,
identifier_method, identifier_method,
): ):
estimator_tester = TestEstimator(error_tolerance, Estimator, identifier_method=identifier_method) estimator_tester = SimpleEstimator(error_tolerance, Estimator, identifier_method=identifier_method)
estimator_tester.average_treatment_effect_testsuite( estimator_tester.average_treatment_effect_testsuite(
num_common_causes=num_common_causes, num_common_causes=num_common_causes,
num_instruments=num_instruments, num_instruments=num_instruments,

Просмотреть файл

@ -6,7 +6,7 @@ from pytest import mark
from dowhy import CausalModel from dowhy import CausalModel
from dowhy.causal_estimators.two_stage_regression_estimator import TwoStageRegressionEstimator from dowhy.causal_estimators.two_stage_regression_estimator import TwoStageRegressionEstimator
from .base import TestEstimator from .base import SimpleEstimator
@mark.usefixtures("fixed_seed") @mark.usefixtures("fixed_seed")
@ -57,7 +57,7 @@ class TestTwoStageRegressionEstimator(object):
treatment_is_binary, treatment_is_binary,
outcome_is_binary, outcome_is_binary,
): ):
estimator_tester = TestEstimator(error_tolerance, Estimator, identifier_method="frontdoor") estimator_tester = SimpleEstimator(error_tolerance, Estimator, identifier_method="frontdoor")
estimator_tester.average_treatment_effect_testsuite( estimator_tester.average_treatment_effect_testsuite(
num_common_causes=num_common_causes, num_common_causes=num_common_causes,
num_instruments=num_instruments, num_instruments=num_instruments,
@ -159,7 +159,7 @@ class TestTwoStageRegressionEstimator(object):
], ],
) )
def test_frontdoor_num_variables_error(self, Estimator, num_treatments, num_frontdoor_variables): def test_frontdoor_num_variables_error(self, Estimator, num_treatments, num_frontdoor_variables):
estimator_tester = TestEstimator(error_tolerance=0, Estimator=Estimator, identifier_method="frontdoor") estimator_tester = SimpleEstimator(error_tolerance=0, Estimator=Estimator, identifier_method="frontdoor")
with pytest.raises((ValueError, Exception)): with pytest.raises((ValueError, Exception)):
estimator_tester.average_treatment_effect_testsuite( estimator_tester.average_treatment_effect_testsuite(
num_common_causes=[1, 1], num_common_causes=[1, 1],

Просмотреть файл

@ -4,7 +4,7 @@ import dowhy.datasets
from dowhy import CausalModel from dowhy import CausalModel
class TestRefuter(object): class SimpleRefuter(object):
def __init__( def __init__(
self, self,
error_tolerance, error_tolerance,

Просмотреть файл

@ -5,14 +5,12 @@ import pytest
import statsmodels.api as sm import statsmodels.api as sm
from pytest import mark from pytest import mark
from sklearn.ensemble import GradientBoostingRegressor from sklearn.ensemble import GradientBoostingRegressor
from sklearn.linear_model import LassoCV
from sklearn.preprocessing import PolynomialFeatures
import dowhy.datasets import dowhy.datasets
from dowhy import CausalModel from dowhy import CausalModel
from dowhy.causal_refuters.evalue_sensitivity_analyzer import EValueSensitivityAnalyzer from dowhy.causal_refuters.evalue_sensitivity_analyzer import EValueSensitivityAnalyzer
from .base import TestRefuter from .base import SimpleRefuter
@mark.usefixtures("fixed_seed") @mark.usefixtures("fixed_seed")
@ -26,7 +24,7 @@ class TestAddUnobservedCommonCauseRefuter(object):
def test_refutation_binary_treatment( def test_refutation_binary_treatment(
self, error_tolerance, estimator_method, effect_strength_on_t, effect_strength_on_y self, error_tolerance, estimator_method, effect_strength_on_t, effect_strength_on_y
): ):
refuter_tester = TestRefuter( refuter_tester = SimpleRefuter(
error_tolerance, error_tolerance,
estimator_method, estimator_method,
"add_unobserved_common_cause", "add_unobserved_common_cause",
@ -46,7 +44,7 @@ class TestAddUnobservedCommonCauseRefuter(object):
def test_refutation_continuous_treatment( def test_refutation_continuous_treatment(
self, error_tolerance, estimator_method, effect_strength_on_t, effect_strength_on_y self, error_tolerance, estimator_method, effect_strength_on_t, effect_strength_on_y
): ):
refuter_tester = TestRefuter( refuter_tester = SimpleRefuter(
error_tolerance, error_tolerance,
estimator_method, estimator_method,
"add_unobserved_common_cause", "add_unobserved_common_cause",
@ -67,7 +65,7 @@ class TestAddUnobservedCommonCauseRefuter(object):
def test_refutation_continuous_treatment_range_both_treatment_outcome( def test_refutation_continuous_treatment_range_both_treatment_outcome(
self, mock_fig, error_tolerance, estimator_method, effect_strength_on_t, effect_strength_on_y self, mock_fig, error_tolerance, estimator_method, effect_strength_on_t, effect_strength_on_y
): ):
refuter_tester = TestRefuter( refuter_tester = SimpleRefuter(
error_tolerance, error_tolerance,
estimator_method, estimator_method,
"add_unobserved_common_cause", "add_unobserved_common_cause",
@ -89,7 +87,7 @@ class TestAddUnobservedCommonCauseRefuter(object):
def test_refutation_continuous_treatment_range_treatment( def test_refutation_continuous_treatment_range_treatment(
self, mock_fig, error_tolerance, estimator_method, effect_strength_on_t, effect_strength_on_y self, mock_fig, error_tolerance, estimator_method, effect_strength_on_t, effect_strength_on_y
): ):
refuter_tester = TestRefuter( refuter_tester = SimpleRefuter(
error_tolerance, error_tolerance,
estimator_method, estimator_method,
"add_unobserved_common_cause", "add_unobserved_common_cause",
@ -111,7 +109,7 @@ class TestAddUnobservedCommonCauseRefuter(object):
def test_refutation_continuous_treatment_range_outcome( def test_refutation_continuous_treatment_range_outcome(
self, mock_fig, error_tolerance, estimator_method, effect_strength_on_t, effect_strength_on_y self, mock_fig, error_tolerance, estimator_method, effect_strength_on_t, effect_strength_on_y
): ):
refuter_tester = TestRefuter( refuter_tester = SimpleRefuter(
error_tolerance, error_tolerance,
estimator_method, estimator_method,
"add_unobserved_common_cause", "add_unobserved_common_cause",

Просмотреть файл

@ -1,8 +1,6 @@
import numpy as np
import pytest
from pytest import mark from pytest import mark
from .base import TestRefuter from .base import SimpleRefuter
@mark.usefixtures("fixed_seed") @mark.usefixtures("fixed_seed")
@ -17,14 +15,14 @@ class TestDataSubsetRefuter(object):
["error_tolerance", "estimator_method", "num_samples"], [(0.05, "iv.instrumental_variable", 1000)] ["error_tolerance", "estimator_method", "num_samples"], [(0.05, "iv.instrumental_variable", 1000)]
) )
def test_refutation_bootstrap_refuter_continuous(self, error_tolerance, estimator_method, num_samples): def test_refutation_bootstrap_refuter_continuous(self, error_tolerance, estimator_method, num_samples):
refuter_tester = TestRefuter(error_tolerance, estimator_method, "bootstrap_refuter") refuter_tester = SimpleRefuter(error_tolerance, estimator_method, "bootstrap_refuter")
refuter_tester.continuous_treatment_testsuite(num_samples=num_samples) # Run both refuter_tester.continuous_treatment_testsuite(num_samples=num_samples) # Run both
@mark.parametrize( @mark.parametrize(
["error_tolerance", "estimator_method", "num_samples"], [(0.05, "backdoor.propensity_score_matching", 1000)] ["error_tolerance", "estimator_method", "num_samples"], [(0.05, "backdoor.propensity_score_matching", 1000)]
) )
def test_refutation_bootstrap_refuter_binary(self, error_tolerance, estimator_method, num_samples): def test_refutation_bootstrap_refuter_binary(self, error_tolerance, estimator_method, num_samples):
refuter_tester = TestRefuter(error_tolerance, estimator_method, "bootstrap_refuter") refuter_tester = SimpleRefuter(error_tolerance, estimator_method, "bootstrap_refuter")
refuter_tester.binary_treatment_testsuite(tests_to_run="atleast-one-common-cause", num_samples=num_samples) refuter_tester.binary_treatment_testsuite(tests_to_run="atleast-one-common-cause", num_samples=num_samples)
@mark.parametrize( @mark.parametrize(
@ -34,7 +32,7 @@ class TestDataSubsetRefuter(object):
def test_refutation_bootstrap_refuter_continuous_integer_argument( def test_refutation_bootstrap_refuter_continuous_integer_argument(
self, error_tolerance, estimator_method, num_common_causes, required_variables, num_samples self, error_tolerance, estimator_method, num_common_causes, required_variables, num_samples
): ):
refuter_tester = TestRefuter( refuter_tester = SimpleRefuter(
error_tolerance, error_tolerance,
estimator_method, estimator_method,
"bootstrap_refuter", "bootstrap_refuter",
@ -51,7 +49,7 @@ class TestDataSubsetRefuter(object):
def test_refutation_bootstrap_refuter_continuous_list_argument( def test_refutation_bootstrap_refuter_continuous_list_argument(
self, error_tolerance, estimator_method, num_common_causes, required_variables, num_samples self, error_tolerance, estimator_method, num_common_causes, required_variables, num_samples
): ):
refuter_tester = TestRefuter( refuter_tester = SimpleRefuter(
error_tolerance, estimator_method, "bootstrap_refuter", required_variables=required_variables error_tolerance, estimator_method, "bootstrap_refuter", required_variables=required_variables
) )
refuter_tester.continuous_treatment_testsuite( refuter_tester.continuous_treatment_testsuite(
@ -65,7 +63,7 @@ class TestDataSubsetRefuter(object):
def test_refutation_bootstrap_refuter_binary_integer_argument( def test_refutation_bootstrap_refuter_binary_integer_argument(
self, error_tolerance, estimator_method, num_common_causes, required_variables, num_samples self, error_tolerance, estimator_method, num_common_causes, required_variables, num_samples
): ):
refuter_tester = TestRefuter( refuter_tester = SimpleRefuter(
error_tolerance, estimator_method, "bootstrap_refuter", required_variables=required_variables error_tolerance, estimator_method, "bootstrap_refuter", required_variables=required_variables
) )
refuter_tester.binary_treatment_testsuite( refuter_tester.binary_treatment_testsuite(
@ -79,7 +77,7 @@ class TestDataSubsetRefuter(object):
def test_refutation_bootstrap_refuter_binary_list_argument( def test_refutation_bootstrap_refuter_binary_list_argument(
self, error_tolerance, estimator_method, num_common_causes, required_variables, num_samples self, error_tolerance, estimator_method, num_common_causes, required_variables, num_samples
): ):
refuter_tester = TestRefuter( refuter_tester = SimpleRefuter(
error_tolerance, estimator_method, "bootstrap_refuter", required_variables=required_variables error_tolerance, estimator_method, "bootstrap_refuter", required_variables=required_variables
) )
refuter_tester.binary_treatment_testsuite( refuter_tester.binary_treatment_testsuite(
@ -93,7 +91,7 @@ class TestDataSubsetRefuter(object):
def test_refutation_bootstrap_refuter_continuous_list_negative_argument( def test_refutation_bootstrap_refuter_continuous_list_negative_argument(
self, error_tolerance, estimator_method, num_common_causes, required_variables, num_samples self, error_tolerance, estimator_method, num_common_causes, required_variables, num_samples
): ):
refuter_tester = TestRefuter( refuter_tester = SimpleRefuter(
error_tolerance, estimator_method, "bootstrap_refuter", required_variables=required_variables error_tolerance, estimator_method, "bootstrap_refuter", required_variables=required_variables
) )
refuter_tester.continuous_treatment_testsuite( refuter_tester.continuous_treatment_testsuite(
@ -107,7 +105,7 @@ class TestDataSubsetRefuter(object):
def test_refutation_bootstrap_refuter_binary_list_negative_argument( def test_refutation_bootstrap_refuter_binary_list_negative_argument(
self, error_tolerance, estimator_method, num_common_causes, required_variables, num_samples self, error_tolerance, estimator_method, num_common_causes, required_variables, num_samples
): ):
refuter_tester = TestRefuter( refuter_tester = SimpleRefuter(
error_tolerance, estimator_method, "bootstrap_refuter", required_variables=required_variables error_tolerance, estimator_method, "bootstrap_refuter", required_variables=required_variables
) )
refuter_tester.binary_treatment_testsuite( refuter_tester.binary_treatment_testsuite(

Просмотреть файл

@ -1,17 +1,16 @@
import numpy as np
from pytest import mark from pytest import mark
from .base import TestRefuter from .base import SimpleRefuter
@mark.usefixtures("fixed_seed") @mark.usefixtures("fixed_seed")
class TestDataSubsetRefuter(object): class TestDataSubsetRefuter(object):
@mark.parametrize(["error_tolerance", "estimator_method"], [(0.01, "iv.instrumental_variable")]) @mark.parametrize(["error_tolerance", "estimator_method"], [(0.01, "iv.instrumental_variable")])
def test_refutation_data_subset_refuter_continuous(self, error_tolerance, estimator_method): def test_refutation_data_subset_refuter_continuous(self, error_tolerance, estimator_method):
refuter_tester = TestRefuter(error_tolerance, estimator_method, "data_subset_refuter") refuter_tester = SimpleRefuter(error_tolerance, estimator_method, "data_subset_refuter")
refuter_tester.continuous_treatment_testsuite() # Run both refuter_tester.continuous_treatment_testsuite() # Run both
@mark.parametrize(["error_tolerance", "estimator_method"], [(0.01, "backdoor.propensity_score_matching")]) @mark.parametrize(["error_tolerance", "estimator_method"], [(0.01, "backdoor.propensity_score_matching")])
def test_refutation_data_subset_refuter_binary(self, error_tolerance, estimator_method): def test_refutation_data_subset_refuter_binary(self, error_tolerance, estimator_method):
refuter_tester = TestRefuter(error_tolerance, estimator_method, "data_subset_refuter") refuter_tester = SimpleRefuter(error_tolerance, estimator_method, "data_subset_refuter")
refuter_tester.binary_treatment_testsuite(tests_to_run="atleast-one-common-cause") refuter_tester.binary_treatment_testsuite(tests_to_run="atleast-one-common-cause")

Просмотреть файл

@ -1,10 +1,6 @@
import pdb
import numpy as np
import pytest
from pytest import mark from pytest import mark
from .base import TestRefuter from .base import SimpleRefuter
def simple_linear_outcome_model(X_train, output_train): def simple_linear_outcome_model(X_train, output_train):
@ -17,7 +13,7 @@ def simple_linear_outcome_model(X_train, output_train):
class TestDummyOutcomeRefuter(object): class TestDummyOutcomeRefuter(object):
@mark.parametrize(["error_tolerence", "estimator_method"], [(0.03, "iv.instrumental_variable")]) @mark.parametrize(["error_tolerence", "estimator_method"], [(0.03, "iv.instrumental_variable")])
def test_refutation_dummy_outcome_refuter_default_continuous_treatment(self, error_tolerence, estimator_method): def test_refutation_dummy_outcome_refuter_default_continuous_treatment(self, error_tolerence, estimator_method):
refuter_tester = TestRefuter(error_tolerence, estimator_method, "dummy_outcome_refuter") refuter_tester = SimpleRefuter(error_tolerence, estimator_method, "dummy_outcome_refuter")
refuter_tester.continuous_treatment_testsuite(num_dummyoutcome_simulations=100) refuter_tester.continuous_treatment_testsuite(num_dummyoutcome_simulations=100)
@mark.parametrize( @mark.parametrize(
@ -26,7 +22,7 @@ class TestDummyOutcomeRefuter(object):
def test_refutation_dummy_outcome_refuter_default_binary_treatment( def test_refutation_dummy_outcome_refuter_default_binary_treatment(
self, error_tolerence, estimator_method, num_samples self, error_tolerence, estimator_method, num_samples
): ):
refuter_tester = TestRefuter(error_tolerence, estimator_method, "dummy_outcome_refuter") refuter_tester = SimpleRefuter(error_tolerence, estimator_method, "dummy_outcome_refuter")
refuter_tester.binary_treatment_testsuite(tests_to_run="atleast-one-common-cause", num_samples=num_samples) refuter_tester.binary_treatment_testsuite(tests_to_run="atleast-one-common-cause", num_samples=num_samples)
@mark.parametrize( @mark.parametrize(
@ -36,7 +32,7 @@ class TestDummyOutcomeRefuter(object):
def test_refutation_dummy_outcome_refuter_randomly_generated_continuous_treatment( def test_refutation_dummy_outcome_refuter_randomly_generated_continuous_treatment(
self, error_tolerence, estimator_method, transformations self, error_tolerence, estimator_method, transformations
): ):
refuter_tester = TestRefuter( refuter_tester = SimpleRefuter(
error_tolerence, estimator_method, "dummy_outcome_refuter", transformations=transformations error_tolerence, estimator_method, "dummy_outcome_refuter", transformations=transformations
) )
@ -49,7 +45,7 @@ class TestDummyOutcomeRefuter(object):
def test_refutation_dummy_outcome_refuter_randomly_generated_binary_treatment( def test_refutation_dummy_outcome_refuter_randomly_generated_binary_treatment(
self, error_tolerence, estimator_method, transformations, num_samples self, error_tolerence, estimator_method, transformations, num_samples
): ):
refuter_tester = TestRefuter( refuter_tester = SimpleRefuter(
error_tolerence, estimator_method, "dummy_outcome_refuter", transformations=transformations error_tolerence, estimator_method, "dummy_outcome_refuter", transformations=transformations
) )
@ -62,7 +58,7 @@ class TestDummyOutcomeRefuter(object):
def test_refutation_dummy_outcome_refuter_permute_data_continuous_treatment( def test_refutation_dummy_outcome_refuter_permute_data_continuous_treatment(
self, error_tolerence, estimator_method, transformations self, error_tolerence, estimator_method, transformations
): ):
refuter_tester = TestRefuter( refuter_tester = SimpleRefuter(
error_tolerence, estimator_method, "dummy_outcome_refuter", transformations=transformations error_tolerence, estimator_method, "dummy_outcome_refuter", transformations=transformations
) )
@ -75,7 +71,7 @@ class TestDummyOutcomeRefuter(object):
def test_refutation_dummy_outcome_refuter_permute_data_binary_treatment( def test_refutation_dummy_outcome_refuter_permute_data_binary_treatment(
self, error_tolerence, estimator_method, transformations, num_samples self, error_tolerence, estimator_method, transformations, num_samples
): ):
refuter_tester = TestRefuter( refuter_tester = SimpleRefuter(
error_tolerence, estimator_method, "dummy_outcome_refuter", transformations=transformations error_tolerence, estimator_method, "dummy_outcome_refuter", transformations=transformations
) )
@ -88,7 +84,7 @@ class TestDummyOutcomeRefuter(object):
def test_refutation_dummy_outcome_refuter_custom_function_linear_regression_with_noise_continuous_treatment( def test_refutation_dummy_outcome_refuter_custom_function_linear_regression_with_noise_continuous_treatment(
self, error_tolerence, estimator_method, transformations self, error_tolerence, estimator_method, transformations
): ):
refuter_tester = TestRefuter( refuter_tester = SimpleRefuter(
error_tolerence, estimator_method, "dummy_outcome_refuter", transformations=transformations error_tolerence, estimator_method, "dummy_outcome_refuter", transformations=transformations
) )
refuter_tester.continuous_treatment_testsuite(tests_to_run="atleast-one-common-cause") refuter_tester.continuous_treatment_testsuite(tests_to_run="atleast-one-common-cause")
@ -101,7 +97,7 @@ class TestDummyOutcomeRefuter(object):
def test_refutation_dummy_outcome_refuter_custom_function_linear_regression_with_noise_binary_treatment( def test_refutation_dummy_outcome_refuter_custom_function_linear_regression_with_noise_binary_treatment(
self, error_tolerence, estimator_method, transformations, num_samples self, error_tolerence, estimator_method, transformations, num_samples
): ):
refuter_tester = TestRefuter( refuter_tester = SimpleRefuter(
error_tolerence, estimator_method, "dummy_outcome_refuter", transformations=transformations error_tolerence, estimator_method, "dummy_outcome_refuter", transformations=transformations
) )
refuter_tester.binary_treatment_testsuite(tests_to_run="atleast-one-common-cause", num_samples=num_samples) refuter_tester.binary_treatment_testsuite(tests_to_run="atleast-one-common-cause", num_samples=num_samples)
@ -119,7 +115,7 @@ class TestDummyOutcomeRefuter(object):
def test_refutation_dummy_outcome_refuter_custom_function_linear_regression_with_permute_continuous_treatment( def test_refutation_dummy_outcome_refuter_custom_function_linear_regression_with_permute_continuous_treatment(
self, error_tolerence, estimator_method, transformations self, error_tolerence, estimator_method, transformations
): ):
refuter_tester = TestRefuter( refuter_tester = SimpleRefuter(
error_tolerence, estimator_method, "dummy_outcome_refuter", transformations=transformations error_tolerence, estimator_method, "dummy_outcome_refuter", transformations=transformations
) )
refuter_tester.continuous_treatment_testsuite(tests_to_run="atleast-one-common-cause") refuter_tester.continuous_treatment_testsuite(tests_to_run="atleast-one-common-cause")
@ -139,7 +135,7 @@ class TestDummyOutcomeRefuter(object):
def test_refutation_dummy_outcome_refuter_custom_function_linear_regression_with_permute_binary_treatment( def test_refutation_dummy_outcome_refuter_custom_function_linear_regression_with_permute_binary_treatment(
self, error_tolerence, estimator_method, transformations, num_samples self, error_tolerence, estimator_method, transformations, num_samples
): ):
refuter_tester = TestRefuter( refuter_tester = SimpleRefuter(
error_tolerence, estimator_method, "dummy_outcome_refuter", transformations=transformations error_tolerence, estimator_method, "dummy_outcome_refuter", transformations=transformations
) )
refuter_tester.binary_treatment_testsuite(tests_to_run="atleast-one-common-cause", num_samples=num_samples) refuter_tester.binary_treatment_testsuite(tests_to_run="atleast-one-common-cause", num_samples=num_samples)
@ -151,7 +147,7 @@ class TestDummyOutcomeRefuter(object):
def test_refutation_dummy_outcome_refuter_internal_linear_regression_continuous_treatment( def test_refutation_dummy_outcome_refuter_internal_linear_regression_continuous_treatment(
self, error_tolerence, estimator_method, transformations self, error_tolerence, estimator_method, transformations
): ):
refuter_tester = TestRefuter( refuter_tester = SimpleRefuter(
error_tolerence, estimator_method, "dummy_outcome_refuter", transformations=transformations error_tolerence, estimator_method, "dummy_outcome_refuter", transformations=transformations
) )
refuter_tester.continuous_treatment_testsuite(tests_to_run="atleast-one-common-cause") refuter_tester.continuous_treatment_testsuite(tests_to_run="atleast-one-common-cause")
@ -170,7 +166,7 @@ class TestDummyOutcomeRefuter(object):
def test_refutation_dummy_outcome_refuter_internal_linear_regression_binary_treatment( def test_refutation_dummy_outcome_refuter_internal_linear_regression_binary_treatment(
self, error_tolerence, estimator_method, transformations, num_samples self, error_tolerence, estimator_method, transformations, num_samples
): ):
refuter_tester = TestRefuter( refuter_tester = SimpleRefuter(
error_tolerence, estimator_method, "dummy_outcome_refuter", transformations=transformations error_tolerence, estimator_method, "dummy_outcome_refuter", transformations=transformations
) )
refuter_tester.binary_treatment_testsuite(tests_to_run="atleast-one-common-cause", num_samples=num_samples) refuter_tester.binary_treatment_testsuite(tests_to_run="atleast-one-common-cause", num_samples=num_samples)
@ -182,7 +178,7 @@ class TestDummyOutcomeRefuter(object):
def test_refutation_dummy_outcome_refuter_internal_knn_continuous_treatment( def test_refutation_dummy_outcome_refuter_internal_knn_continuous_treatment(
self, error_tolerence, estimator_method, transformations self, error_tolerence, estimator_method, transformations
): ):
refuter_tester = TestRefuter( refuter_tester = SimpleRefuter(
error_tolerence, estimator_method, "dummy_outcome_refuter", transformations=transformations error_tolerence, estimator_method, "dummy_outcome_refuter", transformations=transformations
) )
refuter_tester.continuous_treatment_testsuite(tests_to_run="atleast-one-common-cause") refuter_tester.continuous_treatment_testsuite(tests_to_run="atleast-one-common-cause")
@ -201,7 +197,7 @@ class TestDummyOutcomeRefuter(object):
def test_refutation_dummy_outcome_refuter_internal_knn_binary_treatment( def test_refutation_dummy_outcome_refuter_internal_knn_binary_treatment(
self, error_tolerence, estimator_method, transformations, num_samples self, error_tolerence, estimator_method, transformations, num_samples
): ):
refuter_tester = TestRefuter( refuter_tester = SimpleRefuter(
error_tolerence, estimator_method, "dummy_outcome_refuter", transformations=transformations error_tolerence, estimator_method, "dummy_outcome_refuter", transformations=transformations
) )
refuter_tester.binary_treatment_testsuite(tests_to_run="atleast-one-common-cause", num_samples=num_samples) refuter_tester.binary_treatment_testsuite(tests_to_run="atleast-one-common-cause", num_samples=num_samples)
@ -220,7 +216,7 @@ class TestDummyOutcomeRefuter(object):
def test_refutation_dummy_outcome_refuter_internal_svm_continuous_treatment( def test_refutation_dummy_outcome_refuter_internal_svm_continuous_treatment(
self, error_tolerence, estimator_method, transformations, num_samples self, error_tolerence, estimator_method, transformations, num_samples
): ):
refuter_tester = TestRefuter( refuter_tester = SimpleRefuter(
error_tolerence, estimator_method, "dummy_outcome_refuter", transformations=transformations error_tolerence, estimator_method, "dummy_outcome_refuter", transformations=transformations
) )
refuter_tester.continuous_treatment_testsuite(num_samples=num_samples, tests_to_run="atleast-one-common-cause") refuter_tester.continuous_treatment_testsuite(num_samples=num_samples, tests_to_run="atleast-one-common-cause")
@ -239,7 +235,7 @@ class TestDummyOutcomeRefuter(object):
def test_refutation_dummy_outcome_refuter_internal_svm_binary_treatment( def test_refutation_dummy_outcome_refuter_internal_svm_binary_treatment(
self, error_tolerence, estimator_method, transformations, num_samples self, error_tolerence, estimator_method, transformations, num_samples
): ):
refuter_tester = TestRefuter( refuter_tester = SimpleRefuter(
error_tolerence, estimator_method, "dummy_outcome_refuter", transformations=transformations error_tolerence, estimator_method, "dummy_outcome_refuter", transformations=transformations
) )
refuter_tester.binary_treatment_testsuite(num_samples=num_samples, tests_to_run="atleast-one-common-cause") refuter_tester.binary_treatment_testsuite(num_samples=num_samples, tests_to_run="atleast-one-common-cause")
@ -258,7 +254,7 @@ class TestDummyOutcomeRefuter(object):
def test_refutation_dummy_outcome_refuter_internal_random_forest_continuous_treatment( def test_refutation_dummy_outcome_refuter_internal_random_forest_continuous_treatment(
self, error_tolerence, estimator_method, transformations, num_samples self, error_tolerence, estimator_method, transformations, num_samples
): ):
refuter_tester = TestRefuter( refuter_tester = SimpleRefuter(
error_tolerence, estimator_method, "dummy_outcome_refuter", transformations=transformations error_tolerence, estimator_method, "dummy_outcome_refuter", transformations=transformations
) )
refuter_tester.continuous_treatment_testsuite(num_samples, tests_to_run="atleast-one-common-cause") refuter_tester.continuous_treatment_testsuite(num_samples, tests_to_run="atleast-one-common-cause")
@ -277,7 +273,7 @@ class TestDummyOutcomeRefuter(object):
def test_refutation_dummy_outcome_refuter_internal_random_forest_binary_treatment( def test_refutation_dummy_outcome_refuter_internal_random_forest_binary_treatment(
self, error_tolerence, estimator_method, transformations, num_samples self, error_tolerence, estimator_method, transformations, num_samples
): ):
refuter_tester = TestRefuter( refuter_tester = SimpleRefuter(
error_tolerence, estimator_method, "dummy_outcome_refuter", transformations=transformations error_tolerence, estimator_method, "dummy_outcome_refuter", transformations=transformations
) )
refuter_tester.binary_treatment_testsuite(num_samples, tests_to_run="atleast-one-common-cause") refuter_tester.binary_treatment_testsuite(num_samples, tests_to_run="atleast-one-common-cause")
@ -300,7 +296,7 @@ class TestDummyOutcomeRefuter(object):
def test_refutation_dummy_outcome_refuter_internal_neural_network_continuous_treatment( def test_refutation_dummy_outcome_refuter_internal_neural_network_continuous_treatment(
self, error_tolerence, estimator_method, transformations self, error_tolerence, estimator_method, transformations
): ):
refuter_tester = TestRefuter( refuter_tester = SimpleRefuter(
error_tolerence, estimator_method, "dummy_outcome_refuter", transformations=transformations error_tolerence, estimator_method, "dummy_outcome_refuter", transformations=transformations
) )
refuter_tester.continuous_treatment_testsuite(tests_to_run="atleast-one-common-cause") refuter_tester.continuous_treatment_testsuite(tests_to_run="atleast-one-common-cause")
@ -323,7 +319,7 @@ class TestDummyOutcomeRefuter(object):
def test_refutation_dummy_outcome_refuter_internal_neural_network_binary_treatment( def test_refutation_dummy_outcome_refuter_internal_neural_network_binary_treatment(
self, error_tolerence, estimator_method, transformations, num_samples self, error_tolerence, estimator_method, transformations, num_samples
): ):
refuter_tester = TestRefuter( refuter_tester = SimpleRefuter(
error_tolerence, estimator_method, "dummy_outcome_refuter", transformations=transformations error_tolerence, estimator_method, "dummy_outcome_refuter", transformations=transformations
) )
refuter_tester.binary_treatment_testsuite(num_samples=num_samples, tests_to_run="atleast-one-common-cause") refuter_tester.binary_treatment_testsuite(num_samples=num_samples, tests_to_run="atleast-one-common-cause")

Просмотреть файл

@ -1,12 +1,10 @@
import random import random
import pandas as pd
import pytest
from pytest import mark from pytest import mark
import dowhy.datasets import dowhy.datasets
from .base import TestRefuter from .base import SimpleRefuter
@mark.usefixtures("fixed_seed") @mark.usefixtures("fixed_seed")
@ -15,21 +13,21 @@ class TestPlaceboRefuter(object):
["error_tolerance", "estimator_method", "num_samples"], [(0.03, "backdoor.linear_regression", 1000)] ["error_tolerance", "estimator_method", "num_samples"], [(0.03, "backdoor.linear_regression", 1000)]
) )
def test_refutation_placebo_refuter_continuous(self, error_tolerance, estimator_method, num_samples): def test_refutation_placebo_refuter_continuous(self, error_tolerance, estimator_method, num_samples):
refuter_tester = TestRefuter(error_tolerance, estimator_method, "placebo_treatment_refuter") refuter_tester = SimpleRefuter(error_tolerance, estimator_method, "placebo_treatment_refuter")
refuter_tester.continuous_treatment_testsuite(num_samples=num_samples) # Run both refuter_tester.continuous_treatment_testsuite(num_samples=num_samples) # Run both
@mark.parametrize( @mark.parametrize(
["error_tolerance", "estimator_method", "num_samples"], [(0.1, "backdoor.propensity_score_matching", 5000)] ["error_tolerance", "estimator_method", "num_samples"], [(0.1, "backdoor.propensity_score_matching", 5000)]
) )
def test_refutation_placebo_refuter_binary(self, error_tolerance, estimator_method, num_samples): def test_refutation_placebo_refuter_binary(self, error_tolerance, estimator_method, num_samples):
refuter_tester = TestRefuter(error_tolerance, estimator_method, "placebo_treatment_refuter") refuter_tester = SimpleRefuter(error_tolerance, estimator_method, "placebo_treatment_refuter")
refuter_tester.binary_treatment_testsuite(tests_to_run="atleast-one-common-cause", num_samples=num_samples) refuter_tester.binary_treatment_testsuite(tests_to_run="atleast-one-common-cause", num_samples=num_samples)
@mark.parametrize( @mark.parametrize(
["error_tolerance", "estimator_method", "num_samples"], [(0.1, "backdoor.linear_regression", 5000)] ["error_tolerance", "estimator_method", "num_samples"], [(0.1, "backdoor.linear_regression", 5000)]
) )
def test_refutation_placebo_refuter_category(self, error_tolerance, estimator_method, num_samples): def test_refutation_placebo_refuter_category(self, error_tolerance, estimator_method, num_samples):
refuter_tester = TestRefuter(error_tolerance, estimator_method, "placebo_treatment_refuter") refuter_tester = SimpleRefuter(error_tolerance, estimator_method, "placebo_treatment_refuter")
refuter_tester.categorical_treatment_testsuite(tests_to_run="atleast-one-common-cause", num_samples=num_samples) refuter_tester.categorical_treatment_testsuite(tests_to_run="atleast-one-common-cause", num_samples=num_samples)
@mark.parametrize( @mark.parametrize(
@ -38,7 +36,7 @@ class TestPlaceboRefuter(object):
def test_refutation_placebo_refuter_category_non_consecutive_index( def test_refutation_placebo_refuter_category_non_consecutive_index(
self, error_tolerance, estimator_method, num_samples self, error_tolerance, estimator_method, num_samples
): ):
refuter_tester = TestRefuter(error_tolerance, estimator_method, "placebo_treatment_refuter") refuter_tester = SimpleRefuter(error_tolerance, estimator_method, "placebo_treatment_refuter")
data = dowhy.datasets.linear_dataset( data = dowhy.datasets.linear_dataset(
beta=10, beta=10,
num_common_causes=1, num_common_causes=1,

Просмотреть файл

@ -123,7 +123,7 @@ def test_given_continuous_and_categorical_variables_when_get_noise_dependent_fun
X1 = np.random.choice(2, 1000).astype(str) X1 = np.random.choice(2, 1000).astype(str)
X2 = [] X2 = []
for (x0, x1) in zip(X0, X1): for x0, x1 in zip(X0, X1):
if x1 == "0": if x1 == "0":
x = np.random.normal(0, 1) x = np.random.normal(0, 1)
else: else:

Просмотреть файл

@ -43,11 +43,11 @@ def test_when_fitting_normal_scipy_distribution_then_it_should_return_correctly_
def test_given_gaussian_data_when_fitting_scipy_distribution_automatically_then_it_should_return_correctly_fitted_parameter_values(): def test_given_gaussian_data_when_fitting_scipy_distribution_automatically_then_it_should_return_correctly_fitted_parameter_values():
distribution = ScipyDistribution() distribution = ScipyDistribution()
X = np.random.normal(0, 1, 1000) X = np.random.normal(0, 1, 5000)
distribution.fit(X) distribution.fit(X)
assert np.mean(distribution.draw_samples(1000)) == approx(0, abs=0.1) assert np.mean(distribution.draw_samples(1000)) == approx(0, abs=0.2)
assert np.std(distribution.draw_samples(1000)) == approx(1, abs=0.1) assert np.std(distribution.draw_samples(1000)) == approx(1, abs=0.2)
def test_when_drawing_samples_from_empirical_distribution_then_all_samples_should_be_present_in_the_data(): def test_when_drawing_samples_from_empirical_distribution_then_all_samples_should_be_present_in_the_data():
@ -74,9 +74,9 @@ def test_when_fitting_scipy_distribution_with_normal_distribution_then_it_should
@flaky(max_runs=5) @flaky(max_runs=5)
def test_when_fitting_scipy_distribution_with_beta_distribution_then_it_should_return_correctly_fitted_parameter_values(): def test_when_fitting_scipy_distribution_with_beta_distribution_then_it_should_return_correctly_fitted_parameter_values():
distribution = ScipyDistribution(stats.beta) distribution = ScipyDistribution(stats.beta)
distribution.fit(ScipyDistribution(stats.beta, a=2, b=0.5).draw_samples(10000)) distribution.fit(ScipyDistribution(stats.beta, a=2, b=2).draw_samples(10000))
assert distribution.parameters["loc"] == approx(0, abs=0.1) assert distribution.parameters["loc"] == approx(0, abs=0.1)
assert distribution.parameters["scale"] == approx(1, abs=0.1) assert distribution.parameters["scale"] == approx(1, abs=0.1)
assert distribution.parameters["a"] == approx(2, abs=0.5) assert distribution.parameters["a"] == approx(2, abs=0.5)
assert distribution.parameters["b"] == approx(0.5, abs=0.5) assert distribution.parameters["b"] == approx(2, abs=0.5)

Просмотреть файл

@ -100,7 +100,7 @@ def test_given_categorical_variables_when_draw_interventional_samples_then_retur
X1 = np.random.choice(2, 5000).astype(str) X1 = np.random.choice(2, 5000).astype(str)
X2 = [] X2 = []
for (x0, x1) in zip(X0, X1): for x0, x1 in zip(X0, X1):
if x1 == "0": if x1 == "0":
X2.append(x0 + 2 > 0) X2.append(x0 + 2 > 0)
else: else: