{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "## Ranking of estimation methods for a given dataset " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We illustrate the comparison of various estimation methods for a given datasets by ranking them according to their performance against refutation tests accounting for both the observed unmodelled confounding error and unobserved confounding error. " ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "# Importing all the required libraries\n", "import sys\n", "import argparse\n", "import xgboost\n", "import numpy as np\n", "import pandas as pd\n", "import os\n", "import pdb\n", "import random\n", "from xgboost import XGBRegressor\n", "from sklearn.preprocessing import PolynomialFeatures\n", "from sklearn.linear_model import LassoCV\n", "from sklearn.ensemble import RandomForestRegressor, RandomForestClassifier, GradientBoostingRegressor\n", "from sklearn.linear_model import LogisticRegressionCV\n", "from sklearn.metrics import mean_absolute_error\n", "from dowhy import CausalModel\n", "from datetime import datetime\n", "from collections import namedtuple\n", "\n", "import statsmodels.api as sm\n", "from sklearn import linear_model\n", "\n", "import dowhy\n", "from dowhy.utils import dgp\n", "from dowhy.utils.dgps.linear_dgp import LinearDataGeneratingProcess\n", "from dowhy import CausalModel\n", "from datetime import datetime\n", "from collections import namedtuple\n", "from dowhy.causal_refuters.add_unobserved_common_cause import AddUnobservedCommonCause\n", "\n", "import matplotlib.pyplot as plt\n", "import matplotlib.lines as mlines\n", "import matplotlib.transforms as mtransforms\n", "\n", "# Config dict to set the logging level\n", "import logging.config\n", "DEFAULT_LOGGING = {\n", " 'version': 1,\n", " 'disable_existing_loggers': False,\n", " 'loggers': {\n", " '': {\n", " 'level': 'WARN',\n", " },\n", " }\n", "}\n", "\n", "logging.config.dictConfig(DEFAULT_LOGGING)\n", "# Disabling warnings output\n", "import warnings\n", "from sklearn.exceptions import DataConversionWarning, ConvergenceWarning\n", "warnings.filterwarnings(action='ignore', category=DataConversionWarning)\n", "warnings.filterwarnings(action='ignore', category=ConvergenceWarning)\n" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "def convert_singleton_to_float(arr):\n", " '''Helper function.'''\n", " array = []\n", "\n", " if len(arr) == 1 and type(arr[0]) != np.ndarray:\n", " return arr[0]\n", "\n", " for element in arr:\n", " while type(element) == np.ndarray or isinstance(element, list) :\n", " if len(element) > 1:\n", " raise ValueError(\"This script only accepts one value for the refute\")\n", " element = element[0]\n", " array.append(element)\n", "\n", " return array" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "def ensure_dir(file_path):\n", " directory = os.path.dirname(file_path)\n", " if not os.path.exists(directory):\n", " os.makedirs(directory)\n", "\n", "RESULTSFOLDER = \"results/\"\n", "ensure_dir(RESULTSFOLDER)\n", "# Create the estimator named tuple to wrap the name and properties\n", "Estimator = namedtuple('Estimator', ['name','params'])\n", "Refuter = namedtuple('Refuter', ['name','params'])\n", "\n", "class Experiment():\n", " '''\n", " Class to define the experiment setup to compare a list of estimators across a list of refuters for the given dataset. \n", " '''\n", " def __init__(self, **kwargs):\n", " self.experiment_name = kwargs['experiment_name']\n", " self.experiment_id = kwargs['experiment_id']\n", " self.num_experiments = kwargs['num_experiments']\n", " self.sample_sizes = kwargs['sample_sizes']\n", " self.dgps = kwargs['dgps']\n", " self.estimators = kwargs['estimators']\n", " self.refuters = kwargs['refuters']\n", " self.results = []\n", " self.simulate_unobserved_confounding = kwargs[\"simulate_unobserved_confounding\"]\n", "\n", " # Handle input errors in sample_sizes\n", " if isinstance(self.sample_sizes, list) == False:\n", " if type(self.sample_sizes) != int:\n", " raise ValueError('The input to \"sample_sizes\" should be an int or a list')\n", " else:\n", " self.sample_sizes = [self.sample_sizes]\n", "\n", " # Handle input errors in DGPs\n", " if isinstance(self.dgps, list) == False:\n", " if isinstance(self.dgps, DataGeneratingProcess) == False:\n", " raise ValueError('The input to \"dgps\" should be a list or a subclass of \"DataGeneratingProcess\"')\n", " else:\n", " self.dgps = [self.dgps]\n", "\n", " # Handle inputs errors in estimators\n", " if isinstance(self.estimators, list) == False:\n", " if isinstance(self.estimators, Estimator) == False:\n", " raise ValueError('The input to \"estimators\" should be a list or an Estimator namedtuple')\n", " else:\n", " self.estimators = [self.estimators]\n", "\n", " # Handle input errors in refuters\n", " if isinstance(self.refuters, list) == False:\n", " if isinstance(self.refuters, Refuter) == False:\n", " raise ValueError('The input to \"refuters\" should be a list of a Refuter namedtuple')\n", " else:\n", " self.refuters = [self.refuters]\n", "\n", " def experiment(self):\n", " print(\"\\n\\nRunning Experiment:\",self.experiment_name + '_' + str(self.experiment_id) )\n", "\n", " for exp in range(self.num_experiments):\n", " print(\"\\n\\nRunning Experiment Number:\",exp)\n", "\n", " for sample_size in self.sample_sizes:\n", "\n", " print(\"\\n\\nCurrent Sample Size:\",sample_size)\n", "\n", " for dgp in self.dgps:\n", " print(\"\\n\\nThe current DGP:\")\n", " print(dgp)\n", " estimates = []\n", " estimate_values = []\n", " estimated_effect = []\n", " new_effect = []\n", " p_value = []\n", " data = dgp.generate_data(sample_size)\n", " print(\"printing data shape\")\n", " print(data.values.shape)\n", " print(dgp.true_value)\n", " print(\"check\")\n", " if dgp.treatment_is_binary:\n", " data[dgp.treatment] = data[dgp.treatment].astype(bool)\n", " #k = len(dgp.confounder)-4\n", " #confounder_list = random.sample(dgp.confounder, k)\n", " confounder_list = ['w2','w3']\n", "\n", " \n", " s = set(confounder_list)\n", " unobserved_confounders = [x for x in dgp.confounder if x not in s]\n", " df_unobserved_confounders = pd.DataFrame(data = data[[c for c in data.columns if c in unobserved_confounders]])\n", "\n", " df_unobserved_confounders.to_csv(\"results/unobserved_confounders.csv\")\n", " print(\"printing length of confounder list:\", len(confounder_list))\n", " print(\"printing confounder list:\", confounder_list)\n", "\n", " \n", "\n", " print(\"data columns\")\n", " \n", " print(\"data columns\", data.columns)\n", " model = CausalModel(\n", " data = data,\n", " treatment = dgp.treatment,\n", " outcome = dgp.outcome,\n", " common_causes = confounder_list,\n", " effect_modifiers = dgp.effect_modifier\n", " )\n", "\n", " identified_estimand = model.identify_effect(proceed_when_unidentifiable=True)\n", " \n", " print(\"identified_estimand:\", identified_estimand)\n", " #print(\"identified_estimand:\", identified_estimand)\n", " print(\"\\n\\nRunning the estimators:\\n\")\n", " for estimator in self.estimators:\n", " print(\"The current estimator:\", estimator)\n", " print(\"estimator.params\", estimator.params)\n", " estimate = model.estimate_effect(\n", " identified_estimand,\n", " method_name = estimator.name,\n", " method_params = estimator.params\n", " )\n", " print(\"printing estimate's type\")\n", " print(type(estimate))\n", " estimates.append(estimate)\n", " estimate_values.append(estimate.value)\n", " estimate_values = convert_singleton_to_float(estimate_values)\n", " print(\"estimate_values\", estimate_values)\n", " print(\"\\n\\nRunning the refuters:\\n\")\n", " for refuter in self.refuters:\n", " print(\"The current refuter:\", refuter)\n", " \n", " for estimate in estimates:\n", " if self.simulate_unobserved_confounding == True:\n", " print(\"********%%%%%%%%%$$$$$&&^**^^^^*^*^*\")\n", " if refuter.name == 'dummy_outcome_refuter':\n", " add_unobserved_confounder = AddUnobservedCommonCause(data, identified_estimand, estimate)\n", " print(\"add_unobserved_confounder\", add_unobserved_confounder)\n", " unobserved_confounder_values = add_unobserved_confounder.include_simulated_confounder(convergence_threshold = 0.11, c_star_max = 1500)\n", " refuter.params['unobserved_confounder_values'] = unobserved_confounder_values\n", " print('refuter.params', refuter.params)\n", " refute = model.refute_estimate(\n", " identified_estimand,\n", " estimate,\n", " method_name = refuter.name,\n", " **refuter.params,\n", " \n", " \n", "\n", " )\n", " print(\"printing refute's type\")\n", " print(type(refute))\n", " if(refuter.name == 'dummy_outcome_refuter'):\n", " refute = refute[0]\n", " if refute.refutation_result is not None:\n", " p_value.append(refute.refutation_result['p_value'])\n", " else:\n", " p_value.append(None) \n", "\n", " estimated_effect.append(refute.estimated_effect)\n", " #print(\"refute.estimate_effect()\", refute.estimate_effect())\n", " new_effect.append(refute.new_effect)\n", "\n", " estimated_effect = convert_singleton_to_float(estimated_effect)\n", " new_effect = convert_singleton_to_float(new_effect)\n", " p_value = convert_singleton_to_float(p_value)\n", " true_value = convert_singleton_to_float(dgp.true_value)\n", " \n", " print(\"estimated effect\", estimated_effect)\n", " print(\"new_effect\", new_effect)\n", " print(\"p_value\", p_value)\n", " print(\"true value\", true_value)\n", " self.results.append([exp, sample_size, dgp.NAME, *estimate_values, *estimated_effect, *new_effect, *p_value, true_value])\n", "\n", "\n", " print(\"\\n\\nCompleted all experiments. Saving the data...\")\n", "\n", " COLUMNS = ['EXPERIMENT', 'SAMPLE_SIZE', 'DGP']\n", " RESULT_CATEGORIES = ['ESTIMATED_EFFECT', 'NEW_EFFECT', 'P_VALUE']\n", " estimator_names = [estimator.name for estimator in self.estimators]\n", " refuter_names = [refuter.name for refuter in self.refuters]\n", "\n", " for estimator_name in estimator_names:\n", " COLUMNS += ['ORIGINAL_ESTIMATE'+ ':' + estimator_name]\n", "\n", " for result_category in RESULT_CATEGORIES:\n", " for refuter_name in refuter_names:\n", " for estimator_name in estimator_names:\n", " COLUMNS += [refuter_name + ':' + estimator_name + ':' + result_category]\n", "\n", " COLUMNS += ['TRUE_VALUE']\n", "\n", " csv_file = RESULTSFOLDER + self.experiment_name+ '_' + str(self.experiment_id) + '_' + str(datetime.utcnow().date()) + '_data.csv'\n", " onlyres_csv_file = RESULTSFOLDER + \"onlyres_\"+ self.experiment_name+ '_' + str(self.experiment_id) + '_' + str(datetime.utcnow()) + '_data.csv'\n", " self.results = pd.DataFrame(data=self.results,columns=COLUMNS)\n", " self.results.to_csv(csv_file.replace(\" \", \"\"), index=False)\n", "\n", " print(\"Data has been saved in \",csv_file)\n", "\n", " return csv_file" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "#Defining the Data Generating Process \n", "ldgp = LinearDataGeneratingProcess(treatment=['t1'], outcome=['y'], confounder=['w1','w2', 'w3','w4','w5','w6'], effect_modifier=['x1','x2'], seed=None, treatment_is_binary=True)\n", "\n", "#Defining the sample size \n", "sample_size = 1000\n", "\n", "dgp_dict = {'ldgp':ldgp}\n", "dgp_list = []\n", "dgp_list.append( dgp_dict['ldgp'] )\n", "\n", "\n", "# Create a namedtuple to store the name of the estimator and the parameters passed\n", "estimator_list = [\"backdoor.linear_regression\",\n", " #\"backdoor.propensity_score_stratification\",\n", " \"backdoor.propensity_score_matching\",\n", " \"backdoor.propensity_score_weighting\",\n", " \"backdoor.econml.dml.DML\",\n", " \"backdoor.econml.dr.LinearDRLearner\",\n", " #\"backdoor.econml.metalearners.TLearner\",\n", " #\"backdoor.econml.metalearners.XLearner\",\n", " #\"backdoor.causalml.inference.meta.LRSRegressor\",\n", " #\"backdoor.causalml.inference.meta.XGBTRegressor\",\n", " #\"backdoor.causalml.inference.meta.MLPTRegressor\",\n", " #\"backdoor.causalml.inference.meta.BaseXRegressor\"\n", " ]\n", "method_params= [ None,\n", " #None,\n", " { \"init_params\":{} },\n", " { \"init_params\":{} },\n", " {\"init_params\":{'model_y':GradientBoostingRegressor(),\n", " 'model_t': GradientBoostingRegressor(),\n", " \"model_final\":LassoCV(fit_intercept=False),\n", " 'featurizer':PolynomialFeatures(degree=1, include_bias=True)},\n", " \"fit_params\":{}},\n", " {\"init_params\":{ 'model_propensity': LogisticRegressionCV(cv=3, solver='lbfgs', multi_class='auto'),\n", " },\n", " \"fit_params\":{}\n", " },\n", " '''{\"init_params\": {'models': GradientBoostingRegressor(n_estimators=100, max_depth=6, min_samples_leaf=int(sample_size/100))\n", " },\n", " \"fit_params\":{}\n", " },\n", " {\"init_params\":{'models': GradientBoostingRegressor(n_estimators=100, max_depth=6, min_samples_leaf=int(sample_size/100)),\n", " 'propensity_model': RandomForestClassifier(n_estimators=100, max_depth=6,\n", " min_samples_leaf=int(sample_size/100))\n", " },\n", " \"fit_params\":{}\n", " },\n", " {\"init_params\":{},},\n", " {\"init_params\":{\n", " 'learner':XGBRegressor()\n", " }\n", " }'''\n", " ]\n", "estimator_tuples = []\n", "refuter_tuples = []\n", "\n", "refuter_list = ['dummy_outcome_refuter']\n", "refuter_params = [{'num_simulations':5,'transformation_list': [('random_forest',{'n_estimators':100, 'max_depth':6})], 'true_causal_effect':(lambda x:0.5)}]\n", "\n", "\n", "# Iterate through the names and parameters to create a list of namedtuples\n", "for name, param in zip(estimator_list,method_params):\n", " estimator_tuples.append(Estimator._make([name, param]))\n", " \n", "for name, param in zip(refuter_list, refuter_params):\n", " refuter_tuples.append(Refuter._make([name, param]))\n" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "def plot_MAEs(res):\n", " true_value_column = res.columns[-1]\n", " estimate_columns=res.columns[3:-1]\n", " #print(estimate_columns)\n", " #print(type(estimate_columns))\n", " estimate_columns.append(pd.Index(res[\"TRUE_VALUE\"]))\n", " #print(estimate_columns)\n", " fig, ax = plt.subplots()\n", " MAE ={}\n", " for colname in estimate_columns:\n", " if colname not in ('ORIGINAL_ESTIMATE:backdoor.propensity_score_weighting',):\n", " #'ORIGINAL_ESTIMATE:backdoor.econml.metalearners.TLearner'):\n", " plt.plot(res[colname], res[\"TRUE_VALUE\"], marker='o', linestyle=\"None\", label=colname)\n", " \"Mean Absolute Error (MAE): {}\".format(mean_absolute_error(res[colname], res[\"TRUE_VALUE\"]))\n", " MAE[colname] = mean_absolute_error(res[colname], res[\"TRUE_VALUE\"])\n", " fig.suptitle('Calibration plot showing the accuracy of different causal estimators [P(T=1)=0.9]')\n", " ax.set_xlabel('Estimated effect')\n", " ax.set_ylabel('True causal effect')\n", " plt.legend(loc='upper center', bbox_to_anchor=(0.5, -0.20),\n", " fancybox=True, shadow=True, ncol=2)\n", " plt.show()\n", " print(\"Printing MAE of various estimates: \")\n", " MAE_values = {k: v for k, v in sorted(MAE.items(), key=lambda item: item[1], reverse = True)}\n", " for k,v in MAE_values.items():\n", " print(k, v)" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "def plot_estimators_and_refuters(refuter, estimator): \n", " x = list(res['EXPERIMENT'])\n", " y1 = list(res[refuter+':'+estimator+':ESTIMATED_EFFECT'])\n", " y2 = list(res[refuter+':'+estimator+':NEW_EFFECT'])\n", " #print(res['TRUE_VALUE'])\n", " y3 = list(res['TRUE_VALUE'])\n", " y4 = list(res[refuter+':'+estimator+':P_VALUE'])\n", " plt.scatter(x, y1, c =\"blue\", label = \"Estimated Effect\") \n", " plt.scatter(x, y2, c =\"red\", label = \"New Effect\")\n", " plt.scatter(x, y3, c =\"green\", label = \"True Value\")\n", " plt.scatter(x, y4, c =\"yellow\", label = \"P Value\")\n", " plt.xlabel(\"EXPERIMENT\") \n", " plt.ylabel(\"EFFECT\")\n", " legend = plt.legend(loc=4, fontsize='small', fancybox=True)\n", " plt.title(estimator) \n", " plt.show()\n", " plt.savefig(estimator+'.png')" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [], "source": [ "def plot_deviations(estimator_list, deviation_list):\n", " plt.scatter(estimator_list, deviation_list)\n", " plt.xticks(estimator_list, estimator_list, rotation='vertical')\n", " plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Observed unmodelled confounding error" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "For each estimator, we use dummy outcome refuter to check the observed unmodelled confounding error for each estimator. That is, we run the refutation test for each estimator only on the observed confounders and analyse what amount of confounding error is present unmodelled amongst the observed variables." ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "scrolled": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "\n", "Running Experiment: Test_1\n", "\n", "\n", "Running Experiment Number: 0\n", "\n", "\n", "Current Sample Size: 1000\n", "\n", "\n", "The current DGP:\n", "\n", " Linear Data Generating Process\n", " -------------------------------\n", " \n", " treatment:['t1']\n", " outcome:['y']\n", " confounder: ['w1', 'w2', 'w3', 'w4', 'w5', 'w6']\n", " effect_modifier: ['x1', 'x2']\n", " weights: {}\n", " bias: {}\n", " seed: None\n", " treatment_is_binary: True\n", " percentile: 0.9\n", " \n", "printing data shape\n", "(1000, 10)\n", "[0.44817918]\n", "check\n", "printing length of confounder list: 2\n", "printing confounder list: ['w2', 'w3']\n", "data columns\n", "data columns Index(['x1', 'x2', 'w1', 'w2', 'w3', 'w4', 'w5', 'w6', 't1', 'y'], dtype='object')\n", "identified_estimand: Estimand type: nonparametric-ate\n", "\n", "### Estimand : 1\n", "Estimand name: backdoor\n", "Estimand expression:\n", " d \n", "─────(Expectation(y|w3,w2))\n", "d[t₁] \n", "Estimand assumption 1, Unconfoundedness: If U→{t1} and U→y then P(y|t1,w3,w2,U) = P(y|t1,w3,w2)\n", "\n", "### Estimand : 2\n", "Estimand name: iv\n", "No such variable found!\n", "\n", "### Estimand : 3\n", "Estimand name: frontdoor\n", "No such variable found!\n", "\n", "\n", "\n", "Running the estimators:\n", "\n", "The current estimator: Estimator(name='backdoor.linear_regression', params=None)\n", "estimator.params None\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/home/amit/py-envs/env3.8/lib/python3.8/site-packages/statsmodels/regression/linear_model.py:1860: RuntimeWarning: divide by zero encountered in double_scalars\n", " return np.sqrt(eigvals[0]/eigvals[-1])\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "printing estimate's type\n", "\n", "The current estimator: Estimator(name='backdoor.propensity_score_matching', params={'init_params': {}})\n", "estimator.params {'init_params': {}}\n", "printing estimate's type\n", "\n", "The current estimator: Estimator(name='backdoor.propensity_score_weighting', params={'init_params': {}})\n", "estimator.params {'init_params': {}}\n", "printing estimate's type\n", "\n", "The current estimator: Estimator(name='backdoor.econml.dml.DML', params={'init_params': {'model_y': GradientBoostingRegressor(), 'model_t': GradientBoostingRegressor(), 'model_final': LassoCV(fit_intercept=False), 'featurizer': PolynomialFeatures(degree=1)}, 'fit_params': {}})\n", "estimator.params {'init_params': {'model_y': GradientBoostingRegressor(), 'model_t': GradientBoostingRegressor(), 'model_final': LassoCV(fit_intercept=False), 'featurizer': PolynomialFeatures(degree=1)}, 'fit_params': {}}\n", "printing estimate's type\n", "\n", "The current estimator: Estimator(name='backdoor.econml.dr.LinearDRLearner', params={'init_params': {'model_propensity': LogisticRegressionCV(cv=3)}, 'fit_params': {}})\n", "estimator.params {'init_params': {'model_propensity': LogisticRegressionCV(cv=3)}, 'fit_params': {}}\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "Co-variance matrix is undertermined. Inference will be invalid!\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "printing estimate's type\n", "\n", "estimate_values [66.01111446506712, 63.42171368715321, 64.22026514410959, 60.07327617273986, 66.11268277462945]\n", "\n", "\n", "Running the refuters:\n", "\n", "The current refuter: Refuter(name='dummy_outcome_refuter', params={'num_simulations': 5, 'transformation_list': [('random_forest', {'n_estimators': 100, 'max_depth': 6})], 'true_causal_effect': at 0x7f8253b014c0>})\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "divide by zero encountered in double_scalars\n", "divide by zero encountered in double_scalars\n", "divide by zero encountered in double_scalars\n", "divide by zero encountered in double_scalars\n", "divide by zero encountered in double_scalars\n", "divide by zero encountered in double_scalars\n", "divide by zero encountered in double_scalars\n", "divide by zero encountered in double_scalars\n", "divide by zero encountered in double_scalars\n", "divide by zero encountered in double_scalars\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "printing refute's type\n", "\n", "printing refute's type\n", "\n", "printing refute's type\n", "\n", "printing refute's type\n", "\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "Co-variance matrix is undertermined. Inference will be invalid!\n", "Co-variance matrix is undertermined. Inference will be invalid!\n", "Co-variance matrix is undertermined. Inference will be invalid!\n", "Co-variance matrix is undertermined. Inference will be invalid!\n", "Co-variance matrix is undertermined. Inference will be invalid!\n", "Co-variance matrix is undertermined. Inference will be invalid!\n", "Co-variance matrix is undertermined. Inference will be invalid!\n", "Co-variance matrix is undertermined. Inference will be invalid!\n", "Co-variance matrix is undertermined. Inference will be invalid!\n", "Co-variance matrix is undertermined. Inference will be invalid!\n", "divide by zero encountered in double_scalars\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "printing refute's type\n", "\n", "estimated effect [0.5, 0.5, 0.5, 0.5, 0.5]\n", "new_effect [1.4043452823078098, -0.3647962831615853, -2.21541790767271, -1.6785710619799894, -0.8455720357377832]\n", "p_value [0.29273316903839963, 0.30148503109661196, 0.22187080612268173, 0.06603210218911704, 0.11437022710268163]\n", "true value 0.44817917911950317\n", "\n", "\n", "Running Experiment Number: 1\n", "\n", "\n", "Current Sample Size: 1000\n", "\n", "\n", "The current DGP:\n", "\n", " Linear Data Generating Process\n", " -------------------------------\n", " \n", " treatment:['t1']\n", " outcome:['y']\n", " confounder: ['w1', 'w2', 'w3', 'w4', 'w5', 'w6']\n", " effect_modifier: ['x1', 'x2']\n", " weights: {'confounder=>treatment': array([[101.11210404],\n", " [ -0.32196533],\n", " [ -0.97871086],\n", " [ -1.26281336],\n", " [ 0.68719986],\n", " [ 0.75898286]]), 'confounder=>outcome': array([[100.24821178],\n", " [ -0.28815068],\n", " [ 0.68388044],\n", " [ 0.1686717 ],\n", " [ -0.45648749],\n", " [ -0.7459662 ]]), 'effect_modifier=>outcome': array([[ 0.23452386],\n", " [-1.79998736]]), 'treatment=>outcome': array([[0.44817918]])}\n", " bias: {'confounder=>treatment': array([1.09129656]), 'confounder=>outcome': array([1.75314743])}\n", " seed: None\n", " treatment_is_binary: True\n", " percentile: 0.9\n", " \n", "printing data shape\n", "(1000, 10)\n", "[1.68379453]\n", "check\n", "printing length of confounder list: 2\n", "printing confounder list: ['w2', 'w3']\n", "data columns\n", "data columns Index(['x1', 'x2', 'w1', 'w2', 'w3', 'w4', 'w5', 'w6', 't1', 'y'], dtype='object')\n", "identified_estimand: Estimand type: nonparametric-ate\n", "\n", "### Estimand : 1\n", "Estimand name: backdoor\n", "Estimand expression:\n", " d \n", "─────(Expectation(y|w3,w2))\n", "d[t₁] \n", "Estimand assumption 1, Unconfoundedness: If U→{t1} and U→y then P(y|t1,w3,w2,U) = P(y|t1,w3,w2)\n", "\n", "### Estimand : 2\n", "Estimand name: iv\n", "No such variable found!\n", "\n", "### Estimand : 3\n", "Estimand name: frontdoor\n", "No such variable found!\n", "\n", "\n", "\n", "Running the estimators:\n", "\n", "The current estimator: Estimator(name='backdoor.linear_regression', params=None)\n", "estimator.params None\n", "printing estimate's type\n", "\n", "The current estimator: Estimator(name='backdoor.propensity_score_matching', params={'init_params': {}})\n", "estimator.params {'init_params': {}}\n", "printing estimate's type\n", "\n", "The current estimator: Estimator(name='backdoor.propensity_score_weighting', params={'init_params': {}})\n", "estimator.params {'init_params': {}}\n", "printing estimate's type\n", "\n", "The current estimator: Estimator(name='backdoor.econml.dml.DML', params={'init_params': {'model_y': GradientBoostingRegressor(), 'model_t': GradientBoostingRegressor(), 'model_final': LassoCV(fit_intercept=False), 'featurizer': PolynomialFeatures(degree=1)}, 'fit_params': {}, '_econml_methodname': 'econml.dml.DML'})\n", "estimator.params {'init_params': {'model_y': GradientBoostingRegressor(), 'model_t': GradientBoostingRegressor(), 'model_final': LassoCV(fit_intercept=False), 'featurizer': PolynomialFeatures(degree=1)}, 'fit_params': {}, '_econml_methodname': 'econml.dml.DML'}\n", "printing estimate's type\n", "\n", "The current estimator: Estimator(name='backdoor.econml.dr.LinearDRLearner', params={'init_params': {'model_propensity': LogisticRegressionCV(cv=3)}, 'fit_params': {}, '_econml_methodname': 'econml.dr.LinearDRLearner'})\n", "estimator.params {'init_params': {'model_propensity': LogisticRegressionCV(cv=3)}, 'fit_params': {}, '_econml_methodname': 'econml.dr.LinearDRLearner'}\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "Co-variance matrix is undertermined. Inference will be invalid!\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "printing estimate's type\n", "\n", "estimate_values [79.31558790147682, 87.57423851525989, 83.22304007456479, 70.82305302519241, 80.4625567713151]\n", "\n", "\n", "Running the refuters:\n", "\n", "The current refuter: Refuter(name='dummy_outcome_refuter', params={'num_simulations': 5, 'transformation_list': [('random_forest', {'n_estimators': 100, 'max_depth': 6})], 'true_causal_effect': at 0x7f8253b014c0>})\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "divide by zero encountered in double_scalars\n", "divide by zero encountered in double_scalars\n", "divide by zero encountered in double_scalars\n", "divide by zero encountered in double_scalars\n", "divide by zero encountered in double_scalars\n", "divide by zero encountered in double_scalars\n", "divide by zero encountered in double_scalars\n", "divide by zero encountered in double_scalars\n", "divide by zero encountered in double_scalars\n", "divide by zero encountered in double_scalars\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "printing refute's type\n", "\n", "printing refute's type\n", "\n", "printing refute's type\n", "\n", "printing refute's type\n", "\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "Co-variance matrix is undertermined. Inference will be invalid!\n", "Co-variance matrix is undertermined. Inference will be invalid!\n", "Co-variance matrix is undertermined. Inference will be invalid!\n", "Co-variance matrix is undertermined. Inference will be invalid!\n", "Co-variance matrix is undertermined. Inference will be invalid!\n", "Co-variance matrix is undertermined. Inference will be invalid!\n", "Co-variance matrix is undertermined. Inference will be invalid!\n", "Co-variance matrix is undertermined. Inference will be invalid!\n", "Co-variance matrix is undertermined. Inference will be invalid!\n", "Co-variance matrix is undertermined. Inference will be invalid!\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "printing refute's type\n", "\n", "estimated effect [0.5, 0.5, 0.5, 0.5, 0.5]\n", "new_effect [-0.5322719658492281, 0.960885295326101, -1.4600234515899306, 0.5834601976312914, 0.12621991081089856]\n", "p_value [0.36372627736934315, 0.45671976543552667, 0.13256133161772277, 0.45366688903422736, 0.43520045202340896]\n", "true value 1.6837945349991625\n", "\n", "\n", "Running Experiment Number: 2\n", "\n", "\n", "Current Sample Size: 1000\n", "\n", "\n", "The current DGP:\n", "\n", " Linear Data Generating Process\n", " -------------------------------\n", " \n", " treatment:['t1']\n", " outcome:['y']\n", " confounder: ['w1', 'w2', 'w3', 'w4', 'w5', 'w6']\n", " effect_modifier: ['x1', 'x2']\n", " weights: {'confounder=>treatment': array([[100.28597342],\n", " [ -1.52212317],\n", " [ -0.19623677],\n", " [ 1.96504108],\n", " [ -1.97968276],\n", " [ 0.39672758]]), 'confounder=>outcome': array([[ 9.96361438e+01],\n", " [ 1.24393684e-01],\n", " [ 1.96979689e+00],\n", " [ 1.06969767e+00],\n", " [ 2.72222271e-02],\n", " [-4.33041892e-01]]), 'effect_modifier=>outcome': array([[-0.16447281],\n", " [-0.8151324 ]]), 'treatment=>outcome': array([[1.68379453]])}\n", " bias: {'confounder=>treatment': array([-0.57564452]), 'confounder=>outcome': array([-0.53877636])}\n", " seed: None\n", " treatment_is_binary: True\n", " percentile: 0.9\n", " \n", "printing data shape\n", "(1000, 10)\n", "[-0.03523688]\n", "check\n", "printing length of confounder list: 2\n", "printing confounder list: ['w2', 'w3']\n", "data columns\n", "data columns Index(['x1', 'x2', 'w1', 'w2', 'w3', 'w4', 'w5', 'w6', 't1', 'y'], dtype='object')\n", "identified_estimand: Estimand type: nonparametric-ate\n", "\n", "### Estimand : 1\n", "Estimand name: backdoor\n", "Estimand expression:\n", " d \n", "─────(Expectation(y|w3,w2))\n", "d[t₁] \n", "Estimand assumption 1, Unconfoundedness: If U→{t1} and U→y then P(y|t1,w3,w2,U) = P(y|t1,w3,w2)\n", "\n", "### Estimand : 2\n", "Estimand name: iv\n", "No such variable found!\n", "\n", "### Estimand : 3\n", "Estimand name: frontdoor\n", "No such variable found!\n", "\n", "\n", "\n", "Running the estimators:\n", "\n", "The current estimator: Estimator(name='backdoor.linear_regression', params=None)\n", "estimator.params None\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "divide by zero encountered in double_scalars\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "printing estimate's type\n", "\n", "The current estimator: Estimator(name='backdoor.propensity_score_matching', params={'init_params': {}})\n", "estimator.params {'init_params': {}}\n", "printing estimate's type\n", "\n", "The current estimator: Estimator(name='backdoor.propensity_score_weighting', params={'init_params': {}})\n", "estimator.params {'init_params': {}}\n", "printing estimate's type\n", "\n", "The current estimator: Estimator(name='backdoor.econml.dml.DML', params={'init_params': {'model_y': GradientBoostingRegressor(), 'model_t': GradientBoostingRegressor(), 'model_final': LassoCV(fit_intercept=False), 'featurizer': PolynomialFeatures(degree=1)}, 'fit_params': {}, '_econml_methodname': 'econml.dml.DML'})\n", "estimator.params {'init_params': {'model_y': GradientBoostingRegressor(), 'model_t': GradientBoostingRegressor(), 'model_final': LassoCV(fit_intercept=False), 'featurizer': PolynomialFeatures(degree=1)}, 'fit_params': {}, '_econml_methodname': 'econml.dml.DML'}\n", "printing estimate's type\n", "\n", "The current estimator: Estimator(name='backdoor.econml.dr.LinearDRLearner', params={'init_params': {'model_propensity': LogisticRegressionCV(cv=3)}, 'fit_params': {}, '_econml_methodname': 'econml.dr.LinearDRLearner'})\n", "estimator.params {'init_params': {'model_propensity': LogisticRegressionCV(cv=3)}, 'fit_params': {}, '_econml_methodname': 'econml.dr.LinearDRLearner'}\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "Co-variance matrix is undertermined. Inference will be invalid!\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "printing estimate's type\n", "\n", "estimate_values [56.8056700110375, 54.050289290217464, 55.5305537803361, 56.755396172182344, 55.89093866391693]\n", "\n", "\n", "Running the refuters:\n", "\n", "The current refuter: Refuter(name='dummy_outcome_refuter', params={'num_simulations': 5, 'transformation_list': [('random_forest', {'n_estimators': 100, 'max_depth': 6})], 'true_causal_effect': at 0x7f8253b014c0>})\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "divide by zero encountered in double_scalars\n", "divide by zero encountered in double_scalars\n", "divide by zero encountered in double_scalars\n", "divide by zero encountered in double_scalars\n", "divide by zero encountered in double_scalars\n", "divide by zero encountered in double_scalars\n", "divide by zero encountered in double_scalars\n", "divide by zero encountered in double_scalars\n", "divide by zero encountered in double_scalars\n", "divide by zero encountered in double_scalars\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "printing refute's type\n", "\n", "printing refute's type\n", "\n", "printing refute's type\n", "\n", "printing refute's type\n", "\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "Co-variance matrix is undertermined. Inference will be invalid!\n", "Co-variance matrix is undertermined. Inference will be invalid!\n", "Co-variance matrix is undertermined. Inference will be invalid!\n", "Co-variance matrix is undertermined. Inference will be invalid!\n", "Co-variance matrix is undertermined. Inference will be invalid!\n", "Co-variance matrix is undertermined. Inference will be invalid!\n", "Co-variance matrix is undertermined. Inference will be invalid!\n", "Co-variance matrix is undertermined. Inference will be invalid!\n", "Co-variance matrix is undertermined. Inference will be invalid!\n", "Co-variance matrix is undertermined. Inference will be invalid!\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "printing refute's type\n", "\n", "estimated effect [0.5, 0.5, 0.5, 0.5, 0.5]\n", "new_effect [3.7530933945870437, 1.2164053353150244, 2.7221944646172864, 0.7667922678529665, 1.789255529465299]\n", "p_value [0.05303966888866703, 0.40964775241650786, 0.0761920855089611, 0.35561207079883494, 0.1351927934307971]\n", "true value -0.03523687853074415\n", "\n", "\n", "Running Experiment Number: 3\n", "\n", "\n", "Current Sample Size: 1000\n", "\n", "\n", "The current DGP:\n", "\n", " Linear Data Generating Process\n", " -------------------------------\n", " \n", " treatment:['t1']\n", " outcome:['y']\n", " confounder: ['w1', 'w2', 'w3', 'w4', 'w5', 'w6']\n", " effect_modifier: ['x1', 'x2']\n", " weights: {'confounder=>treatment': array([[99.83447445],\n", " [-0.24647508],\n", " [ 0.50481799],\n", " [ 1.02181687],\n", " [ 1.46280972],\n", " [-0.26956647]]), 'confounder=>outcome': array([[100.25758113],\n", " [ -1.68874108],\n", " [ -1.90010531],\n", " [ -0.84530093],\n", " [ -1.39558635],\n", " [ 1.5266641 ]]), 'effect_modifier=>outcome': array([[ 1.95424271],\n", " [-2.02224631]]), 'treatment=>outcome': array([[-0.03523688]])}\n", " bias: {'confounder=>treatment': array([1.09726134]), 'confounder=>outcome': array([-0.96728418])}\n", " seed: None\n", " treatment_is_binary: True\n", " percentile: 0.9\n", " \n", "printing data shape\n", "(1000, 10)\n", "[-0.86935628]\n", "check\n", "printing length of confounder list: 2\n", "printing confounder list: ['w2', 'w3']\n", "data columns\n", "data columns Index(['x1', 'x2', 'w1', 'w2', 'w3', 'w4', 'w5', 'w6', 't1', 'y'], dtype='object')\n", "identified_estimand: Estimand type: nonparametric-ate\n", "\n", "### Estimand : 1\n", "Estimand name: backdoor\n", "Estimand expression:\n", " d \n", "─────(Expectation(y|w3,w2))\n", "d[t₁] \n", "Estimand assumption 1, Unconfoundedness: If U→{t1} and U→y then P(y|t1,w3,w2,U) = P(y|t1,w3,w2)\n", "\n", "### Estimand : 2\n", "Estimand name: iv\n", "No such variable found!\n", "\n", "### Estimand : 3\n", "Estimand name: frontdoor\n", "No such variable found!\n", "\n", "\n", "\n", "Running the estimators:\n", "\n", "The current estimator: Estimator(name='backdoor.linear_regression', params=None)\n", "estimator.params None\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "divide by zero encountered in double_scalars\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "printing estimate's type\n", "\n", "The current estimator: Estimator(name='backdoor.propensity_score_matching', params={'init_params': {}})\n", "estimator.params {'init_params': {}}\n", "printing estimate's type\n", "\n", "The current estimator: Estimator(name='backdoor.propensity_score_weighting', params={'init_params': {}})\n", "estimator.params {'init_params': {}}\n", "printing estimate's type\n", "\n", "The current estimator: Estimator(name='backdoor.econml.dml.DML', params={'init_params': {'model_y': GradientBoostingRegressor(), 'model_t': GradientBoostingRegressor(), 'model_final': LassoCV(fit_intercept=False), 'featurizer': PolynomialFeatures(degree=1)}, 'fit_params': {}, '_econml_methodname': 'econml.dml.DML'})\n", "estimator.params {'init_params': {'model_y': GradientBoostingRegressor(), 'model_t': GradientBoostingRegressor(), 'model_final': LassoCV(fit_intercept=False), 'featurizer': PolynomialFeatures(degree=1)}, 'fit_params': {}, '_econml_methodname': 'econml.dml.DML'}\n", "printing estimate's type\n", "\n", "The current estimator: Estimator(name='backdoor.econml.dr.LinearDRLearner', params={'init_params': {'model_propensity': LogisticRegressionCV(cv=3)}, 'fit_params': {}, '_econml_methodname': 'econml.dr.LinearDRLearner'})\n", "estimator.params {'init_params': {'model_propensity': LogisticRegressionCV(cv=3)}, 'fit_params': {}, '_econml_methodname': 'econml.dr.LinearDRLearner'}\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "Co-variance matrix is undertermined. Inference will be invalid!\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "printing estimate's type\n", "\n", "estimate_values [81.93034900607176, 74.72376193166004, 81.51913261914453, 90.76117347541982, 81.25397536273697]\n", "\n", "\n", "Running the refuters:\n", "\n", "The current refuter: Refuter(name='dummy_outcome_refuter', params={'num_simulations': 5, 'transformation_list': [('random_forest', {'n_estimators': 100, 'max_depth': 6})], 'true_causal_effect': at 0x7f8253b014c0>})\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "divide by zero encountered in double_scalars\n", "divide by zero encountered in double_scalars\n", "divide by zero encountered in double_scalars\n", "divide by zero encountered in double_scalars\n", "divide by zero encountered in double_scalars\n", "divide by zero encountered in double_scalars\n", "divide by zero encountered in double_scalars\n", "divide by zero encountered in double_scalars\n", "divide by zero encountered in double_scalars\n", "divide by zero encountered in double_scalars\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "printing refute's type\n", "\n", "printing refute's type\n", "\n", "printing refute's type\n", "\n", "printing refute's type\n", "\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "Co-variance matrix is undertermined. Inference will be invalid!\n", "Co-variance matrix is undertermined. Inference will be invalid!\n", "Co-variance matrix is undertermined. Inference will be invalid!\n", "Co-variance matrix is undertermined. Inference will be invalid!\n", "Co-variance matrix is undertermined. Inference will be invalid!\n", "Co-variance matrix is undertermined. Inference will be invalid!\n", "Co-variance matrix is undertermined. Inference will be invalid!\n", "Co-variance matrix is undertermined. Inference will be invalid!\n", "Co-variance matrix is undertermined. Inference will be invalid!\n", "Co-variance matrix is undertermined. Inference will be invalid!\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "printing refute's type\n", "\n", "estimated effect [0.5, 0.5, 0.5, 0.5, 0.5]\n", "new_effect [0.4762181099084522, -2.791117512625161, -1.5130157466790286, -0.04630618804938841, -0.0561524074193132]\n", "p_value [0.49759964310721627, 0.13136395724079275, 0.05681104971830553, 1.8302581672458018e-09, 0.42552755817420496]\n", "true value -0.8693562789260588\n", "\n", "\n", "Running Experiment Number: 4\n", "\n", "\n", "Current Sample Size: 1000\n", "\n", "\n", "The current DGP:\n", "\n", " Linear Data Generating Process\n", " -------------------------------\n", " \n", " treatment:['t1']\n", " outcome:['y']\n", " confounder: ['w1', 'w2', 'w3', 'w4', 'w5', 'w6']\n", " effect_modifier: ['x1', 'x2']\n", " weights: {'confounder=>treatment': array([[99.09074223],\n", " [ 0.7812276 ],\n", " [-0.73977197],\n", " [ 0.75498944],\n", " [-1.53178094],\n", " [-0.15781729]]), 'confounder=>outcome': array([[ 9.89612133e+01],\n", " [ 1.06649901e+00],\n", " [ 2.26681510e-01],\n", " [ 1.37951527e+00],\n", " [ 2.46759096e-01],\n", " [-5.56887540e-02]]), 'effect_modifier=>outcome': array([[-0.86683103],\n", " [ 1.54799168]]), 'treatment=>outcome': array([[-0.86935628]])}\n", " bias: {'confounder=>treatment': array([-0.77271374]), 'confounder=>outcome': array([1.19729565])}\n", " seed: None\n", " treatment_is_binary: True\n", " percentile: 0.9\n", " \n", "printing data shape\n", "(1000, 10)\n", "[-1.8606428]\n", "check\n", "printing length of confounder list: 2\n", "printing confounder list: ['w2', 'w3']\n", "data columns\n", "data columns Index(['x1', 'x2', 'w1', 'w2', 'w3', 'w4', 'w5', 'w6', 't1', 'y'], dtype='object')\n", "identified_estimand: Estimand type: nonparametric-ate\n", "\n", "### Estimand : 1\n", "Estimand name: backdoor\n", "Estimand expression:\n", " d \n", "─────(Expectation(y|w3,w2))\n", "d[t₁] \n", "Estimand assumption 1, Unconfoundedness: If U→{t1} and U→y then P(y|t1,w3,w2,U) = P(y|t1,w3,w2)\n", "\n", "### Estimand : 2\n", "Estimand name: iv\n", "No such variable found!\n", "\n", "### Estimand : 3\n", "Estimand name: frontdoor\n", "No such variable found!\n", "\n", "\n", "\n", "Running the estimators:\n", "\n", "The current estimator: Estimator(name='backdoor.linear_regression', params=None)\n", "estimator.params None\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "divide by zero encountered in double_scalars\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "printing estimate's type\n", "\n", "The current estimator: Estimator(name='backdoor.propensity_score_matching', params={'init_params': {}})\n", "estimator.params {'init_params': {}}\n", "printing estimate's type\n", "\n", "The current estimator: Estimator(name='backdoor.propensity_score_weighting', params={'init_params': {}})\n", "estimator.params {'init_params': {}}\n", "printing estimate's type\n", "\n", "The current estimator: Estimator(name='backdoor.econml.dml.DML', params={'init_params': {'model_y': GradientBoostingRegressor(), 'model_t': GradientBoostingRegressor(), 'model_final': LassoCV(fit_intercept=False), 'featurizer': PolynomialFeatures(degree=1)}, 'fit_params': {}, '_econml_methodname': 'econml.dml.DML'})\n", "estimator.params {'init_params': {'model_y': GradientBoostingRegressor(), 'model_t': GradientBoostingRegressor(), 'model_final': LassoCV(fit_intercept=False), 'featurizer': PolynomialFeatures(degree=1)}, 'fit_params': {}, '_econml_methodname': 'econml.dml.DML'}\n", "printing estimate's type\n", "\n", "The current estimator: Estimator(name='backdoor.econml.dr.LinearDRLearner', params={'init_params': {'model_propensity': LogisticRegressionCV(cv=3)}, 'fit_params': {}, '_econml_methodname': 'econml.dr.LinearDRLearner'})\n", "estimator.params {'init_params': {'model_propensity': LogisticRegressionCV(cv=3)}, 'fit_params': {}, '_econml_methodname': 'econml.dr.LinearDRLearner'}\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "Co-variance matrix is undertermined. Inference will be invalid!\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "printing estimate's type\n", "\n", "estimate_values [51.7108007036731, 42.44334638239872, 52.160815710330496, 50.348756827110684, 53.11978086678959]\n", "\n", "\n", "Running the refuters:\n", "\n", "The current refuter: Refuter(name='dummy_outcome_refuter', params={'num_simulations': 5, 'transformation_list': [('random_forest', {'n_estimators': 100, 'max_depth': 6})], 'true_causal_effect': at 0x7f8253b014c0>})\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "divide by zero encountered in double_scalars\n", "divide by zero encountered in double_scalars\n", "divide by zero encountered in double_scalars\n", "divide by zero encountered in double_scalars\n", "divide by zero encountered in double_scalars\n", "divide by zero encountered in double_scalars\n", "divide by zero encountered in double_scalars\n", "divide by zero encountered in double_scalars\n", "divide by zero encountered in double_scalars\n", "divide by zero encountered in double_scalars\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "printing refute's type\n", "\n", "printing refute's type\n", "\n", "printing refute's type\n", "\n", "printing refute's type\n", "\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "Co-variance matrix is undertermined. Inference will be invalid!\n", "Co-variance matrix is undertermined. Inference will be invalid!\n", "Co-variance matrix is undertermined. Inference will be invalid!\n", "Co-variance matrix is undertermined. Inference will be invalid!\n", "Co-variance matrix is undertermined. Inference will be invalid!\n", "Co-variance matrix is undertermined. Inference will be invalid!\n", "Co-variance matrix is undertermined. Inference will be invalid!\n", "Co-variance matrix is undertermined. Inference will be invalid!\n", "Co-variance matrix is undertermined. Inference will be invalid!\n", "Co-variance matrix is undertermined. Inference will be invalid!\n", "divide by zero encountered in double_scalars\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "printing refute's type\n", "\n", "estimated effect [0.5, 0.5, 0.5, 0.5, 0.5]\n", "new_effect [0.34653192524134296, -1.1133581946903768, -0.19685868900052556, 9.545866599925676e-17, 0.30708601216173564]\n", "p_value [0.4782306690235113, 0.14613432984249952, 0.3639698263274844, 0.0, 0.4514963980819483]\n", "true value -1.8606428030640734\n", "\n", "\n", "Running Experiment Number: 5\n", "\n", "\n", "Current Sample Size: 1000\n", "\n", "\n", "The current DGP:\n", "\n", " Linear Data Generating Process\n", " -------------------------------\n", " \n", " treatment:['t1']\n", " outcome:['y']\n", " confounder: ['w1', 'w2', 'w3', 'w4', 'w5', 'w6']\n", " effect_modifier: ['x1', 'x2']\n", " weights: {'confounder=>treatment': array([[98.87443866],\n", " [-0.18229819],\n", " [ 0.1304134 ],\n", " [ 0.61677473],\n", " [ 1.31832926],\n", " [-1.01926882]]), 'confounder=>outcome': array([[99.53206909],\n", " [ 0.53808285],\n", " [ 0.16009802],\n", " [-0.35480582],\n", " [ 0.40219817],\n", " [ 1.58191325]]), 'effect_modifier=>outcome': array([[ 1.00366309],\n", " [-0.85956761]]), 'treatment=>outcome': array([[-1.8606428]])}\n", " bias: {'confounder=>treatment': array([-2.7900692]), 'confounder=>outcome': array([0.21395259])}\n", " seed: None\n", " treatment_is_binary: True\n", " percentile: 0.9\n", " \n", "printing data shape\n", "(1000, 10)\n", "[-0.53457984]\n", "check\n", "printing length of confounder list: 2\n", "printing confounder list: ['w2', 'w3']\n", "data columns\n", "data columns Index(['x1', 'x2', 'w1', 'w2', 'w3', 'w4', 'w5', 'w6', 't1', 'y'], dtype='object')\n", "identified_estimand: Estimand type: nonparametric-ate\n", "\n", "### Estimand : 1\n", "Estimand name: backdoor\n", "Estimand expression:\n", " d \n", "─────(Expectation(y|w3,w2))\n", "d[t₁] \n", "Estimand assumption 1, Unconfoundedness: If U→{t1} and U→y then P(y|t1,w3,w2,U) = P(y|t1,w3,w2)\n", "\n", "### Estimand : 2\n", "Estimand name: iv\n", "No such variable found!\n", "\n", "### Estimand : 3\n", "Estimand name: frontdoor\n", "No such variable found!\n", "\n", "\n", "\n", "Running the estimators:\n", "\n", "The current estimator: Estimator(name='backdoor.linear_regression', params=None)\n", "estimator.params None\n", "printing estimate's type\n", "\n", "The current estimator: Estimator(name='backdoor.propensity_score_matching', params={'init_params': {}})\n", "estimator.params {'init_params': {}}\n", "printing estimate's type\n", "\n", "The current estimator: Estimator(name='backdoor.propensity_score_weighting', params={'init_params': {}})\n", "estimator.params {'init_params': {}}\n", "printing estimate's type\n", "\n", "The current estimator: Estimator(name='backdoor.econml.dml.DML', params={'init_params': {'model_y': GradientBoostingRegressor(), 'model_t': GradientBoostingRegressor(), 'model_final': LassoCV(fit_intercept=False), 'featurizer': PolynomialFeatures(degree=1)}, 'fit_params': {}, '_econml_methodname': 'econml.dml.DML'})\n", "estimator.params {'init_params': {'model_y': GradientBoostingRegressor(), 'model_t': GradientBoostingRegressor(), 'model_final': LassoCV(fit_intercept=False), 'featurizer': PolynomialFeatures(degree=1)}, 'fit_params': {}, '_econml_methodname': 'econml.dml.DML'}\n", "printing estimate's type\n", "\n", "The current estimator: Estimator(name='backdoor.econml.dr.LinearDRLearner', params={'init_params': {'model_propensity': LogisticRegressionCV(cv=3)}, 'fit_params': {}, '_econml_methodname': 'econml.dr.LinearDRLearner'})\n", "estimator.params {'init_params': {'model_propensity': LogisticRegressionCV(cv=3)}, 'fit_params': {}, '_econml_methodname': 'econml.dr.LinearDRLearner'}\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "Co-variance matrix is undertermined. Inference will be invalid!\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "printing estimate's type\n", "\n", "estimate_values [49.94741405047206, 48.05887762242017, 49.616172187879464, 52.42870806313896, 49.39931177551444]\n", "\n", "\n", "Running the refuters:\n", "\n", "The current refuter: Refuter(name='dummy_outcome_refuter', params={'num_simulations': 5, 'transformation_list': [('random_forest', {'n_estimators': 100, 'max_depth': 6})], 'true_causal_effect': at 0x7f8253b014c0>})\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "divide by zero encountered in double_scalars\n", "divide by zero encountered in double_scalars\n", "divide by zero encountered in double_scalars\n", "divide by zero encountered in double_scalars\n", "divide by zero encountered in double_scalars\n", "divide by zero encountered in double_scalars\n", "divide by zero encountered in double_scalars\n", "divide by zero encountered in double_scalars\n", "divide by zero encountered in double_scalars\n", "divide by zero encountered in double_scalars\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "printing refute's type\n", "\n", "printing refute's type\n", "\n", "printing refute's type\n", "\n", "printing refute's type\n", "\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "Co-variance matrix is undertermined. Inference will be invalid!\n", "Co-variance matrix is undertermined. Inference will be invalid!\n", "Co-variance matrix is undertermined. Inference will be invalid!\n", "Co-variance matrix is undertermined. Inference will be invalid!\n", "Co-variance matrix is undertermined. Inference will be invalid!\n", "Co-variance matrix is undertermined. Inference will be invalid!\n", "Co-variance matrix is undertermined. Inference will be invalid!\n", "Co-variance matrix is undertermined. Inference will be invalid!\n", "Co-variance matrix is undertermined. Inference will be invalid!\n", "Co-variance matrix is undertermined. Inference will be invalid!\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "printing refute's type\n", "\n", "estimated effect [0.5, 0.5, 0.5, 0.5, 0.5]\n", "new_effect [-0.7548020627227565, -2.1274544976816356, 0.19914776220930258, 0.43175883933601894, -0.5773724087133334]\n", "p_value [0.3278918192078386, 0.24015791469893477, 0.4444909830516883, 0.4891359429643516, 0.36359178172779993]\n", "true value -0.5345798400939739\n", "\n", "\n", "Running Experiment Number: 6\n", "\n", "\n", "Current Sample Size: 1000\n", "\n", "\n", "The current DGP:\n", "\n", " Linear Data Generating Process\n", " -------------------------------\n", " \n", " treatment:['t1']\n", " outcome:['y']\n", " confounder: ['w1', 'w2', 'w3', 'w4', 'w5', 'w6']\n", " effect_modifier: ['x1', 'x2']\n", " weights: {'confounder=>treatment': array([[99.24054824],\n", " [-0.31148549],\n", " [ 0.63418497],\n", " [-0.70302366],\n", " [-0.10838501],\n", " [-0.78371061]]), 'confounder=>outcome': array([[101.60203038],\n", " [ -0.43550855],\n", " [ -0.31282889],\n", " [ 1.39256906],\n", " [ -2.70114908],\n", " [ -0.95938577]]), 'effect_modifier=>outcome': array([[-0.87939468],\n", " [ 2.35299418]]), 'treatment=>outcome': array([[-0.53457984]])}\n", " bias: {'confounder=>treatment': array([-0.08849976]), 'confounder=>outcome': array([-1.30861299])}\n", " seed: None\n", " treatment_is_binary: True\n", " percentile: 0.9\n", " \n", "printing data shape\n", "(1000, 10)\n", "[-0.64918173]\n", "check\n", "printing length of confounder list: 2\n", "printing confounder list: ['w2', 'w3']\n", "data columns\n", "data columns Index(['x1', 'x2', 'w1', 'w2', 'w3', 'w4', 'w5', 'w6', 't1', 'y'], dtype='object')\n", "identified_estimand: Estimand type: nonparametric-ate\n", "\n", "### Estimand : 1\n", "Estimand name: backdoor\n", "Estimand expression:\n", " d \n", "─────(Expectation(y|w3,w2))\n", "d[t₁] \n", "Estimand assumption 1, Unconfoundedness: If U→{t1} and U→y then P(y|t1,w3,w2,U) = P(y|t1,w3,w2)\n", "\n", "### Estimand : 2\n", "Estimand name: iv\n", "No such variable found!\n", "\n", "### Estimand : 3\n", "Estimand name: frontdoor\n", "No such variable found!\n", "\n", "\n", "\n", "Running the estimators:\n", "\n", "The current estimator: Estimator(name='backdoor.linear_regression', params=None)\n", "estimator.params None\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "divide by zero encountered in double_scalars\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "printing estimate's type\n", "\n", "The current estimator: Estimator(name='backdoor.propensity_score_matching', params={'init_params': {}})\n", "estimator.params {'init_params': {}}\n", "printing estimate's type\n", "\n", "The current estimator: Estimator(name='backdoor.propensity_score_weighting', params={'init_params': {}})\n", "estimator.params {'init_params': {}}\n", "printing estimate's type\n", "\n", "The current estimator: Estimator(name='backdoor.econml.dml.DML', params={'init_params': {'model_y': GradientBoostingRegressor(), 'model_t': GradientBoostingRegressor(), 'model_final': LassoCV(fit_intercept=False), 'featurizer': PolynomialFeatures(degree=1)}, 'fit_params': {}, '_econml_methodname': 'econml.dml.DML'})\n", "estimator.params {'init_params': {'model_y': GradientBoostingRegressor(), 'model_t': GradientBoostingRegressor(), 'model_final': LassoCV(fit_intercept=False), 'featurizer': PolynomialFeatures(degree=1)}, 'fit_params': {}, '_econml_methodname': 'econml.dml.DML'}\n", "printing estimate's type\n", "\n", "The current estimator: Estimator(name='backdoor.econml.dr.LinearDRLearner', params={'init_params': {'model_propensity': LogisticRegressionCV(cv=3)}, 'fit_params': {}, '_econml_methodname': 'econml.dr.LinearDRLearner'})\n", "estimator.params {'init_params': {'model_propensity': LogisticRegressionCV(cv=3)}, 'fit_params': {}, '_econml_methodname': 'econml.dr.LinearDRLearner'}\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "Co-variance matrix is undertermined. Inference will be invalid!\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "printing estimate's type\n", "\n", "estimate_values [68.840209143251, 60.645168042668445, 69.07585782352533, 63.71187787956465, 68.72085690916778]\n", "\n", "\n", "Running the refuters:\n", "\n", "The current refuter: Refuter(name='dummy_outcome_refuter', params={'num_simulations': 5, 'transformation_list': [('random_forest', {'n_estimators': 100, 'max_depth': 6})], 'true_causal_effect': at 0x7f8253b014c0>})\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "divide by zero encountered in double_scalars\n", "divide by zero encountered in double_scalars\n", "divide by zero encountered in double_scalars\n", "divide by zero encountered in double_scalars\n", "divide by zero encountered in double_scalars\n", "divide by zero encountered in double_scalars\n", "divide by zero encountered in double_scalars\n", "divide by zero encountered in double_scalars\n", "divide by zero encountered in double_scalars\n", "divide by zero encountered in double_scalars\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "printing refute's type\n", "\n", "printing refute's type\n", "\n", "printing refute's type\n", "\n", "printing refute's type\n", "\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "Co-variance matrix is undertermined. Inference will be invalid!\n", "Co-variance matrix is undertermined. Inference will be invalid!\n", "Co-variance matrix is undertermined. Inference will be invalid!\n", "Co-variance matrix is undertermined. Inference will be invalid!\n", "Co-variance matrix is undertermined. Inference will be invalid!\n", "Co-variance matrix is undertermined. Inference will be invalid!\n", "Co-variance matrix is undertermined. Inference will be invalid!\n", "Co-variance matrix is undertermined. Inference will be invalid!\n", "Co-variance matrix is undertermined. Inference will be invalid!\n", "Co-variance matrix is undertermined. Inference will be invalid!\n", "divide by zero encountered in double_scalars\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "printing refute's type\n", "\n", "estimated effect [0.5, 0.5, 0.5, 0.5, 0.5]\n", "new_effect [3.2379854817365157, 8.900308318855485, 3.310839414536312, 0.5532392410523939, 8.668078002560508]\n", "p_value [0.18757009248476014, 0.03223537337830508, 0.2936005583775579, 0.4725966416232196, 0.01410918095919035]\n", "true value -0.6491817287366042\n", "\n", "\n", "Running Experiment Number: 7\n", "\n", "\n", "Current Sample Size: 1000\n", "\n", "\n", "The current DGP:\n", "\n", " Linear Data Generating Process\n", " -------------------------------\n", " \n", " treatment:['t1']\n", " outcome:['y']\n", " confounder: ['w1', 'w2', 'w3', 'w4', 'w5', 'w6']\n", " effect_modifier: ['x1', 'x2']\n", " weights: {'confounder=>treatment': array([[ 9.86670851e+01],\n", " [ 5.76664799e-01],\n", " [-8.80992636e-03],\n", " [ 3.06981530e-01],\n", " [ 5.38420134e-01],\n", " [ 6.57894030e-01]]), 'confounder=>outcome': array([[99.93242724],\n", " [-0.9484391 ],\n", " [-0.47857042],\n", " [ 2.28850605],\n", " [-0.43289329],\n", " [ 1.20978167]]), 'effect_modifier=>outcome': array([[-0.09233705],\n", " [ 1.8936975 ]]), 'treatment=>outcome': array([[-0.64918173]])}\n", " bias: {'confounder=>treatment': array([1.89661386]), 'confounder=>outcome': array([-0.02674376])}\n", " seed: None\n", " treatment_is_binary: True\n", " percentile: 0.9\n", " \n", "printing data shape\n", "(1000, 10)\n", "[-0.71184834]\n", "check\n", "printing length of confounder list: 2\n", "printing confounder list: ['w2', 'w3']\n", "data columns\n", "data columns Index(['x1', 'x2', 'w1', 'w2', 'w3', 'w4', 'w5', 'w6', 't1', 'y'], dtype='object')\n", "identified_estimand: Estimand type: nonparametric-ate\n", "\n", "### Estimand : 1\n", "Estimand name: backdoor\n", "Estimand expression:\n", " d \n", "─────(Expectation(y|w3,w2))\n", "d[t₁] \n", "Estimand assumption 1, Unconfoundedness: If U→{t1} and U→y then P(y|t1,w3,w2,U) = P(y|t1,w3,w2)\n", "\n", "### Estimand : 2\n", "Estimand name: iv\n", "No such variable found!\n", "\n", "### Estimand : 3\n", "Estimand name: frontdoor\n", "No such variable found!\n", "\n", "\n", "\n", "Running the estimators:\n", "\n", "The current estimator: Estimator(name='backdoor.linear_regression', params=None)\n", "estimator.params None\n", "printing estimate's type\n", "\n", "The current estimator: Estimator(name='backdoor.propensity_score_matching', params={'init_params': {}})\n", "estimator.params {'init_params': {}}\n", "printing estimate's type\n", "\n", "The current estimator: Estimator(name='backdoor.propensity_score_weighting', params={'init_params': {}})\n", "estimator.params {'init_params': {}}\n", "printing estimate's type\n", "\n", "The current estimator: Estimator(name='backdoor.econml.dml.DML', params={'init_params': {'model_y': GradientBoostingRegressor(), 'model_t': GradientBoostingRegressor(), 'model_final': LassoCV(fit_intercept=False), 'featurizer': PolynomialFeatures(degree=1)}, 'fit_params': {}, '_econml_methodname': 'econml.dml.DML'})\n", "estimator.params {'init_params': {'model_y': GradientBoostingRegressor(), 'model_t': GradientBoostingRegressor(), 'model_final': LassoCV(fit_intercept=False), 'featurizer': PolynomialFeatures(degree=1)}, 'fit_params': {}, '_econml_methodname': 'econml.dml.DML'}\n", "printing estimate's type\n", "\n", "The current estimator: Estimator(name='backdoor.econml.dr.LinearDRLearner', params={'init_params': {'model_propensity': LogisticRegressionCV(cv=3)}, 'fit_params': {}, '_econml_methodname': 'econml.dr.LinearDRLearner'})\n", "estimator.params {'init_params': {'model_propensity': LogisticRegressionCV(cv=3)}, 'fit_params': {}, '_econml_methodname': 'econml.dr.LinearDRLearner'}\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "Co-variance matrix is undertermined. Inference will be invalid!\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "printing estimate's type\n", "\n", "estimate_values [43.95562206111892, 40.98231894850907, 42.89244359861096, 42.21894095933778, 43.75677728056176]\n", "\n", "\n", "Running the refuters:\n", "\n", "The current refuter: Refuter(name='dummy_outcome_refuter', params={'num_simulations': 5, 'transformation_list': [('random_forest', {'n_estimators': 100, 'max_depth': 6})], 'true_causal_effect': at 0x7f8253b014c0>})\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "divide by zero encountered in double_scalars\n", "divide by zero encountered in double_scalars\n", "divide by zero encountered in double_scalars\n", "divide by zero encountered in double_scalars\n", "divide by zero encountered in double_scalars\n", "divide by zero encountered in double_scalars\n", "divide by zero encountered in double_scalars\n", "divide by zero encountered in double_scalars\n", "divide by zero encountered in double_scalars\n", "divide by zero encountered in double_scalars\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "printing refute's type\n", "\n", "printing refute's type\n", "\n", "printing refute's type\n", "\n", "printing refute's type\n", "\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "Co-variance matrix is undertermined. Inference will be invalid!\n", "Co-variance matrix is undertermined. Inference will be invalid!\n", "Co-variance matrix is undertermined. Inference will be invalid!\n", "Co-variance matrix is undertermined. Inference will be invalid!\n", "Co-variance matrix is undertermined. Inference will be invalid!\n", "Co-variance matrix is undertermined. Inference will be invalid!\n", "Co-variance matrix is undertermined. Inference will be invalid!\n", "Co-variance matrix is undertermined. Inference will be invalid!\n", "Co-variance matrix is undertermined. Inference will be invalid!\n", "Co-variance matrix is undertermined. Inference will be invalid!\n", "divide by zero encountered in double_scalars\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "printing refute's type\n", "\n", "estimated effect [0.5, 0.5, 0.5, 0.5, 0.5]\n", "new_effect [-4.147565519505983, -1.7141140588235135, -1.7036157395761056, -0.7428775864227692, -2.1217000277206086]\n", "p_value [0.013825076606160391, 0.2138210045430693, 0.08580012569262041, 0.1317513238252811, 0.03116820329055736]\n", "true value -0.7118483425914773\n", "\n", "\n", "Running Experiment Number: 8\n", "\n", "\n", "Current Sample Size: 1000\n", "\n", "\n", "The current DGP:\n", "\n", " Linear Data Generating Process\n", " -------------------------------\n", " \n", " treatment:['t1']\n", " outcome:['y']\n", " confounder: ['w1', 'w2', 'w3', 'w4', 'w5', 'w6']\n", " effect_modifier: ['x1', 'x2']\n", " weights: {'confounder=>treatment': array([[ 9.93383371e+01],\n", " [-1.49190569e-01],\n", " [ 1.78021695e+00],\n", " [-7.28706319e-02],\n", " [ 8.17952509e-01],\n", " [ 1.37571741e+00]]), 'confounder=>outcome': array([[ 9.97984251e+01],\n", " [ 1.93083324e+00],\n", " [ 1.37314742e-01],\n", " [-3.80938219e-02],\n", " [ 3.14354014e-01],\n", " [-3.15150426e-01]]), 'effect_modifier=>outcome': array([[ 0.37546678],\n", " [-0.47306045]]), 'treatment=>outcome': array([[-0.71184834]])}\n", " bias: {'confounder=>treatment': array([0.95786994]), 'confounder=>outcome': array([1.10533355])}\n", " seed: None\n", " treatment_is_binary: True\n", " percentile: 0.9\n", " \n", "printing data shape\n", "(1000, 10)\n", "[-0.39379018]\n", "check\n", "printing length of confounder list: 2\n", "printing confounder list: ['w2', 'w3']\n", "data columns\n", "data columns Index(['x1', 'x2', 'w1', 'w2', 'w3', 'w4', 'w5', 'w6', 't1', 'y'], dtype='object')\n", "identified_estimand: Estimand type: nonparametric-ate\n", "\n", "### Estimand : 1\n", "Estimand name: backdoor\n", "Estimand expression:\n", " d \n", "─────(Expectation(y|w3,w2))\n", "d[t₁] \n", "Estimand assumption 1, Unconfoundedness: If U→{t1} and U→y then P(y|t1,w3,w2,U) = P(y|t1,w3,w2)\n", "\n", "### Estimand : 2\n", "Estimand name: iv\n", "No such variable found!\n", "\n", "### Estimand : 3\n", "Estimand name: frontdoor\n", "No such variable found!\n", "\n", "\n", "\n", "Running the estimators:\n", "\n", "The current estimator: Estimator(name='backdoor.linear_regression', params=None)\n", "estimator.params None\n", "printing estimate's type\n", "\n", "The current estimator: Estimator(name='backdoor.propensity_score_matching', params={'init_params': {}})\n", "estimator.params {'init_params': {}}\n", "printing estimate's type\n", "\n", "The current estimator: Estimator(name='backdoor.propensity_score_weighting', params={'init_params': {}})\n", "estimator.params {'init_params': {}}\n", "printing estimate's type\n", "\n", "The current estimator: Estimator(name='backdoor.econml.dml.DML', params={'init_params': {'model_y': GradientBoostingRegressor(), 'model_t': GradientBoostingRegressor(), 'model_final': LassoCV(fit_intercept=False), 'featurizer': PolynomialFeatures(degree=1)}, 'fit_params': {}, '_econml_methodname': 'econml.dml.DML'})\n", "estimator.params {'init_params': {'model_y': GradientBoostingRegressor(), 'model_t': GradientBoostingRegressor(), 'model_final': LassoCV(fit_intercept=False), 'featurizer': PolynomialFeatures(degree=1)}, 'fit_params': {}, '_econml_methodname': 'econml.dml.DML'}\n", "printing estimate's type\n", "\n", "The current estimator: Estimator(name='backdoor.econml.dr.LinearDRLearner', params={'init_params': {'model_propensity': LogisticRegressionCV(cv=3)}, 'fit_params': {}, '_econml_methodname': 'econml.dr.LinearDRLearner'})\n", "estimator.params {'init_params': {'model_propensity': LogisticRegressionCV(cv=3)}, 'fit_params': {}, '_econml_methodname': 'econml.dr.LinearDRLearner'}\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "Co-variance matrix is undertermined. Inference will be invalid!\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "printing estimate's type\n", "\n", "estimate_values [73.56220056774752, 75.72782687369617, 74.26061688517302, 68.65900244408805, 74.00602803590347]\n", "\n", "\n", "Running the refuters:\n", "\n", "The current refuter: Refuter(name='dummy_outcome_refuter', params={'num_simulations': 5, 'transformation_list': [('random_forest', {'n_estimators': 100, 'max_depth': 6})], 'true_causal_effect': at 0x7f8253b014c0>})\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "divide by zero encountered in double_scalars\n", "divide by zero encountered in double_scalars\n", "divide by zero encountered in double_scalars\n", "divide by zero encountered in double_scalars\n", "divide by zero encountered in double_scalars\n", "divide by zero encountered in double_scalars\n", "divide by zero encountered in double_scalars\n", "divide by zero encountered in double_scalars\n", "divide by zero encountered in double_scalars\n", "divide by zero encountered in double_scalars\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "printing refute's type\n", "\n", "printing refute's type\n", "\n", "printing refute's type\n", "\n", "printing refute's type\n", "\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "Co-variance matrix is undertermined. Inference will be invalid!\n", "Co-variance matrix is undertermined. Inference will be invalid!\n", "Co-variance matrix is undertermined. Inference will be invalid!\n", "Co-variance matrix is undertermined. Inference will be invalid!\n", "Co-variance matrix is undertermined. Inference will be invalid!\n", "Co-variance matrix is undertermined. Inference will be invalid!\n", "Co-variance matrix is undertermined. Inference will be invalid!\n", "Co-variance matrix is undertermined. Inference will be invalid!\n", "Co-variance matrix is undertermined. Inference will be invalid!\n", "Co-variance matrix is undertermined. Inference will be invalid!\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "printing refute's type\n", "\n", "estimated effect [0.5, 0.5, 0.5, 0.5, 0.5]\n", "new_effect [1.749647915200957, 1.8620034019388367, -1.356395307770431, -1.1753062441855366, -0.275904927572282]\n", "p_value [0.36335761697581104, 0.24646307290506075, 0.22726845727933798, 0.13264628189994065, 0.39105436497147905]\n", "true value -0.3937901793945747\n", "\n", "\n", "Running Experiment Number: 9\n", "\n", "\n", "Current Sample Size: 1000\n", "\n", "\n", "The current DGP:\n", "\n", " Linear Data Generating Process\n", " -------------------------------\n", " \n", " treatment:['t1']\n", " outcome:['y']\n", " confounder: ['w1', 'w2', 'w3', 'w4', 'w5', 'w6']\n", " effect_modifier: ['x1', 'x2']\n", " weights: {'confounder=>treatment': array([[98.36431219],\n", " [-1.35774824],\n", " [-0.33410297],\n", " [-0.37750026],\n", " [-1.42513053],\n", " [ 0.12266662]]), 'confounder=>outcome': array([[101.93716725],\n", " [ -0.52495031],\n", " [ 1.387888 ],\n", " [ -0.77873453],\n", " [ 0.52871309],\n", " [ -0.99022129]]), 'effect_modifier=>outcome': array([[-0.98231585],\n", " [-1.5643878 ]]), 'treatment=>outcome': array([[-0.39379018]])}\n", " bias: {'confounder=>treatment': array([1.67342869]), 'confounder=>outcome': array([-1.10170163])}\n", " seed: None\n", " treatment_is_binary: True\n", " percentile: 0.9\n", " \n", "printing data shape\n", "(1000, 10)\n", "[0.83310337]\n", "check\n", "printing length of confounder list: 2\n", "printing confounder list: ['w2', 'w3']\n", "data columns\n", "data columns Index(['x1', 'x2', 'w1', 'w2', 'w3', 'w4', 'w5', 'w6', 't1', 'y'], dtype='object')\n", "identified_estimand: Estimand type: nonparametric-ate\n", "\n", "### Estimand : 1\n", "Estimand name: backdoor\n", "Estimand expression:\n", " d \n", "─────(Expectation(y|w3,w2))\n", "d[t₁] \n", "Estimand assumption 1, Unconfoundedness: If U→{t1} and U→y then P(y|t1,w3,w2,U) = P(y|t1,w3,w2)\n", "\n", "### Estimand : 2\n", "Estimand name: iv\n", "No such variable found!\n", "\n", "### Estimand : 3\n", "Estimand name: frontdoor\n", "No such variable found!\n", "\n", "\n", "\n", "Running the estimators:\n", "\n", "The current estimator: Estimator(name='backdoor.linear_regression', params=None)\n", "estimator.params None\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "divide by zero encountered in double_scalars\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "printing estimate's type\n", "\n", "The current estimator: Estimator(name='backdoor.propensity_score_matching', params={'init_params': {}})\n", "estimator.params {'init_params': {}}\n", "printing estimate's type\n", "\n", "The current estimator: Estimator(name='backdoor.propensity_score_weighting', params={'init_params': {}})\n", "estimator.params {'init_params': {}}\n", "printing estimate's type\n", "\n", "The current estimator: Estimator(name='backdoor.econml.dml.DML', params={'init_params': {'model_y': GradientBoostingRegressor(), 'model_t': GradientBoostingRegressor(), 'model_final': LassoCV(fit_intercept=False), 'featurizer': PolynomialFeatures(degree=1)}, 'fit_params': {}, '_econml_methodname': 'econml.dml.DML'})\n", "estimator.params {'init_params': {'model_y': GradientBoostingRegressor(), 'model_t': GradientBoostingRegressor(), 'model_final': LassoCV(fit_intercept=False), 'featurizer': PolynomialFeatures(degree=1)}, 'fit_params': {}, '_econml_methodname': 'econml.dml.DML'}\n", "printing estimate's type\n", "\n", "The current estimator: Estimator(name='backdoor.econml.dr.LinearDRLearner', params={'init_params': {'model_propensity': LogisticRegressionCV(cv=3)}, 'fit_params': {}, '_econml_methodname': 'econml.dr.LinearDRLearner'})\n", "estimator.params {'init_params': {'model_propensity': LogisticRegressionCV(cv=3)}, 'fit_params': {}, '_econml_methodname': 'econml.dr.LinearDRLearner'}\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "Co-variance matrix is undertermined. Inference will be invalid!\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "printing estimate's type\n", "\n", "estimate_values [67.25415206544824, 65.29020071849979, 68.958392999682, 72.23278747313975, 67.01928297379473]\n", "\n", "\n", "Running the refuters:\n", "\n", "The current refuter: Refuter(name='dummy_outcome_refuter', params={'num_simulations': 5, 'transformation_list': [('random_forest', {'n_estimators': 100, 'max_depth': 6})], 'true_causal_effect': at 0x7f8253b014c0>})\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "divide by zero encountered in double_scalars\n", "divide by zero encountered in double_scalars\n", "divide by zero encountered in double_scalars\n", "divide by zero encountered in double_scalars\n", "divide by zero encountered in double_scalars\n", "divide by zero encountered in double_scalars\n", "divide by zero encountered in double_scalars\n", "divide by zero encountered in double_scalars\n", "divide by zero encountered in double_scalars\n", "divide by zero encountered in double_scalars\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "printing refute's type\n", "\n", "printing refute's type\n", "\n", "printing refute's type\n", "\n", "printing refute's type\n", "\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "Co-variance matrix is undertermined. Inference will be invalid!\n", "Co-variance matrix is undertermined. Inference will be invalid!\n", "Co-variance matrix is undertermined. Inference will be invalid!\n", "Co-variance matrix is undertermined. Inference will be invalid!\n", "Co-variance matrix is undertermined. Inference will be invalid!\n", "Co-variance matrix is undertermined. Inference will be invalid!\n", "Co-variance matrix is undertermined. Inference will be invalid!\n", "Co-variance matrix is undertermined. Inference will be invalid!\n", "Co-variance matrix is undertermined. Inference will be invalid!\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "printing refute's type\n", "\n", "estimated effect [0.5, 0.5, 0.5, 0.5, 0.5]\n", "new_effect [0.08176920026248932, 2.752025043383573, 0.40789344015403, 0.8999260934353741, 0.6011498721748059]\n", "p_value [0.44181950392725844, 0.2074635881108115, 0.4878406193539633, 0.3804854088033537, 0.48067500747317793]\n", "true value 0.8331033725424504\n", "\n", "\n", "Completed all experiments. Saving the data...\n", "Data has been saved in results/Test_1_2021-03-02_data.csv\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "Co-variance matrix is undertermined. Inference will be invalid!\n" ] } ], "source": [ "# Define the properties of the experiment\n", "# The name of the experiment\n", "# The experiment ID\n", "# The number of experiments to be run with the SAME parameters\n", "# The size of the samples to be run\n", "# The list of DGPs to be run\n", "# The list of estimators\n", "observed_confounding_error = Experiment(\n", " experiment_name='Test',\n", " experiment_id='1',\n", " num_experiments=10, # 10\n", " sample_sizes=sample_size,\n", " dgps=dgp_list,\n", " estimators=estimator_tuples,\n", " refuters=refuter_tuples,\n", " simulate_unobserved_confounding = False \n", ")\n", "\n", "# Run the experiment\n", "res = pd.read_csv(observed_confounding_error.experiment())" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "scrolled": true }, "outputs": [ { "data": { "image/png": "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ZeKiiWRkZwCw5cAWJi6aCFAmQeGcbzZx1xsrSc/MpveGZQxfMZuI7EwAsjZvZsvf7gEoeVCY55jDng3eMCgoFJEKS01GRaTimn//kQszn6jqZ3G49XuE+4LBXOHh2XRpvYpJH6w+niUUqZSmLZ/mDwZzZWRnMG35tDKZ36QPVpOe6e3zI1a9R5QvGMxlGRlsnzK15DMKccwhM91LFxGpoBQQikjFtWdjvqSosHAiIveHzB4ZdZDNaekhvxOR0rP1wNZipZdU4H5dPz0tZJ6sLVtKPqMQx5xC00VEKgAFhCJScdVumi8pIyebzEM1QmY/lFGNxnWiy7pUIpVew+oNi5VeUoH7dWp0nZB5qjRqVPIZhTjmFJouIlIBKCAUkYqr7z0QERzgZRz4mKprziM7OzwoPTs7nK/WtGP8uW2OZwlFKqUxyWOICo8KSosKj2JM8pgymd/4c9sQHeHt8zPanUdGeETQ9y4qigbjxpZ8RiGOOUREe+kiIhWUOpURkYortxOHgF5GX4092etl1HI4lKeX0Q691KGMyPGQ23HM8eplNHe/nvTBaj6jA3WrVS2bXkbzHHPUy6iInAicmZV3GUSkEujYsaMtXbq0vIshIlKhOOeWmVnH8i6HiJy41GRURERERESkklJAKCJBnHPPOee2O+e+L+D73s65Pc65Fb4/PTwjIiIiUkHpGUIRyWsG8DjwYiF5PjezC45PcURERESkrKiGUESCmNlCYFd5l0NEREREyp4CQhE5Fl2dc986595zzrUv78KIiIiIyLFRk1ERKa7lQIyZ7XfOnQ/MAVqHyuicGw2MBmjWrNlxK6CIiIiIFI1qCEWkWMxsr5nt932eB0Q45+oVkPdpM+toZh3r169/XMspIiIiIkengFBEisU519A553yfO+MdR3aWb6lERERE5FioyaiIBHHOzQR6A/WccxuBe4EIADN7CrgEuME5lwWkA5eZmZVTcUVERESkBBQQikgQM7v8KN8/jvdaChERERGp4NRkVEREREREpJJSQCgiIiIiIlJJKSAUERERERGppBQQioiIiIiIVFIKCEVERERERCopBYQiIiIiIiKVlAJCERERERGRSkoBoYiIiIiISCWlgFBERERERKSSUkAoIiIiIiJSSSkgFBERERERqaQUEIqIiIiIiFRSCghFREREREQqKQWEIiIiIiIilZQC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7xnC0py2iIiIiJScAkKRSsbMzirhJDYBpwYMN/WliYiIiEgFoyajIlJcS4DWzrkWzrmqwGXA2+VcJhERERE5BgoIRcTPOTfIObcR6ArMdc594Etv7JybB2BmWcDNwAfAj8BrZvZDeZVZRERERI6dmoyKiJ+ZvQm8GSJ9M3B+wPA8YN5xLJqIiIiIlAHVEIqIiIiIiFRSCghFREREREQqKQWEIiIiIiIilZQCQhERERERkUpKAaGIiIiIiEglpYBQRERERESkklJAKCIiIiIiUkkpIBQREREREamkFBCKiIiIiIhUUgoIRUREREREKikFhCIiIiIiIpWUAkIREREREZFKSgGhiIiIiIhIJaWAUEREREREpJJSQCgiIiIiIlJJKSAUERERERGppBQQioiIiIiIVFIKCEVERERERCopBYQi4uecG+Kc+8E5l+Oc61hIvhTn3Ern3Arn3NLjWUYRERERKT1VyrsAIvK78j0wGPh3EfL2MbMdZVweERERESlDCghFxM/MfgRwzpV3UURERETkOFCTURE5FgZ86Jxb5pwbXd6FEREREZFjoxpCkUrGOfcx0DDEVxPM7K0iTuZMM9vknGsAfOSc+8nMFoaY12hgNECzZs2OucwiIiIiUjYUEIpUMmZ2VilMY5Pv/3bn3JtAZyBfQGhmTwNPA3Ts2NFKOl8RERERKV1qMioixeKcq+6cq5n7GTgHrzMaEREREalgFBCKiJ9zbpBzbiPQFZjrnPvAl97YOTfPl+0U4Avn3LfAYmCumb1fPiUWERERkZJQk1ER8TOzN4E3Q6RvBs73fV4LJBznoomIiIhIGVANoYiIiIiISCWlgFBERERERKSSUkAoIiIiIiJSSSkgFBERERERqaQUEIqIiIiIiFRSCghFREREREQqKQWEIiIiIiIilZQCQhERERERkUpKAaGIiIiIiEglpYBQRERERESkklJAKCIiIiIiUkkpIBQREREREamkqpR3AURESmrON5uY9MFqNqel07/OPE45cBJ1T/mNFi2/pWrkfnIO1ubA1s4Muvap8i6qlLfvXoP598OejVC7KfS9B+KHlvps5q6dy7Tl09h6YCsNqzeke93hfLi4CZvT0mlcJ5rx57ahz8blbJ8ylawtW6jSqBENxo2l9oABpV4WERGRwjgzK+8yiEgl0LFjR1u6dGmpT3fON5u4642V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AHr37s3SpUsB7301F198sX+82bNnM2LEiKDyDBw4MOgF9eC9bHXy5MlFWp7w8HASExP9f4888ggA7777LklJSSQkJNCuXTv+/e9/8+CDD/rzBY43ffr0oHmOGDGCatWqBb0MfezYsTjn2LFjhz9tzpw5OOf46aefADjjjDNITEykWbNm1K9f3z/9lJQUmjdvTlxcnD/tlltuybcsxVnuwowYMYLZs2cXmmfBggVl8jLO37tRo0axatUqAB566KFyLk35mDFjBps3bz5qnsB9PtD555/v399FfrfK6BwaqLSO2b8HU6dO5eDBg+VdjGL76aefSExMJCkpiV9//bXAfEU57h2NztFlrzKfozdv3swll1xy1Hy57w/Ma86cOf51B3DPPfeUykvswbu279ixo3946dKl9O7dGyAofsj9+/jjjxk3bhxTp071j3PuuecyatQo//Ctt97KY489FnJ+KSkpREdHB03zxRdfBMh3Pb1o0aKQ+Q8fPsyMGTOCrscTExP96+jnn3/m/PPPp3Xr1iQnJzN06FBmzZrlz1ejRg3atGlDYmIiV111VbHWV+m9h/C71+CdWyAz3Rves8EbBogfesyTNTMGDx7MDTfcwFtvvUV2djajR49mwoQJ9O/fnx49evDuu++Snp5OUlISgwYNonv37kHTeP/995kyZQrvvfceTZo0ITs7mxdeeIFt27ZRp06dfPNctmwZq1atol27dvm+S0tLY9myZdSoUYO1a9fSsmXLYi9TdHR0vpeJZ2ZmMnr0aBYvXkzTpk05dOgQKSkptGnThgkTJgDeDhU43sSJE4Omcdppp/HWW28xbNgwcnJy+OSTT2jSpElQnpkzZ3LmmWcyc+ZM7rvvPn9XxzNmzGDp0qU8/vjjQfk//fTTcnmZa1nKysqiSpXibfrHMk5peeaZZ/yfH3roIf7617+WSzkCHe/1MWPGDGJjY2ncuPExjT9v3rxSLpFIKSujc+iJbOrUqQwbNoxq1aqVd1HyKewYOWfOHC655BLuvvvuQqdxLMe98jxXlRado0vueK2Pxo0bH/VGQWHmzJnDBRdc4L/evv/++0uraABs376d9957j/POOy/fd7nxQ6C0tDRee+01xo4dS05ODjt27GDv3r3+7xctWsSUKVMKnF+rVq3yXd/nyns9nZKSUmD+Sy+9NN/1eEZGBv379+exxx5j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j3/k7rvv5quvvipS/u7du7No0SJWrlxJbGwsp556Kv/v//0/atWq5X98rTy0b9+ezz77rMymX3rPEMYPhQHTofapgPP+D5he4ofh+/bty8GDB/3tmbOzs7n11lv9vWrmatGiBXfeeWe+OwAAd911F7fddhsbN270px3tIjAiIoJx48YFPTw6c+ZM3n//fVJSUkhJSWHZsmWl9ize/v37WbBggX94xYoVxMTEFHs6MTExPPjgg9x4441B6bNnz2b48OGsX7+elJQUNmzYQIsWLfzt1EvirbfeIiMjg507d7JgwQI6derEnj17aNCgAREREXz66aesX78e8HbM119/nZ07dwL4n0cB707PnXfeSf/+/dm3bx9t27YlJSXF3wvbzJkz/Xl79OjBK6+8Ahx5qLZWrVoFphcmJyfHf9PhP//5D2eeeWa+PG3atCElJcX/7MFLL71Er169/N/nPkswa9Ysfy3TOeecwz//+U9/noLuGuXavHkz1apVY9iwYYwfP57ly5fnyxMREeF/tgVg0KBBvP/++yxZsiTfgTrQ+vXrOeWUU7j22msZNWoUy5cvp0uXLixcuJB169YBR36Loq7D4i7f0eRejNSrV4/9+/cH3QiqWbOm/znBNm3asGXLFpYsWQIcef62JOrUqUPNmjX9nSyV5jO2IkVSRufQnj17MmfOHNLT09m3bx/vvPMO4NVeLFu2DKBEnUIcTVGPUT169GDWrFlkZ2eTmprKwoUL6dy5MzExMaxatYpDhw6RlpbG/Pnz/eMEHhdKejwLpU2bNqSmpvqDsMzMTH744YdSHfeUU05h+/bt7Ny5k0OHDgXVWOQ97h1rWXSO1jn6aMt36qmnsmPHDtasWUPLli0588wzmTx5Mj179gS83jaffPJJ/7L9/PPPHDhwIGga3bt357XXvJ6RV61axcqVKwucX67AbbyoAufz4Ycfsnv37qOOc/fdd/Poo48WafrdunXj3XffpW7duoSHh1O3bl3S0tL48ssv6datW7HKWpquuOIKFi1axNy5c/1pCxcu5Pvvvy+V6ZduF0TxQ0u9NzTnHG+++SY33ngjf//738nJyeH888/noYceynen7Prrr2fy5Mn57licf/75pKamct5555GdnU2dOnWIjY0tdOcE+NOf/sQDDzwAeHdB1q9fH/S6iRYtWlC7dm3/ReQDDzwQ9ABxYAAaKPeh41z9+vVjwoQJPProo1x33XVER0dTvXr1YtcO5rruuuvypc2cOZM77rgjKO3iiy9m5syZ/h0+lD59+hAeHg5AfHw8L774Ik899RRwpFlKfHw8ffr0YceOHfztb3+jcePGXHnllQwYMIC4uDg6duxI27ZtAe8Ox4QJE+jVqxfh4eEkJSUFLeeQIUPYt28fF154IfPmzePpp5+mf//+VKtWjR49evgPHLkPfcfHx1OtWjVeeOGFQtPzSkxM9B8cq1evzuLFi3nggQdo0KCB/8QRKCoqiueff54hQ4aQlZVFp06dgprl7N69m/j4eCIjI/0nxenTp3PTTTcRHx9PVlYWPXv29K+7UFauXMn48eP9d6uffPLJfHlGjx5NfHw8ycnJvPLKK1StWpU+ffpQp04d/+8UyoIFC5g0aRIRERHUqFGDF198kfr16/P0008zePBgcnJyaNCgAR999FGR12Fxl+9o6tSpw7XXXktsbCwNGzb0NwkFr8vz66+/nujoaL788ktmzZrFn//8Z9LT04mOji6VbqqfffZZrr32WsLCwujVq5e/6anIcVMG59Dk5GQuvfRSEhISaNCggX+/uu222xg6dKj/GFtWinqMGjRoEF9++SUJCQk453j00Uf9j4AMHTqU2NhYWrRoQVJSkn+c0aNH069fPxo3bsynn35aouNZQWWfPXs2t9xyC3v27CErK4uxY8fSvn37Uhs3IiKCe+65h86dO9OkSRP/uRLyH/eKWhado3WOPpblO+OMM8jOzga8oPOuu+7yB9+jRo0iJSWF5ORkzIz69eszZ86coPFvvPFGrr76atq1a0fbtm1p3779Uc+jl112Gddeey3Tp08v8o2pe++9l8svv5yXXnqJrl270rBhQ2rWrAl41/vPPPNMvp55zz//fOrXrx+U9vnnnwddi999991ccsklxMXFsWPHDq644gr/d3Fxcezfv/+ove7/+uuvQdMcOXJkyFe2Hc2sWbP44osv/MP/+te//IHq2LFjGTt2LBEREcTHxxfYUVFxOTMr8Mtly5bZ0Z4xE6noatSo4X9u4Fg0b96cpUuXlsvrOXJyckhOTub111/3P8chxybw2YpHHnmELVu2lNqBVqSy0jFKSkrn6IohOzubzMxMoqKi+PXXXznrrLNYvXo1VatWLdX5HDp0iPDwcKpUqcKXX37JDTfc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OpcF1szcfPPNzJgxg+nTp7N582b69OlDnz59AO/mb3JyMgkJCf73ABd2Trj66qvp0aMHMTExvPHGG9x+++3ExcXRr18/MjMzAe9iuVevXnTo0IFzzz2XLVu2FLiee/fuzdixY+nYsSPTpk0LOe68efOYOnUqTz75JH369MlXQzR58mQmTpzI7NmzWbp0KVdeeSWJiYmkp6cXWJa8881L52idowtT2DVvKN26dWPRokUALFq0iAEDBpCamoqZsW7dOqKjo2nYsGGxy1EannjiCa6++mp/MAhwySWXcMopp5RLeSqSUgsItx7YWqz0ovrhhx/I+y7EWrVq0axZM3755Rd/2u7du1mzZg09e/YMOY3k5OQiz3Po0KEsX748aPq5Zs6cyeWXX87ll1/OzJkzi7EkR6SnpwdVc8+aNYu6dety4YUXEhMTw+WXX84rr7zibxpQVKeffjqpqans3r2bmf+fvXOP6/n8//+jkrxT2BBy6CSleh9KUejwdpgspyLpi5WW0xj5kLFGGXZQH2I25mPTjE+1ctzmY061mExFZM1heGNC72pSOqh3z98f79/7Wu/q/a6UGbvut1s33tfrup7X8zq8rufrdb2e13XFx2PKlClq1w8cOABvb2/069cPnTt3RlZWVqMypVIp03PDhg0AgK1bt6oNZhcvXsSJEyeQnp6O999/H3l5eWjXrh327duHc+fOISUlBYsXLwYR4ZdffsGaNWtw4sQJXLhwoZ7xCg8Ph1wux44dO1BVVYWZM2fi22+/RVZWFu7f/7MvRUZGwtHRERcvXsQHH3yAN954Q2s4AOTm5uLYsWNq7VZQUIA1a9bg2LFjOHfuHJydnbF+/Xo8efIEAQEB2LhxIy5cuIBjx45BIBDg008/hY6ODnJychAfH4+goCBUVCgf4rKzs5GYmIicnBwkJibizp07AIDHjx9j2LBh+OWXX2BsbIz33nsPR48exb59+7By5Uqt9b9v3z5cuXIFubm52LlzJxuEVfTp0wfZ2dlwd3dn7iFnzpxBZGRko21bF0tLSygUCjWDNmnSJCQlJeH06dNwcnKCgYFBs+VyOJzGeVY2NCsrCwkJCcjOzsahQ4eQkZHRaJpLly5h7969yMjIQEREBAwNDXH+/Hm4ublh586dLF7btm2RmZmJOXPmYPz48fj0009x6dIlxMXFobCwECEhISx+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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "Printing MAE of various estimates: \n", "ORIGINAL_ESTIMATE:backdoor.econml.dr.LinearDRLearner 64.18317503790067\n", "ORIGINAL_ESTIMATE:backdoor.linear_regression 64.14226789400405\n", "ORIGINAL_ESTIMATE:backdoor.econml.dml.DML 63.010253145659064\n", "ORIGINAL_ESTIMATE:backdoor.propensity_score_matching 61.50073009771594\n", "dummy_outcome_refuter:backdoor.propensity_score_matching:NEW_EFFECT 2.177591843145904\n", "dummy_outcome_refuter:backdoor.linear_regression:NEW_EFFECT 2.0951190871186314\n", "dummy_outcome_refuter:backdoor.econml.dr.LinearDRLearner:NEW_EFFECT 1.8776493671009689\n", "dummy_outcome_refuter:backdoor.propensity_score_weighting:NEW_EFFECT 1.7945621201670954\n", "dummy_outcome_refuter:backdoor.linear_regression:ESTIMATED_EFFECT 1.0123354779759617\n", "dummy_outcome_refuter:backdoor.propensity_score_matching:ESTIMATED_EFFECT 1.0123354779759617\n", "dummy_outcome_refuter:backdoor.propensity_score_weighting:ESTIMATED_EFFECT 1.0123354779759617\n", "dummy_outcome_refuter:backdoor.econml.dml.DML:ESTIMATED_EFFECT 1.0123354779759617\n", "dummy_outcome_refuter:backdoor.econml.dr.LinearDRLearner:ESTIMATED_EFFECT 1.0123354779759617\n", "dummy_outcome_refuter:backdoor.econml.dml.DML:NEW_EFFECT 0.9760934297525985\n", "dummy_outcome_refuter:backdoor.linear_regression:P_VALUE 0.8842948773957586\n", "dummy_outcome_refuter:backdoor.econml.dr.LinearDRLearner:P_VALUE 0.880160773203533\n", "dummy_outcome_refuter:backdoor.propensity_score_weighting:P_VALUE 0.872557346686021\n", "dummy_outcome_refuter:backdoor.econml.dml.DML:P_VALUE 0.8701271000913812\n", "dummy_outcome_refuter:backdoor.propensity_score_matching:P_VALUE 0.8473868158380842\n" ] } ], "source": [ "#PLOT\n", "#This plot shows the Mean Absolute Error of the Orginal Estimate from the true value and of the New Effect from \n", "#the expected value for each estimator. \n", "plot_MAEs(res)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Ranking based on Original Estimate" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The Original Estimate is calculated in the presence of the True Value (that is, the ground truth). However in many real life datasets, the ground truth may not be known. Hence, we want the ranking produced by our refutation tests to be in coherence with that obtained from the Original Estimates. According to the Original Estimate values, the ranking of the estimators should be as follows (the method with the least MAE should get the best rank):\n", "1. DMLCateEstimator \n", "2. LinearRegression \n", "3. LinearDRLearner \n", "4. Propensity Score Matching " ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [], "source": [ "estimator_list = [\"backdoor.linear_regression\",\n", " #\"backdoor.propensity_score_stratification\",\n", " \"backdoor.propensity_score_matching\",\n", " \"backdoor.econml.dml.DML\",\n", " \"backdoor.econml.dr.LinearDRLearner\",\n", " #\"backdoor.econml.metalearners.TLearner\",\n", " #\"backdoor.econml.metalearners.XLearner\",\n", " #\"backdoor.causalml.inference.meta.LRSRegressor\",\n", " #\"backdoor.causalml.inference.meta.XGBTRegressor\",\n", " #\"backdoor.causalml.inference.meta.MLPTRegressor\",\n", " #\"backdoor.causalml.inference.meta.BaseXRegressor\"\n", " ]" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "image/png": "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4HtAubs3dTS/iIj0vqguBPtvYBfgUTMDeNrdz48oFhHpoa1bt7Jq1So2b94cdSixN2jQIEaMGMGAAQM6nDeSBODuB0axXhHJjFWrVrH77rtTWlpK+KdOIuDurF27llWrVrH//vt3OH8unAUkIn3c5s2b2XvvvbXzj5iZsffee3f6SEwJQER6hXb+uaErn4MSgIhITCkBiEif0tDQQFFRERUVFVRUVHDFFel7krn//vt59913AXj44YeZPXt2t9d55513smXLlk7N+/LLL3PWWWd1KuZrr72W448/nkcffbTNcGd88MEH3HvvvV16H6nUHbSIZE0iATU1sGIFFBdDbS1UdePi6/LycmbNmrXTee6//34OPPBAPvGJT3DyySd3M+LAnXfeyamnnsrAgQO7vYx0Mc+dO5dnn30WgJqamtbhzmhJAKeddlq3Y1ICEJGsSCSguhqawit/GhuDceheEkj2/vvvM3nyZMyMPfbYgxkzZvDwww/zyiuvMG7cOEaNGsXGjRu58MILOeSQQzj66KN5/vnnmT59Og888ACvvfYav/rVrzjuuOO49NJLWbhwIZs2baKuro5Nmzbx4osvMmHCBCZNmsQ3vvENzjvvPD788EOGDx/OXXfdhbvz9a9/nffff5+SkpJOxXzzzTezdOlSKioqqKysbB2+6667ePzxx7ntttvYvn071113HZWVlTz77LNceuml9O/fny9/+cu89957PPHEE1RUVPDLX/6SUaNGdX3DuXufeYwePdpFJPcsWbKkw3lKStxhx0dJSdfWtXz5ch82bJiXl5d7eXm5z5gxwx977DGfPn26u7tv377d3d2/+c1v+uLFi93d/Y477vCf//zn7u4+dOhQ37Bhg7/66qs+fPhw37Rpk7/44ot+5plnurv7P//5T3d3f/755/3rX/+6u7uXl5f7hg0b3N192rRpPm/ePHd3v+GGG/y+++7z++67z6+44gp3d7/11lv9m9/8Zocxu7sn79Naht977z0/6aSTvLm52Tdu3Ojl5eXu7n7sscf6ihUrWt/j8uXLfcqUKWm3UernAdR7mn2qjgBEJCtWtHOrhfbKdya1OmXbtm08+eSTVFVVccQRR3DZZZe1+9oDDjiA3XbbjX333ZeDDjqIQYMGsd9++7Fu3ToAfvKTn/DYY48B0L//jrvIJUuW8Mwzz3DttdeyadMm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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "5.614951761166643\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "7.580786847836746\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "-0.40788444132963897\n" ] }, { "data": { "image/png": "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RcmCfoL2DWPGjPFOdbWa3O0whHd9iuBmp9Iqub4Zgi4pqk6vyo2L1LItB+6N0NXvZOXKlRx++OEdmNGel/WVt19JubHvk9+HIw8+smMLI7t9H2a2xN13q/fq2QmguDh1p2NFRbBuXXeFJZ1UPLe4tV43UdGgItZdui77AQkQJIG97SakwwmgHcltAAB5lkfRoKKUDcGSWkcTQM9uBM6ZO3FJoqzUN0un5UI3IS0b+Y6cBSRd17MTgLodzkmFgwpTHgF0a32z7LOGFAzRBj9LenYjsLodzkk50y21SMz17ARQXh40+BYVgVnwrAbgyJUfUU7V6VUUDSrCMIoGFcW3AVgkQj27CgjU7XCOyoX6Ztk3bdu2jUmTJgGwZMmS1ouv7rvvPg488MBOT2/BggXMnz+fW265pbXsqKOO4rnnnqNfv35txp09ezZjxozhtNNO68IS5I6efQQgIjmlO67/6NevX2unbYkduB144IGtF2B1xvjx41m4cGHrZ5csWcLo0aN32/j3REoAIpIVLdcatOn59KEZXb4IcPbs2UyfPp3Pfe5zvPLKK226eWh5vWbNGk499VTKysq47LLL2ny+V69efOpTn+KZZ54BYN68eUydOpW77rqLsrIyjj322N26gF63bh1nn302AFu3bm3tQ2jx4sWMHz+ekpISbrzxxi4tVzYoAYhIVuypv6GuGjFiBI888ghHH310yuFXXnklt9xyCzU1NWzfvp3k64mmTp3KvHnzAHjssceYNGkSU6ZMoaamhmeffZY5c+Z0KI4rr7yS++67j4ULF/L000/z9ttvd2m5Mq3ntwGISE7I5PUfxx9/fMrylgtdV61a1doV9JYtWzj11FPbHClMmDCBWbNm8dJLL/Gxj32Mfv36MX/+fG6++WbcndWrV7eZbmIfP4kX077yyiucddZZALz77rts2LCBgw8+uMvLlylKACKSFZm8/iOx983t27fT1NREXV0d7777LhD0yXPjjTdSVFSEu7f2H9SiV69eHH/88VxxxRVceOGFAFxzzTX89a9/xcwYOXJkm/EHDx5MXV3QQd3LL7/cWn7UUUcxb948Bg0aRFNTU873CqoEICJZUTmxMmV/Q919/Ud5eTknnngi48aNY/DgwQBcf/31fP3rX2f79u3k5+fz61//msKkC0KnTp3KlClTePjhhwGYPHkyJSUlHHvssRxwwAFtxh00aBDHHHMMJSUllJaWtpZfd911TJ48mebmZvbbbz/mz5+f043JPbsvIBHJio72BdSV/oak49QXkIjkHF3/kVtyu4JKREQyRglARCSmlAAktnRXMok7tQFILCXfAavlqlRAddQSGzoCkFjK5FWpklnr1q1j6NChlJWVccIJJ7Bo0aLWYVu2bGntHK7FBRdcwMKFC3ebTk1NDVdccUXG481lkSQAM/uRma0ys1fMbL6ZDY4iDokv3ZUsKtVAMcGmpzh833mlpaXU1NTw05/+lIqKXUl74MCBjBgxghUrVgCwc+dOFi1axMknn9zFuHumqI4AFgCfcPcjgdeAqyKKQ2Iq3dWnuitZJlUDM4BawMPnGextEgA4+uij2bBhQ5uyxH59nnzyScaPH8/y5cspLS3lxBNP5KKLLtptOqk6kNu4cSNf+MIXmDBhAuXl5btdPdwTRJIA3P1xd98Zvn0OGB5FHBJfuitZFCqAhqSyhrA8waZN8MorsHhx8LxpU9opPv3004waNapN2emnn956NW9Lz54f+chHqKmp4W9/+xsbNmzgH//4R7vRXnfddXzrW9/iqaee4sgjj2T+/PkdWMZ9Sy40Al8A/CHdQDObQbCbsNul2yJ7q6WhV1elZlO66rWE8k2bgvt4t/Tr39i4677eQ3bdJ/jpp5+mrKyMAQMGMHfu3DZT23///TnkkENYsWIFL7zwAr/4xS9YtWoVM2fOpKGhgTVr1vDPf/4zbZQtvSOsWLGC559/nquvvppt27Yxbdq0zi5wzstYAjCzJ4APpRhU4e4PhONUADvZwzGgu1cBVRB0BZGBUCWmdFVqthUSVPukKg/V1e3a+Ldobg7KExJAaWlpazVPKlOnTuXiiy9m3Lhx5OXlceuttzJz5kxOOeUUzjjjDJK7wMnPz2fLli1AcO8AgFGjRnHWWWdRUlICwI4dOzq+qPuIjFUBufsp7v6JFI+Wjf904DSg3PelDolEZC9VAgVJZQVheaixMfVH05WnccYZZ/Dss88ydepUIKgWuuSSS5gyZUrKu4Z985vfpKSkhJkzZ3LooYcCUFFRwZw5c5gwYQITJkxo0+tnTxFJZ3Bm9lngJqDU3es7+jl1BieSmzraGVxwsF9BUO1TSLDxTzgKe+WV1Bv7Pn3gyCO7I9RYyPXO4H4G7AcsCG+s8Jy7fz2iWEQka8pps8FPNmxY2zYAgLy8oFy6XSQJwN0/EsV8RSTHtdTz19UFRwJ9+gQb/4T6f+k+uXAWkIj0AO7e5laJe23IEG3wu6Az1frqCkJEuqxv375s2rSpUxsf6X7uzqZNm+jbt2+HxtcRgIh02fDhw3njjTeor+/wOR2SIX379mX48I5dW6sEICJd1rt3bw477LCow5BOUhWQiEhMKQGIiMRUJBeC7S0zqyf1teQdcRCwsRvD2ddpfeyiddGW1kdbPWF9FLn70OTCfSoBdIWZLU51JVxcaX3sonXRltZHWz15fagKSEQkppQARERiKk4JoCrqAHKM1scuWhdtaX201WPXR2zaAEREpK04HQGIiEgCJQARkZiKRQIws8+a2atmttrMrow6nqiY2Qgz+4uZrTCzv5vZJVHHlAvMLN/MXjKzh6OOJWpmNtjM5pnZKjNbaWYnRh1TVMzssvB/stzM7jGzjvWwtg/p8QnAzPKBnwOTgNHAeWY2OtqoIrMTmOnuo4FPAd+M8bpIdAmwMuogcsTNwKPuPgo4ipiuFzMbBnwLGOPunwDygXOjjar79fgEAJwArHb3Ne7eCPweODPimCLh7m+6+4vh6y0Ef+5Y32rJzIYDnwd+FXUsUTOzQcA44HYAd2909/ciDSpavYB+ZtaL4ObF/4w4nm4XhwQwDNiQ8P4NYr7RAzCzYuAY4PmIQ4naXODbwO53Co+fw4B64I6wSuxXZtY/6qCi4O51wI0ENy9+E9js7o9HG1X3i0MCkCRmNgD4E3Cpu78fdTxRMbPTgH+5+5KoY8kRvYBjgVvd/RjgAyCWbWZmdgBBTcFhwKFAfzP7j2ij6n5xSAB1wIiE98PDslgys94EG/9qd78v6ngiNhY4w8zWEVQNTjCzu6MNKVJvAG+4e8tR4TyChBBHpwBr3b3e3XcA9wEnRRxTt4tDAlgEfNTMDjOzPgQNOQ9GHFMkLLhh6+3ASne/Kep4oubuV7n7cHcvJvhdPOXuPW4vr6Pc/S1gg5l9PCyaCKyIMKQorQc+ZWYF4f9mIj2wQbzH3xHM3Xea2UXAYwQt+b92979HHFZUxgLTgGVmtjQs+467PxJdSJJjLgaqw52lNcBXIo4nEu7+vJnNA14kOHvuJXpglxDqCkJEJKbiUAUkIiIpKAGIiMSUEoCISEwpAYiIxJQSgIhITCkBSI9iZk1mtjThcWXY2+cSMxuXMN7jZjY1fL3OzJaZ2Sth+YeSylum9ZOw/DdmtjYse9nMJiZMt8bMxiR8fmFSfEvNbHn4uszMNifFe0o4zM3sxwmfu8LMZptZRcK4icv6rcytVempevx1ABI729z96ORCM7sQ+KWZHQecDTS7+70Jo4x3941mdi3wHYKeIFvLU8xnlrvPM7PxBOeHfzRNPAPNbIS7bzCzw1MMX+jup6Uo/zcw2cz+X+L83b0SqAyXaWuqZRXpKB0BSCyE3Rv8DZgNXAtclGbUvwIf6cSk/8aeOxf8I/DF8PV5wD0dnO5OgsRyWSdiEekUJQDpafolVal8MWHYVcClwO/cfXWaz58GLEt4/5eEaaXaGH8WuH8P8fwJmBy+Ph14KGl4SVK8H04Y9nOgPOymWaTbqQpIepqUVUChccBm4BMphv3FzJqAV4DvJpSnqwL6UVhdNBzY012zNgHvmtm5BH3JNCQNT1cFhLu/b2Z3ElRHbdvDPET2io4AJBbCfu1vACYA/8vMPpc0ynh3P9rdv9zBm6DMcvePAf8J/Lqdcf9AsDff0eqfRHOBrwKx7JdfMksJQOLie8Af3X0VcCEwp5vu8fozIM/MTt3DOPMJks9jnZ24u79D0I7w1b0LTyQ9JQDpaZLbAK4zs/8NnEV49oy7v0SwMf7PDkwvsQ3gzuSBHvSmeA3BXcVScvct7n59eEvSZMltAGenGOfHwEEdiFWkU9QbqIhITOkIQEQkppQARERiSglARCSmlABERGJKCUBEJKaUAEREYkoJQEQkpv4/UOWCgWO/Z1MAAAAASUVORK5CYII=\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "7.615087520009927\n" ] }, { "data": { "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "#This plot shows the deviation of the original estimate, the new effect and the estimated effect from the true value \n", "refuter = 'dummy_outcome_refuter'\n", "deviation_list = []\n", "for estimator in estimator_list:\n", " plot_estimators_and_refuters(refuter, estimator)\n", " avg_deviation = ((res[refuter+':'+estimator+':NEW_EFFECT']).sum(axis=0))\n", " print(avg_deviation)\n", " deviation_list.append(avg_deviation)" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "backdoor.linear_regression: 5.614951761166643\n", "backdoor.propensity_score_matching: 7.580786847836746\n", "backdoor.econml.dml.DML: -0.40788444132963897\n", "backdoor.econml.dr.LinearDRLearner: 7.615087520009927\n" ] } ], "source": [ "plot_deviations(estimator_list, deviation_list)\n", "for i in range(len(estimator_list)):\n", " print(estimator_list[i] +\": \"+ str(deviation_list[i]))" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{'backdoor.econml.dr.LinearDRLearner': 7.615087520009927,\n", " 'backdoor.propensity_score_matching': 7.580786847836746,\n", " 'backdoor.linear_regression': 5.614951761166643,\n", " 'backdoor.econml.dml.DML': -0.40788444132963897}" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "{k: v for k, v in sorted(zip(estimator_list, deviation_list), key=lambda item: item[1], reverse = True)}\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Ranking based on New Effect (Refutatation results) " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The ranking based on absolute value of deviations is :\n", "1. Propensity Score Matching \n", "2. Linear DR Learner \n", "3. DML CATE Estimator \n", "4. Linear Regression" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Clearly, the observed unmodelled confounding error is not able to match the ranking based on the Original Estimate. It is not even able to tell that the clear winner amongst the methods according to the true value is DML CATE Estimator " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Unobserved confounding error" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "For each estimator, we now simulate unobserved confounders and check its effect using dummy outcome refuter to check the unobserved confounding error for each estimator. That is, we run the refutation test for each estimator not only on the observed confounder, but also on an unobserved confounder that we simulate using the AddUnobservedCommonCause class and analyse whether there is a strong confounder that is unobserved (missing) and needs to be accounted for. " ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "\n", "Running Experiment: Test_2\n", "\n", "\n", "Running Experiment Number: 0\n", "\n", "\n", "Current Sample Size: 1000\n", "\n", "\n", "The current DGP:\n", "\n", " Linear Data Generating Process\n", " -------------------------------\n", " \n", " treatment:['t1']\n", " outcome:['y']\n", " confounder: ['w1', 'w2', 'w3', 'w4', 'w5', 'w6']\n", " effect_modifier: ['x1', 'x2']\n", " weights: {'confounder=>treatment': array([[102.13812637],\n", " [ -2.14147323],\n", " [ 0.74559931],\n", " [ 1.82334284],\n", " [ -0.84180764],\n", " [ -0.43267877]]), 'confounder=>outcome': array([[98.84599708],\n", " [ 1.38527794],\n", " [ 1.28305666],\n", " [ 0.22955213],\n", " [ 0.87937314],\n", " [-1.60309691]]), 'effect_modifier=>outcome': array([[ 1.12255533],\n", " [-1.63556502]]), 'treatment=>outcome': array([[0.83310337]])}\n", " bias: {'confounder=>treatment': array([-0.63315655]), 'confounder=>outcome': array([-1.334491])}\n", " seed: None\n", " treatment_is_binary: True\n", " percentile: 0.9\n", " \n", "printing data shape\n", "(1000, 10)\n", "[-0.88305837]\n", "check\n", "printing length of confounder list: 2\n", "printing confounder list: ['w2', 'w3']\n", "data columns\n", "data columns Index(['x1', 'x2', 'w1', 'w2', 'w3', 'w4', 'w5', 'w6', 't1', 'y'], dtype='object')\n", "identified_estimand: Estimand type: nonparametric-ate\n", "\n", "### Estimand : 1\n", "Estimand name: backdoor\n", "Estimand expression:\n", " d \n", "─────(Expectation(y|w3,w2))\n", "d[t₁] \n", "Estimand assumption 1, Unconfoundedness: If U→{t1} and U→y then P(y|t1,w3,w2,U) = P(y|t1,w3,w2)\n", "\n", "### Estimand : 2\n", "Estimand name: iv\n", "No such variable found!\n", "\n", "### Estimand : 3\n", "Estimand name: frontdoor\n", "No such variable found!\n", "\n", "\n", "\n", "Running the estimators:\n", "\n", "The current estimator: Estimator(name='backdoor.linear_regression', params=None)\n", "estimator.params None\n", "printing estimate's type\n", "\n", "The current estimator: Estimator(name='backdoor.propensity_score_matching', params={'init_params': {}})\n", "estimator.params {'init_params': {}}\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "divide by zero encountered in double_scalars\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "printing estimate's type\n", "\n", "The current estimator: Estimator(name='backdoor.propensity_score_weighting', params={'init_params': {}})\n", "estimator.params {'init_params': {}}\n", "printing estimate's type\n", "\n", "The current estimator: Estimator(name='backdoor.econml.dml.DML', params={'init_params': {'model_y': GradientBoostingRegressor(), 'model_t': GradientBoostingRegressor(), 'model_final': LassoCV(fit_intercept=False), 'featurizer': PolynomialFeatures(degree=1)}, 'fit_params': {}, '_econml_methodname': 'econml.dml.DML'})\n", "estimator.params {'init_params': {'model_y': GradientBoostingRegressor(), 'model_t': GradientBoostingRegressor(), 'model_final': LassoCV(fit_intercept=False), 'featurizer': PolynomialFeatures(degree=1)}, 'fit_params': {}, '_econml_methodname': 'econml.dml.DML'}\n", "printing estimate's type\n", "\n", "The current estimator: Estimator(name='backdoor.econml.dr.LinearDRLearner', params={'init_params': {'model_propensity': LogisticRegressionCV(cv=3)}, 'fit_params': {}, '_econml_methodname': 'econml.dr.LinearDRLearner'})\n", "estimator.params {'init_params': {'model_propensity': LogisticRegressionCV(cv=3)}, 'fit_params': {}, '_econml_methodname': 'econml.dr.LinearDRLearner'}\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "Co-variance matrix is undertermined. Inference will be invalid!\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "printing estimate's type\n", "\n", "estimate_values [79.73896673692579, 80.2231153857068, 81.441671077483, 74.14050297652312, 79.8135275952811]\n", "\n", "\n", "Running the refuters:\n", "\n", "The current refuter: Refuter(name='dummy_outcome_refuter', params={'num_simulations': 5, 'transformation_list': [('random_forest', {'n_estimators': 100, 'max_depth': 6})], 'true_causal_effect': at 0x7f8253b014c0>})\n", "********%%%%%%%%%$$$$$&&^**^^^^*^*^*\n", "add_unobserved_confounder \n", "refuter.params {'num_simulations': 5, 'transformation_list': [('random_forest', {'n_estimators': 100, 'max_depth': 6})], 'true_causal_effect': at 0x7f8253b014c0>, 'unobserved_confounder_values': 0 -1799.656139\n", "1 1970.576405\n", "2 -257.458589\n", "3 9.207766\n", "4 -3235.290458\n", " ... \n", "995 1894.515548\n", "996 174.577874\n", "997 151.620399\n", "998 -2169.818701\n", "999 -589.375787\n", "Length: 1000, dtype: float64}\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "divide by zero encountered in double_scalars\n", "divide by zero encountered in double_scalars\n", "divide by zero encountered in double_scalars\n", "divide by zero encountered in double_scalars\n", "divide by zero encountered in double_scalars\n", "divide by zero encountered in double_scalars\n", "divide by zero encountered in double_scalars\n", "divide by zero encountered in double_scalars\n", "divide by zero encountered in double_scalars\n", "divide by zero encountered in double_scalars\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "printing refute's type\n", "\n", "********%%%%%%%%%$$$$$&&^**^^^^*^*^*\n", "add_unobserved_confounder \n", "refuter.params {'num_simulations': 5, 'transformation_list': [('random_forest', {'n_estimators': 100, 'max_depth': 6})], 'true_causal_effect': at 0x7f8253b014c0>, 'unobserved_confounder_values': 0 -1799.914620\n", "1 1969.601000\n", "2 -255.491281\n", "3 9.281650\n", "4 -3234.971507\n", " ... \n", "995 1895.155143\n", "996 174.262975\n", "997 153.351989\n", "998 -2170.867511\n", "999 -590.528804\n", "Length: 1000, dtype: float64}\n", "printing refute's type\n", "\n", "********%%%%%%%%%$$$$$&&^**^^^^*^*^*\n", "add_unobserved_confounder \n", "refuter.params {'num_simulations': 5, 'transformation_list': [('random_forest', {'n_estimators': 100, 'max_depth': 6})], 'true_causal_effect': at 0x7f8253b014c0>, 'unobserved_confounder_values': 0 -1798.440186\n", "1 1970.981330\n", "2 -256.994032\n", "3 10.343137\n", "4 -3235.164858\n", " ... \n", "995 1894.622145\n", "996 174.336880\n", "997 150.143185\n", "998 -2171.089271\n", "999 -590.705261\n", "Length: 1000, dtype: float64}\n", "printing refute's type\n", "\n", "********%%%%%%%%%$$$$$&&^**^^^^*^*^*\n", "add_unobserved_confounder \n", "refuter.params {'num_simulations': 5, 'transformation_list': [('random_forest', {'n_estimators': 100, 'max_depth': 6})], 'true_causal_effect': at 0x7f8253b014c0>, 'unobserved_confounder_values': 0 -1800.311019\n", "1 1971.616056\n", "2 -257.098802\n", "3 9.043961\n", "4 -3235.474350\n", " ... \n", "995 1895.313096\n", "996 174.436304\n", "997 151.864630\n", "998 -2171.359380\n", "999 -588.970519\n", "Length: 1000, dtype: float64}\n", "printing refute's type\n", "\n", "********%%%%%%%%%$$$$$&&^**^^^^*^*^*\n", "add_unobserved_confounder \n", "refuter.params {'num_simulations': 5, 'transformation_list': [('random_forest', {'n_estimators': 100, 'max_depth': 6})], 'true_causal_effect': at 0x7f8253b014c0>, 'unobserved_confounder_values': 0 -1800.415861\n", "1 1970.400892\n", "2 -256.214381\n", "3 8.467135\n", "4 -3235.720848\n", " ... \n", "995 1896.258364\n", "996 172.804930\n", "997 152.222951\n", "998 -2172.207562\n", "999 -589.254819\n", "Length: 1000, dtype: float64}\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "Co-variance matrix is undertermined. Inference will be invalid!\n", "Co-variance matrix is undertermined. Inference will be invalid!\n", "Co-variance matrix is undertermined. Inference will be invalid!\n", "Co-variance matrix is undertermined. Inference will be invalid!\n", "Co-variance matrix is undertermined. Inference will be invalid!\n", "Co-variance matrix is undertermined. Inference will be invalid!\n", "Co-variance matrix is undertermined. Inference will be invalid!\n", "Co-variance matrix is undertermined. Inference will be invalid!\n", "Co-variance matrix is undertermined. Inference will be invalid!\n", "Co-variance matrix is undertermined. Inference will be invalid!\n", "divide by zero encountered in double_scalars\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "printing refute's type\n", "\n", "estimated effect [0.5, 0.5, 0.5, 0.5, 0.5]\n", "new_effect [18.109527815435662, 22.06941753466051, 13.623703034488335, 5.100457293138294, 15.092567912044336]\n", "p_value [0.029959562036282375, 0.11607794984112141, 0.038666604675627166, 0.2506163996915977, 0.09990571572586726]\n", "true value -0.8830583669916872\n", "\n", "\n", "Running Experiment Number: 1\n", "\n", "\n", "Current Sample Size: 1000\n", "\n", "\n", "The current DGP:\n", "\n", " Linear Data Generating Process\n", " -------------------------------\n", " \n", " treatment:['t1']\n", " outcome:['y']\n", " confounder: ['w1', 'w2', 'w3', 'w4', 'w5', 'w6']\n", " effect_modifier: ['x1', 'x2']\n", " weights: {'confounder=>treatment': array([[99.32314608],\n", " [-0.83776679],\n", " [-1.50628162],\n", " [ 0.39118824],\n", " [ 2.00957198],\n", " [ 1.35123867]]), 'confounder=>outcome': array([[ 1.01149905e+02],\n", " [-2.32720298e-01],\n", " [ 3.18196048e-02],\n", " [-6.73120105e-01],\n", " [ 3.22509988e-01],\n", " [ 9.39482943e-02]]), 'effect_modifier=>outcome': array([[-0.6367243 ],\n", " [-0.91051103]]), 'treatment=>outcome': array([[-0.88305837]])}\n", " bias: {'confounder=>treatment': array([-0.19115219]), 'confounder=>outcome': array([0.09312904])}\n", " seed: None\n", " treatment_is_binary: True\n", " percentile: 0.9\n", " \n", "printing data shape\n", "(1000, 10)\n", "[-1.52234201]\n", "check\n", "printing length of confounder list: 2\n", "printing confounder list: ['w2', 'w3']\n", "data columns\n", "data columns Index(['x1', 'x2', 'w1', 'w2', 'w3', 'w4', 'w5', 'w6', 't1', 'y'], dtype='object')\n", "identified_estimand: Estimand type: nonparametric-ate\n", "\n", "### Estimand : 1\n", "Estimand name: backdoor\n", "Estimand expression:\n", " d \n", "─────(Expectation(y|w3,w2))\n", "d[t₁] \n", "Estimand assumption 1, Unconfoundedness: If U→{t1} and U→y then P(y|t1,w3,w2,U) = P(y|t1,w3,w2)\n", "\n", "### Estimand : 2\n", "Estimand name: iv\n", "No such variable found!\n", "\n", "### Estimand : 3\n", "Estimand name: frontdoor\n", "No such variable found!\n", "\n", "\n", "\n", "Running the estimators:\n", "\n", "The current estimator: Estimator(name='backdoor.linear_regression', params=None)\n", "estimator.params None\n", "printing estimate's type\n", "\n", "The current estimator: Estimator(name='backdoor.propensity_score_matching', params={'init_params': {}})\n", "estimator.params {'init_params': {}}\n", "printing estimate's type\n", "\n", "The current estimator: Estimator(name='backdoor.propensity_score_weighting', params={'init_params': {}})\n", "estimator.params {'init_params': {}}\n", "printing estimate's type\n", "\n", "The current estimator: Estimator(name='backdoor.econml.dml.DML', params={'init_params': {'model_y': GradientBoostingRegressor(), 'model_t': GradientBoostingRegressor(), 'model_final': LassoCV(fit_intercept=False), 'featurizer': PolynomialFeatures(degree=1)}, 'fit_params': {}, '_econml_methodname': 'econml.dml.DML'})\n", "estimator.params {'init_params': {'model_y': GradientBoostingRegressor(), 'model_t': GradientBoostingRegressor(), 'model_final': LassoCV(fit_intercept=False), 'featurizer': PolynomialFeatures(degree=1)}, 'fit_params': {}, '_econml_methodname': 'econml.dml.DML'}\n", "printing estimate's type\n", "\n", "The current estimator: Estimator(name='backdoor.econml.dr.LinearDRLearner', params={'init_params': {'model_propensity': LogisticRegressionCV(cv=3)}, 'fit_params': {}, '_econml_methodname': 'econml.dr.LinearDRLearner'})\n", "estimator.params {'init_params': {'model_propensity': LogisticRegressionCV(cv=3)}, 'fit_params': {}, '_econml_methodname': 'econml.dr.LinearDRLearner'}\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "Co-variance matrix is undertermined. Inference will be invalid!\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "printing estimate's type\n", "\n", "estimate_values [60.495324330578875, 57.46015746596635, 59.43111683011582, 49.29956832732684, 60.48473907812516]\n", "\n", "\n", "Running the refuters:\n", "\n", "The current refuter: Refuter(name='dummy_outcome_refuter', params={'num_simulations': 5, 'transformation_list': [('random_forest', {'n_estimators': 100, 'max_depth': 6})], 'true_causal_effect': at 0x7f8253b014c0>, 'unobserved_confounder_values': 0 -1800.415861\n", "1 1970.400892\n", "2 -256.214381\n", "3 8.467135\n", "4 -3235.720848\n", " ... \n", "995 1896.258364\n", "996 172.804930\n", "997 152.222951\n", "998 -2172.207562\n", "999 -589.254819\n", "Length: 1000, dtype: float64})\n", "********%%%%%%%%%$$$$$&&^**^^^^*^*^*\n", "add_unobserved_confounder \n", "refuter.params {'num_simulations': 5, 'transformation_list': [('random_forest', {'n_estimators': 100, 'max_depth': 6})], 'true_causal_effect': at 0x7f8253b014c0>, 'unobserved_confounder_values': 0 719.788352\n", "1 -2472.575712\n", "2 316.111798\n", "3 757.632953\n", "4 2421.541223\n", " ... \n", "995 758.809735\n", "996 -575.405139\n", "997 -1621.764382\n", "998 3013.319336\n", "999 -1911.032705\n", "Length: 1000, dtype: float64}\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "divide by zero encountered in double_scalars\n", "divide by zero encountered in double_scalars\n", "divide by zero encountered in double_scalars\n", "divide by zero encountered in double_scalars\n", "divide by zero encountered in double_scalars\n", "divide by zero encountered in double_scalars\n", "divide by zero encountered in double_scalars\n", "divide by zero encountered in double_scalars\n", "divide by zero encountered in double_scalars\n", "divide by zero encountered in double_scalars\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "printing refute's type\n", "\n", "********%%%%%%%%%$$$$$&&^**^^^^*^*^*\n", "add_unobserved_confounder \n", "refuter.params {'num_simulations': 5, 'transformation_list': [('random_forest', {'n_estimators': 100, 'max_depth': 6})], 'true_causal_effect': at 0x7f8253b014c0>, 'unobserved_confounder_values': 0 719.299662\n", "1 -2470.632087\n", "2 315.994122\n", "3 757.553815\n", "4 2422.284233\n", " ... \n", "995 759.615956\n", "996 -577.368395\n", "997 -1621.337406\n", "998 3012.924689\n", "999 -1913.796841\n", "Length: 1000, dtype: float64}\n", "printing refute's type\n", "\n", "********%%%%%%%%%$$$$$&&^**^^^^*^*^*\n", "add_unobserved_confounder \n", "refuter.params {'num_simulations': 5, 'transformation_list': [('random_forest', {'n_estimators': 100, 'max_depth': 6})], 'true_causal_effect': at 0x7f8253b014c0>, 'unobserved_confounder_values': 0 718.244671\n", "1 -2469.744700\n", "2 315.566070\n", "3 759.145165\n", "4 2421.337401\n", " ... \n", "995 757.525058\n", "996 -577.351678\n", "997 -1621.921395\n", "998 3013.900564\n", "999 -1913.623957\n", "Length: 1000, dtype: float64}\n", "printing refute's type\n", "\n", "********%%%%%%%%%$$$$$&&^**^^^^*^*^*\n", "add_unobserved_confounder \n", "refuter.params {'num_simulations': 5, 'transformation_list': [('random_forest', {'n_estimators': 100, 'max_depth': 6})], 'true_causal_effect': at 0x7f8253b014c0>, 'unobserved_confounder_values': 0 716.283455\n", "1 -2468.067805\n", "2 314.964879\n", "3 758.377094\n", "4 2422.915815\n", " ... \n", "995 759.352842\n", "996 -577.437148\n", "997 -1622.375838\n", "998 3013.195086\n", "999 -1914.224939\n", "Length: 1000, dtype: float64}\n", "printing refute's type\n", "\n", "********%%%%%%%%%$$$$$&&^**^^^^*^*^*\n", "add_unobserved_confounder \n", "refuter.params {'num_simulations': 5, 'transformation_list': [('random_forest', {'n_estimators': 100, 'max_depth': 6})], 'true_causal_effect': at 0x7f8253b014c0>, 'unobserved_confounder_values': 0 717.356597\n", "1 -2470.508920\n", "2 314.035465\n", "3 755.993326\n", "4 2421.699178\n", " ... \n", "995 758.650179\n", "996 -576.693323\n", "997 -1622.027812\n", "998 3013.669785\n", "999 -1914.529562\n", "Length: 1000, dtype: float64}\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "Co-variance matrix is undertermined. Inference will be invalid!\n", "Co-variance matrix is undertermined. Inference will be invalid!\n", "Co-variance matrix is undertermined. Inference will be invalid!\n", "Co-variance matrix is undertermined. Inference will be invalid!\n", "Co-variance matrix is undertermined. Inference will be invalid!\n", "Co-variance matrix is undertermined. Inference will be invalid!\n", "Co-variance matrix is undertermined. Inference will be invalid!\n", "Co-variance matrix is undertermined. Inference will be invalid!\n", "Co-variance matrix is undertermined. Inference will be invalid!\n", "Co-variance matrix is undertermined. Inference will be invalid!\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "printing refute's type\n", "\n", "estimated effect [0.5, 0.5, 0.5, 0.5, 0.5]\n", "new_effect [6.94835455246095, 9.918842256509596, 2.357096749707265, 0.9805266955170486, 18.47709840831632]\n", "p_value [0.1254228950600662, 0.13158690516860544, 0.3769484152178171, 0.4691191160773389, 0.11722193248225732]\n", "true value -1.5223420102811438\n", "\n", "\n", "Running Experiment Number: 2\n", "\n", "\n", "Current Sample Size: 1000\n", "\n", "\n", "The current DGP:\n", "\n", " Linear Data Generating Process\n", " -------------------------------\n", " \n", " treatment:['t1']\n", " outcome:['y']\n", " confounder: ['w1', 'w2', 'w3', 'w4', 'w5', 'w6']\n", " effect_modifier: ['x1', 'x2']\n", " weights: {'confounder=>treatment': array([[100.06070786],\n", " [ 0.15681475],\n", " [ 1.53018757],\n", " [ 0.54967092],\n", " [ 0.49649097],\n", " [ -0.38317979]]), 'confounder=>outcome': array([[100.45289868],\n", " [ 0.54782528],\n", " [ 1.04031826],\n", " [ 1.57859568],\n", " [ 1.16346854],\n", " [ -2.31669068]]), 'effect_modifier=>outcome': array([[-0.60380274],\n", " [ 1.00273821]]), 'treatment=>outcome': array([[-1.52234201]])}\n", " bias: {'confounder=>treatment': array([0.03520809]), 'confounder=>outcome': array([-0.29788788])}\n", " seed: None\n", " treatment_is_binary: True\n", " percentile: 0.9\n", " \n", "printing data shape\n", "(1000, 10)\n", "[-0.01793006]\n", "check\n", "printing length of confounder list: 2\n", "printing confounder list: ['w2', 'w3']\n", "data columns\n", "data columns Index(['x1', 'x2', 'w1', 'w2', 'w3', 'w4', 'w5', 'w6', 't1', 'y'], dtype='object')\n", "identified_estimand: Estimand type: nonparametric-ate\n", "\n", "### Estimand : 1\n", "Estimand name: backdoor\n", "Estimand expression:\n", " d \n", "─────(Expectation(y|w3,w2))\n", "d[t₁] \n", "Estimand assumption 1, Unconfoundedness: If U→{t1} and U→y then P(y|t1,w3,w2,U) = P(y|t1,w3,w2)\n", "\n", "### Estimand : 2\n", "Estimand name: iv\n", "No such variable found!\n", "\n", "### Estimand : 3\n", "Estimand name: frontdoor\n", "No such variable found!\n", "\n", "\n", "\n", "Running the estimators:\n", "\n", "The current estimator: Estimator(name='backdoor.linear_regression', params=None)\n", "estimator.params None\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "divide by zero encountered in double_scalars\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "printing estimate's type\n", "\n", "The current estimator: Estimator(name='backdoor.propensity_score_matching', params={'init_params': {}})\n", "estimator.params {'init_params': {}}\n", "printing estimate's type\n", "\n", "The current estimator: Estimator(name='backdoor.propensity_score_weighting', params={'init_params': {}})\n", "estimator.params {'init_params': {}}\n", "printing estimate's type\n", "\n", "The current estimator: Estimator(name='backdoor.econml.dml.DML', params={'init_params': {'model_y': GradientBoostingRegressor(), 'model_t': GradientBoostingRegressor(), 'model_final': LassoCV(fit_intercept=False), 'featurizer': PolynomialFeatures(degree=1)}, 'fit_params': {}, '_econml_methodname': 'econml.dml.DML'})\n", "estimator.params {'init_params': {'model_y': GradientBoostingRegressor(), 'model_t': GradientBoostingRegressor(), 'model_final': LassoCV(fit_intercept=False), 'featurizer': PolynomialFeatures(degree=1)}, 'fit_params': {}, '_econml_methodname': 'econml.dml.DML'}\n", "printing estimate's type\n", "\n", "The current estimator: Estimator(name='backdoor.econml.dr.LinearDRLearner', params={'init_params': {'model_propensity': LogisticRegressionCV(cv=3)}, 'fit_params': {}, '_econml_methodname': 'econml.dr.LinearDRLearner'})\n", "estimator.params {'init_params': {'model_propensity': LogisticRegressionCV(cv=3)}, 'fit_params': {}, '_econml_methodname': 'econml.dr.LinearDRLearner'}\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "Co-variance matrix is undertermined. Inference will be invalid!\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "printing estimate's type\n", "\n", "estimate_values [54.08827734735062, 48.57956472526583, 53.58722467427893, 53.452543289024554, 54.0847786381215]\n", "\n", "\n", "Running the refuters:\n", "\n", "The current refuter: Refuter(name='dummy_outcome_refuter', params={'num_simulations': 5, 'transformation_list': [('random_forest', {'n_estimators': 100, 'max_depth': 6})], 'true_causal_effect': at 0x7f8253b014c0>, 'unobserved_confounder_values': 0 717.356597\n", "1 -2470.508920\n", "2 314.035465\n", "3 755.993326\n", "4 2421.699178\n", " ... \n", "995 758.650179\n", "996 -576.693323\n", "997 -1622.027812\n", "998 3013.669785\n", "999 -1914.529562\n", "Length: 1000, dtype: float64})\n", "********%%%%%%%%%$$$$$&&^**^^^^*^*^*\n", "add_unobserved_confounder \n", "refuter.params {'num_simulations': 5, 'transformation_list': [('random_forest', {'n_estimators': 100, 'max_depth': 6})], 'true_causal_effect': at 0x7f8253b014c0>, 'unobserved_confounder_values': 0 295.462262\n", "1 -159.643290\n", "2 483.083012\n", "3 54.991870\n", "4 500.374686\n", " ... \n", "995 -1298.832626\n", "996 1318.721853\n", "997 -535.265703\n", "998 -962.671432\n", "999 -1919.762717\n", "Length: 1000, dtype: float64}\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "divide by zero encountered in double_scalars\n", "divide by zero encountered in double_scalars\n", "divide by zero encountered in double_scalars\n", "divide by zero encountered in double_scalars\n", "divide by zero encountered in double_scalars\n", "divide by zero encountered in double_scalars\n", "divide by zero encountered in double_scalars\n", "divide by zero encountered in double_scalars\n", "divide by zero encountered in double_scalars\n", "divide by zero encountered in double_scalars\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "printing refute's type\n", "\n", "********%%%%%%%%%$$$$$&&^**^^^^*^*^*\n", "add_unobserved_confounder \n", "refuter.params {'num_simulations': 5, 'transformation_list': [('random_forest', {'n_estimators': 100, 'max_depth': 6})], 'true_causal_effect': at 0x7f8253b014c0>, 'unobserved_confounder_values': 0 296.896263\n", "1 -160.915804\n", "2 484.614813\n", "3 57.882080\n", "4 497.611633\n", " ... \n", "995 -1300.402970\n", "996 1316.107986\n", "997 -533.679544\n", "998 -962.247195\n", "999 -1918.423407\n", "Length: 1000, dtype: float64}\n", "printing refute's type\n", "\n", "********%%%%%%%%%$$$$$&&^**^^^^*^*^*\n", "add_unobserved_confounder \n", "refuter.params {'num_simulations': 5, 'transformation_list': [('random_forest', {'n_estimators': 100, 'max_depth': 6})], 'true_causal_effect': at 0x7f8253b014c0>, 'unobserved_confounder_values': 0 296.603034\n", "1 -160.597177\n", "2 484.433399\n", "3 56.616752\n", "4 499.319856\n", " ... \n", "995 -1301.701240\n", "996 1316.861486\n", "997 -535.314869\n", "998 -961.813514\n", "999 -1920.775886\n", "Length: 1000, dtype: float64}\n", "printing refute's type\n", "\n", "********%%%%%%%%%$$$$$&&^**^^^^*^*^*\n", "add_unobserved_confounder \n", "refuter.params {'num_simulations': 5, 'transformation_list': [('random_forest', {'n_estimators': 100, 'max_depth': 6})], 'true_causal_effect': at 0x7f8253b014c0>, 'unobserved_confounder_values': 0 296.529958\n", "1 -161.793560\n", "2 483.997112\n", "3 56.271110\n", "4 500.344196\n", " ... \n", "995 -1301.166242\n", "996 1318.717753\n", "997 -535.168611\n", "998 -961.253557\n", "999 -1919.387718\n", "Length: 1000, dtype: float64}\n", "printing refute's type\n", "\n", "********%%%%%%%%%$$$$$&&^**^^^^*^*^*\n", "add_unobserved_confounder \n", "refuter.params {'num_simulations': 5, 'transformation_list': [('random_forest', {'n_estimators': 100, 'max_depth': 6})], 'true_causal_effect': at 0x7f8253b014c0>, 'unobserved_confounder_values': 0 297.530283\n", "1 -160.364013\n", "2 485.094503\n", "3 56.636306\n", "4 499.156317\n", " ... \n", "995 -1298.658070\n", "996 1318.625869\n", "997 -536.592489\n", "998 -961.769918\n", "999 -1919.585481\n", "Length: 1000, dtype: float64}\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "Co-variance matrix is undertermined. Inference will be invalid!\n", "Co-variance matrix is undertermined. Inference will be invalid!\n", "Co-variance matrix is undertermined. Inference will be invalid!\n", "Co-variance matrix is undertermined. Inference will be invalid!\n", "Co-variance matrix is undertermined. Inference will be invalid!\n", "Co-variance matrix is undertermined. Inference will be invalid!\n", "Co-variance matrix is undertermined. Inference will be invalid!\n", "Co-variance matrix is undertermined. Inference will be invalid!\n", "Co-variance matrix is undertermined. Inference will be invalid!\n", "Co-variance matrix is undertermined. Inference will be invalid!\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "printing refute's type\n", "\n", "estimated effect [0.5, 0.5, 0.5, 0.5, 0.5]\n", "new_effect [10.482153968500835, 11.75166852518186, 6.355594773715404, 6.6598422259066155, -2.6448704408990595]\n", "p_value [0.08543721931593112, 0.14426780340286505, 0.3126758252580647, 0.2674192834960121, 0.31750861729924695]\n", "true value -0.01793005889331603\n", "\n", "\n", "Running Experiment Number: 3\n", "\n", "\n", "Current Sample Size: 1000\n", "\n", "\n", "The current DGP:\n", "\n", " Linear Data Generating Process\n", " -------------------------------\n", " \n", " treatment:['t1']\n", " outcome:['y']\n", " confounder: ['w1', 'w2', 'w3', 'w4', 'w5', 'w6']\n", " effect_modifier: ['x1', 'x2']\n", " weights: {'confounder=>treatment': array([[100.22735537],\n", " [ -0.38003344],\n", " [ 0.51810224],\n", " [ 1.48474532],\n", " [ -0.53379778],\n", " [ -0.93191245]]), 'confounder=>outcome': array([[100.07809133],\n", " [ 1.40350686],\n", " [ 0.15419506],\n", " [ -1.71495361],\n", " [ 0.25148102],\n", " [ -1.27363351]]), 'effect_modifier=>outcome': array([[ 1.74705022],\n", " [-1.69183818]]), 'treatment=>outcome': array([[-0.01793006]])}\n", " bias: {'confounder=>treatment': array([-0.53392598]), 'confounder=>outcome': array([-0.29683382])}\n", " seed: None\n", " treatment_is_binary: True\n", " percentile: 0.9\n", " \n", "printing data shape\n", "(1000, 10)\n", "[-0.0610449]\n", "check\n", "printing length of confounder list: 2\n", "printing confounder list: ['w2', 'w3']\n", "data columns\n", "data columns Index(['x1', 'x2', 'w1', 'w2', 'w3', 'w4', 'w5', 'w6', 't1', 'y'], dtype='object')\n", "identified_estimand: Estimand type: nonparametric-ate\n", "\n", "### Estimand : 1\n", "Estimand name: backdoor\n", "Estimand expression:\n", " d \n", "─────(Expectation(y|w3,w2))\n", "d[t₁] \n", "Estimand assumption 1, Unconfoundedness: If U→{t1} and U→y then P(y|t1,w3,w2,U) = P(y|t1,w3,w2)\n", "\n", "### Estimand : 2\n", "Estimand name: iv\n", "No such variable found!\n", "\n", "### Estimand : 3\n", "Estimand name: frontdoor\n", "No such variable found!\n", "\n", "\n", "\n", "Running the estimators:\n", "\n", "The current estimator: Estimator(name='backdoor.linear_regression', params=None)\n", "estimator.params None\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "divide by zero encountered in double_scalars\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "printing estimate's type\n", "\n", "The current estimator: Estimator(name='backdoor.propensity_score_matching', params={'init_params': {}})\n", "estimator.params {'init_params': {}}\n", "printing estimate's type\n", "\n", "The current estimator: Estimator(name='backdoor.propensity_score_weighting', params={'init_params': {}})\n", "estimator.params {'init_params': {}}\n", "printing estimate's type\n", "\n", "The current estimator: Estimator(name='backdoor.econml.dml.DML', params={'init_params': {'model_y': GradientBoostingRegressor(), 'model_t': GradientBoostingRegressor(), 'model_final': LassoCV(fit_intercept=False), 'featurizer': PolynomialFeatures(degree=1)}, 'fit_params': {}, '_econml_methodname': 'econml.dml.DML'})\n", "estimator.params {'init_params': {'model_y': GradientBoostingRegressor(), 'model_t': GradientBoostingRegressor(), 'model_final': LassoCV(fit_intercept=False), 'featurizer': PolynomialFeatures(degree=1)}, 'fit_params': {}, '_econml_methodname': 'econml.dml.DML'}\n", "printing estimate's type\n", "\n", "The current estimator: Estimator(name='backdoor.econml.dr.LinearDRLearner', params={'init_params': {'model_propensity': LogisticRegressionCV(cv=3)}, 'fit_params': {}, '_econml_methodname': 'econml.dr.LinearDRLearner'})\n", "estimator.params {'init_params': {'model_propensity': LogisticRegressionCV(cv=3)}, 'fit_params': {}, '_econml_methodname': 'econml.dr.LinearDRLearner'}\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "Co-variance matrix is undertermined. Inference will be invalid!\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "printing estimate's type\n", "\n", "estimate_values [74.6949712584939, 74.21834719867091, 74.92414520819568, 64.8449507186782, 74.37524652709718]\n", "\n", "\n", "Running the refuters:\n", "\n", "The current refuter: Refuter(name='dummy_outcome_refuter', params={'num_simulations': 5, 'transformation_list': [('random_forest', {'n_estimators': 100, 'max_depth': 6})], 'true_causal_effect': at 0x7f8253b014c0>, 'unobserved_confounder_values': 0 297.530283\n", "1 -160.364013\n", "2 485.094503\n", "3 56.636306\n", "4 499.156317\n", " ... \n", "995 -1298.658070\n", "996 1318.625869\n", "997 -536.592489\n", "998 -961.769918\n", "999 -1919.585481\n", "Length: 1000, dtype: float64})\n", "********%%%%%%%%%$$$$$&&^**^^^^*^*^*\n", "add_unobserved_confounder \n", "refuter.params {'num_simulations': 5, 'transformation_list': [('random_forest', {'n_estimators': 100, 'max_depth': 6})], 'true_causal_effect': at 0x7f8253b014c0>, 'unobserved_confounder_values': 0 -796.395637\n", "1 855.959586\n", "2 937.871636\n", "3 114.644068\n", "4 -1937.458135\n", " ... \n", "995 -2149.829001\n", "996 1039.215912\n", "997 923.352814\n", "998 -430.981357\n", "999 414.019212\n", "Length: 1000, dtype: float64}\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "divide by zero encountered in double_scalars\n", "divide by zero encountered in double_scalars\n", "divide by zero encountered in double_scalars\n", "divide by zero encountered in double_scalars\n", "divide by zero encountered in double_scalars\n", "divide by zero encountered in double_scalars\n", "divide by zero encountered in double_scalars\n", "divide by zero encountered in double_scalars\n", "divide by zero encountered in double_scalars\n", "divide by zero encountered in double_scalars\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "printing refute's type\n", "\n", "********%%%%%%%%%$$$$$&&^**^^^^*^*^*\n", "add_unobserved_confounder \n", "refuter.params {'num_simulations': 5, 'transformation_list': [('random_forest', {'n_estimators': 100, 'max_depth': 6})], 'true_causal_effect': at 0x7f8253b014c0>, 'unobserved_confounder_values': 0 -796.522270\n", "1 854.621285\n", "2 937.587614\n", "3 113.918901\n", "4 -1935.810717\n", " ... \n", "995 -2149.353010\n", "996 1039.090294\n", "997 922.204273\n", "998 -431.976665\n", "999 413.689734\n", "Length: 1000, dtype: float64}\n", "printing refute's type\n", "\n", "********%%%%%%%%%$$$$$&&^**^^^^*^*^*\n", "add_unobserved_confounder \n", "refuter.params {'num_simulations': 5, 'transformation_list': [('random_forest', {'n_estimators': 100, 'max_depth': 6})], 'true_causal_effect': at 0x7f8253b014c0>, 'unobserved_confounder_values': 0 -795.550807\n", "1 856.935650\n", "2 937.179484\n", "3 115.876945\n", "4 -1936.203022\n", " ... \n", "995 -2150.915625\n", "996 1039.766051\n", "997 921.628932\n", "998 -432.888242\n", "999 414.728675\n", "Length: 1000, dtype: float64}\n", "printing refute's type\n", "\n", "********%%%%%%%%%$$$$$&&^**^^^^*^*^*\n", "add_unobserved_confounder \n", "refuter.params {'num_simulations': 5, 'transformation_list': [('random_forest', {'n_estimators': 100, 'max_depth': 6})], 'true_causal_effect': at 0x7f8253b014c0>, 'unobserved_confounder_values': 0 -795.301607\n", "1 858.042910\n", "2 937.624952\n", "3 116.421003\n", "4 -1932.574287\n", " ... \n", "995 -2148.876155\n", "996 1039.328233\n", "997 923.878651\n", "998 -430.389866\n", "999 412.766161\n", "Length: 1000, dtype: float64}\n", "printing refute's type\n", "\n", "********%%%%%%%%%$$$$$&&^**^^^^*^*^*\n", "add_unobserved_confounder \n", "refuter.params {'num_simulations': 5, 'transformation_list': [('random_forest', {'n_estimators': 100, 'max_depth': 6})], 'true_causal_effect': at 0x7f8253b014c0>, 'unobserved_confounder_values': 0 -796.816950\n", "1 855.555357\n", "2 938.950350\n", "3 114.249044\n", "4 -1934.939667\n", " ... \n", "995 -2147.384210\n", "996 1038.210231\n", "997 923.836633\n", "998 -432.397171\n", "999 414.569145\n", "Length: 1000, dtype: float64}\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "Co-variance matrix is undertermined. Inference will be invalid!\n", "Co-variance matrix is undertermined. Inference will be invalid!\n", "Co-variance matrix is undertermined. Inference will be invalid!\n", "Co-variance matrix is undertermined. Inference will be invalid!\n", "Co-variance matrix is undertermined. Inference will be invalid!\n", "Co-variance matrix is undertermined. Inference will be invalid!\n", "Co-variance matrix is undertermined. Inference will be invalid!\n", "Co-variance matrix is undertermined. Inference will be invalid!\n", "Co-variance matrix is undertermined. Inference will be invalid!\n", "Co-variance matrix is undertermined. Inference will be invalid!\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "printing refute's type\n", "\n", "estimated effect [0.5, 0.5, 0.5, 0.5, 0.5]\n", "new_effect [16.770556644348943, 11.250707511034431, 11.648851920215943, 7.958819670717124, 22.817904266584158]\n", "p_value [0.055991375236347694, 0.19138089837534888, 0.10296379695709929, 0.23434594825334049, 3.502726752891062e-08]\n", "true value -0.06104490497653794\n", "\n", "\n", "Running Experiment Number: 4\n", "\n", "\n", "Current Sample Size: 1000\n", "\n", "\n", "The current DGP:\n", "\n", " Linear Data Generating Process\n", " -------------------------------\n", " \n", " treatment:['t1']\n", " outcome:['y']\n", " confounder: ['w1', 'w2', 'w3', 'w4', 'w5', 'w6']\n", " effect_modifier: ['x1', 'x2']\n", " weights: {'confounder=>treatment': array([[98.57209214],\n", " [-0.89202431],\n", " [-0.85500288],\n", " [ 0.35472262],\n", " [-0.76661166],\n", " [ 0.38227932]]), 'confounder=>outcome': array([[101.75605264],\n", " [ 2.26901297],\n", " [ 1.1998282 ],\n", " [ 0.6079511 ],\n", " [ 0.21700173],\n", " [ -0.41042134]]), 'effect_modifier=>outcome': array([[ 0.99068033],\n", " [-0.1584935 ]]), 'treatment=>outcome': array([[-0.0610449]])}\n", " bias: {'confounder=>treatment': array([0.1807629]), 'confounder=>outcome': array([-0.3290571])}\n", " seed: None\n", " treatment_is_binary: True\n", " percentile: 0.9\n", " \n", "printing data shape\n", "(1000, 10)\n", "[-0.93581344]\n", "check\n", "printing length of confounder list: 2\n", "printing confounder list: ['w2', 'w3']\n", "data columns\n", "data columns Index(['x1', 'x2', 'w1', 'w2', 'w3', 'w4', 'w5', 'w6', 't1', 'y'], dtype='object')\n", "identified_estimand: Estimand type: nonparametric-ate\n", "\n", "### Estimand : 1\n", "Estimand name: backdoor\n", "Estimand expression:\n", " d \n", "─────(Expectation(y|w3,w2))\n", "d[t₁] \n", "Estimand assumption 1, Unconfoundedness: If U→{t1} and U→y then P(y|t1,w3,w2,U) = P(y|t1,w3,w2)\n", "\n", "### Estimand : 2\n", "Estimand name: iv\n", "No such variable found!\n", "\n", "### Estimand : 3\n", "Estimand name: frontdoor\n", "No such variable found!\n", "\n", "\n", "\n", "Running the estimators:\n", "\n", "The current estimator: Estimator(name='backdoor.linear_regression', params=None)\n", "estimator.params None\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "divide by zero encountered in double_scalars\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "printing estimate's type\n", "\n", "The current estimator: Estimator(name='backdoor.propensity_score_matching', params={'init_params': {}})\n", "estimator.params {'init_params': {}}\n", "printing estimate's type\n", "\n", "The current estimator: Estimator(name='backdoor.propensity_score_weighting', params={'init_params': {}})\n", "estimator.params {'init_params': {}}\n", "printing estimate's type\n", "\n", "The current estimator: Estimator(name='backdoor.econml.dml.DML', params={'init_params': {'model_y': GradientBoostingRegressor(), 'model_t': GradientBoostingRegressor(), 'model_final': LassoCV(fit_intercept=False), 'featurizer': PolynomialFeatures(degree=1)}, 'fit_params': {}, '_econml_methodname': 'econml.dml.DML'})\n", "estimator.params {'init_params': {'model_y': GradientBoostingRegressor(), 'model_t': GradientBoostingRegressor(), 'model_final': LassoCV(fit_intercept=False), 'featurizer': PolynomialFeatures(degree=1)}, 'fit_params': {}, '_econml_methodname': 'econml.dml.DML'}\n", "printing estimate's type\n", "\n", "The current estimator: Estimator(name='backdoor.econml.dr.LinearDRLearner', params={'init_params': {'model_propensity': LogisticRegressionCV(cv=3)}, 'fit_params': {}, '_econml_methodname': 'econml.dr.LinearDRLearner'})\n", "estimator.params {'init_params': {'model_propensity': LogisticRegressionCV(cv=3)}, 'fit_params': {}, '_econml_methodname': 'econml.dr.LinearDRLearner'}\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "Co-variance matrix is undertermined. Inference will be invalid!\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "printing estimate's type\n", "\n", "estimate_values [61.53479608240711, 59.06833738850809, 61.14309580696756, 49.2602874291804, 61.045369428308305]\n", "\n", "\n", "Running the refuters:\n", "\n", "The current refuter: Refuter(name='dummy_outcome_refuter', params={'num_simulations': 5, 'transformation_list': [('random_forest', {'n_estimators': 100, 'max_depth': 6})], 'true_causal_effect': at 0x7f8253b014c0>, 'unobserved_confounder_values': 0 -796.816950\n", "1 855.555357\n", "2 938.950350\n", "3 114.249044\n", "4 -1934.939667\n", " ... \n", "995 -2147.384210\n", "996 1038.210231\n", "997 923.836633\n", "998 -432.397171\n", "999 414.569145\n", "Length: 1000, dtype: float64})\n", "********%%%%%%%%%$$$$$&&^**^^^^*^*^*\n", "add_unobserved_confounder \n", "refuter.params {'num_simulations': 5, 'transformation_list': [('random_forest', {'n_estimators': 100, 'max_depth': 6})], 'true_causal_effect': at 0x7f8253b014c0>, 'unobserved_confounder_values': 0 2523.801989\n", "1 -627.372491\n", "2 -775.188135\n", "3 -1327.433007\n", "4 -320.457054\n", " ... \n", "995 1697.713676\n", "996 96.772454\n", "997 2067.834576\n", "998 842.503812\n", "999 169.168533\n", "Length: 1000, dtype: float64}\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "divide by zero encountered in double_scalars\n", "divide by zero encountered in double_scalars\n", "divide by zero encountered in double_scalars\n", "divide by zero encountered in double_scalars\n", "divide by zero encountered in double_scalars\n", "divide by zero encountered in double_scalars\n", "divide by zero encountered in double_scalars\n", "divide by zero encountered in double_scalars\n", "divide by zero encountered in double_scalars\n", "divide by zero encountered in double_scalars\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "printing refute's type\n", "\n", "********%%%%%%%%%$$$$$&&^**^^^^*^*^*\n", "add_unobserved_confounder \n", "refuter.params {'num_simulations': 5, 'transformation_list': [('random_forest', {'n_estimators': 100, 'max_depth': 6})], 'true_causal_effect': at 0x7f8253b014c0>, 'unobserved_confounder_values': 0 2522.923719\n", "1 -626.792015\n", "2 -773.911414\n", "3 -1327.512935\n", "4 -320.616773\n", " ... \n", "995 1699.006229\n", "996 98.832510\n", "997 2069.392058\n", "998 843.547467\n", "999 168.386133\n", "Length: 1000, dtype: float64}\n", "printing refute's type\n", "\n", "********%%%%%%%%%$$$$$&&^**^^^^*^*^*\n", "add_unobserved_confounder \n", "refuter.params {'num_simulations': 5, 'transformation_list': [('random_forest', {'n_estimators': 100, 'max_depth': 6})], 'true_causal_effect': at 0x7f8253b014c0>, 'unobserved_confounder_values': 0 2522.221962\n", "1 -628.519023\n", "2 -773.023006\n", "3 -1326.605030\n", "4 -320.797471\n", " ... \n", "995 1700.171836\n", "996 97.098119\n", "997 2068.583762\n", "998 845.482712\n", "999 168.508037\n", "Length: 1000, dtype: float64}\n", "printing refute's type\n", "\n", "********%%%%%%%%%$$$$$&&^**^^^^*^*^*\n", "add_unobserved_confounder \n", "refuter.params {'num_simulations': 5, 'transformation_list': [('random_forest', {'n_estimators': 100, 'max_depth': 6})], 'true_causal_effect': at 0x7f8253b014c0>, 'unobserved_confounder_values': 0 2523.432989\n", "1 -627.293365\n", "2 -775.523914\n", "3 -1325.714485\n", "4 -320.647412\n", " ... \n", "995 1698.096865\n", "996 98.190151\n", "997 2069.985573\n", "998 843.660509\n", "999 167.881459\n", "Length: 1000, dtype: float64}\n", "printing refute's type\n", "\n", "********%%%%%%%%%$$$$$&&^**^^^^*^*^*\n", "add_unobserved_confounder \n", "refuter.params {'num_simulations': 5, 'transformation_list': [('random_forest', {'n_estimators': 100, 'max_depth': 6})], 'true_causal_effect': at 0x7f8253b014c0>, 'unobserved_confounder_values': 0 2523.368621\n", "1 -628.118626\n", "2 -773.222293\n", "3 -1325.024841\n", "4 -320.897473\n", " ... \n", "995 1698.085915\n", "996 96.388482\n", "997 2068.838960\n", "998 843.939477\n", "999 166.632443\n", "Length: 1000, dtype: float64}\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "Co-variance matrix is undertermined. Inference will be invalid!\n", "Co-variance matrix is undertermined. Inference will be invalid!\n", "Co-variance matrix is undertermined. Inference will be invalid!\n", "Co-variance matrix is undertermined. Inference will be invalid!\n", "Co-variance matrix is undertermined. Inference will be invalid!\n", "Co-variance matrix is undertermined. Inference will be invalid!\n", "Co-variance matrix is undertermined. Inference will be invalid!\n", "Co-variance matrix is undertermined. Inference will be invalid!\n", "Co-variance matrix is undertermined. Inference will be invalid!\n", "Co-variance matrix is undertermined. Inference will be invalid!\n", "divide by zero encountered in double_scalars\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "printing refute's type\n", "\n", "estimated effect [0.5, 0.5, 0.5, 0.5, 0.5]\n", "new_effect [10.049791406120011, 7.2558831682937495, 5.223507582246741, -1.1404484066805178, 9.375079983128604]\n", "p_value [0.04924138901624806, 0.23591014825100232, 0.28916340569847815, 0.41540550943043975, 0.14540869300115378]\n", "true value -0.9358134414484054\n", "\n", "\n", "Running Experiment Number: 5\n", "\n", "\n", "Current Sample Size: 1000\n", "\n", "\n", "The current DGP:\n", "\n", " Linear Data Generating Process\n", " -------------------------------\n", " \n", " treatment:['t1']\n", " outcome:['y']\n", " confounder: ['w1', 'w2', 'w3', 'w4', 'w5', 'w6']\n", " effect_modifier: ['x1', 'x2']\n", " weights: {'confounder=>treatment': array([[100.54417722],\n", " [ 1.31175017],\n", " [ 0.24398158],\n", " [ 0.18085462],\n", " [ -0.81233174],\n", " [ 0.67159129]]), 'confounder=>outcome': array([[98.74365829],\n", " [-0.59263449],\n", " [ 0.5722103 ],\n", " [-1.44916037],\n", " [ 0.73335108],\n", " [-1.87955899]]), 'effect_modifier=>outcome': array([[-0.39548972],\n", " [-1.50877892]]), 'treatment=>outcome': array([[-0.93581344]])}\n", " bias: {'confounder=>treatment': array([-0.57966525]), 'confounder=>outcome': array([-0.26198433])}\n", " seed: None\n", " treatment_is_binary: True\n", " percentile: 0.9\n", " \n", "printing data shape\n", "(1000, 10)\n", "[1.51002481]\n", "check\n", "printing length of confounder list: 2\n", "printing confounder list: ['w2', 'w3']\n", "data columns\n", "data columns Index(['x1', 'x2', 'w1', 'w2', 'w3', 'w4', 'w5', 'w6', 't1', 'y'], dtype='object')\n", "identified_estimand: Estimand type: nonparametric-ate\n", "\n", "### Estimand : 1\n", "Estimand name: backdoor\n", "Estimand expression:\n", " d \n", "─────(Expectation(y|w3,w2))\n", "d[t₁] \n", "Estimand assumption 1, Unconfoundedness: If U→{t1} and U→y then P(y|t1,w3,w2,U) = P(y|t1,w3,w2)\n", "\n", "### Estimand : 2\n", "Estimand name: iv\n", "No such variable found!\n", "\n", "### Estimand : 3\n", "Estimand name: frontdoor\n", "No such variable found!\n", "\n", "\n", "\n", "Running the estimators:\n", "\n", "The current estimator: Estimator(name='backdoor.linear_regression', params=None)\n", "estimator.params None\n", "printing estimate's type\n", "\n", "The current estimator: Estimator(name='backdoor.propensity_score_matching', params={'init_params': {}})\n", "estimator.params {'init_params': {}}\n", "printing estimate's type\n", "\n", "The current estimator: Estimator(name='backdoor.propensity_score_weighting', params={'init_params': {}})\n", "estimator.params {'init_params': {}}\n", "printing estimate's type\n", "\n", "The current estimator: Estimator(name='backdoor.econml.dml.DML', params={'init_params': {'model_y': GradientBoostingRegressor(), 'model_t': GradientBoostingRegressor(), 'model_final': LassoCV(fit_intercept=False), 'featurizer': PolynomialFeatures(degree=1)}, 'fit_params': {}, '_econml_methodname': 'econml.dml.DML'})\n", "estimator.params {'init_params': {'model_y': GradientBoostingRegressor(), 'model_t': GradientBoostingRegressor(), 'model_final': LassoCV(fit_intercept=False), 'featurizer': PolynomialFeatures(degree=1)}, 'fit_params': {}, '_econml_methodname': 'econml.dml.DML'}\n", "printing estimate's type\n", "\n", "The current estimator: Estimator(name='backdoor.econml.dr.LinearDRLearner', params={'init_params': {'model_propensity': LogisticRegressionCV(cv=3)}, 'fit_params': {}, '_econml_methodname': 'econml.dr.LinearDRLearner'})\n", "estimator.params {'init_params': {'model_propensity': LogisticRegressionCV(cv=3)}, 'fit_params': {}, '_econml_methodname': 'econml.dr.LinearDRLearner'}\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "Co-variance matrix is undertermined. Inference will be invalid!\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "printing estimate's type\n", "\n", "estimate_values [65.16469119236292, 64.53514643002428, 65.05786321955922, 66.21909357126837, 65.19978631006086]\n", "\n", "\n", "Running the refuters:\n", "\n", "The current refuter: Refuter(name='dummy_outcome_refuter', params={'num_simulations': 5, 'transformation_list': [('random_forest', {'n_estimators': 100, 'max_depth': 6})], 'true_causal_effect': at 0x7f8253b014c0>, 'unobserved_confounder_values': 0 2523.368621\n", "1 -628.118626\n", "2 -773.222293\n", "3 -1325.024841\n", "4 -320.897473\n", " ... \n", "995 1698.085915\n", "996 96.388482\n", "997 2068.838960\n", "998 843.939477\n", "999 166.632443\n", "Length: 1000, dtype: float64})\n", "********%%%%%%%%%$$$$$&&^**^^^^*^*^*\n", "add_unobserved_confounder \n", "refuter.params {'num_simulations': 5, 'transformation_list': [('random_forest', {'n_estimators': 100, 'max_depth': 6})], 'true_causal_effect': at 0x7f8253b014c0>, 'unobserved_confounder_values': 0 4280.387468\n", "1 -1376.170709\n", "2 -808.294536\n", "3 1765.725409\n", "4 1355.901161\n", " ... \n", "995 3871.899000\n", "996 243.711330\n", "997 153.025676\n", "998 1733.255025\n", "999 3133.555736\n", "Length: 1000, dtype: float64}\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "divide by zero encountered in double_scalars\n", "divide by zero encountered in double_scalars\n", "divide by zero encountered in double_scalars\n", "divide by zero encountered in double_scalars\n", "divide by zero encountered in double_scalars\n", "divide by zero encountered in double_scalars\n", "divide by zero encountered in double_scalars\n", "divide by zero encountered in double_scalars\n", "divide by zero encountered in double_scalars\n", "divide by zero encountered in double_scalars\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "printing refute's type\n", "\n", "********%%%%%%%%%$$$$$&&^**^^^^*^*^*\n", "add_unobserved_confounder \n", "refuter.params {'num_simulations': 5, 'transformation_list': [('random_forest', {'n_estimators': 100, 'max_depth': 6})], 'true_causal_effect': at 0x7f8253b014c0>, 'unobserved_confounder_values': 0 4279.328025\n", "1 -1376.560934\n", "2 -809.716802\n", "3 1764.644858\n", "4 1356.887336\n", " ... \n", "995 3871.803740\n", "996 243.653944\n", "997 149.840248\n", "998 1732.193592\n", "999 3132.586582\n", "Length: 1000, dtype: float64}\n", "printing refute's type\n", "\n", "********%%%%%%%%%$$$$$&&^**^^^^*^*^*\n", "add_unobserved_confounder \n", "refuter.params {'num_simulations': 5, 'transformation_list': [('random_forest', {'n_estimators': 100, 'max_depth': 6})], 'true_causal_effect': at 0x7f8253b014c0>, 'unobserved_confounder_values': 0 4280.338897\n", "1 -1378.790234\n", "2 -808.108232\n", "3 1765.401868\n", "4 1358.266138\n", " ... \n", "995 3874.298314\n", "996 247.554911\n", "997 149.857163\n", "998 1731.265626\n", "999 3133.074832\n", "Length: 1000, dtype: float64}\n", "printing refute's type\n", "\n", "********%%%%%%%%%$$$$$&&^**^^^^*^*^*\n", "add_unobserved_confounder \n", "refuter.params {'num_simulations': 5, 'transformation_list': [('random_forest', {'n_estimators': 100, 'max_depth': 6})], 'true_causal_effect': at 0x7f8253b014c0>, 'unobserved_confounder_values': 0 4279.759377\n", "1 -1379.898101\n", "2 -809.910765\n", "3 1767.325303\n", "4 1355.366980\n", " ... \n", "995 3873.486364\n", "996 244.626759\n", "997 152.014345\n", "998 1732.838465\n", "999 3134.051741\n", "Length: 1000, dtype: float64}\n", "printing refute's type\n", "\n", "********%%%%%%%%%$$$$$&&^**^^^^*^*^*\n", "add_unobserved_confounder \n", "refuter.params {'num_simulations': 5, 'transformation_list': [('random_forest', {'n_estimators': 100, 'max_depth': 6})], 'true_causal_effect': at 0x7f8253b014c0>, 'unobserved_confounder_values': 0 4279.889390\n", "1 -1377.310919\n", "2 -809.458286\n", "3 1763.757330\n", "4 1355.157608\n", " ... \n", "995 3872.839246\n", "996 244.195668\n", "997 151.245093\n", "998 1733.060859\n", "999 3130.900522\n", "Length: 1000, dtype: float64}\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "Co-variance matrix is undertermined. Inference will be invalid!\n", "Co-variance matrix is undertermined. Inference will be invalid!\n", "Co-variance matrix is undertermined. Inference will be invalid!\n", "Co-variance matrix is undertermined. Inference will be invalid!\n", "Co-variance matrix is undertermined. Inference will be invalid!\n", "Co-variance matrix is undertermined. Inference will be invalid!\n", "Co-variance matrix is undertermined. Inference will be invalid!\n", "Co-variance matrix is undertermined. Inference will be invalid!\n", "Co-variance matrix is undertermined. Inference will be invalid!\n", "Co-variance matrix is undertermined. Inference will be invalid!\n", "divide by zero encountered in double_scalars\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "printing refute's type\n", "\n", "estimated effect [0.5, 0.5, 0.5, 0.5, 0.5]\n", "new_effect [10.213391882438867, 5.562431211822528, 1.404494467723996, -1.6688115687936693, -6.457629327755795]\n", "p_value [0.018192201395425735, 0.325365711171716, 0.45825182128061615, 0.43774137089506804, 0.1874106481436102]\n", "true value 1.510024807904736\n", "\n", "\n", "Running Experiment Number: 6\n", "\n", "\n", "Current Sample Size: 1000\n", "\n", "\n", "The current DGP:\n", "\n", " Linear Data Generating Process\n", " -------------------------------\n", " \n", " treatment:['t1']\n", " outcome:['y']\n", " confounder: ['w1', 'w2', 'w3', 'w4', 'w5', 'w6']\n", " effect_modifier: ['x1', 'x2']\n", " weights: {'confounder=>treatment': array([[ 1.01691530e+02],\n", " [ 9.00885667e-01],\n", " [-2.56108938e-02],\n", " [-9.73911879e-01],\n", " [ 4.33855733e-01],\n", " [-4.26569048e-01]]), 'confounder=>outcome': array([[ 1.01275261e+02],\n", " [-1.05529021e+00],\n", " [-1.33066355e+00],\n", " [ 1.62965929e+00],\n", " [ 4.24984916e-02],\n", " [ 1.62372794e+00]]), 'effect_modifier=>outcome': array([[-0.06284906],\n", " [-0.07989987]]), 'treatment=>outcome': array([[1.51002481]])}\n", " bias: {'confounder=>treatment': array([-0.64059795]), 'confounder=>outcome': array([0.7882684])}\n", " seed: None\n", " treatment_is_binary: True\n", " percentile: 0.9\n", " \n", "printing data shape\n", "(1000, 10)\n", "[-0.85795858]\n", "check\n", "printing length of confounder list: 2\n", "printing confounder list: ['w2', 'w3']\n", "data columns\n", "data columns Index(['x1', 'x2', 'w1', 'w2', 'w3', 'w4', 'w5', 'w6', 't1', 'y'], dtype='object')\n", "identified_estimand: Estimand type: nonparametric-ate\n", "\n", "### Estimand : 1\n", "Estimand name: backdoor\n", "Estimand expression:\n", " d \n", "─────(Expectation(y|w3,w2))\n", "d[t₁] \n", "Estimand assumption 1, Unconfoundedness: If U→{t1} and U→y then P(y|t1,w3,w2,U) = P(y|t1,w3,w2)\n", "\n", "### Estimand : 2\n", "Estimand name: iv\n", "No such variable found!\n", "\n", "### Estimand : 3\n", "Estimand name: frontdoor\n", "No such variable found!\n", "\n", "\n", "\n", "Running the estimators:\n", "\n", "The current estimator: Estimator(name='backdoor.linear_regression', params=None)\n", "estimator.params None\n", "printing estimate's type\n", "\n", "The current estimator: Estimator(name='backdoor.propensity_score_matching', params={'init_params': {}})\n", "estimator.params {'init_params': {}}\n", "printing estimate's type\n", "\n", "The current estimator: Estimator(name='backdoor.propensity_score_weighting', params={'init_params': {}})\n", "estimator.params {'init_params': {}}\n", "printing estimate's type\n", "\n", "The current estimator: Estimator(name='backdoor.econml.dml.DML', params={'init_params': {'model_y': GradientBoostingRegressor(), 'model_t': GradientBoostingRegressor(), 'model_final': LassoCV(fit_intercept=False), 'featurizer': PolynomialFeatures(degree=1)}, 'fit_params': {}, '_econml_methodname': 'econml.dml.DML'})\n", "estimator.params {'init_params': {'model_y': GradientBoostingRegressor(), 'model_t': GradientBoostingRegressor(), 'model_final': LassoCV(fit_intercept=False), 'featurizer': PolynomialFeatures(degree=1)}, 'fit_params': {}, '_econml_methodname': 'econml.dml.DML'}\n", "printing estimate's type\n", "\n", "The current estimator: Estimator(name='backdoor.econml.dr.LinearDRLearner', params={'init_params': {'model_propensity': LogisticRegressionCV(cv=3)}, 'fit_params': {}, '_econml_methodname': 'econml.dr.LinearDRLearner'})\n", "estimator.params {'init_params': {'model_propensity': LogisticRegressionCV(cv=3)}, 'fit_params': {}, '_econml_methodname': 'econml.dr.LinearDRLearner'}\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "Co-variance matrix is undertermined. Inference will be invalid!\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "printing estimate's type\n", "\n", "estimate_values [58.22962069722199, 51.46225484263082, 58.48922320058226, 46.406806114485434, 59.946918794668946]\n", "\n", "\n", "Running the refuters:\n", "\n", "The current refuter: Refuter(name='dummy_outcome_refuter', params={'num_simulations': 5, 'transformation_list': [('random_forest', {'n_estimators': 100, 'max_depth': 6})], 'true_causal_effect': at 0x7f8253b014c0>, 'unobserved_confounder_values': 0 4279.889390\n", "1 -1377.310919\n", "2 -809.458286\n", "3 1763.757330\n", "4 1355.157608\n", " ... \n", "995 3872.839246\n", "996 244.195668\n", "997 151.245093\n", "998 1733.060859\n", "999 3130.900522\n", "Length: 1000, dtype: float64})\n", "********%%%%%%%%%$$$$$&&^**^^^^*^*^*\n", "add_unobserved_confounder \n", "refuter.params {'num_simulations': 5, 'transformation_list': [('random_forest', {'n_estimators': 100, 'max_depth': 6})], 'true_causal_effect': at 0x7f8253b014c0>, 'unobserved_confounder_values': 0 1088.869775\n", "1 -1620.227732\n", "2 274.374160\n", "3 -513.824464\n", "4 -436.077570\n", " ... \n", "995 1664.000923\n", "996 2292.950475\n", "997 1648.304517\n", "998 -1204.103180\n", "999 -1371.254403\n", "Length: 1000, dtype: float64}\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "divide by zero encountered in double_scalars\n", "divide by zero encountered in double_scalars\n", "divide by zero encountered in double_scalars\n", "divide by zero encountered in double_scalars\n", "divide by zero encountered in double_scalars\n", "divide by zero encountered in double_scalars\n", "divide by zero encountered in double_scalars\n", "divide by zero encountered in double_scalars\n", "divide by zero encountered in double_scalars\n", "divide by zero encountered in double_scalars\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "printing refute's type\n", "\n", "********%%%%%%%%%$$$$$&&^**^^^^*^*^*\n", "add_unobserved_confounder \n", "refuter.params {'num_simulations': 5, 'transformation_list': [('random_forest', {'n_estimators': 100, 'max_depth': 6})], 'true_causal_effect': at 0x7f8253b014c0>, 'unobserved_confounder_values': 0 1089.848536\n", "1 -1620.437080\n", "2 275.138958\n", "3 -513.787839\n", "4 -434.995183\n", " ... \n", "995 1666.014656\n", "996 2290.633884\n", "997 1649.005843\n", "998 -1204.961230\n", "999 -1369.853746\n", "Length: 1000, dtype: float64}\n", "printing refute's type\n", "\n", "********%%%%%%%%%$$$$$&&^**^^^^*^*^*\n", "add_unobserved_confounder \n", "refuter.params {'num_simulations': 5, 'transformation_list': [('random_forest', {'n_estimators': 100, 'max_depth': 6})], 'true_causal_effect': at 0x7f8253b014c0>, 'unobserved_confounder_values': 0 1092.238188\n", "1 -1618.685786\n", "2 276.482014\n", "3 -513.257106\n", "4 -436.768029\n", " ... \n", "995 1663.803013\n", "996 2292.124029\n", "997 1649.861187\n", "998 -1202.626740\n", "999 -1371.530628\n", "Length: 1000, dtype: float64}\n", "printing refute's type\n", "\n", "********%%%%%%%%%$$$$$&&^**^^^^*^*^*\n", "add_unobserved_confounder \n", "refuter.params {'num_simulations': 5, 'transformation_list': [('random_forest', {'n_estimators': 100, 'max_depth': 6})], 'true_causal_effect': at 0x7f8253b014c0>, 'unobserved_confounder_values': 0 1090.916819\n", "1 -1619.532809\n", "2 275.616950\n", "3 -514.526949\n", "4 -435.099662\n", " ... \n", "995 1666.124878\n", "996 2290.679140\n", "997 1649.356094\n", "998 -1204.857425\n", "999 -1370.958537\n", "Length: 1000, dtype: float64}\n", "printing refute's type\n", "\n", "********%%%%%%%%%$$$$$&&^**^^^^*^*^*\n", "add_unobserved_confounder \n", "refuter.params {'num_simulations': 5, 'transformation_list': [('random_forest', {'n_estimators': 100, 'max_depth': 6})], 'true_causal_effect': at 0x7f8253b014c0>, 'unobserved_confounder_values': 0 1090.741241\n", "1 -1619.694308\n", "2 274.513183\n", "3 -512.477087\n", "4 -435.068800\n", " ... \n", "995 1665.706028\n", "996 2291.790649\n", "997 1648.600484\n", "998 -1203.908457\n", "999 -1370.296571\n", "Length: 1000, dtype: float64}\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "Co-variance matrix is undertermined. Inference will be invalid!\n", "Co-variance matrix is undertermined. Inference will be invalid!\n", "Co-variance matrix is undertermined. Inference will be invalid!\n", "Co-variance matrix is undertermined. Inference will be invalid!\n", "Co-variance matrix is undertermined. Inference will be invalid!\n", "Co-variance matrix is undertermined. Inference will be invalid!\n", "Co-variance matrix is undertermined. Inference will be invalid!\n", "Co-variance matrix is undertermined. Inference will be invalid!\n", "Co-variance matrix is undertermined. Inference will be invalid!\n", "Co-variance matrix is undertermined. Inference will be invalid!\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "printing refute's type\n", "\n", "estimated effect [0.5, 0.5, 0.5, 0.5, 0.5]\n", "new_effect [6.304682313952377, -0.22962796589613657, 5.518016286964299, -6.276959644408334, 2.069195868709715]\n", "p_value [0.044350854861726255, 0.46921763468762834, 0.1750318241922761, 0.2516510925083546, 0.4498483962519302]\n", "true value -0.8579585829818099\n", "\n", "\n", "Running Experiment Number: 7\n", "\n", "\n", "Current Sample Size: 1000\n", "\n", "\n", "The current DGP:\n", "\n", " Linear Data Generating Process\n", " -------------------------------\n", " \n", " treatment:['t1']\n", " outcome:['y']\n", " confounder: ['w1', 'w2', 'w3', 'w4', 'w5', 'w6']\n", " effect_modifier: ['x1', 'x2']\n", " weights: {'confounder=>treatment': array([[99.67547167],\n", " [ 0.36401658],\n", " [ 0.83506901],\n", " [-0.83773006],\n", " [-0.67861709],\n", " [-1.23520126]]), 'confounder=>outcome': array([[100.99374346],\n", " [ 2.38855639],\n", " [ 0.54942851],\n", " [ 0.8070533 ],\n", " [ -0.13323594],\n", " [ 1.68965612]]), 'effect_modifier=>outcome': array([[ 0.35608247],\n", " [-1.14759856]]), 'treatment=>outcome': array([[-0.85795858]])}\n", " bias: {'confounder=>treatment': array([-0.15762066]), 'confounder=>outcome': array([0.97696876])}\n", " seed: None\n", " treatment_is_binary: True\n", " percentile: 0.9\n", " \n", "printing data shape\n", "(1000, 10)\n", "[1.55470465]\n", "check\n", "printing length of confounder list: 2\n", "printing confounder list: ['w2', 'w3']\n", "data columns\n", "data columns Index(['x1', 'x2', 'w1', 'w2', 'w3', 'w4', 'w5', 'w6', 't1', 'y'], dtype='object')\n", "identified_estimand: Estimand type: nonparametric-ate\n", "\n", "### Estimand : 1\n", "Estimand name: backdoor\n", "Estimand expression:\n", " d \n", "─────(Expectation(y|w3,w2))\n", "d[t₁] \n", "Estimand assumption 1, Unconfoundedness: If U→{t1} and U→y then P(y|t1,w3,w2,U) = P(y|t1,w3,w2)\n", "\n", "### Estimand : 2\n", "Estimand name: iv\n", "No such variable found!\n", "\n", "### Estimand : 3\n", "Estimand name: frontdoor\n", "No such variable found!\n", "\n", "\n", "\n", "Running the estimators:\n", "\n", "The current estimator: Estimator(name='backdoor.linear_regression', params=None)\n", "estimator.params None\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "divide by zero encountered in double_scalars\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "printing estimate's type\n", "\n", "The current estimator: Estimator(name='backdoor.propensity_score_matching', params={'init_params': {}})\n", "estimator.params {'init_params': {}}\n", "printing estimate's type\n", "\n", "The current estimator: Estimator(name='backdoor.propensity_score_weighting', params={'init_params': {}})\n", "estimator.params {'init_params': {}}\n", "printing estimate's type\n", "\n", "The current estimator: Estimator(name='backdoor.econml.dml.DML', params={'init_params': {'model_y': GradientBoostingRegressor(), 'model_t': GradientBoostingRegressor(), 'model_final': LassoCV(fit_intercept=False), 'featurizer': PolynomialFeatures(degree=1)}, 'fit_params': {}, '_econml_methodname': 'econml.dml.DML'})\n", "estimator.params {'init_params': {'model_y': GradientBoostingRegressor(), 'model_t': GradientBoostingRegressor(), 'model_final': LassoCV(fit_intercept=False), 'featurizer': PolynomialFeatures(degree=1)}, 'fit_params': {}, '_econml_methodname': 'econml.dml.DML'}\n", "printing estimate's type\n", "\n", "The current estimator: Estimator(name='backdoor.econml.dr.LinearDRLearner', params={'init_params': {'model_propensity': LogisticRegressionCV(cv=3)}, 'fit_params': {}, '_econml_methodname': 'econml.dr.LinearDRLearner'})\n", "estimator.params {'init_params': {'model_propensity': LogisticRegressionCV(cv=3)}, 'fit_params': {}, '_econml_methodname': 'econml.dr.LinearDRLearner'}\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "Co-variance matrix is undertermined. Inference will be invalid!\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "printing estimate's type\n", "\n", "estimate_values [58.92514038942321, 55.090111633367655, 57.29472898265306, 42.408007566323604, 58.69924800511638]\n", "\n", "\n", "Running the refuters:\n", "\n", "The current refuter: Refuter(name='dummy_outcome_refuter', params={'num_simulations': 5, 'transformation_list': [('random_forest', {'n_estimators': 100, 'max_depth': 6})], 'true_causal_effect': at 0x7f8253b014c0>, 'unobserved_confounder_values': 0 1090.741241\n", "1 -1619.694308\n", "2 274.513183\n", "3 -512.477087\n", "4 -435.068800\n", " ... \n", "995 1665.706028\n", "996 2291.790649\n", "997 1648.600484\n", "998 -1203.908457\n", "999 -1370.296571\n", "Length: 1000, dtype: float64})\n", "********%%%%%%%%%$$$$$&&^**^^^^*^*^*\n", "add_unobserved_confounder \n", "refuter.params {'num_simulations': 5, 'transformation_list': [('random_forest', {'n_estimators': 100, 'max_depth': 6})], 'true_causal_effect': at 0x7f8253b014c0>, 'unobserved_confounder_values': 0 -1656.787757\n", "1 938.911408\n", "2 3015.544697\n", "3 2564.679077\n", "4 -831.024150\n", " ... \n", "995 -765.310626\n", "996 -2049.103953\n", "997 -3408.669447\n", "998 182.706105\n", "999 -1228.292186\n", "Length: 1000, dtype: float64}\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "divide by zero encountered in double_scalars\n", "divide by zero encountered in double_scalars\n", "divide by zero encountered in double_scalars\n", "divide by zero encountered in double_scalars\n", "divide by zero encountered in double_scalars\n", "divide by zero encountered in double_scalars\n", "divide by zero encountered in double_scalars\n", "divide by zero encountered in double_scalars\n", "divide by zero encountered in double_scalars\n", "divide by zero encountered in double_scalars\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "printing refute's type\n", "\n", "********%%%%%%%%%$$$$$&&^**^^^^*^*^*\n", "add_unobserved_confounder \n", "refuter.params {'num_simulations': 5, 'transformation_list': [('random_forest', {'n_estimators': 100, 'max_depth': 6})], 'true_causal_effect': at 0x7f8253b014c0>, 'unobserved_confounder_values': 0 -1658.222437\n", "1 940.647201\n", "2 3018.136965\n", "3 2564.464212\n", "4 -833.097117\n", " ... \n", "995 -765.550026\n", "996 -2048.795388\n", "997 -3408.663804\n", "998 180.852503\n", "999 -1227.688163\n", "Length: 1000, dtype: float64}\n", "printing refute's type\n", "\n", "********%%%%%%%%%$$$$$&&^**^^^^*^*^*\n", "add_unobserved_confounder \n", "refuter.params {'num_simulations': 5, 'transformation_list': [('random_forest', {'n_estimators': 100, 'max_depth': 6})], 'true_causal_effect': at 0x7f8253b014c0>, 'unobserved_confounder_values': 0 -1659.095411\n", "1 941.837169\n", "2 3017.547709\n", "3 2565.062455\n", "4 -832.931567\n", " ... \n", "995 -767.047224\n", "996 -2049.360763\n", "997 -3405.605931\n", "998 179.888603\n", "999 -1228.545235\n", "Length: 1000, dtype: float64}\n", "printing refute's type\n", "\n", "********%%%%%%%%%$$$$$&&^**^^^^*^*^*\n", "add_unobserved_confounder \n", "refuter.params {'num_simulations': 5, 'transformation_list': [('random_forest', {'n_estimators': 100, 'max_depth': 6})], 'true_causal_effect': at 0x7f8253b014c0>, 'unobserved_confounder_values': 0 -1656.732871\n", "1 940.154756\n", "2 3017.327603\n", "3 2564.635094\n", "4 -829.936702\n", " ... \n", "995 -767.783306\n", "996 -2049.963135\n", "997 -3407.743544\n", "998 181.290807\n", "999 -1227.968404\n", "Length: 1000, dtype: float64}\n", "printing refute's type\n", "\n", "********%%%%%%%%%$$$$$&&^**^^^^*^*^*\n", "add_unobserved_confounder \n", "refuter.params {'num_simulations': 5, 'transformation_list': [('random_forest', {'n_estimators': 100, 'max_depth': 6})], 'true_causal_effect': at 0x7f8253b014c0>, 'unobserved_confounder_values': 0 -1657.890677\n", "1 938.913553\n", "2 3016.282819\n", "3 2565.006963\n", "4 -830.049553\n", " ... \n", "995 -766.695571\n", "996 -2050.319409\n", "997 -3407.647069\n", "998 182.584367\n", "999 -1228.576131\n", "Length: 1000, dtype: float64}\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "Co-variance matrix is undertermined. Inference will be invalid!\n", "Co-variance matrix is undertermined. Inference will be invalid!\n", "Co-variance matrix is undertermined. Inference will be invalid!\n", "Co-variance matrix is undertermined. Inference will be invalid!\n", "Co-variance matrix is undertermined. Inference will be invalid!\n", "Co-variance matrix is undertermined. Inference will be invalid!\n", "Co-variance matrix is undertermined. Inference will be invalid!\n", "Co-variance matrix is undertermined. Inference will be invalid!\n", "Co-variance matrix is undertermined. Inference will be invalid!\n", "Co-variance matrix is undertermined. Inference will be invalid!\n", "divide by zero encountered in double_scalars\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "printing refute's type\n", "\n", "estimated effect [0.5, 0.5, 0.5, 0.5, 0.5]\n", "new_effect [14.228727792959905, 7.056591290485088, 6.874851676379177, 5.548700302759351, 9.303339632017781]\n", "p_value [0.00011146036336207591, 0.2785154809742681, 0.006835898411978253, 0.33768804423500587, 0.06892193202917955]\n", "true value 1.5547046478266224\n", "\n", "\n", "Running Experiment Number: 8\n", "\n", "\n", "Current Sample Size: 1000\n", "\n", "\n", "The current DGP:\n", "\n", " Linear Data Generating Process\n", " -------------------------------\n", " \n", " treatment:['t1']\n", " outcome:['y']\n", " confounder: ['w1', 'w2', 'w3', 'w4', 'w5', 'w6']\n", " effect_modifier: ['x1', 'x2']\n", " weights: {'confounder=>treatment': array([[9.96195562e+01],\n", " [6.43144823e-01],\n", " [7.12264633e-02],\n", " [4.26179702e-01],\n", " [2.65429155e-01],\n", " [1.12591576e+00]]), 'confounder=>outcome': array([[98.60200789],\n", " [-1.32027236],\n", " [ 0.20083965],\n", " [-0.71647753],\n", " [ 0.67945411],\n", " [ 0.49955246]]), 'effect_modifier=>outcome': array([[1.49695585],\n", " [1.28813032]]), 'treatment=>outcome': array([[1.55470465]])}\n", " bias: {'confounder=>treatment': array([-1.45243808]), 'confounder=>outcome': array([2.0001912])}\n", " seed: None\n", " treatment_is_binary: True\n", " percentile: 0.9\n", " \n", "printing data shape\n", "(1000, 10)\n", "[-0.26377055]\n", "check\n", "printing length of confounder list: 2\n", "printing confounder list: ['w2', 'w3']\n", "data columns\n", "data columns Index(['x1', 'x2', 'w1', 'w2', 'w3', 'w4', 'w5', 'w6', 't1', 'y'], dtype='object')\n", "identified_estimand: Estimand type: nonparametric-ate\n", "\n", "### Estimand : 1\n", "Estimand name: backdoor\n", "Estimand expression:\n", " d \n", "─────(Expectation(y|w3,w2))\n", "d[t₁] \n", "Estimand assumption 1, Unconfoundedness: If U→{t1} and U→y then P(y|t1,w3,w2,U) = P(y|t1,w3,w2)\n", "\n", "### Estimand : 2\n", "Estimand name: iv\n", "No such variable found!\n", "\n", "### Estimand : 3\n", "Estimand name: frontdoor\n", "No such variable found!\n", "\n", "\n", "\n", "Running the estimators:\n", "\n", "The current estimator: Estimator(name='backdoor.linear_regression', params=None)\n", "estimator.params None\n", "printing estimate's type\n", "\n", "The current estimator: Estimator(name='backdoor.propensity_score_matching', params={'init_params': {}})\n", "estimator.params {'init_params': {}}\n", "printing estimate's type\n", "\n", "The current estimator: Estimator(name='backdoor.propensity_score_weighting', params={'init_params': {}})\n", "estimator.params {'init_params': {}}\n", "printing estimate's type\n", "\n", "The current estimator: Estimator(name='backdoor.econml.dml.DML', params={'init_params': {'model_y': GradientBoostingRegressor(), 'model_t': GradientBoostingRegressor(), 'model_final': LassoCV(fit_intercept=False), 'featurizer': PolynomialFeatures(degree=1)}, 'fit_params': {}, '_econml_methodname': 'econml.dml.DML'})\n", "estimator.params {'init_params': {'model_y': GradientBoostingRegressor(), 'model_t': GradientBoostingRegressor(), 'model_final': LassoCV(fit_intercept=False), 'featurizer': PolynomialFeatures(degree=1)}, 'fit_params': {}, '_econml_methodname': 'econml.dml.DML'}\n", "printing estimate's type\n", "\n", "The current estimator: Estimator(name='backdoor.econml.dr.LinearDRLearner', params={'init_params': {'model_propensity': LogisticRegressionCV(cv=3)}, 'fit_params': {}, '_econml_methodname': 'econml.dr.LinearDRLearner'})\n", "estimator.params {'init_params': {'model_propensity': LogisticRegressionCV(cv=3)}, 'fit_params': {}, '_econml_methodname': 'econml.dr.LinearDRLearner'}\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "Co-variance matrix is undertermined. Inference will be invalid!\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "printing estimate's type\n", "\n", "estimate_values [60.04061810460664, 55.887152671633686, 60.2630397559419, 63.94518216554944, 60.14964474866858]\n", "\n", "\n", "Running the refuters:\n", "\n", "The current refuter: Refuter(name='dummy_outcome_refuter', params={'num_simulations': 5, 'transformation_list': [('random_forest', {'n_estimators': 100, 'max_depth': 6})], 'true_causal_effect': at 0x7f8253b014c0>, 'unobserved_confounder_values': 0 -1657.890677\n", "1 938.913553\n", "2 3016.282819\n", "3 2565.006963\n", "4 -830.049553\n", " ... \n", "995 -766.695571\n", "996 -2050.319409\n", "997 -3407.647069\n", "998 182.584367\n", "999 -1228.576131\n", "Length: 1000, dtype: float64})\n", "********%%%%%%%%%$$$$$&&^**^^^^*^*^*\n", "add_unobserved_confounder \n", "refuter.params {'num_simulations': 5, 'transformation_list': [('random_forest', {'n_estimators': 100, 'max_depth': 6})], 'true_causal_effect': at 0x7f8253b014c0>, 'unobserved_confounder_values': 0 2712.552748\n", "1 56.238785\n", "2 -63.512772\n", "3 1578.124020\n", "4 584.631052\n", " ... \n", "995 929.627503\n", "996 1431.835087\n", "997 -1305.660629\n", "998 -2863.898563\n", "999 737.306154\n", "Length: 1000, dtype: float64}\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "divide by zero encountered in double_scalars\n", "divide by zero encountered in double_scalars\n", "divide by zero encountered in double_scalars\n", "divide by zero encountered in double_scalars\n", "divide by zero encountered in double_scalars\n", "divide by zero encountered in double_scalars\n", "divide by zero encountered in double_scalars\n", "divide by zero encountered in double_scalars\n", "divide by zero encountered in double_scalars\n", "divide by zero encountered in double_scalars\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "printing refute's type\n", "\n", "********%%%%%%%%%$$$$$&&^**^^^^*^*^*\n", "add_unobserved_confounder \n", "refuter.params {'num_simulations': 5, 'transformation_list': [('random_forest', {'n_estimators': 100, 'max_depth': 6})], 'true_causal_effect': at 0x7f8253b014c0>, 'unobserved_confounder_values': 0 2708.156154\n", "1 57.590849\n", "2 -61.371660\n", "3 1578.789778\n", "4 585.516857\n", " ... \n", "995 932.065975\n", "996 1433.260807\n", "997 -1305.730022\n", "998 -2865.404606\n", "999 737.244418\n", "Length: 1000, dtype: float64}\n", "printing refute's type\n", "\n", "********%%%%%%%%%$$$$$&&^**^^^^*^*^*\n", "add_unobserved_confounder \n", "refuter.params {'num_simulations': 5, 'transformation_list': [('random_forest', {'n_estimators': 100, 'max_depth': 6})], 'true_causal_effect': at 0x7f8253b014c0>, 'unobserved_confounder_values': 0 2709.957964\n", "1 57.120825\n", "2 -62.863960\n", "3 1576.096022\n", "4 585.768750\n", " ... \n", "995 931.461442\n", "996 1430.191886\n", "997 -1306.219434\n", "998 -2865.182028\n", "999 734.802146\n", "Length: 1000, dtype: float64}\n", "printing refute's type\n", "\n", "********%%%%%%%%%$$$$$&&^**^^^^*^*^*\n", "add_unobserved_confounder \n", "refuter.params {'num_simulations': 5, 'transformation_list': [('random_forest', {'n_estimators': 100, 'max_depth': 6})], 'true_causal_effect': at 0x7f8253b014c0>, 'unobserved_confounder_values': 0 2711.141047\n", "1 57.666876\n", "2 -62.901677\n", "3 1578.001717\n", "4 586.390934\n", " ... \n", "995 930.810212\n", "996 1433.103911\n", "997 -1306.191442\n", "998 -2866.583894\n", "999 735.158864\n", "Length: 1000, dtype: float64}\n", "printing refute's type\n", "\n", "********%%%%%%%%%$$$$$&&^**^^^^*^*^*\n", "add_unobserved_confounder \n", "refuter.params {'num_simulations': 5, 'transformation_list': [('random_forest', {'n_estimators': 100, 'max_depth': 6})], 'true_causal_effect': at 0x7f8253b014c0>, 'unobserved_confounder_values': 0 2711.330533\n", "1 57.203514\n", "2 -63.307864\n", "3 1577.051038\n", "4 585.436448\n", " ... \n", "995 931.847281\n", "996 1431.781880\n", "997 -1305.110740\n", "998 -2863.220660\n", "999 735.761150\n", "Length: 1000, dtype: float64}\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "Co-variance matrix is undertermined. Inference will be invalid!\n", "Co-variance matrix is undertermined. Inference will be invalid!\n", "Co-variance matrix is undertermined. Inference will be invalid!\n", "Co-variance matrix is undertermined. Inference will be invalid!\n", "Co-variance matrix is undertermined. Inference will be invalid!\n", "Co-variance matrix is undertermined. Inference will be invalid!\n", "Co-variance matrix is undertermined. Inference will be invalid!\n", "Co-variance matrix is undertermined. Inference will be invalid!\n", "Co-variance matrix is undertermined. Inference will be invalid!\n", "Co-variance matrix is undertermined. Inference will be invalid!\n", "divide by zero encountered in double_scalars\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "printing refute's type\n", "\n", "estimated effect [0.5, 0.5, 0.5, 0.5, 0.5]\n", "new_effect [9.761347084710797, 11.70372585950415, 12.653425027225603, 14.288185375347211, 0.10455221410212197]\n", "p_value [0.09453926135230384, 0.07465124518673548, 0.09753320940496213, 0.045333644316214415, 0.4853745566037485]\n", "true value -0.26377054845275383\n", "\n", "\n", "Running Experiment Number: 9\n", "\n", "\n", "Current Sample Size: 1000\n", "\n", "\n", "The current DGP:\n", "\n", " Linear Data Generating Process\n", " -------------------------------\n", " \n", " treatment:['t1']\n", " outcome:['y']\n", " confounder: ['w1', 'w2', 'w3', 'w4', 'w5', 'w6']\n", " effect_modifier: ['x1', 'x2']\n", " weights: {'confounder=>treatment': array([[ 9.99411229e+01],\n", " [-2.00754798e-02],\n", " [ 2.10369354e+00],\n", " [ 9.62460702e-02],\n", " [-1.95826174e+00],\n", " [-1.29671150e+00]]), 'confounder=>outcome': array([[ 1.00696550e+02],\n", " [ 9.03903506e-01],\n", " [ 7.36402377e-03],\n", " [-4.14383241e-01],\n", " [-8.37112978e-01],\n", " [ 1.61477099e+00]]), 'effect_modifier=>outcome': array([[-2.21818609],\n", " [ 0.02197199]]), 'treatment=>outcome': array([[-0.26377055]])}\n", " bias: {'confounder=>treatment': array([1.01462458]), 'confounder=>outcome': array([-1.93568287])}\n", " seed: None\n", " treatment_is_binary: True\n", " percentile: 0.9\n", " \n", "printing data shape\n", "(1000, 10)\n", "[0.72562631]\n", "check\n", "printing length of confounder list: 2\n", "printing confounder list: ['w2', 'w3']\n", "data columns\n", "data columns Index(['x1', 'x2', 'w1', 'w2', 'w3', 'w4', 'w5', 'w6', 't1', 'y'], dtype='object')\n", "identified_estimand: Estimand type: nonparametric-ate\n", "\n", "### Estimand : 1\n", "Estimand name: backdoor\n", "Estimand expression:\n", " d \n", "─────(Expectation(y|w3,w2))\n", "d[t₁] \n", "Estimand assumption 1, Unconfoundedness: If U→{t1} and U→y then P(y|t1,w3,w2,U) = P(y|t1,w3,w2)\n", "\n", "### Estimand : 2\n", "Estimand name: iv\n", "No such variable found!\n", "\n", "### Estimand : 3\n", "Estimand name: frontdoor\n", "No such variable found!\n", "\n", "\n", "\n", "Running the estimators:\n", "\n", "The current estimator: Estimator(name='backdoor.linear_regression', params=None)\n", "estimator.params None\n", "printing estimate's type\n", "\n", "The current estimator: Estimator(name='backdoor.propensity_score_matching', params={'init_params': {}})\n", "estimator.params {'init_params': {}}\n", "printing estimate's type\n", "\n", "The current estimator: Estimator(name='backdoor.propensity_score_weighting', params={'init_params': {}})\n", "estimator.params {'init_params': {}}\n", "printing estimate's type\n", "\n", "The current estimator: Estimator(name='backdoor.econml.dml.DML', params={'init_params': {'model_y': GradientBoostingRegressor(), 'model_t': GradientBoostingRegressor(), 'model_final': LassoCV(fit_intercept=False), 'featurizer': PolynomialFeatures(degree=1)}, 'fit_params': {}, '_econml_methodname': 'econml.dml.DML'})\n", "estimator.params {'init_params': {'model_y': GradientBoostingRegressor(), 'model_t': GradientBoostingRegressor(), 'model_final': LassoCV(fit_intercept=False), 'featurizer': PolynomialFeatures(degree=1)}, 'fit_params': {}, '_econml_methodname': 'econml.dml.DML'}\n", "printing estimate's type\n", "\n", "The current estimator: Estimator(name='backdoor.econml.dr.LinearDRLearner', params={'init_params': {'model_propensity': LogisticRegressionCV(cv=3)}, 'fit_params': {}, '_econml_methodname': 'econml.dr.LinearDRLearner'})\n", "estimator.params {'init_params': {'model_propensity': LogisticRegressionCV(cv=3)}, 'fit_params': {}, '_econml_methodname': 'econml.dr.LinearDRLearner'}\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "Co-variance matrix is undertermined. Inference will be invalid!\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "printing estimate's type\n", "\n", "estimate_values [63.08475520510219, 47.189872300307854, 62.05364801885312, 58.26771298615824, 62.761999618690794]\n", "\n", "\n", "Running the refuters:\n", "\n", "The current refuter: Refuter(name='dummy_outcome_refuter', params={'num_simulations': 5, 'transformation_list': [('random_forest', {'n_estimators': 100, 'max_depth': 6})], 'true_causal_effect': at 0x7f8253b014c0>, 'unobserved_confounder_values': 0 2711.330533\n", "1 57.203514\n", "2 -63.307864\n", "3 1577.051038\n", "4 585.436448\n", " ... \n", "995 931.847281\n", "996 1431.781880\n", "997 -1305.110740\n", "998 -2863.220660\n", "999 735.761150\n", "Length: 1000, dtype: float64})\n", "********%%%%%%%%%$$$$$&&^**^^^^*^*^*\n", "add_unobserved_confounder \n", "refuter.params {'num_simulations': 5, 'transformation_list': [('random_forest', {'n_estimators': 100, 'max_depth': 6})], 'true_causal_effect': at 0x7f8253b014c0>, 'unobserved_confounder_values': 0 1519.944360\n", "1 762.255309\n", "2 -28.390698\n", "3 -1821.501577\n", "4 898.117887\n", " ... \n", "995 484.428121\n", "996 -862.203932\n", "997 -1273.957814\n", "998 -2505.831190\n", "999 -1060.894132\n", "Length: 1000, dtype: float64}\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "divide by zero encountered in double_scalars\n", "divide by zero encountered in double_scalars\n", "divide by zero encountered in double_scalars\n", "divide by zero encountered in double_scalars\n", "divide by zero encountered in double_scalars\n", "divide by zero encountered in double_scalars\n", "divide by zero encountered in double_scalars\n", "divide by zero encountered in double_scalars\n", "divide by zero encountered in double_scalars\n", "divide by zero encountered in double_scalars\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "printing refute's type\n", "\n", "********%%%%%%%%%$$$$$&&^**^^^^*^*^*\n", "add_unobserved_confounder \n", "refuter.params {'num_simulations': 5, 'transformation_list': [('random_forest', {'n_estimators': 100, 'max_depth': 6})], 'true_causal_effect': at 0x7f8253b014c0>, 'unobserved_confounder_values': 0 1519.189465\n", "1 763.469809\n", "2 -26.174460\n", "3 -1823.912280\n", "4 897.942334\n", " ... \n", "995 484.547509\n", "996 -861.288079\n", "997 -1271.476650\n", "998 -2507.297576\n", "999 -1061.146403\n", "Length: 1000, dtype: float64}\n", "printing refute's type\n", "\n", "********%%%%%%%%%$$$$$&&^**^^^^*^*^*\n", "add_unobserved_confounder \n", "refuter.params {'num_simulations': 5, 'transformation_list': [('random_forest', {'n_estimators': 100, 'max_depth': 6})], 'true_causal_effect': at 0x7f8253b014c0>, 'unobserved_confounder_values': 0 1520.493364\n", "1 762.635509\n", "2 -27.352404\n", "3 -1824.686763\n", "4 899.847467\n", " ... \n", "995 484.139347\n", "996 -861.148851\n", "997 -1272.856957\n", "998 -2505.032258\n", "999 -1059.738297\n", "Length: 1000, dtype: float64}\n", "printing refute's type\n", "\n", "********%%%%%%%%%$$$$$&&^**^^^^*^*^*\n", "add_unobserved_confounder \n", "refuter.params {'num_simulations': 5, 'transformation_list': [('random_forest', {'n_estimators': 100, 'max_depth': 6})], 'true_causal_effect': at 0x7f8253b014c0>, 'unobserved_confounder_values': 0 1519.546206\n", "1 761.274006\n", "2 -27.677088\n", "3 -1821.945989\n", "4 900.673877\n", " ... \n", "995 482.774331\n", "996 -860.619183\n", "997 -1273.213354\n", "998 -2506.378815\n", "999 -1060.448782\n", "Length: 1000, dtype: float64}\n", "printing refute's type\n", "\n", "********%%%%%%%%%$$$$$&&^**^^^^*^*^*\n", "add_unobserved_confounder \n", "refuter.params {'num_simulations': 5, 'transformation_list': [('random_forest', {'n_estimators': 100, 'max_depth': 6})], 'true_causal_effect': at 0x7f8253b014c0>, 'unobserved_confounder_values': 0 1521.210183\n", "1 763.509146\n", "2 -28.436958\n", "3 -1821.456669\n", "4 899.542846\n", " ... \n", "995 486.546779\n", "996 -860.934574\n", "997 -1271.777465\n", "998 -2506.707738\n", "999 -1060.251252\n", "Length: 1000, dtype: float64}\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "Co-variance matrix is undertermined. Inference will be invalid!\n", "Co-variance matrix is undertermined. Inference will be invalid!\n", "Co-variance matrix is undertermined. Inference will be invalid!\n", "Co-variance matrix is undertermined. Inference will be invalid!\n", "Co-variance matrix is undertermined. Inference will be invalid!\n", "Co-variance matrix is undertermined. Inference will be invalid!\n", "Co-variance matrix is undertermined. Inference will be invalid!\n", "Co-variance matrix is undertermined. Inference will be invalid!\n", "Co-variance matrix is undertermined. Inference will be invalid!\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "printing refute's type\n", "\n", "estimated effect [0.5, 0.5, 0.5, 0.5, 0.5]\n", "new_effect [0.030353284233114942, 5.674258575539097, 6.799848808518449, 0.5540804945527011, 2.6922710300409918]\n", "p_value [0.478452422877625, 0.30293858186884604, 0.2573908986876245, 0.4805385362558892, 0.3880755671655681]\n", "true value 0.7256263127405129\n", "\n", "\n", "Completed all experiments. Saving the data...\n", "Data has been saved in results/Test_2_2021-03-02_data.csv\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "Co-variance matrix is undertermined. Inference will be invalid!\n" ] } ], "source": [ "unobserved_confounding_error = Experiment(\n", " experiment_name='Test',\n", " experiment_id='2',\n", " num_experiments=10, # 10\n", " sample_sizes=sample_size,\n", " dgps=dgp_list,\n", " estimators=estimator_tuples,\n", " refuters=refuter_tuples,\n", " simulate_unobserved_confounding = True\n", ")\n", "\n", "# Run the experiment\n", "res = pd.read_csv(unobserved_confounding_error.experiment())" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAA4QAAAHXCAYAAADky5RLAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8vihELAAAACXBIWXMAAAsTAAALEwEAmpwYAAEAAElEQVR4nOzdeXwURf7/8VclBBIOQQTkUg5FEHJzCCIiiweKKKjgBcq6iOcKrOKxKKLrtcJXwNXV9eeB1yKIiiLeIIss7nKJ4sWqGAQSIIAJVxJyfH5/9Mwwk0xCAgkhzvv5ePAgU1PdXd1TfXy6qqudmSEiIiIiIiKRJ6q6CyAiIiIiIiLVQwGhiIiIiIhIhFJAKCIiIiIiEqEUEIqIiIiIiEQoBYQiIiIiIiIRSgGhiIiIiIhIhFJAKFJFnHPmnDvR9/fTzrl7fH+f4ZzbWMXLvtI591FVLqOU5c5wzj1wGJYT2LZVNP8+zrm1VTX/MMur0vWJNM65Y51zi51zu5xz/1eO/COdc0uCPu92zrX3/R3nnJvnnMt2zr3uS3vAObfNObe56tbit8E5l+acO7OKl3G87zeLrsrlVDVfPSz0rcvJ5ZymqXPue+dcXFWXL2iZbzjnzj1cyyulDCf5tlOhc25UdZZF5LdAAaFIGZxzVzjnVvhOPBnOufedc6dVdD5mdr2Z/aWKytjWF1DUClreq2Z2dlUsr7IcyUGQmX1mZh2rYt7OuUW6gKlyo4FtwFFmdmtFJzaz+ma2zvfxEuBY4BgzG+qcOx64FehsZs0rrcTldCTvN4dL8SDTzH7x/WaFVbCsSc65Vyp7vmX43Lcu3wUtP993Dspyzi11zvUKyn8nMMPMcpxz3/jy+QOl3KDPfy5vAZxzLZxz7zjn0n31rW2xLH8FDurGn3Mu2Tm30jm31/d/chl5T3bOLfTdjPnROTfE/52Z/c/M6gOfHUw5RCSUAkKRUjjn/gRMAx7CuyA8Hvg7cOFhLkeNvustkSP4pkQ1awN8a2ZWSfP6n5kV+D4fD2w3s60VnZHz6LwbQSppn5jlC36aAkuAN311qQ5wNfAKgJl18QWT/kDpZv9nM3uoAssrAj4ALg73pZktA45yznWryEo452oDb/vKezTwIvC2L7143lq+vO8CjfFu8rzinDupIssUkfLRiUkkDOdcQ+B+4CYze9PM9phZvpnNM7Pxvjw9nHOf++7aZjjnngh3YvPlLdGV0jn3Z1+3szTn3JXF8j7lnHvPObcH6OecG+ic+8I5t9M5t8E5NyloVot9/2f57gT3CtMF7lTn3HLfndblzrlTg75b5Jz7i3Pu387rYveRc65JKetxhnNuY2llD5P/Wt+d3R2+O84tfen+Mn/pK/OlYaY90Tn3L1+ZtznnZhXLcqZz7gff9n/SOed800U55+52zq13zm11zr3k+z1xzr3onLvV93cr393vm3yfT/CVM8oV69brW8/bnHNf+cozyzkXG/T97b46kO6cG+VKacVxzj0I9AGe8K33EwdaH9901zjnvnPO/eqc+9A516aMbf66c26zr5yLnXNdgr6Lc879n2/bZDvnljhfVzPn3GnOa33I8tWxkb70kBbNMHXLnHM3Oed+AH7wpU33zWOn81oB+gTlj/bVn5989W2lc+443zqHdO/01Zlxpaxn2DrtnJuBd5F8u28bl+iu6Jw7xjfvnc65ZcAJxb43X/27D5gIXOqb13XAx0BL3+cZvvw9g7bdl865M4Lmtcg596Bz7t/AXqC9c66Tc+5jX31b65wbFpR/hm9bzPdtn/86507wfXfA/caX71pffdnlnPvWOZfqS78zaLt/64JaXFyxljBXrOeB73df55v2Z+fb75233yx0zm133n76qnOuUbhyhSlnHefcFOfcL865Lc7rWu+vj02cc+/6tukO59xnzts3X8YLyuf5tsHtYcq6yHndepf68szz/eav+n7z5S6o1au0+uqcGwD8Oej3/9KX3tJXf3Y47/h2bbHtOMc594pzbicw0nnnihW++W9xzj1Wnu1TnJnl4wVRzYFjgFOALDOr1EcQzGyLmf0dWF5GtkXAwArO+gygFjDNzPLM7HHAAb8Lk7cT0BKYamaFZrYQ+DcwooLLFJHyMDP90z/9K/YPGAAUALXKyNMV6Il3gmsLfAeMDfregBN9f88AHvD9fYZv3o8BdYC+wB6gY1DebKA33k2bWN80Cb7PicAWYLAvf1vfsmoFLXsksMT3d2PgV7wTaS3gct/nY3zfLwJ+Ak4C4nyfHyllnctTdv96/g6v216qL+/fgMXhtk8py5oJTAjaBqcVm/ZdoBHexWEmMMD33TXAj0B7oD7wJvBy0HfzfH9f4VvvWUHfvR20nhuDlpcGLMO7QGns+62vD6orm4EuQF28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9sroQgewbXMXovdeRJ2mH+JisrD8RuRknsOi3Xs4tfbrNLNtbHVN2NB1/yij/m6v/u6wm48+hmcvvJQFPU4LmfeBun76u5RqlNHq5+/OWGNGGfV3ha7AKKP+elt8lNHzDnaU0aB9q2BvyS7WAMfsH5fpyO1+KyJSwykgFJEKMbOdQX+/55z7u3OuiZnvAbnQvM8Az4A3ymhFllOrRQuvu2iY9PJqXq85GXtKBpD7chpRp25WifS8vHrUtdoQ3OhWRhc6gJaN4tiUlULBzpSQ9JWN4mh+58NeOXz/gjUcNChwgT1i6TdsDBP8lafr58XNGysAPEIMbD/wyA0Aw0kcdsBnZItrOGgQib562xk441CW37C11zUbqFW3kIK9JS9Jth+1/+8jtvutiEgNpy6jIlIhzrnmzjnn+7sH3nEk/CgthyBct0oXG0uzcWPLPY/SuvHlRV9IUUHoxWdhYTS/rEslOe+X/YkH6EIHMP6cjsTFhLZuxMVEV6gLnbp+SkQK6rbaLHEXLroo5OvcWvDPM7z94ojufisiUsOphVBEQjjnZuLd+G/inNsI3AvEAJjZ08AlwA3OuQIgB7jMquCFpsW7VR7MKKNldeP7YklbtmY9RnTcLvLy6pG+rhtNM47l7ObzINuVe5RRf1e5yR+uJT0rh5aN4hh/TscKdaFT10+JSEHdVhu23Uhe7Ub8srJuyCijSzvtocWR3v1WRKSG04vpReSwOJJeTC8iUlPoxfQiUtXUZVRERERERCRCKSAUERERERGJUAoIRUREREREIpQCQhERERERkQilgFBERERERCRCKSAUERERERGJUAoIRUREREREIpQCQhERERERkQilgFBERERERCRCKSAUERERERGJUAoIRUREREREIpQCQhERERERkQilgFBERERERCRCKSAUERERERGJUAoIRUREREREIpQCQhERERERkQilgFBERERERCRCKSAUERERERGJUAoIRUREREREIpQCQhERERERkQilgFBERERERCRCKSAUERERERGJUAoIRUREREREIpQCQhERERERkQilgFBEQjjnnnfObXXOfV3K984597hz7kfn3FfOudTDXUYRERERqRwKCEWkuBnAgDK+Pxfo4Ps3GnjqMJRJRERERKqAAkIRCWFmi4EdZWS5EHjJPP8BGjnnWhye0omIiIhIZVJAKCIV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TJ9EjuJ1uDKeczsoZdT5honeV4E6XbcRz3cawA8Jp/GwnjcVETliaVAZkQjjnPsECNfPbIKZve3Lswi4LdwzhM65S4ABZjbK93kEcIqZ3Rwm72hgNMDxxx/fdf369ZW2HiIikUCDyohIVVMLoUiEMbMzD3EWm4Djgj639qWFW9YzwDPgjTJ6iMsVERERkUqmZwhFpKKWAx2cc+2cc7WBy4B3qrlMIiIiInIQFBCKSIBzbohzbiPQC5jvnPvQl97SOfcegJkVADcDHwLfAbPN7JvqKrOIiIiIHDx1GRWRADN7C3grTHo6cF7Q5/eA9w5j0URERESkCqiFUEREREREJEIpIBQREREREYlQCghFREREREQilAJCERERERGRCKWAUEREREREJEIpIBQREREREYlQCghFREREREQilAJCERERERGRCKWAUEREREREJEIpIBQREREREYlQCghFREREREQilAJCERERERGRCKWAUEREREREJEIpIBQREREREYlQCghFREREREQilAJCERERERGRCKWAUEREREREJEIpIBQREREREYlQCghFREREREQilAJCERERERGRCKWAUEREREREJEIpIBQREREREYlQCghFREREREQilAJCEQlwzg11zn3jnCtyznUrI1+ac26Nc261c27F4SyjiIiIiFSeWtVdABE5onwNXAT8oxx5+5nZtiouj4iIiIhUIQWEIhJgZt8BOOequyhVbsHse8ivO5dacXvJy6tH+rpufL83jjXtf2BM6hgG7t4DC+6H7I3QsDX0nwiJw8o9/zc27+DhdRlsysunVZ0Y7mrfgoubNw6bd+4Xm5j84VrSs3Jo2SiO8ed0ZHBKq8pa1VJlz5vH1qnTKMjIoFaLFjQbN5aGgwZV+XLl4MxfN5/pq6azec9mmtdr7tXT9gOrboFfzS73PrDgby9Re8bTNN7zKzvqHc2+kdfT/49XVV3ZRESk0iggFJGDYcBHzjkD/mFmz1R3gSpiwex7KGo0i5hahQDExu6hTcclFKw9FX7uwKS998C27QzcmeVNkL0B5t3i/V2OoPCNzTu4be0GcooMgI15+dy2dgNAiaBw7hebuOvNNeTke2XZlJXDXW+uAajSoDB73jwy7pmI5eYCUJCeTsY9EwEUFB6B5q+bz6Slk8gt9H6vjD0ZTFo6CaBqgsKvZnt1Pj/H+1zG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chDzGkzQthAREakKaiEUEZFq4Zx7xDn3rXPuK+fcFOfcqcAFwGRfi9oJzrkZzrlLfPnTnHMP+75b4ZxLdc596Jz7yTl3vS9PfefcAufcKufcGufchb7FPQKc4Jt2si/veOfcct/y7wsq1wTn3P+cc0uAjqWUvalz7g3f9Mudc72dc82AV4DuvuVcBwwD/uKce/UAy7zKl/alc+7lcNuiUje+iIiIj1oIRUSkqsU551YHfX4Y+AQYAnQyM3PONTKzLOfcO8C7ZjYHwDlXfF6/mFmyc24qMAPoDcQCXwNPA7nAEDPb6ZxrAvzHN887gfiglruzgQ5AD8AB7zjnTgf2AJcByXjnyFXAyjDrNB2YamZLnHPHAx+a2cnOuVHAbWZ2vm85vfzrU8YytwN3A6ea2TbnXGMz21F8W4iIiFQFBYQiIlLVSnQZdc7VwgvennPOvYvXNbI83vH9vwaob2a7gF3OuTznXCO8gO4hX6BVBLQCjg0zn7N9/77wfa6PF6w1AN4ys72+cr4TZlqAM4HOQQHrUc65+gcoe2nLTAJeN7NtAGa24wDzERERqTQKCEVE5LAzswLnXA+gP3AJcDPwu3JMmuf7vyjob//nWsCVQFOgq5nlO+fS8FoQi3N4z/b9IyTRubHlXIUooKeZ5RabvqxpSlvmH8u5TBERkUqnZwhFROSw87WmNTSz94BxeK1kALvwWukOVkNgqy8Y7Ae0KWW+HwLX+Fv1nHOtfM8ALgYGO+finHMNgEGlLOcjIBDIOeeSy1G20pa5EBjqnDvGl964lDKLiIhUOrUQiohIVSv+DOEHeM/gve2ci8VrOfuT77vXgP/nnLsFr+Wwol4F5jnn1gArgO8BzGy7c+7fzrmvgffNbLxz7mTgc1+r3m5guJmtcs7NAr4EtgLLS1nOLcCTzrmv8M6li4HryyqYmX1UyjK/cc49CPzLOVeI16V0ZPFtYWY/HcT2EBERKZMzs+oug4iIiIiIiFQDdRkVERERERGJUAoIRUREREREIpQCQhERERERkQilgFBERERERCRCKSAUERERERGJUAoIRUREREREIpQCQhERERERkQilgFBERERERCRCKSAUERERERGJUAoIRUREREREIpQCQhERERERkQilgFBERERERCRCKSAUERERERGJUAoIRUREREREIpQCQhERERERkQilgFBERERE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3Tj55JNZvnw5F110ER06dAgEOhMnTmTatGmBckyYMIHp06eHLaOZMX78eOLj40lISAg5lwW3Ot18883MmDGDxx9/nPT0dPr160e/fv0A7+ZvamoqSUlJ9O/fHyj7nHD11VfTp08f2rRpw5tvvsntt99OQkICAwYMID8/Hyj9eB/OGWecwdixY+nWrRvTp08PO+17773HtGnTeOqpp+jXrx9paWnEx8cH5uFvzZgzZw4rVqzgyiuvJDk5mZycnFLLUny5xdX0c3T9+vUZN24cXbp0oX///mRmZoZd7wULFpCSkkJCQgLXXHMNeXl5gNcLyP/b9ujRgx9//BGg1PPspEmTuOaaazjjjDNo3759oMWltPOnf1+68847ycnJITk5mSuvvLJC9T8jI4PTTz+d5ORk4uPjA+fSitbp8lxHhFPe/eH++++ne/fuxMfHM3r0aMwsbF1dvnw5p556KklJSfTo0SPQey09PZ0BAwbQoUOHkOshf0+ttLQ0Tj75ZK699lq6dOnC2WefTU5ODgDLly8nMTGR5OTkwLEinFq1ajF69GimTp1a6voWd+qppwYaBJYuXcr1118fCLCWLVtG165diY6OLvf8KtOjjz7KhAkT6NSpE+DFMDfccEPlL8jfmhDu34oVK6y82t7xrrUJ86/tHe+Wex7hTJ8+3caOHVsiPTk52aZPn24DBw40M7MdO3ZYamqqZWRkmJnZCy+8YDfddJOZmR199NGWlZVV6jL69u1ry5cvNzOzNm3a2ObNm61Tp072ww8/2Ouvv25XX311IO+ZZ55pixcvtrVr11p8fHwg/d5777XJkyeXa52ioqIsKSkp8O+1114zM7M//OEP1rRpU7vsssvslVdescLCwpDp6tWrF/I5eJlXX321vf7663bKKafYjh07bNSoUbZo0SJr06aNZWZmmpnZK6+8Ytdcc42ZmfXq1cuCf9/g7eXXpk0bi4+PD5TzscceMzOzp556yp566qlAGRITE23v3r2WmZlprVu3tk2bNll+fr5lZ2ebmVlmZqadcMIJVlRUZF9//bV16NAhUKbt27eHlP+2226z6667zoqKiiwnJ8dat25t//vf/6yoqMiGDh0a+L1vvvlmmzRpkpmZLViwwJKSkspMv/feey01NdX27t1b4vcI3kb+bfzpp5/aUUcdZRs2bLDCwkLr2bOnffbZZ7Zv3z7r1auXbd261czMXnvtNfv9739vZmbbtm0LzHPChAn2+OOPB9Zt4MCBVlBQUGLZwb9lcPkuv/xy++yzz8zMbP369dapUyczM7vpppvsoYceMjOz999/3wDLzMy0n3/+2Zxz9vnnn5uZ2YcffmjXXnutFRUVWWFhoQ0cOND+9a9/2Zw5c2zUqFGB5WZlZdm2bdvspJNOsqKiIjMz+/XXXwNl8tevhIQEW7RokZmZ3XPPPTZmzBgz8/adP/3pT2ZmNn/+fOvfv3+p6ygipauqc+iKFSssPj7e9uzZY9nZ2XbCCSfY5MmTQ857mZmZ1qZNGzPzzgUnnHCC7dy507Zu3WpHHXVU4Hg/duxYmzp1qpl5+/7tt99uZmbTpk2zFi1aWHp6uuXm5lqrVq1s27Zt9vPPP1tKSoqZmRUWFlr79u1DjpPB5syZY2eeeaYVFBTY5s2b7bjjjrP09HT79NNPA8d9M+8Y+MILL5hZ6LF769at1rp1a1u3bp2Z7T+3lHVO6N27t+3bt89Wr15tcXFx9t5775mZ2eDBg+2tt94q83gfTt++fe2GG24wMytz2uBj688//2xdunQJzGPy5Ml27733Bubn/43Kml/wcs1+e+dowF555RUzM7vvvvsC1yrB6+0vy9q1a83MbMSIEYG62qZNG3vggQfMzOzFF18MlLG08+y9995rvXr1stzcXMvMzLTGjRvbvn37wp4/i/9OwddpFan/U6ZMCZSxoKAgsP9VtE6X5zoinPLsD8FlMDMbPny4vfPOOyW2QV5enrVr186WLVtmZmbZ2dmWn59vL7zwgrVr186ysrIsJyfHjj/+ePvll18Cv5H/WiY6Otq++OILMzMbOnSovfzyy2Zm1qVLF1u6dKmZmd1xxx2B/WbTpk127rnnBspVr149y87OtjZt2lhWVlbIPnXvvfday5YtA9e1Z5xxhpmZpaWlWbt27czM7LLLLrPvvvvOzjjjDNu5c6c98MADdvfdd5e67V544QVr0qRJyHX93r177eeff7bY2NhA2o033hg2//PPP29m3j7Wtm3bQPoVV1xhZmYpKSm2evXqUpfvX+fyWLFihQ0aNOhvgwYNutGKxXyV1p7cslEcm7JywqZXpc8++4ykpCR++OEHxo4dS/PmzcvMv2bNGkaMGMGuXbt46KGHuPTSS0vkiY6OZvz48Tz88MOce+65gfQtW7bwww8/cNppp+GcIyYmhq+//rrUuxSlCddlFLxuB2vWrOGTTz5hypQpfPzxx8yYMaNC877ooot47bXX+O9//8s//vGPkO9mzpzJmDFjAK81cebMmXTt2rXM+YXrMlq8K+GFF15IXFwccXFx9OvXj2XLljFw4ED+/Oc/s3jxYqKioti0aRNbtmxh4cKFDB06NDDPxo0bB+bzl7/8hVNOOYVnnnkG8J6zaNeuHR06dABg+PDhge+WLFnCG2+8AcDvfvc7tm/fzs6dO0tNB7jggguIiyt/fezRowetW7cGCDxX2ahRI77++mvOOussAAoLC2nRogXgNevffffdZGVlsXv3bs4555zAvIYOHXrAu0vB5fvkk08CzyQA7Ny5M9DC+9ZbbwEwYMAAjj766ECeNm3aBJ5t/eijj/joo49ISUkBvLvBP/zwA3369OHWW2/ljjvu4Pzzz6dPnz4UFBQQGxvLH/7wB84///wSz4BkZ2eTlZVF3759Abj66qsZOnRo4PuLLroI8PrYp6WllWfTikgxVXUO/eyzzxgyZEigW+UFF1xwwGn69etHgwYNaNCgAQ0bNmTQoEEAJCQkBFojgueVkJBAly5dAsfC9u3bs2HDBpKTkznmmGP44osv2LJlCykpKYFeMMUtWbKEyy+/nOjoaI499lj69u3L8uXLOeqoo8q1nv/5z384/fTTadeuHbD/3FLWOeHcc88lJiaGhIQECgsLGTBgQGB90tLSWLt2banH+9L4rykOZtqyHGh+wdcyv7VzdFRUVGD9hg8fHjjnBK/32rVradeuHSeddBLgnaeefPJJxo4dC8Dll18e+H/cuHFA6edZgIEDB1KnTh3q1KlDs2bN2LJlCwkJCSXOn2Vp27Ztuet/9+7dueaaa8jPz2fw4MEkJyezaNGiCtfp8lxH+HtCFXeg/QG8a8JHH32UvXv3smPHDrp06RI4PvitXbuWFi1a0L17d4CQfbh///40bNgQgM6dO7N+/XqOO+64kOn9z9HB/uuKrKwsdu3aRa9evQC44oorePfddwFo2bJliS6nRx11FFdddRWPP/54iToVrstomzZt2LdvH5s3b+b777+nY8eOdO/enf/+978sXbqUP/7xj2G3mV9pXUAro8vo4VJpAeH4czqGPP8AEBcTzfhzKtbtsbjOnTuXeJB5586d/PLLL5x44omB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YQJ9+/YlOjqalJSUkPUcOnQou3bt4oILLuC9997jmWeeYeDAgdStW5c+ffoEDhz+h74TExOpW7cuL774YpnpxSUnJwcOjvXq1WPZsmU88MADNGvWLHDiCBYbG8sLL7zA0KFDKSgooHv37iHdcn799VcSExOpU6dO4KT4+OOPc9NNN5GYmEhBQQGnn356YNuFs2bNGsaPHx+4W/3UU0+VyDN69GgSExNJTU3l1VdfpXbt2vTr149GjRoFfqdwFi1axOTJk4mJiaF+/fq89NJLNG3alGeeeYaLLrqIoqIimjVrxscff1zubVjR9TuQRo0ace211xIfH0/z5s0DXULBG/L8+uuvJy4ujs8//5xZs2bxxz/+kZycHOLi4iplmOrnnnuOa6+9lqioKPr27Rvoeipy2FTBOTQ1NZVLL72UpKQkmjVrFtivbrvtNoYNGxY4xlaV8h6jhgwZwueff05SUhLOOR599NHAIyDDhg0jPj6edu3akZKSEphm9OjRDBgwgJYtW/Lpp58e0vGstLLPmTOHW265hezsbAoKChg7dixdunSptGljYmKYOHEiPXr0oFWrVoFzJZQ87pW3LDpH6xx9MOt3yimnUFhYCHhB51133RUIvkeNGkVaWhqpqamYGU2bNmXu3Lkh0994441cffXVdO7cmU6dOtGlS5cDnkcvu+wyrr32Wh5//PFy35i69957ufzyy3n55Zfp1asXzZs3p0GDBoB3vf/ss8+WGJn3vPPOo2nTpiFpn332Wci1+N13380ll1xCQkIC27Zt44orrgh8l5CQwO7duw846v5PP/0UMs9rrrkm7CvbDmTWrFksWbIk8Pnvf/97IFAdO3YsY8eOJSYmhsTExFIHKqooZ2alfrly5Uo70DNmIjVd/fr1A88NHIy2bduyYsWKank9R1FREampqbz++uuB5zjk4AQ/W/HII4+QkZFRaQdakUilY5QcKp2ja4bCwkLy8/OJjY3lp59+4swzz2Tt2rXUrl27UpeTl5dHdHQ0tWrV4vPPP+eGG2445B5KkWLlypXcd999TwDfvfPOO38P/q5mv6xGJIJ9++23nH/++QwZMuQ3f6I5HObPn8/DDz9MQUEBbdq0OegWehHx6BglkSzS6v/evXvp168f+fn5mBl///vfKz0YBPjll18YNmwYRUVF1K5dO/AqFTk0aiGsItu3bw+8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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "Printing MAE of various estimates: \n", "ORIGINAL_ESTIMATE:backdoor.econml.dr.LinearDRLearner 63.73128208896926\n", "ORIGINAL_ESTIMATE:backdoor.linear_regression 63.674872349002705\n", "ORIGINAL_ESTIMATE:backdoor.propensity_score_matching 59.44656221876361\n", "ORIGINAL_ESTIMATE:backdoor.econml.dml.DML 56.899621729007194\n", "dummy_outcome_refuter:backdoor.linear_regression:NEW_EFFECT 10.504099494773005\n", "dummy_outcome_refuter:backdoor.econml.dr.LinearDRLearner:NEW_EFFECT 9.27702607271755\n", "dummy_outcome_refuter:backdoor.propensity_score_matching:NEW_EFFECT 9.276546011268865\n", "dummy_outcome_refuter:backdoor.propensity_score_weighting:NEW_EFFECT 7.342201315310048\n", "dummy_outcome_refuter:backdoor.econml.dml.DML:NEW_EFFECT 5.070399102669931\n", "dummy_outcome_refuter:backdoor.linear_regression:ESTIMATED_EFFECT 1.0332273682497526\n", "dummy_outcome_refuter:backdoor.propensity_score_matching:ESTIMATED_EFFECT 1.0332273682497526\n", "dummy_outcome_refuter:backdoor.propensity_score_weighting:ESTIMATED_EFFECT 1.0332273682497526\n", "dummy_outcome_refuter:backdoor.econml.dml.DML:ESTIMATED_EFFECT 1.0332273682497526\n", "dummy_outcome_refuter:backdoor.econml.dr.LinearDRLearner:ESTIMATED_EFFECT 1.0332273682497526\n", "dummy_outcome_refuter:backdoor.econml.dr.LinearDRLearner:P_VALUE 0.9303133481550638\n", "dummy_outcome_refuter:backdoor.econml.dml.DML:P_VALUE 0.9010196724884862\n", "dummy_outcome_refuter:backdoor.propensity_score_weighting:P_VALUE 0.9002778145521629\n", "dummy_outcome_refuter:backdoor.propensity_score_matching:P_VALUE 0.8788546493396001\n", "dummy_outcome_refuter:backdoor.linear_regression:P_VALUE 0.8320460154740017\n" ] } ], "source": [ "##This plot shows the Mean Absolute Error of the Orginal Estimate from the true value and of the New Effect from \n", "#the expected value for each estimator.\n", "plot_MAEs(res)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Ranking based on Original Estimate" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The Original Estimate is calculated in the presence of the True Value (that is, the ground truth). However in many real life datasets, the ground truth may not be known. Hence, we want the ranking produced by our refutation tests to be in coherence with that obtained from the Original Estimates. According to the Original Estimate values, the ranking of the estimators should be as follows (the method with the least MAE should get the best rank):\n", "1. DMLCateEstimator \n", "2. Propensity Score Matching \n", "3. LinearRegression \n", "4. LinearDRLearner " ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "data": { "image/png": "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iGTMqlWr6NmzJ0VFRYSTgUoENm/ezOrVq5udKNT0JCIZs2XLFvr06aMkEbFu3bqxbdu2ZtdXohCRjFKSiF5LfwZKFCIikpIShYh0SNXV1RQUFFBSUkJJSQk33HBDwnpPP/00H3/8MQDTp0/nqaeeavV73n///WzdurVZdRcvXszFF1/crJhvuukmhg8fzowZMxotN8enn37K448/3qLPES+yzmwzGwQ8QHCXOwfK3f2XcXVKgGeA5WHRk+5+UwbDFJEIVFRAWRmsWAGDB8PkyVBa2vL9jBo1iqlTp6as8/TTT3PAAQfwhS98gVNPPbWVEQfuv/9+zj33XLp27drqfSSKedq0acyePRuAsrKyHcvN0ZAoJkyY0OqYohz1VAdMcvd54X2z55rZDHdfElfvFXc/PYL4RCQCFRUwcSLU1gbrNTXBOrQuWcRav34955xzDmbGXnvtxZQpU5g+fTpvvvkmo0ePZsiQIWzatIkrr7ySgw8+mGHDhjFv3jyuu+46nnnmGd59913uvvtujj/+eL73ve8xd+5cNm/eTHl5OZs3b2b+/PmMHTuWs88+m2984xt885vf5LPPPqNfv3488MADuDsXXHAB69evp7CwsFkx33HHHbz11luUlJQwZsyYHcsPPPAAM2fO5J577mH79u3cfPPNjBkzhtmzZ/O9732Pzp0787WvfY21a9fy8ssvU1JSwu9+9zuGDBnS8gPn7lnxILhyOCmurASY1tJ9HXXUUS4i2WfJkiVN1iksdIddH4WFLXuv5cuXe9++fX3UqFE+atQonzJlir/44ot+3XXXubv79u3b3d39oosu8kWLFrm7+3333ee//vWv3d29d+/evnHjRn/nnXe8X79+vnnzZp8/f75feOGF7u7++eefu7v7vHnz/IILLnB391GjRvnGjRvd3X3SpEn+0ksvubv7rbfe6k888YQ/8cQTfsMNN7i7+1133eUXXXRRkzG7u8ee0xqW165d66eccorX19f7pk2bfNSoUe7uftxxx/mKFSt2fMbly5f7uHHjdjk+8T8LoMqTnFOz4nsUZlYEHAHMSrD5WDNbAHwAXOvubybZx0RgIsDgwYPTFKmIpNuKFS0rTyW+Gaeuro5XX32V0tJSjjjiCK699tqkr91///3p0aMH/fv358ADD6Rbt24MGDCATz75BIDbb7+dF198EYDOnXc9lS5ZsoRZs2Zx0003sXnzZi688EI2bdrEUUcdBcDRRx/NP/7xjyZjTub999/fcSUEsGbNGgC2bt3KoEGDAMjLa5tu6MgThZn1AP4EXOPun8VtngcUuvsmMzsNeBo4MNF+3L0cKAcoLi729EUsIuk0eHDQ3JSofHdt27aNn/zkJwCcfPLJTJgwgS5durB9+/Zd6sYOIY1ddnfWrVvHjBkzePXVV5k7dy6TJk0CaLSvgw46iLPPPpsRI0bseO9nnnmGN954g3HjxlFVVbVbn2X//ffnsMMOY9q0aZjZju9F7LHHHqxevZoBAwZQX1+f9PO1RKSjnsysC0GSqHD3J+O3u/tn7r4pXH4O6GJmfTMcpohk0OTJkJ/fuCw/PyhvqYa2+ZKSEr797W8zZ84cRowYwahRoygoKGDgwIGMHTuWa665hskteIO9996bffbZh5KSEp544okd5WeeeSYTJkygvLycsrIy7rzzTsaMGcOYMWNYsGABX//613n77bc54YQTmD9/frNiTqZv376cd955jBo1itGjR+9IVnfccQcTJkygpKSEX/ziF/Tr14/Nmzdz7rnn8t577zX7M8ayoGkq8yxI0X8E1rv7NUnqfBH4yN3dzIYBUwmuMFIGXVxc7LubrUWk7b311lscfPDBTdZrq1FPklz8z8LM5rp7caK6UTY9HQ9cCCwys/lh2Q+AwQDufjdwLvBfZlYHbAbOaypJiEj7V1qqxJBNIksU7v4qkPJ75O7+G+A3mYlIREQS0TezRUQkJSUKkXaiYlEFRVOKyPufPIqmFFGxqCLqkCK1rnYdCz9aSNUHVSz8aCHratdFHVKHFfnwWBFpWsWiCib+eSK124KvK9dsqGHin4OvK5cemnuN+etq11GzoYZ6rwdg6/at1GwIxtT2ye8TZWgdkq4oRNqBspfKdiSJBrXbail7qSyiiKK1euPqHUmiQb3Xs3rj6h3r1dXVmNmOeZGmTZvGjTfeuNvv3bNnzx3DVy+55BIA7rvvPo455hgefPDBRsvNVV5evttxpZMShUg7sGJD4q8lJytv9yoqoKgI8vKC54rGzWxbtyeeoTW+fMiQIdx2221tGtpXvvIVKisrqays5L777gPg0UcfZfr06Vx44YWNlptLiUJEdtvgXom/lpysvF1rmBWwpiaY5qlhVsCYZNG1U+LZWePLDz74YOrq6nj33XcblU+fPp0RI0Zw3HHH8cgjjwBQUlICwI9+9CMuu+wyAMaOHdvk/b0ffvhhZs2axZlnnslNN920Y3n27NkJ32fp0qWccMIJlJSUMGnSJO666y7eeecdSkpKmDlzZvOPUwapj0KkHZh8wuRGfRQA+V3ymXxCK76unO3KynZOHdugtjYoD79cMaDngEZ9FAB5lseAngN22d21117L7bffzllnnQUEU3D89Kc/5W9/+xudOnVi5MiRTJgwgX333ZePPvqIpUuXUldXx7Zt26ivr6dbt26N9tdwUgc49thj+dnPfkZ5eTnTpk2jR48ezJw5k2nTptG9e3eGDx++y/t8//vf57bbbuOoo46ivr6evLw87rnnHiorK9vuGLYxJQqRdqChw7rspTJWbFjB4F6DmXzC5I7Zkd2MWQEbOqxXb1zN1u1b6dqpKwN6DkjYkT18+HB+/OMf8+GHHwLB5HnvvvsuJ598MhDcr2HNmjWMGDGCF198kT322IOCggKeffZZiot3/aJyQ9NTU5K9z8qVK3dMDNhWk/almxKFSDtRemhpx0wM8Zo5K2Cf/D7NHuF0zTXXUFZWxrhx4+jbty8HHXQQL7zwAl27dmXbtm106dKFESNGcOmll3LJJZew7777csstt7Ro/qd4yd5n0KBBzJs3jyOPPHLHFUW230e8faQzEckdbTkrYOiMM87YMYNqXl4eP/zhDznppJMYPXo0pWFz1qGHHsr777/PyJEjGTlyJAsWLOD444/fZV8NTU8lJSWcc845Sd8z2fvcdtttTJo0iZKSEq677joguEoZN24cr732Wqs+X7q/UxLZpIDppEkBRbJTcycF1KyAzRf/nRII+msKexWmvOJqL5MCiogkplkBmy3Vd0ra6suHanoKNTFsO6fiyIYYFIfiaMq6dbBwIVRVBc/rIpjBIxti2Lp9K/vsCYd+AY7qFzzvs2fy75q0SrJ7pLbnR0vvmf3QQ+75+Y3vz5ufH5RnUjbEkQ0xKI6OG0dz7pndHGvXus+d6z5nzs7H3LlBeaZkQwzu7svXv+F12+e4+85H3fY5vnz9Gylf15J7ZquPguC/okSDLAoLobq6zcJqF3FkQwyKo+PG0ew+iiYsXAhbE/zD3LUrHHbYbu++3cQAsHXbfLp2qUtQ3pmuXYYmfV1L+ijU9ETb3sx9d+M4//wKli8vYvv2PJYvL+L88ysyGkc2HQvFoTiSSXSCTlXeUWMA6NJ51ySRqrw1or5n9qlm9o6ZLTWz6xNs38PMHgu3zzKzonTEMXhw4hN0W9zMvSWuvLKCP/xhIkVFNeTlOUVFNfzhDxO58srMNQJny7FQHIojla6JZ/DYUb558+YdQ1hjJ/Fbv359q95vxowZu9y/urT0cPLzV3HooQs56qgqDj10Ifvss4577rmRadOmtep9WmPbtsQHI1l5qyRrk0r3A+gEvA/sD3QFFgBD4up8G7g7XD4PeKw5+25pH8UrrzzkmzblN9rNpk35/sormW0A3rix0BN9pKA8M1555SHfVNu10ftvqu2a8WORVXFkwe9GR4mjuX0UDy18yAvvLHS70bzwzkJ/aGHj/a9d675s2VrfsmWB19fP8S1bFviyZWsT9g/Enw+2b9/erBhibdu2zQ855JAdr62qqvJx4872urq53qhvoG6uX3/9df7nP/+5xe/RWrVrqr2+rnEfRX3dHK9dU53ydS3po4jyimIYsNTdl7n7VuBR4Ky4OmcBfwyXpwInWBq+wjh8eBnduzeeW6Z791qGD8/sFM49eiS+fk9Wng5Dh11N9z0bXzt333MrQ4ddnbEYsimObPndyKU4Gu69UbOhBsd33Hsj9kZNffqso6iohj322IoZ7LHHVoqKaujTJ/GwoxtvvJGLL76Y0047jYULFzaamqNhedmyZZxyyimUlJTw3e9+t9HrO3fuzFe/+lVeffVVAKZOncoFFwzn4YenUVLyLY488j948MHn6NSpnj322AgE05yfe+65AGzatGnH/FBVVVWMHj2aESNG8POf/3y3j9eeH2zAaoB/AR48W01Q3laiTBQDgJUx66vCsoR13L0O2ACk4a4kyU7EmZ7COdn1e+au6/O7JP5DS1be0ePInt+N3ImjeffeWI1Z4+8OBOurSWbQoEE899xzDB06NOH266+/nt/97ndUVlayZcsW4gfEjB8/nqlTpwLw/PPPM3bsMMaNG0Nl5e957bX/4847Hw5rbk/5+a6//nqefPJJXnnlFV5++WU++uijlPWbtHUrrAcWAXPD5/W0aWdJh+nMNrOJZlZlZlVr1qxp4aujP0EHJgNxUxeQH5Znxook/4QkK+/ocWTP70buxNG8e28kOwkmPzkeffTRCcs9HPn59ttvc9lll1FSUsLs2bNZtWpVo3pjxozh5Zdf5o033uDLX/4yXffowfPPv05Jybc49dTvsHRpUL/eg9NqbONHw3sALFy4kLPPPpuSkhJWrFjBypUr2S1Nddi0gSgTxWpgUMz6QHb9d2BHHTPrDPQCEv5L6e7l7l7s7sUFBQUtDCX6E3SgFCgHCgELn8vD8sy44/U+fB73t/b51qA8k7Iljuz53cidOJp3741kJ8HkJ8fYmVq3bNnC9u3bWbFiBZ988gkQzLf0xz/+kcrKSqqqqjj99NMbvb5z584cffTRXHvttYwfP57VG+Hmm+/lL3+Zwl//+ivy8/dgez1s/FdQv3fv3qxeHZzSFixYsGM/hx9+OM888wyVlZXMmzdvx0yyrTZgQPDtx8YfNihvI1EmijnAgWa2n5l1JeisfjauzrPAReHyucBMj03NbSb6E3TjWKqB+vA5szEcM/CXXPlcF6o/hXqH6k/hyue6cMzAX+ZkHNnzu5E7cUw+YTL5XRono13vvTGAXU9feezaep1YaWkpxx57LL/61a/o3bs3AP/7v//L5ZdfzujRoznppJP44IMPdnnd+PHjmTVrFqeddhoff15HydjRDB/+n1x11c/pvfde1GyAz7cFTWK9evXiiCOOYMSIEUyfPn3HPm699VbOOeccRo8ezde+9rUmb4zUpD59gi+yNFxBdO0arPdpu3+qIv3CnZmdBkwhGAF1r7tPNrObCHrfnzWzbsCDwBEErW7nufuypvarSQF3T8Wiiqy470G2xCFtp7lfuGvez34dQaPDVoIriQGkpQsziYUfLUw4TUbXTl05bN8MfuOulVryhTt9M1tEMqatvpmdDVo7a2u20DezW6FiUQVFU4rI+588iqYUNRqKJyI76W8l0Ce/D4W9Cnfcp7trp67tJkm0lKYZZ+e47YYheQ3jtgE1dYiawGLob6Wxltxlrz3TFQXNHbctuag5X/7KJfpbyU1KFDR33LbkIp0YG9PfSm5SoqC547YlF+nE2Fh7+luprq6moKCAkpIShg0bxpw5c3Zs27hx4y7fX7j00kt55ZVXdtlPZWUl1157bdrjzWZKFDR33LbkovZ0YsyEzP2tVABFBKeoonC95UaNGkVlZSW//vWvKSvbeRXYs2dPBg0axJIlSwCoq6tjzpw5DB8+fDfj7piUKAg64crPKKewVyGGUdirkPIzynOyc04a0z8RjWXmb6UCmAjUEMxyVxOut75faOjQobtMlRE7d9NLL73E6NGjWbx4MaNGjeLYY4/lyiuv3GU/iSYTXLt2LV//+tcZM2YMpaWlbN+eeq6n9kiJIlR6aCnV11RT/5N6qq+pjixJaOhhdtE/EbtK/99KGVAbV1YblrfOyy+/zEEHHdSo7Iwzzthx34ipU6cyfvx4DjjgACorK3n99ddZuXIl7733XpP7vvXWW/nOd77DzJkzOeyww3jqqadaHWe20vDYLKKhh9mp9NBSHf+MarsZal9++WVKSkro0aMHU6ZMabRtr732ol+/fixZsoTZs2fz+9//nrfffptJkyZRW1vLsmXLEk7j0aDhy8pLlixh1qxZ3HTTTWzevJkLL7ywxXFmOyWKLJJqhI1OVJI7BhM0NyUqb5lRo0btaF5KZPz48Vx11VWMHDmSvLw87rrrLiZNmsSJJ57ImWeeSfzMFZ06dWLjxuB+E8uWBbMJHXTQQZx99tmMGDECgG3btrU4zmynpqcsohE2IpDJmXLPPPNMXnvtNcaPHw8EzVFXX30148aNo76+fpf6V1xxBSNGjGDSpEn0798fgLKyMu68807GjBnDmDFjGs0U21ForqcsUjSliJoNu/4nVdirkOprqjMfkEgba/5cTxUEfRIrCK4kJhPNbM4dl+Z6aqc0wkakQbTT7UtjShRZRCNsRCQbqTM7y2iEjXR07t7oNqGSeS3tctAVhYhkTLdu3Vi3bl2LT1TStrZs2UKXLl2aXV9XFCKSMQMHDmTVqlWsWbMm6lByXr9+/ZpdN5JEYWa3A2cQ3MPwfeASd/80Qb1qYCOwHahL1iMvIu1Dly5d2G+//aIOQ1ooqqanGcAh7n4Y8C5wQ4q6o919qJKEiEg0IkkU7v6Cu9eFq/8ABkYRh4iINC0b+iguBR5Lss2BF8zMgd+7e3mynZjZRIIpJgE2mdk7rYynL7C2la/taHQsGtPxaEzHY6eOcCwKk21I2zezzexF4IsJNpW5+zNhnTKgGDjHEwRiZgPcfbWZfYGgueoqd/97WgLe+Z5VauYK6Fg0puPRmI7HTh39WKTtisLdT0y13cwuBk4HTkiUJMJ9rA6fPzazp4BhQFoThYiINBZJH4WZnQp8HzjT3eMnnm+o093MejYsAycDizMXpYiIQHSjnn4D9ARmmNl8M7sbwMz6m9lzYZ19gVfNbAEwG/iLu0/PQGxJ+0FykI5FYzoejel47NShj0WHnD1WRETajqbwEBGRlJQoREQkJSWKkJmdambvmNlSM7s+6niiZGaDzOxvZrbEzN40s6ujjilqZtbJzN4ws2lRxxI1M+ttZlPN7G0ze8vMjo06piiZ2XfDv5PFZvaImXWLOqa2pkRBcBIAfguMBYYA55vZkGijilQdMMndhwBfBa7I8eMBcDXwVtRBZIlfAtPd/SDgcHL4uJjZAOA7QLG7HwJ0As6LNqq2p0QRGAYsdfdl7r4VeBQ4K+KYIuPuH7r7vHB5I8GJYEC0UUXHzAYCXwP+L+pYomZmvYCRwD0A7r410YSeOaYzsKeZdSa4ufcHEcfT5pQoAgOAlTHrq8jhE2MsMysCjgBmRRxKlKYQfO+nPuI4ssF+wBrgvrAp7v/C7znlpPBLwT8nuLn3h8AGd38h2qjanhKFJGVmPYA/Ade4+2dRxxMFMzsd+Njd50YdS5boDBwJ3OXuRwCfAznbp2dmexO0PuwH9Ae6m9l/RBtV21OiCKwGBsWsDwzLcpaZdSFIEhXu/mTU8UToeODM8N4ojwJjzOyhaEOK1Cpglbs3XGFOJUgcuepEYLm7r3H3bcCTwHERx9TmlCgCc4ADzWw/M+tK0Bn1bMQxRcaCGxrfA7zl7ndEHU+U3P0Gdx/o7kUEvxcz3b3D/cfYXO7+T2ClmX0lLDoBWBJhSFFbAXzVzPLDv5sT6ICd+9kwzXjk3L3OzK4EnicYtXCvu78ZcVhROh64EFhkZvPDsh+4+3PJXyI55CqgIvynahlwScTxRMbdZ5nZVGAewWjBN+iA03loCg8REUlJTU8iIpKSEoWIiKSkRCEiIikpUYiISEpKFCIikpISheQcM9se3lmx4XF9ODvsXDMbGVPvBTMbHy5Xm9kiM1sYln8xrrxhX78Ky+83s+Vh2QIzOyFmv5VmVhzz+lfi4ptvZovD5RIz2xAX74nhNjezX8S87lozu9HMymLqxn7W76TvqEpHpu9RSC7a7O5D4wvN7NvAH8zsKOBcoN7dn4ipMtrd15rZLcAPCGYN3VGe4H2uc/epZjaaYGz9gUni6Wlmg9x9pZkdnGD7K+5+eoLyfwHnmNnPYt/f3ScDk8PPtCnRZxVpCV1RiITCaSleB24EbgGuTFL178ABLdj166SeZPJx4N/D5fOBR5q53zqCBPTdFsQi0mJKFJKL9oxryvn3mG03ANcAD7v70iSvPx1YFLP+t5h9JTppnwo8nSKePwHnhMtnAH+O2z4iLt4vxWz7LVAaTv8tkhZqepJclLDpKTQS2AAckmDb38xsO7AQ+GFMebKmp9vDZqqBQKq7wK0DPjGz8wjmCaqN256s6Ql3/8zMHiBoBtuc4j1EWk1XFCKh8L4KtwFjgC+Y2WlxVUa7+1B3/0Yzb9Zznbt/Gfhv4N4m6j5GcHXQ3GanWFOAy4CcvS+EpJcShchOPwYed/e3gW8Dd7bR/Y9/A+SZ2Skp6jxFkKSeb+nO3X09QT/HZa0LTyQ1JQrJRfF9FLea2b8BZxOOFnL3NwhO2v/djP3F9lE8EL/Rg5k3bya4S15C7r7R3f83vBVvvPg+inMT1PkF0LcZsYq0mGaPFRGRlHRFISIiKSlRiIhISkoUIiKSkhKFiIikpEQhIiIpKVGIiEhKShQiIpLS/wfJ0kVkfeKYnQAAAABJRU5ErkJggg==\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "102.89888674516146\n" ] }, { "data": { "image/png": "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sycPPfQQ7s7555/P+vXryc/Pb1LMd955J0uWLCEWizFs2LDa7oceeogZM2Zw3333UVVVxU033cSwYcOYM2cOV199NW3btuW0005j7dq1vPzyy8RiMf7whz8wYMCA5m84d8/616BBg1xEss/ixYsbHSc/3z14vmTdV35+85a1fPly7969uxcVFXlRUZHffffd/uKLL/o111zj7u5VVVXu7n7BBRf4W2+95e7uDzzwgP/ud79zd/du3br5xo0b/d133/WePXv65s2bff78+T527Fh3d//yyy/d3f2NN97w888/393di4qKfOPGje7uPmHCBJ8+fbq7u996663+xBNP+BNPPOHXXXedu7vfc889fsEFFzQas7t7fE6r6V67dq2fdNJJXl1d7Zs2bfKioiJ3d//ud7/rK1asqF3H5cuX+6hRo5Juo8TPA5jnSXKqjvhFJKVa82FjidUm27dvZ9asWRQXFzNw4EAmTpxY77QHHnggnTt3Zv/99+fggw+mQ4cO9OrVi88++wyA22+/nRdffBGAtm13To2LFy9m9uzZ3HjjjWzevJmxY8eyadMmBg0aBMBRRx3Fv//970Zjrs+yZctq/6kArFmzBoCtW7fSp08fAPLyWue0rBK/iKRU375B9U6y8l21bds2brjhBgBOPPFExowZQ7t27aiqqtpp3PjLHeO7Pbz56YUXXmDWrFm8/vrrTJgwAaDOvPr168eIESMoLCysXfbTTz/Nm2++yahRo5g3b9ceJnjggQdy2GGHMXXqVMyMbdu2AbDHHnuwevVqevXqRXV1db3r1xy6qkdEUqo1HzZWU7cdi8W47LLLmDt3LoWFhRQVFdGjRw969+7NKaecwlVXXcXkZixg7733Zp999iEWi/HEE0/Ulp955pmMGTOG0tJSSkpKuOuuuxg2bBjDhg1jwYIFnH322bzzzjsMHz6c+fPnNynm+nTv3p1zzz2XoqIihg4dWvvjc+eddzJmzBhisRi/+c1v6NmzJ5s3b+acc87h/fffb/I6xsvIg1iaa/Dgwb6rv6Yi0vqWLFlC//79Gx2vta7qkYYlfh71PYhFVT0iknIpfIqgtICqekREIkaJX0QkYpT4RUQiRolfRCRilPhFZLdQXl6OmdW2azN16lQmTZq0y/Pt0qVL7eWWF110EQAPPPAA3/72t3n44YfrdDdVaWnpLseVSkr8IpJ6ZWVQUAB5ecF7WVmLZjNgwABuu+22Vg3tm9/8JjNnzmTmzJk88MADAPz1r39l2rRpjB07tk53Uynxi0i01bTSVlERNNNT00pbC5J///792b59O++9916d8mnTplFYWMh3v/tdHnvsMQBisRgAv/jFL7jkkksAOOWUUxp9StWjjz7K7NmzOfPMM7nxxhtru+fMmZN0OUuXLmX48OHEYjEmTJjAPffcw7vvvkssFmPGjBnNXsd00HX8IpJaJSU7muasUVkZlMdd3L+uch2rN65ma9VW2rdpT68uvdi34747zW7ixIncfvvtnHXWWUDQ5MKvfvUrXnrpJdq0acOQIUMYM2YM++23H5988glLly5l+/btbNu2jerqajp06FBnfjVJGuCYY47hlltuobS0lKlTp9K5c2dmzJjB1KlT6dSpE8cdd9xOy7n22mu57bbbGDRoENXV1eTl5XHfffcxc+bMVt2MrUmJXyRDyt4qo2R6CSs2rKBv175MHj6Z4kNz8C6nJrTStq5yHRUbKqj2agC2Vm2lYkPQwE9i8j/uuOP45S9/yUcffQQEjZm99957nHjiiUDQXv2aNWsoLCzkxRdfZI899qBHjx4888wzDB68002stVU9jalvOStXrqxtqK21GlFLNSV+kQwoe6uMcc+Oo3JbcCRcsaGCcc8GjdTnXPJvQittqzeurk36Naq9mtUbVyc96r/qqqsoKSlh1KhRdO/enX79+vH888/Tvn17tm3bRrt27SgsLOTiiy/moosuYr/99uPmm29uVvs9iepbTp8+fXjjjTc48sgja4/4s/05xLvHz5NIjimZXlKb9GtUbqukZHpJhiJKoSa00ra1KvnjDesrP+OMM2pbqMzLy+P666/nhBNOYOjQoRSH1UeHHnooy5YtY8iQIQwZMoQFCxZw7LHH7jSvmqqeWCzGyJEj612N+pZz2223MWHCBGKxGNdccw0Q/IsYNWoUr732Wr3zyyQ10iaSAXn/mYez83fPMKpvqE4yRXZqaiNtjbXStvCThUmTfPs27Tlsv8NaM+Sc1tRG2nTEL5IBfbsmb4y+vvLdXnExlJdDdXXwntBiW68uvcizuukoz/Lo1aVX+mKMECV+kQyYPHwyHdvVrf7o2K4jk4e3vA56d7Zvx33J75pP+zbBQ83bt2lPftf8pPX7sut0clckA2pO4Ebiqp4m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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "92.01389796713487\n" ] }, { "data": { "image/png": "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wf77788BBxxAaWkp999/f0v5WWedxZQpU6iurqayspJbbrmFsrIyysrKeOWVVzj77LNZuXIlY8eOZdmyZe2KOZ2BAwdyzjnnUFJSwpgxY1qS0M0338yUKVMoLS3lpptuYvDgwTQ0NDBp0iTeeuutdr/HRLoSWEQ67fXXX2915Wk6XXUWkOxe8ueR7kpgVQGJSNbEpLar21AVkIhITCkBiIjElBKAiEhMKQGIiMSUEoCIdCu1tbWYWUu/OfPmzWPmzJmdXu4+++zTcprmBRdcAMBdd93Fl770Je69995Ww+1VXV3d6bgySQlARLKni+59MGLECG644YYuDe1zn/scCxcuZOHChdx1110A/O53v2P+/PlMnTq11XB7KQGIiECX3vvgiCOOYOfOnbz55putyufPn09xcTGjRo3ivvvuA6C0tBSAH/3oR1x00UUAjBs3rs37F//2t7/l+eef56yzzuKaa65pGX7hhRdSruftt99m7NixlJaWMn36dG677TbeeOMNSktLeeqppzr8HrMiVQdBufpQZ3Aiuak9ncF1VW9wzZ2gLVq0yC+++GJ/5JFH/Cc/+Yk3NTX5qFGj/OOPP/adO3f6qFGjfOfOnT5lyhT/+9//7uecc45PmjTJt2/f7qeeeuouy+3fv39LZ21XXXWVu7fuBK55ON16xo8f70uWLHH3Tzqki2qfpc7gRCS3dPG9D04++WR+/OMf89577wFBp2lvvvkmp556KhD0l79+/XqKi4t58skn2XvvvRk0aBAPP/wwI0fuclFsSxVQW9KtZ82aNS0dwnVVZ22ZpgQgItmRgd7grrjiCiorK5k4cSIDBw5k+PDhPP744+y1117s2LGDPn36UFxczIUXXsgFF1zAgQceyHXXXdeh/oGSpVvPsGHDeOmllzj22GNpamoiLy8v5++T3D3SlIh0f13ZG1zozDPPbOkRMy8vjx/+8Id85StfYcyYMZSHfU4ceeSRvPPOO4wePZrRo0fzyiuvcNJJJ+2yrOb6+tLSUiZMmJB2nenWc8MNNzB9+nRKS0uZMWMGEBxVTJw4kWeffXaP32MmqTM4Eem09nYGp97gskOdwYlI7lFvcDlFVUAiIjGlBCAiElNKACIiMaUEICISU0oAItKtNDQ0tJyumdiB28aNG/doeU888cQu9+g96qijaGho2GXemTNnMm/evD1aTy5S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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "32.004392438055824\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "70.82950954628919\n" ] }, { "data": { "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "#This plot shows the deviation of the original estimate, the new effect and the estimated effect from the true value\n", "refuter = 'dummy_outcome_refuter'\n", "deviation_list = []\n", "for estimator in estimator_list:\n", " plot_estimators_and_refuters(refuter, estimator)\n", " avg_deviation = ((res[refuter+':'+estimator+':NEW_EFFECT']).sum(axis=0))\n", " print(avg_deviation)\n", " deviation_list.append(avg_deviation)" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "backdoor.linear_regression: 102.89888674516146\n", "backdoor.propensity_score_matching: 92.01389796713487\n", "backdoor.econml.dml.DML: 32.004392438055824\n", "backdoor.econml.dr.LinearDRLearner: 70.82950954628919\n" ] } ], "source": [ "plot_deviations(estimator_list, deviation_list)\n", "for i in range(len(estimator_list)):\n", " print(estimator_list[i] +\": \"+ str(deviation_list[i]))" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{'backdoor.linear_regression': 102.89888674516146,\n", " 'backdoor.propensity_score_matching': 92.01389796713487,\n", " 'backdoor.econml.dr.LinearDRLearner': 70.82950954628919,\n", " 'backdoor.econml.dml.DML': 32.004392438055824}" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ "{k: v for k, v in sorted(zip(estimator_list, deviation_list), key=lambda item: item[1], reverse = True)}" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Ranking based on New Effect (Refutatation results) " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The ranking based on absolute value of deviations is :\n", "1. DML\n", "2. Linear DR Learner \n", "3. Propensity Score Matching\n", "4. Linear Regression" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### We can see that this ranking produces the same top-ranked estimator as the one based on Original Estimate. Thus ranking based on the unobserved confounding error solves the problem and gives us a close-to-correct ranking amongst methods." ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.5" } }, "nbformat": 4, "nbformat_minor": 4 }