From 46b29c6e9dcd487d23e9d35a106094202920834f Mon Sep 17 00:00:00 2001 From: sauravbania <63904816+sauravbania@users.noreply.github.com> Date: Tue, 16 Jul 2024 12:32:25 +0200 Subject: [PATCH 01/71] Create py_flaml_meets_doubleml_evaluate_learners.ipynb Jupyter Notebook --- ...aml_meets_doubleml_evaluate_learners.ipynb | 87 +++++++++++++++++++ 1 file changed, 87 insertions(+) create mode 100644 doc/examples/py_flaml_meets_doubleml_evaluate_learners.ipynb diff --git a/doc/examples/py_flaml_meets_doubleml_evaluate_learners.ipynb b/doc/examples/py_flaml_meets_doubleml_evaluate_learners.ipynb new file mode 100644 index 00000000..a8707617 --- /dev/null +++ b/doc/examples/py_flaml_meets_doubleml_evaluate_learners.ipynb @@ -0,0 +1,87 @@ +import xgboost as xgb +import pandas as pd +import matplotlib.pyplot as plt +import numpy as np +import seaborn as sns + +from doubleml.datasets import make_plr_CCDDHNR2018 +import doubleml as dml +from flaml import AutoML +from sklearn.model_selection import train_test_split +from sklearn.metrics import mean_squared_error + +# Set up visualization settings +sns.set() +colors = sns.color_palette() +plt.rcParams['figure.figsize'] = 10., 7.5 +sns.set(font_scale=1.5) +sns.set_style('whitegrid', { + 'axes.spines.top': False, + 'axes.spines.bottom': False, + 'axes.spines.left': False, + 'axes.spines.right': False +}) + +# Generate synthetic data +data = make_plr_CCDDHNR2018(alpha=0.5, n_obs=1000, dim_x=50, return_type="DataFrame") + +# Split data into flaml training and doubleml evaluation sets +data_flaml, data_dml = train_test_split(data, test_size=0.5) + +# Initialize AutoML for outcome model (ml_l) +automl_l = AutoML() +settings_l = { + "time_budget": 120, + "metric": 'mse', + "estimator_list": ['xgboost'], + "task": 'regression', +} +automl_l.fit(X_train=data_flaml.drop(columns=["y", "d"]).values, y_train=data_flaml["y"].values, verbose=2, **settings_l) + +# Check for Overfitting: Compare in-sample (train), out-of-sample (test) MSE +# ml_l +pres_ins_ml_l = automl_l.model.estimator.predict(data_flaml.drop(columns=["y", "d"]).values) +mse_ins_ml_l = mean_squared_error(data_flaml.y.values, pres_ins_ml_l) +pres_oos_ml_l = automl_l.model.estimator.predict(data_dml.drop(columns=["y", "d"]).values) +mse_oos_ml_l = mean_squared_error(data_dml.y.values, pres_oos_ml_l) + +print("In-sample MSE (ml_l):", mse_ins_ml_l) +print("Out-of-sample MSE (ml_l):", mse_oos_ml_l) + +# Initialize AutoML for treatment model (ml_m) +automl_m = AutoML() +settings_m = { + "time_budget": 120, + "metric": 'mse', + "estimator_list": ['xgboost'], + "task": 'regression', +} +automl_m.fit(X_train=data_flaml.drop(columns=["y", "d"]).values, y_train=data_flaml["d"].values, verbose=2, **settings_m) + +# Check for Overfitting: Compare in-sample (train), out-of-sample (test) MSE +# ml_m +pres_ins_ml_m = automl_m.model.estimator.predict(data_flaml.drop(columns=["y", "d"]).values) +mse_ins_ml_m = mean_squared_error(data_flaml.d.values, pres_ins_ml_m) +pres_oos_ml_m = automl_m.model.estimator.predict(data_dml.drop(columns=["y", "d"]).values) +mse_oos_ml_m = mean_squared_error(data_dml.d.values, pres_oos_ml_m) + +print("In-sample MSE (ml_m):", mse_ins_ml_m) +print("Out-of-sample MSE (ml_m):", mse_oos_ml_m) + +# Create DoubleMLData object with the evaluation set +obj_dml_data = dml.DoubleMLData(data_dml, "y", "d") + +# Initialize DoubleMLPLR with the trained models from flaml +# Here, we use the same estimator for ml_g and ml_l +obj_dml_plr = dml.DoubleMLPLR(obj_dml_data, ml_g=automl_l.model.estimator, ml_m=automl_m.model.estimator, ml_l=automl_l.model.estimator) + +# Fit the DoubleMLPLR model +obj_dml_plr.fit() + +# Evaluate learners using evaluate_learners() (MSE for all nuisance components) +mse_ml_l = obj_dml_plr.evaluate_learners()['ml_l'][0] +mse_ml_m = obj_dml_plr.evaluate_learners()['ml_m'][0] + +# Print results +print(f"The MSE for outcome model (ml_l): {mse_ml_l:.3f}") +print(f"The MSE for treatment model (ml_m): {mse_ml_m:.3f}") From 5a6d51481f6a7311ea00a14de40c1a98681746f0 Mon Sep 17 00:00:00 2001 From: OliverSchacht <65898638+OliverSchacht@users.noreply.github.com> Date: Tue, 16 Jul 2024 13:13:12 +0200 Subject: [PATCH 02/71] update --- doc/examples/py_flaml_meets_doubleml.ipynb | 110 ++++++++++++++++++ ...aml_meets_doubleml_evaluate_learners.ipynb | 87 -------------- 2 files changed, 110 insertions(+), 87 deletions(-) create mode 100644 doc/examples/py_flaml_meets_doubleml.ipynb delete mode 100644 doc/examples/py_flaml_meets_doubleml_evaluate_learners.ipynb diff --git a/doc/examples/py_flaml_meets_doubleml.ipynb b/doc/examples/py_flaml_meets_doubleml.ipynb new file mode 100644 index 00000000..627af790 --- /dev/null +++ b/doc/examples/py_flaml_meets_doubleml.ipynb @@ -0,0 +1,110 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# FLAML meets DoubleMl\n", + "With this notebook we would like to demonstrate how to use the AutoML library `FLAML` to tune learners in the DoubleML framework." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Tuning RMSE (ml_m): [1.02181707]\n", + "Evaluation RMSE (ml_m): 1.020225215425113\n", + "Tuning RMSE (ml_l): [1.14851273]\n", + "Evaluation RMSE (ml_l): 1.1476134085232756\n" + ] + } + ], + "source": [ + "import xgboost as xgb\n", + "import pandas as pd\n", + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "\n", + "from doubleml.datasets import make_plr_CCDDHNR2018\n", + "import doubleml as dml\n", + "from flaml import AutoML\n", + "from sklearn.model_selection import train_test_split\n", + "from sklearn.metrics import mean_squared_error\n", + "\n", + "\n", + "# Generate synthetic data\n", + "data = make_plr_CCDDHNR2018(alpha=0.5, n_obs=1000, dim_x=50, return_type=\"DataFrame\")\n", + "\n", + "# Initialize AutoML for outcome model (ml_l)\n", + "automl_l = AutoML()\n", + "settings_l = {\n", + " \"time_budget\": 120,\n", + " \"metric\": 'rmse',\n", + " \"estimator_list\": ['xgboost'],\n", + " \"task\": 'regression',\n", + "}\n", + "automl_l.fit(X_train=data.drop(columns=[\"y\", \"d\"]).values, y_train=data[\"y\"].values, verbose=2, **settings_l)\n", + "\n", + "# Initialize AutoML for treatment model (ml_m)\n", + "automl_m = AutoML()\n", + "settings_m = {\n", + " \"time_budget\": 120,\n", + " \"metric\": 'rmse',\n", + " \"estimator_list\": ['xgboost'],\n", + " \"task\": 'regression',\n", + "}\n", + "automl_m.fit(X_train=data.drop(columns=[\"y\", \"d\"]).values, y_train=data[\"d\"].values, verbose=2, **settings_m)\n", + "\n", + "# Check for Overfitting: Compare in-sample (train), out-of-sample (test) MSE\n", + "# ml_m\n", + "rmse_oos_ml_m = automl_m.best_loss\n", + "rmse_oos_ml_l = automl_l.best_loss\n", + "\n", + "# Create DoubleMLData object with the evaluation set\n", + "obj_dml_data = dml.DoubleMLData(data, \"y\", \"d\")\n", + "\n", + "# Initialize DoubleMLPLR with the trained models from flaml\n", + "obj_dml_plr = dml.DoubleMLPLR(obj_dml_data, ml_m=automl_m.model.estimator, ml_l=automl_l.model.estimator)\n", + "\n", + "# Fit the DoubleMLPLR model\n", + "obj_dml_plr.fit()\n", + "\n", + "# Evaluate learners using evaluate_learners() (MSE for all nuisance components)\n", + "rmse_ins_ml_l = obj_dml_plr.evaluate_learners()['ml_l'][0]\n", + "rmse_ins_ml_m = obj_dml_plr.evaluate_learners()['ml_m'][0]\n", + "\n", + "# Print results\n", + "print(\"Tuning RMSE (ml_m):\", rmse_ins_ml_m)\n", + "print(\"Evaluation RMSE (ml_m):\", rmse_oos_ml_m)\n", + "print(\"Tuning RMSE (ml_l):\", rmse_ins_ml_l)\n", + "print(\"Evaluation RMSE (ml_l):\", rmse_oos_ml_l)" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "flaml", + "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.12.4" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/doc/examples/py_flaml_meets_doubleml_evaluate_learners.ipynb b/doc/examples/py_flaml_meets_doubleml_evaluate_learners.ipynb deleted file mode 100644 index a8707617..00000000 --- a/doc/examples/py_flaml_meets_doubleml_evaluate_learners.ipynb +++ /dev/null @@ -1,87 +0,0 @@ -import xgboost as xgb -import pandas as pd -import matplotlib.pyplot as plt -import numpy as np -import seaborn as sns - -from doubleml.datasets import make_plr_CCDDHNR2018 -import doubleml as dml -from flaml import AutoML -from sklearn.model_selection import train_test_split -from sklearn.metrics import mean_squared_error - -# Set up visualization settings -sns.set() -colors = sns.color_palette() -plt.rcParams['figure.figsize'] = 10., 7.5 -sns.set(font_scale=1.5) -sns.set_style('whitegrid', { - 'axes.spines.top': False, - 'axes.spines.bottom': False, - 'axes.spines.left': False, - 'axes.spines.right': False -}) - -# Generate synthetic data -data = make_plr_CCDDHNR2018(alpha=0.5, n_obs=1000, dim_x=50, return_type="DataFrame") - -# Split data into flaml training and doubleml evaluation sets -data_flaml, data_dml = train_test_split(data, test_size=0.5) - -# Initialize AutoML for outcome model (ml_l) -automl_l = AutoML() -settings_l = { - "time_budget": 120, - "metric": 'mse', - "estimator_list": ['xgboost'], - "task": 'regression', -} -automl_l.fit(X_train=data_flaml.drop(columns=["y", "d"]).values, y_train=data_flaml["y"].values, verbose=2, **settings_l) - -# Check for Overfitting: Compare in-sample (train), out-of-sample (test) MSE -# ml_l -pres_ins_ml_l = automl_l.model.estimator.predict(data_flaml.drop(columns=["y", "d"]).values) -mse_ins_ml_l = mean_squared_error(data_flaml.y.values, pres_ins_ml_l) -pres_oos_ml_l = automl_l.model.estimator.predict(data_dml.drop(columns=["y", "d"]).values) -mse_oos_ml_l = mean_squared_error(data_dml.y.values, pres_oos_ml_l) - -print("In-sample MSE (ml_l):", mse_ins_ml_l) -print("Out-of-sample MSE (ml_l):", mse_oos_ml_l) - -# Initialize AutoML for treatment model (ml_m) -automl_m = AutoML() -settings_m = { - "time_budget": 120, - "metric": 'mse', - "estimator_list": ['xgboost'], - "task": 'regression', -} -automl_m.fit(X_train=data_flaml.drop(columns=["y", "d"]).values, y_train=data_flaml["d"].values, verbose=2, **settings_m) - -# Check for Overfitting: Compare in-sample (train), out-of-sample (test) MSE -# ml_m -pres_ins_ml_m = automl_m.model.estimator.predict(data_flaml.drop(columns=["y", "d"]).values) -mse_ins_ml_m = mean_squared_error(data_flaml.d.values, pres_ins_ml_m) -pres_oos_ml_m = automl_m.model.estimator.predict(data_dml.drop(columns=["y", "d"]).values) -mse_oos_ml_m = mean_squared_error(data_dml.d.values, pres_oos_ml_m) - -print("In-sample MSE (ml_m):", mse_ins_ml_m) -print("Out-of-sample MSE (ml_m):", mse_oos_ml_m) - -# Create DoubleMLData object with the evaluation set -obj_dml_data = dml.DoubleMLData(data_dml, "y", "d") - -# Initialize DoubleMLPLR with the trained models from flaml -# Here, we use the same estimator for ml_g and ml_l -obj_dml_plr = dml.DoubleMLPLR(obj_dml_data, ml_g=automl_l.model.estimator, ml_m=automl_m.model.estimator, ml_l=automl_l.model.estimator) - -# Fit the DoubleMLPLR model -obj_dml_plr.fit() - -# Evaluate learners using evaluate_learners() (MSE for all nuisance components) -mse_ml_l = obj_dml_plr.evaluate_learners()['ml_l'][0] -mse_ml_m = obj_dml_plr.evaluate_learners()['ml_m'][0] - -# Print results -print(f"The MSE for outcome model (ml_l): {mse_ml_l:.3f}") -print(f"The MSE for treatment model (ml_m): {mse_ml_m:.3f}") From 608e7b0a822d08391d80cb87f2755cddb9f218f3 Mon Sep 17 00:00:00 2001 From: sauravbania <63904816+sauravbania@users.noreply.github.com> Date: Tue, 17 Sep 2024 11:58:09 +0200 Subject: [PATCH 03/71] Flaml_meets_doubleML I have used FLAMLRegressor and FLAMLclassifier, the plot for comparison of coefficients and the comparison for MSE scores for the untuned, tuned and dummy models. --- ...aml_meets_doubleml_evaluate_learners.ipynb | 423 ++++++++++++++++++ 1 file changed, 423 insertions(+) create mode 100644 doc/examples/flaml_meets_doubleml_evaluate_learners.ipynb diff --git a/doc/examples/flaml_meets_doubleml_evaluate_learners.ipynb b/doc/examples/flaml_meets_doubleml_evaluate_learners.ipynb new file mode 100644 index 00000000..25d29703 --- /dev/null +++ b/doc/examples/flaml_meets_doubleml_evaluate_learners.ipynb @@ -0,0 +1,423 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Tuning RMSE (ml_m): [1.03274461]\n", + "Evaluation RMSE (ml_m): 1.0271747767073314\n", + "Tuning RMSE (ml_l): [1.08927038]\n", + "Evaluation RMSE (ml_l): 1.0837776193821544\n" + ] + } + ], + "source": [ + "import xgboost as xgb\n", + "import pandas as pd\n", + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "\n", + "from doubleml.datasets import make_plr_CCDDHNR2018\n", + "import doubleml as dml\n", + "from flaml import AutoML\n", + "from sklearn.model_selection import train_test_split\n", + "from sklearn.metrics import mean_squared_error\n", + "\n", + "\n", + "# Generate synthetic data\n", + "data = make_plr_CCDDHNR2018(alpha=0.5, n_obs=1000, dim_x=50, return_type=\"DataFrame\")\n", + "\n", + "# Initialize AutoML for outcome model (ml_l)\n", + "automl_l = AutoML()\n", + "settings_l = {\n", + " \"time_budget\": 120,\n", + " \"metric\": 'rmse',\n", + " \"estimator_list\": ['xgboost'],\n", + " \"task\": 'regression',\n", + "}\n", + "automl_l.fit(X_train=data.drop(columns=[\"y\", \"d\"]).values, y_train=data[\"y\"].values, verbose=2, **settings_l)\n", + "\n", + "# Initialize AutoML for treatment model (ml_m)\n", + "automl_m = AutoML()\n", + "settings_m = {\n", + " \"time_budget\": 120,\n", + " \"metric\": 'rmse',\n", + " \"estimator_list\": ['xgboost'],\n", + " \"task\": 'regression',\n", + "}\n", + "automl_m.fit(X_train=data.drop(columns=[\"y\", \"d\"]).values, y_train=data[\"d\"].values, verbose=2, **settings_m)\n", + "\n", + "# Check for Overfitting: Compare in-sample (train), out-of-sample (test) MSE\n", + "# ml_m\n", + "rmse_oos_ml_m = automl_m.best_loss\n", + "rmse_oos_ml_l = automl_l.best_loss\n", + "\n", + "# Create DoubleMLData object with the evaluation set\n", + "obj_dml_data = dml.DoubleMLData(data, \"y\", \"d\")\n", + "\n", + "# Initialize DoubleMLPLR with the trained models from flaml\n", + "obj_dml_plr = dml.DoubleMLPLR(obj_dml_data, ml_m=automl_m.model.estimator, ml_l=automl_l.model.estimator)\n", + "\n", + "# Fit the DoubleMLPLR model\n", + "obj_dml_plr.fit()\n", + "\n", + "# Evaluate learners using evaluate_learners() (MSE for all nuisance components)\n", + "rmse_ins_ml_l = obj_dml_plr.evaluate_learners()['ml_l'][0]\n", + "rmse_ins_ml_m = obj_dml_plr.evaluate_learners()['ml_m'][0]\n", + "\n", + "# Print results\n", + "print(\"Tuning RMSE (ml_m):\", rmse_ins_ml_m)\n", + "print(\"Evaluation RMSE (ml_m):\", rmse_oos_ml_m)\n", + "print(\"Tuning RMSE (ml_l):\", rmse_ins_ml_l)\n", + "print(\"Evaluation RMSE (ml_l):\", rmse_oos_ml_l)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Replacing FLAML tuning with FLAML Classifier and Regressor " + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "from flaml import AutoML\n", + "from sklearn.utils.multiclass import unique_labels\n", + "\n", + "class FlamlRegressorDoubleML:\n", + " _estimator_type = 'regressor'\n", + "\n", + " def __init__(self, time, estimator_list, metric, *args, **kwargs):\n", + " self.auto_ml = AutoML(*args, **kwargs)\n", + " self.time = time\n", + " self.estimator_list = estimator_list\n", + " self.metric = metric\n", + "\n", + " def set_params(self, **params):\n", + " self.auto_ml.set_params(**params)\n", + " return self\n", + "\n", + " def get_params(self, deep=True):\n", + " dict = self.auto_ml.get_params(deep)\n", + " dict[\"time\"] = self.time\n", + " dict[\"estimator_list\"] = self.estimator_list\n", + " dict[\"metric\"] = self.metric\n", + " return dict\n", + "\n", + " def fit(self, X, y):\n", + " self.auto_ml.fit(X, y, task=\"regression\", time_budget=self.time, estimator_list=self.estimator_list, metric=self.metric, verbose=False)\n", + " self.tuned_model = self.auto_ml.model.estimator\n", + " return self\n", + "\n", + " def predict(self, x):\n", + " preds = self.tuned_model.predict(x)\n", + " return preds\n", + " \n", + "class FlamlClassifierDoubleML:\n", + " _estimator_type = 'classifier'\n", + "\n", + " def __init__(self, time, estimator_list, metric, *args, **kwargs):\n", + " self.auto_ml = AutoML(*args, **kwargs)\n", + " self.time = time\n", + " self.estimator_list = estimator_list\n", + " self.metric = metric\n", + "\n", + " def set_params(self, **params):\n", + " self.auto_ml.set_params(**params)\n", + " return self\n", + "\n", + " def get_params(self, deep=True):\n", + " dict = self.auto_ml.get_params(deep)\n", + " dict[\"time\"] = self.time\n", + " dict[\"estimator_list\"] = self.estimator_list\n", + " dict[\"metric\"] = self.metric\n", + " return dict\n", + "\n", + " def fit(self, X, y):\n", + " self.classes_ = unique_labels(y)\n", + " self.auto_ml.fit(X, y, task=\"classification\", time_budget=self.time, estimator_list=self.estimator_list, metric=self.metric, verbose=False)\n", + " self.tuned_model = self.auto_ml.model.estimator\n", + " return self\n", + "\n", + " def predict_proba(self, x):\n", + " preds = self.tuned_model.predict_proba(x)\n", + " return preds" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " coef std err t P>|t| 2.5 % 97.5 %\n", + "d 0.464399 0.029765 15.602241 7.028275e-55 0.406061 0.522738\n" + ] + } + ], + "source": [ + "# Define the FlamlRegressorDoubleML\n", + "ml_l = FlamlRegressorDoubleML(time=120, estimator_list=['xgboost'], metric='rmse')\n", + "ml_m = FlamlRegressorDoubleML(time=120, estimator_list=['xgboost'], metric='rmse')\n", + "\n", + "# Create DoubleMLPLR object using the new regressors\n", + "dml_plr_obj_tuned = dml.DoubleMLPLR(obj_dml_data, ml_m, ml_l)\n", + "\n", + "# Fit the DoubleMLPLR model\n", + "dml_plr_obj_tuned.fit(store_predictions=True)\n", + "\n", + "# Print the summary\n", + "print(dml_plr_obj_tuned.summary)" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Tuned Summary:\n", + " coef std err t P>|t| 2.5 % 97.5 %\n", + "d 0.464019 0.029818 15.561799 1.323263e-54 0.405577 0.52246\n", + "Untuned Summary:\n", + " coef std err t P>|t| 2.5 % 97.5 %\n", + "d 0.605325 0.023441 25.82346 4.835043e-147 0.559382 0.651268\n", + "Dummy Summary:\n", + " coef std err t P>|t| 2.5 % 97.5 %\n", + "d 0.67958 0.020288 33.496641 5.394302e-246 0.639816 0.719344\n", + "Extracted model labels: Index(['FLAML Tuned', 'AutoML Untuned', 'Dummy'], dtype='object', name='Model Type')\n", + "Extracted coefficient values: [0.46401856 0.60532514 0.67958017]\n" + ] + }, + { + "data": { + "image/png": "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p6tChQp2gxKlRJUqVTRt2jT16NFDRYoUUdu2bVWwYEHduHFDGzZs0PLlyzV27FhJd48g1qpVS0OHDtXp06dVunRprV69WsuWLVOfPn1sR6Dy58+vsWPHavDgwTp9+rSaNWumTJky6dSpU/ruu+/02muv2ULPfzVgwAAtWbJELVq0UKdOnVSuXDldu3ZNy5cv18yZM5M8ejtt2jQ988wzKlmypLp27ap8+fLp4sWL2rp1q/7+++8Ec2EnR7ly5TRjxgyNHTtWBQoUkL+/v2rXrq1ixYqpZs2aKleunLJmzao//vhDS5YssRscMDHPPfecRo8erY4dO6pKlSrat2+fvvzyy2Rdf50Yd3d3jR07Vq+//rpq166tli1b6tSpU5o3b16yt/nyyy8rKChIxYoVU0REhObOnauTJ0/qxx9/tDv7oWXLlvL29laVKlXk7++vgwcPatasWfLx8dF7772X6La3b9+uRYsW2b1e8+bNa5srvnPnzvrss89UqVKlfz2D5PPPP1f9+vX14osvqkmTJqpTp44yZMigY8eO6euvv9aFCxdsc3V/8MEHevbZZ1W5cmV17txZt2/f1ieffCI/P78HznGfGkaNGqVVq1apWrVq6tGjh2JjY/XJJ5+oePHido+DI15T7dq10+eff65+/fpp+/btqlatmiIjI7VmzRr16NFDTZs2VY0aNfT6669r/Pjx2r17t+rXry93d3cdO3ZM33zzjaZMmaLmzZun9sNi2+fMmTNr5syZypQpkzJkyKBKlSopJCREn332mZ599lkVL15cHTt2VM6cOXXu3DmtX79evr6++uGHH5J1H/7+/qpVq5YmTpyoGzduqGXLlnbLixQpovz586t///46d+6cfH199e233yZ7LIeNGzeqcePGypMnjy5duqTp06crV65ceuaZZx7qMQGQih7VMOkAkJijR4+arl27mrx58xoPDw+TKVMmU7VqVfPJJ5/YTa90584dM2rUKBMSEmLc3d1NcHCwGTx4sF0fY+5O8ZTYdEmSEkzFFT+10wcffGBri5866sSJE6Z+/frGx8fHBAQEmBEjRiSYTmnOnDmmYMGCxtPT0xQpUsTMmzcvwTQuSd33vcvip/SJjo42AwYMMKVLlzaZMmUyGTJkMKVLl050Tu1FixaZsmXLGk9PT5M1a1bTpk0b8/fff9v1SWoarMRqTMrU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AAAAwEEI3QAAAAAAOAihGwAAAAAAByF0AwAAAADgIIRuAAAAAAAcxOmhe9q0acqbN6+8vLxUqVIlbd++/YH9w8LC9MYbbygwMFCenp4qVKiQfvrpJ9vykSNHymKx2P0UKVLE0bsBAAAAAEACbs6880WLFqlfv36aOXOmKlWqpMmTJ6tBgwY6cuSI/P39E/SPiYlRvXr15O/vryVLlihnzpz666+/lDlzZrt+xYsX15o1a2y33dycupsAAAAAgCeUU9PoxIkT1bVrV3Xs2FGSNHPmTP3444+aO3euBg0alKD/3Llzde3aNW3ZskXu7u6SpLx58ybo5+bmphw5cji0dgAA0qNLEVG6dCM6xev5Z/KUv6+XAyoCACBtc1rojomJ0c6dOzV48GBbm4uLi+rWrautW7cmus7y5ctVuXJlvfHGG1q2bJmyZ8+u1q1b6+2335arq6ut37FjxxQUFCQvLy9VrlxZ48ePV+7cuZOsJTo6WtHR//yBERERkQp7CABA2vPltjOasvZYitfrXaeg+tYr5ICKAABI25wWuq9cuaK4uDgFBATYtQcEBOjw4cOJrnPy5EmtW7dObdq00U8//aTjx4+rR48eunPnjkaMGCFJqlSpkubPn6/ChQvrwoULGjVqlKpVq6b9+/crU6ZMiW53/PjxGjVqVOruIAAAaVCbSrlVr5j9Z3PUnTg1n3n3C/El3SrLy901wXr+mTwfSX0AAKQ1aepiZ6vVKn9/f82aNUuurq4qV66czp07pw8++MAWup999llb/1KlSqlSpUrKkyePFi9erM6dOye63cGDB6tfv3622xEREQoODnbszgAA8Bjy9/VKcJr4rZhY2/+LBfnKxyNN/fkAAIBTOe1TM1u2bHJ1ddXFixft2i9evJjk9diBgYFyd3e3O5W8aNGiCg0NVUxMjDw8PBKskzlzZhUqVEjHjx9PshZPT095evINPQAAAAAgdTltyjAPDw+VK1dOa9eutbVZrVatXbtWlStXTnSdqlWr6vjx47Jarba2o0ePKjAwMNHALUk3b97UiRMnFBgYmLo7AAAAAADAv3DqPN39+vXT7NmztWDBAh06dEjdu3dXZGSkbTTzdu3a2Q201r17d127dk29e/fW0aNH9eOPP2rcuHF64403bH369++vX3/9VadPn9aWLVv0wgsvyNXVVa+88soj3z8AAAAA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t0hBQUEaN26coqOjNWnSJL3//vvOLBUA8ATJmDGjMmTIoBUrVki6e433nTt35OnpqeLFi2vnzp16++23bQOuAQCeDJ9//rnq1q2rFi1aaNeuXbp+/bqyZcum559/Xjt27JDVapUzT/AmdEOS7J6EFotFklS4cGHdunVL06dPV2RkpO1bpNjYWJUvX14tW7ZU69atnVIvACB9i/9cunr1qsLDw3X+/HlJ0vDhw7Vz5071799f0t3gbbFYlCtXLm3ZskUrV66Uj4+P0+oGADje/QG6RYsWGjx4sHx8fFS/fn1169ZN33//vZo3b67//e9/2rJliy3jOAPXdEPGGFksFv3222/aunWrTp48qZdeekn16tXTxo0bVbduXXXs2FEdOnRQSEiIPvnkE+3du1cLFixQ1qxZnV0+ACCdif9c+uGHHzR58mRduHBBOXLk0IsvvqiePXtq8uTJmjx5sooXL65atWrp4MGDWrRokQ4ePKg8efI4u3wAgAPdew33xYsXFRMTo+DgYNvyZcuW6ffff9cnn3yiRo0a6bvvvtMrr7yiTz/9VF5eXk4J34RuSJKWLl2qrl27qmbNmsqQIYP+97//2f6wWbNmjbp06SJjjFxcXHTz5k39/PPPevrpp51dNgAgnfrpp5/00ksv6b333lOZMmX0888/67333tMff/yh/Pnza8eOHXr33XcVExMjd3d3TZkyRaVLl3Z22QCAR2TIkCFasWKFrly5os6dO6tXr17y9/e3LT99+rTmzp2rdevW6eDBgzp06JACAgJsX+w+SoRu6OjRo2rYsKGGDh2qzp07S7o7WM2QIUM0cuRIubi46MKFCzp9+rSuX7+ukiVL2n2bBABAarpz5446deqkIkWKaOjQoTp//ryqVq2qBg0aaObMmQn6xsXFycvLy0nVAgAeta+//lqDBg3SO++8o2vXrmnEiBF64YUXNG7cOLsznqxWq2JjY1WtWjWVLVs2wWfIo+LmlHvFYyUyMlJBQUHq3Lmzjh49qtq1a6tTp0626ViOHj2qQoUKKTAw0MmVAgCeBHFxcdq9e7eaNGmiK1euqGLFimrcuLHtj6X58+crf/78qlatmtzd3ZkiDADSufunBfPz89OgQYNsBwyrV6+umjVryhij999/33aA0BgjDw8PNWrUSPv373dK7RIDqUHS5cuXde7cOR04cEDPPvusGjVqZPvDZuPGjRo5cqT+/vtvJ1cJAHhSeHl5qVatWtqxY4eefvppNW7cWDNmzJB0d67ujRs3at++fYqLi3NypQAAR4u/xFWS5syZoyFDhmj06NEKDw+39alUqZJ+/fVXff/99xo8eLBOnTolSXJ1dZUknT9/XseOHdOtW7ce/Q6I0P1EMcYkOlR+rVq1VKhQIZUuXVqVK1fWrFmzbNc5rFy5UufPn5enp+ejLhcA8ASI/1yKiIjQ7du3be2FChXSpEmTFBISovHjx8vFxUVWq1UTJkzQxo0b9eyzz9r+mAIApE/3Xn89ZswYde/eXfv27dO2bdv03Xffadu2bba+FStW1K+//qr//e9/WrBgga39zJkzunz5subMmeO02S04vfwJY7FYtGXLFm3dulVZsmRRkyZNlD17dnXq1EmXL1/WzZs3dfLkSYWGhmrZsmX69NNP9dtvvyl79uzOLh0AkA5ZLBYtX75cY8aMkYeHhwoWLKj58+erZ8+eunLlij766CP16tVLGTNmVGRkpH766SetW7dOISEhzi4dAOBg8YF7586dOnr0qDZs2KAqVapo586devnllzV58mS99dZbKl++vCSpQoUKOnDggAoWLGjbRu7cubVw4UJlyJDBKfsgMZDaE2fFihV64YUXVLlyZW3atEkNGzbU22+/rRo1amjevHmaM2eOtm3bpsKFC8vb21uzZ89WmTJlnF02ACCd2rFjh2rVqqU333xTFotFCxcuVFBQkFavXi1fX1999tln+vPPP3X48GGVL19eHTp0UNGiRZ1dNgDgEfniiy80c+ZMxcTEaMWKFbYRyjdv3qx27dqpQoUKGjBggMqVK2e3XmxsrNzcHo9jzITuJ0D8aRmhoaHq16+fateurS5duujo0aNq3769MmbMqKFDh6pmzZqS7j6B8+TJI29vbz311FPOLR4AkG7t27dPly9f1vbt2zVo0CAZY3TkyBE1a9ZMvr6+WrNmjXx9fSUlHEQHAPBk+PXXXzVo0CAdPHhQn332mVq0aGFbtnXrVrVv31558+bVxx9/rCJFijix0qTx6fUEsFgs2rhxo/r27atLly6pWrVqku5eLzdv3jxFRkZq3LhxWrlypSSpatWqypUrF4EbAOAw169fV506dVS3bl1dv35d0t3PqyJFiuj7779XRESEGjVqpGvXrkkSgRsAngBWqzVB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dO8gNfc+ARM74h3f996jDAAApJZ7P5PiRUVF6bPPPtNnn32mMmXK2IK3JJ04cULBwcGcTg4AT4CkBjybPn26evbsqfHjx6tv37624P3qq6/q4sWLOn78uG3asPQgbV2BDkmy++PG1dXVNjVLs2bN1KNHD925c0fvvfee3WA1afmbIQDA4yk+cP/yyy9644031KtXL23dulVeXl5q3769unbtqr1796pdu3a6ffu2RowYofbt29sN8gkASL/iA/eBAwfs2nv06KGPP/5YgwcP1qRJkxQdHW07O6pu3bry9PR0RrkOw5HudOLeIw3Lly/Xu+++q7x582rBggXMww0AcJgff/xRLVq0UM2aNXX16lX98ccf+vzzz9WmTRvdvHlTX331lT788EPdunVLcXFx+v7771WxYkVnlw0AeEQ2bNig2rVr6/PPP7cNrhnvgw8+0NChQzVp0iR16tTJbg7utH5K+b0I3enIvcH7xx9/VMmSJZU7d24nVwUASG/iTxcMDw/XggUL5Onpqddff13h4eH64IMP9P7772vOnDlq166doqKidObMGe3evVsVK1ZU3rx5nV0+AMCBQkNDdfnyZe3Zs0dlypRRrly5NGPGDI0aNUpz5sxRmzZtbH0PHz6sSpUq6caNG4mG8vSCi3wfQ4ldH5ccFovFtm7jxo0dUBkA4EkUH7Lv3Lkjd3d32zQv5cuXV5EiRTRmzBhJkp+fn0aOHCmLxaJOnTrJxcVFr776qgoVKqRChQo5eS8AAI62dOlSzZkzR7t27VJkZKRiY2NVr149DR8+XN7e3mrfvr0k2YK3p6enevbsqTJlyuiFF15wZukOxTXdjyGLxaJr164pIiLiodYFACA1ubi46Pjx42rdurUOHTokSQoODlb79u114MABhYWFSbobzt3c3DRy5EgNGzZM7dq10+LFi51YOQDgUZk9e7a6dOmi2rVr64svvtCZM2c0aNAgHT16VG3atFGVKlX03nvvqW3btho5cqSWLFmi3r17a+/evWrRooXc3NwUGxvr7N1wCI50P2asVqsiIiJUqFAhvf766xo4cKD8/PycXRYA4Ann6empb7/9VpGRkfr4449VoEABvffee7JarerWrZvy5s2rGjVqyBgjV1dXDRs2TB4eHipZsqSzSwcAONjs2bPVs2dPffXVV3rxxRdt7cOHD1eRIkX07rvvqn///vr+++/l5eWl999/XxkzZpS/v7/WrFlj659eZ1vimu7HxP2nlE+YMEHDhg3TiBEj1LNnT4I3AMBp4gez+euvv1S+fHmVKVNGM2bMUIECBRQWFqY+ffpo8eLFWrlypS14c+YVADwZ4gdKGzlypIYPH26bWSkuLs4WoqdOnaoBAwboiy++0EsvvaTTp0/Lw8NDOXLkkIuLS7qf3pjTyx8DVqtVFotFly5d0t9//y1JGjhwoD766CO98847mjp1qsLDwxOsd+fOHW3atEmRkZGPumQAQDpmtVpt/48P3HFxccqTJ4927Nih3bt3q3v37jp27JgyZ86siRMnqmXLlnr++ee1Zs0aAjcAPEFy5sypZ555Rrt27dJvv/0mi8Uii8UiNzc32+dJz549VbBgQdtR7dy5cysoKEguLi62S5PSM0L3Y8DFxUVHjhxRrly5NGzYMJ09e1aS1KtXL02ZMsUWvOOvmZOk6Oho9ejRQ8899xzznQIAUpWLi4tOnz6t69ev2wK3q6urYmNjlTdvXlvw7t27t8LCwpQ1a1ZNmDBB9evXt83JDQB4MhQsWFBz5sxRdHS03n33XW3atMm2LP5L2IiICN2+fVtBQUGS/pm/+/7/p1fpfw/TiD/++EOxsbH6/PPPNXToUJ07d06SffCePn26wsPDZbVa1b9/fy1atEhr1qxRtmzZnFw9ACA9iYqKUo8ePVSyZEldu3bNFrzjB7nJmzevNm/erN9++03Dhw+XJGXPnl2ffvqpdu7caTfPKgAg/StYsKA+/vhjWSwWjR07Vps3b7ZbfvLkSeXKlUv/93//J0l60q5w5prux8T169c1YMAAZc6cWfPmzVONGjU0depU27dBn3zyiXr37q3Ro0fr7NmzWrhwoTZt2qSnn37ayZUDANIbY4w2bNigkSNH6vr169qwYYOyZs1qd8Tbzc1NCxcu1PDhw7V+/Xrm3wYA6NixY3rzzTdljNHQoUNVrVo1xcbGqmnTpnJxcdGyZcueiCPb93vy9vgxkNj3HFmyZJGbm5suXbqk7du367ffftObb76p8+fPS7p7xHvq1KkaPny45s6dqy1bthC4AQAOYbFYVLNmTY0bN06ZMmVSjRo1dPXqVbm6uurOnTu2a+9cXV2VOXNmZcmSxckVAwAeB/ce8X7vvfe0efNmtWzZUqdPn9bSpUtt13A/aQjdj1j8oGmXL1/WpUuX7OaiGzt2rLZs2aKTJ09q3bp1WrNmjXr37m0L3j169NCXX36pP//8U2XKlHHSHgAAngQWi0VVqlTRhAkT5Ovrq5o1a+rq1atyd3e39dm7d69y5cr1RB61AAAk7t7gXatWLR04cEC7d++Wu7u7YmNjn8jPDE4vd4JDhw6pePHiqlatmgoVKqRRo0Ypc+bM8vHxUe/eveXm5qaPPvpIO3bsUN26ddWoUSNNmDBBwcHBzi4dAPCEiJ/2yxijzZs3a9CgQTp9+rQWLFig6Ohobd68WTNmzNCvv/7KXNwAgAQOHz6s6dOna+LEibYxQdL7KOVJIXQ7wbJly/TCCy+oePHi8vf3199//62GDRuqadOmypgxoxo2bKgNGzaoVKlS+vPPP1WuXDm1a9dOc+bMkaurq7PLBwA8Ie6db/vo0aN65513tHbtWgUFBSkgIEATJ04kcAMA/tWTHLgl6cndcydq2rSpFi5cqLZt26pLly7KkCGDzp8/r6ZNm6pt27a6deuWFi1apMKFC6ts2bLavXu3PD09CdwAgFRzb6BOyr3LCxUqpEWLFungwYN66qmn5OnpqcyZMzu4SgBAevAkB26Ja7odzhhjGzjNarXaBg5o06aNpk+frn79+unSpUsaPHiwdu7cKX9/fxUpUkSlSpWSp6enrFarSpUqpcKFCztzNwAA6UT851D8Z9O9Y4s8SHz/YsWKKSAggMANAEAycXq5A1mtVrm4uCg8PFx+fn629ntPr/j000/VvXt3DR06VCNGjJCbm5tu377NHKcAAIc5e/asXn75ZX377bcKCgqyTQUGAABSH0e6HcjFxUWHDh1SgQIF1LVrV23YsEFXr16Vm5ub7UjD66+/rpkzZ+rdd9/VmDFjFBYWRuAGADhE/PfsFy5c0K1bt9SgQQNdvHhRrq6uiouL+9f1AABAyhG6Hezw4cPy8fHRiRMnNHv2bFWvXl0//vijTp48aevz2muvafr06Ro/frzGjRun8PBwJ1YMAEhv4r/ovX37tiSpfPnymjFjhrJmzaqaNWsmGbxjY2MVHh7+r9d+AwCApBG6HaxMmTKqXbu2hg4dqhkzZqhJkyYaP368unXrpgkTJujs2bOKi4tTt27d9NFHH2n27NmKiYlxdtkAgHTExcVFBw8eVNmyZfX999/LxcVFlStX1rhx4+Tv759o8L5z547efPNNNWvWTLGxsRztBgDgIXFN9yPQrVs37d+/X5s2bZIkhYaGqkaNGjp27Jjq1KmjoKAg9evXT6VLl1ZERIR8fX2dXDEAID2JjY1Vx44d9eWXXyp37tz64IMP1KJFCxljtGXLFg0ZMkSXLl3Shg0bFBAQoFu3buntt9/W3LlztXHjRpUrV87ZuwAAQJrFkW4Hij+db9SoUZKkH374QZI0ePBgxcbGat26dWrWrJn27dun5557TmFhYQRuAECqc3V1Vfny5VW4cGE1bdpUAwYM0OLFi2WxWFSlShW7I95nz57V2LFjNWfOHP32228EbgAA/iOOdD8Ct2/fVteuXZU9e3Zdv35dq1ev1rJly1ShQgVbnwsXLigwMNCJVQIA0pP4ebjjRya/du2ann76aTVu3Fje3t5atGiRJk2apObNm9uOeA8fPlzr16+Xh4eHtmzZoqefftrZuwEAQJpH6P6P4v+ouf//99u9e7eefvppZcuWTb/++quKFi36r+sAAJBS8dNV3rp1Sz4+PnbLpk2bpkOHDqlDhw769NNPtXLlSk2ePNkWvDds2KDPPvtMgwYNUsmSJZ20BwAApC+E7v8gPjCHhobKxcVF/v7+tj927mW1WhUXF6fXX39dFotFs2bNkouLC2EbAOAQhw8fVtOmTdWxY0fVr19fZcuWlcVi0YYNG9S2bVutWLFCOXPm1JAhQ7Ry5UpNmTJFL774oowxioqKYupKAABSEdd0/wcWi0VhYWHq1KmTunfvbgvf8ddyx3NxcZG7u7uqVaum7777TkePHiVwAwAcIjo6WuPHj9exY8c0bdo0TZ8+XbVr19bBgwdVs2ZNvf766xo1apQyZ86svn376vnnn1fbtm21fPlyWSwWAjcAAKmM0P0Q7g3VmTNnVo0aNXT16lUNHjw4yeAtSR07dlThwoU1fPhwGWOYfgUAkOo8PT3VuXNntW7dWlFRUWrSpIlKly6tV199VU2bNtXx48cVERGhK1euqGjRourevbtef/1122VPAAAgdXF6eQrFnz6+a9cuLV++XCNHjpQkffLJJ1q0aJEKFiyo8ePHK0eOHLbBa6S7Rx6WLVumAwcOqEOHDgoJCXHiXgAA0rutW7dq5MiR+vvvv7Vt2zadP39eq1at0qhRo3T9+nWtXbtWtWrVkiTFxMTIw8PDyRUDAJA+EbpTID5w7927V2XLllXfvn314Ycf2pZ//PHHWrx4sQoWLKhx48YpMDBQVqtVsbGx6tmzpzZu3KhffvlFwcHBTtwLAMCT4vfff9fAgQN1+fJl/fLLL8qVK5eOHj2qW7duqUyZMgzmCQDAI0DoTqb4wL1nzx5VrlxZffv21bvvvpug373BO/6Id8+ePTV37lxt3LhR5cuXd0L1AID0LD48//XXX7Jarbp165aKFy8uSdq5c6feeust/f3331q3bp1y586d6KCfAADAMQjdKXD8+HGVLFlS/fv315gxY2x/5CxcuFC5cuWynaZ376nmVqtVS5Ys0aZNm1S2bFkn7wEAIL2J/yxaunSp3n77bcXFxenKlSt6+eWXNWjQIBUoUEA7d+7UgAEDFBoaqlWrVil37tzOLhsAgCeGm7MLSCusVqvmzp2rTJky6amnnpJ0d/TysWPH6uOPP9aPP/5o69urVy+5uLho4sSJunjxIoEbAOAwFotFGzduVNu2bTVp0iQVK1ZM/9/e/cVUXf9xHH8dzzkGttwEDXQDWpwy/IdiKeYfMtvAnZqb1HJTJx78A8nILozORK02k2kYwykh06SV2QpnXTBYOxtuB0EQULfO0ZTVWS5wa65Z0gmQ04U/z34nu+gP375HeD7uvp/P93zP+3N19vp+/pyff/5ZLpdL169fV2VlpebOnauysjK98sorWrlypVpbW2W1WllaDgDAf4CZ7r/hhx9+0N69e9Xa2qq8vDzdvHlT7777rmpra7V8+XJJiliyd/ToUWVlZSk1NdXMsgEAI9zOnTvV1tamhoaGcJvf71dWVpZefPFFHTp0SJLU2dmp+Ph4paSkmFUqAACjDqH7b+rt7dXu3bv11Vdfqbu7W42NjXr22WcjTipnrxwAYLj9/2/L4OCgbDab+vr6NG7cOG3evFlXr16Vx+NRKBRSf3+/HnjgAX3++ecqLCzU2bNn9eijj5o8AgAARieS4d+UmJio0tJSZWdna9q0aerq6pIkWa1W3b59W5II3ACAYTdmzBgFAgF1dHTIZrOprq5OFRUVkqTs7Gx5vV7V19fLYrGE//4rJiZG8fHxeuihh0ysHACA0Y093f9AQkKC3G63hoaG9Nlnn2lwcFAlJSWyWq3McgMADNHX16fS0lK1t7dr/fr1crvdqq2tlSRlZWVp3bp1eu211xQKheR0OhUKhdTS0qJx48bJZuPnHgAAs7C8/F+4u9S8q6tLy5Yt01tvvWV2SQCAEezcuXMqLCxUZ2enduzYoTfffDN8evmFCxdUVVWlI0eOaPbs2bLb7bp06ZI8Hg+HeQIAYCJC97/U29srt9uta9eu6cSJE+GTzQEAGC53V1H9+OOPysnJCe/ZPnDggDIzM8P33bx5Uy0tLfJ6vYqPj9fzzz8vh8NhYuUAAIDQPQyuX78u6c6ycwAAjOD3+5WWlqYbN27I5/OpvLxcgUBAhw4dUmZmZnjGGwAARBc2Hw+DhIQEAjcAwDA9PT2aNWuWXC6X4uLitGjRIm3ZskUpKSkqKirS2bNnZbFYtGfPHpWVlWlgYMDskgEAwP9wsgoAAFFuwoQJqqmp0auvviq73a7q6mo999xzkqTq6mo5nU4tWbJEp06dUmdnp+x2u8kVAwCAuwjdAABEmT8uFY+JidGqVatkt9u1ceNGSQoH77i4OGVmZsrn8+nrr79WWlqaWWUDAIA/wZ5uAACikMfj0ZkzZ7Rjx45wWzAYVF1dnVwulzZt2qQDBw6E+/jLSgAAohMz3QAARJnBwUF1dHRo165dstlscrvdku7MeOfm5qqrq0v79+9Xf3+/qqurJYnADQBAlCJ0AwBgkj/OTt+9ttlscrlcstlsevvtt3X79m2VlpZKuhO8HQ6HZs+erYaGBvX09CgxMZGTywEAiFK8FgcAwCRjxozRpUuXtH37dgUCgYjgPHHiRK1du1bbt29XeXm5du/eHe67du2aXn75Zfn9fk2ePJnADQBAFGNPNwAAJhkYGNDChQt17tw5ORwOrVixQvPmzdNLL70Uvqe3t1effPKJ3G63ZsyYobi4OLW1tamlpYVD0wAAuA8QugEAMNG+fftks9k0Y8YMNTc3q7KyUk6nUwsWLFBBQUF4+Xlzc7NqamoUFxen/Px8TZ8+3eTKAQDAX0HoBgDARE1NTVqxYoU8Ho+efPJJ9fT06PDhw9q7d69mzpyp/Px8LVmyRFOnTlUoFFIoFOLQNAAA7iP8agMAYKJnnnlGmzZtUkVFhYLBoCZPniy/36/k5GQ98cQT+uijjzRz5kyVl5fLYrEQuAEAuM9wejkAACabP3++9u/fr7Fjx2rDhg1qamqSx+PR9OnTdfnyZTU2NmrZsmVmlwkAAP4BlpcDABAFsrKy5PV6lZiYqPr6eqWnp5tdEgAAGAasUQMAwER3332XlJTI4XDo4MGDSk9PF+/EAQAYGQjdAACY6O5/bM+dO1dDQ0Pq6OiIaAcAAPc3QjcAAFEgISFBu3bt0nvvvae2tjazywEAAMOE0A0AQJRYunSpnnrqKU2ZMsXsUgAAwDDhIDUAAKJIMBhUTEyM2WUAAIBhQugGAAAAAMAgLC8HAAAAAMAghG4AAAAAAAxC6AYAAAAAwCCEbgAAAAAADELoBgAAAADAIIRuAAAAAAAMQugGAAD/WFNTkywWi3766ae//JlHHnlEFRUVhtUEAEA0IXQDADCC5eXlyWKxqKCg4J6+LVu2yGKxKC8v778vDACAUYLQDQDACJeUlKQTJ07o119/DbcFg0EdP35cycnJJlYGAMDIR+gGAGCEy8jIUFJSkk6ePBluO3nypJKTkzVnzpxw22+//abi4mI9/PDDiomJ0aJFi9Te3h7xrPr6ej3++OOKjY3V0qVL9d13393zfV6vV4sXL1ZsbKySkpJUXFysW7duGTY+AACiGaEbAIBRwOVy6YMPPghfHz16VOvXr4+45/XXX1ddXZ1qa2vV2dkph8Oh7Oxs3bhxQ5L0/fffa+XKlXrhhRd0/vx5bdiwQW+88UbEM7q7u5WTk6Pc3FxdvHhRn376qbxer4qKiowfJAAAUYjQDQDAKLBmzRp5vV4FAgEFAgE1NzdrzZo14f5bt26pqqpK+/bt0/LlyzVt2jTV1NQoNjZWR44ckSRVVVUpNTVV5eXlmjp1qlavXn3PfvA9e/Zo9erV2rp1qx577DE9/fTTqqys1IcffqhgMPhfDhkAgKhgM7sAAABgvEmTJsnpdOrYsWMKhUJyOp2aOHFiuL+7u1sDAwNauHBhuM1ut2vevHny+/2SJL/fr/nz50c8d8GCBRHXFy5c0MWLF/Xxxx+H20KhkIaGhvTtt98qLS3NiOEBABC1CN0AAIwSLpcrvMz74MGDhnzHL7/8os2bN6u4uPiePg5tAwCMRoRuAABGiZycHPX398tisSg7OzuiLzU1VWPHjlVzc7NSUlIkSQMDA2pvb9fWrVslSWlpafryyy8jPtfa2hpxnZGRIZ/PJ4fDYdxAAAC4j7CnGwCAUcJqtcrv98vn88lqtUb0PfjggyosLNS2bdvU0NAgn8+njRs3qq+vT/n5+ZKkgoICXblyRdu2bdPly5d1/PhxHTt2LOI5JSUlOnPmjIqKinT+/HlduXJFX3zxBQepAQBGLUI3AACjyPjx4zV+/Pg/7SsrK1Nubq7Wrl2rjIwMXb16VY2NjZowYYKkO8vD6+rqdOrUKaWnp+v999/XO++8E/GMWbNm6fTp0/rmm2+0ePFizZkzRzt37tSUKVMMHxsAANHIEgqFQmYXAQAAAADASMRMNwAAAAAABiF0AwAAAABgEEI3AAAAAAAGIXQDAAAAAGAQQjcAAAAAAAYhdAMAAAAAYBBCNwAAAAAABiF0AwAAAABgEEI3AAAAAAAGIXQDAAAAAGAQQjcAAAAAAAYhdAMAAAAAYJDfAXFpWA1iIEDmAAAAAElFTkSuQmCC", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "from sklearn.dummy import DummyRegressor\n", + "tuned_summary = dml_plr_obj_tuned.summary\n", + "\n", + "# Initialize and fit dummy models\n", + "ml_l_dummy = DummyRegressor(strategy='mean')\n", + "ml_m_dummy = DummyRegressor(strategy='mean')\n", + "\n", + "# Create DoubleMLPLR object using dummy regressors\n", + "dml_plr_obj_dummy = dml.DoubleMLPLR(obj_dml_data, ml_m_dummy, ml_l_dummy)\n", + "dml_plr_obj_dummy.fit(store_predictions=True)\n", + "\n", + "# Retrieve the summary for dummy models\n", + "dummy_summary = dml_plr_obj_dummy.summary\n", + "\n", + "# AutoML Untuned\n", + "automl_untuned_l = AutoML()\n", + "settings = {\n", + " \"time_budget\": 0.01,\n", + " \"metric\": 'mse',\n", + " \"estimator_list\": ['xgboost'],\n", + " \"task\": 'regression',\n", + "}\n", + "\n", + "automl_untuned_l.fit(X_train=data.drop(columns=[\"y\", \"d\"]).values, y_train=data[\"y\"].values, verbose=0, **settings)\n", + "\n", + "automl_untuned_m = AutoML()\n", + "settings = {\n", + " \"time_budget\": 0.01,\n", + " \"metric\": 'mse',\n", + " \"estimator_list\": ['xgboost'],\n", + " \"task\": 'regression',\n", + "}\n", + "\n", + "automl_untuned_m.fit(X_train=data.drop(columns=[\"y\", \"d\"]).values, y_train=data[\"d\"].values, verbose=0, **settings)\n", + "\n", + "# Create DoubleMLPLR object using AutoML models\n", + "dml_plr_obj_untuned_automl = dml.DoubleMLPLR(obj_dml_data, automl_untuned_l.model.estimator, automl_untuned_m.model.estimator)\n", + "untuned_automl_summary = dml_plr_obj_untuned_automl.fit(store_predictions=True).summary\n", + "\n", + "# Combine summaries for comparison\n", + "summary = pd.concat([tuned_summary, untuned_automl_summary, dummy_summary], keys=['FLAML Tuned', 'AutoML Untuned', 'Dummy'])\n", + "summary.index.names = ['Model Type', 'Metric']\n", + "\n", + "# Save the summary to a file\n", + "summary.to_pickle(\"summary_comparison.pkl\")\n", + "\n", + "# Check the structure of the summary DataFrames\n", + "print(\"Tuned Summary:\")\n", + "print(tuned_summary.head())\n", + "\n", + "print(\"Untuned Summary:\")\n", + "print(untuned_automl_summary.head())\n", + "\n", + "print(\"Dummy Summary:\")\n", + "print(dummy_summary.head())\n", + "\n", + "# Check if `summary` contains the required columns\n", + "required_columns = ['coef', '2.5 %', '97.5 %']\n", + "if not all(col in summary.columns for col in required_columns):\n", + " raise ValueError(\"Summary DataFrame is missing required columns.\")\n", + "\n", + "# Extract model labels and coefficient values\n", + "model_labels = summary.index.get_level_values('Model Type')\n", + "coef_values = summary['coef'].values\n", + "\n", + "print(\"Extracted model labels:\", model_labels)\n", + "print(\"Extracted coefficient values:\", coef_values)\n", + "\n", + "# Calculate errors\n", + "errors = np.full((2, len(coef_values)), np.nan)\n", + "errors[0, :] = summary['coef'] - summary['2.5 %']\n", + "errors[1, :] = summary['97.5 %'] - summary['coef']\n", + "\n", + "# Plot Coefficients and 95% Confidence Intervals\n", + "plt.figure(figsize=(10, 6))\n", + "plt.errorbar(model_labels, coef_values, fmt='o', yerr=errors, capsize=5)\n", + "plt.axhline(0.5, color='red', linestyle='--')\n", + "plt.xlabel('Model')\n", + "plt.ylabel('Coefficients and 95%-CI')\n", + "plt.title('Comparison of Coefficients and 95% Confidence Intervals')\n", + "plt.xticks(rotation=45)\n", + "plt.tight_layout()\n", + "plt.show()\n", + "\n", + "def print_scores(dml_obj, store_predictions=False):\n", + " if store_predictions:\n", + " dml_obj.fit(store_predictions=True)\n", + " summary_df = dml_obj.summary\n", + " print(\"Summary DataFrame columns:\", summary_df.columns)\n", + " print(\"Summary DataFrame index:\", summary_df.index)\n", + " \n", + " # Extract available metrics from the index\n", + " available_metrics = summary_df.index\n", + " print(\"Available metrics:\", available_metrics)\n", + " \n", + " # Select a metric to compare, e.g., 'd'\n", + " metric_to_use = 'd'\n", + " if metric_to_use not in available_metrics:\n", + " raise KeyError(f\"{metric_to_use} not found in summary.\")\n", + " \n", + " scores = summary_df.loc[metric_to_use]\n", + " return scores\n", + "\n", + "# Calculate and store scores for comparison\n", + "scores = {\n", + " \"FLAML Tuned\": print_scores(dml_plr_obj_tuned, True),\n", + " \"AutoML Untuned\": print_scores(dml_plr_obj_untuned_automl, True),\n", + " \"Dummy\": print_scores(dml_plr_obj_dummy, True)\n", + "}\n", + "scores_df = pd.DataFrame(scores)\n", + "\n", + "# Save the scores to a file\n", + "scores_df.to_pickle(\"scores_comparison.pkl\")\n", + "\n", + "# Plot MSE scores\n", + "scores_df.plot(kind='bar', title='Comparison of Metrics for l_of_X and m_of_X')\n", + "plt.ylabel('Scores')\n", + "plt.xticks(rotation=45)\n", + "plt.tight_layout()\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Summary DataFrame:\n", + " coef std err t P>|t| 2.5 % \\\n", + "Model Type Metric \n", + "FLAML Tuned d 0.464399 0.029765 15.602241 7.028275e-55 0.406061 \n", + "Manual Tuned d 0.606239 0.023633 25.651964 4.019974e-145 0.559919 \n", + "Dummy d 0.680642 0.020259 33.596561 1.883180e-247 0.640935 \n", + "\n", + " 97.5 % \n", + "Model Type Metric \n", + "FLAML Tuned d 0.522738 \n", + "Manual Tuned d 0.652559 \n", + "Dummy d 0.720350 \n" + ] + } + ], + "source": [ + "print(\"Summary DataFrame:\")\n", + "print(summary)" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Available rows in summary:\n", + "Index(['d'], dtype='object')\n", + "Available columns in summary:\n", + "Index(['coef', 'std err', 't', 'P>|t|', '2.5 %', '97.5 %'], dtype='object')\n" + ] + } + ], + "source": [ + "print(\"Available rows in summary:\")\n", + "print(dml_plr_obj_tuned.summary.index)\n", + "\n", + "print(\"Available columns in summary:\")\n", + "print(dml_plr_obj_tuned.summary.columns)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python (myenv_py311)", + "language": "python", + "name": "myenv_py311" + }, + "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.11.10" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} From e262011c49b4d39d9ec3e55ad2ac53d05e8cc904 Mon Sep 17 00:00:00 2001 From: sauravbania <63904816+sauravbania@users.noreply.github.com> Date: Tue, 17 Sep 2024 15:58:49 +0200 Subject: [PATCH 04/71] AutoML tuning comparison I have changed the bar plots and added some explanations. --- ...aml_meets_doubleml_evaluate_learners.ipynb | 681 +++++++++++++++--- 1 file changed, 567 insertions(+), 114 deletions(-) diff --git a/doc/examples/flaml_meets_doubleml_evaluate_learners.ipynb b/doc/examples/flaml_meets_doubleml_evaluate_learners.ipynb index 25d29703..280135b9 100644 --- a/doc/examples/flaml_meets_doubleml_evaluate_learners.ipynb +++ b/doc/examples/flaml_meets_doubleml_evaluate_learners.ipynb @@ -1,19 +1,239 @@ { "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# DoubleML meets FLAML: Comparing AutoML tuning\n", + " In this notebook we are going to explore how to tune learners with [AUTOML](https://github.com/microsoft/FLAML) in [DoubleML](https://docs.doubleml.org/stable/index.html) framework." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Data Generation" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We created synthetic data using the [make_plr_CCDDHNR2018](https://docs.doubleml.org/stable/api/generated/doubleml.datasets.make_plr_CCDDHNR2018.html) function, which generates data for a potential outcomes framework with 1000 observations and 50 features. The data generated will have 50 covariates variables, 1 treatment variable and 1 outcome variable." + ] + }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 37, + "metadata": {}, + "outputs": [], + "source": [ + "# pip install flaml" + ] + }, + { + "cell_type": "code", + "execution_count": 38, "metadata": {}, "outputs": [ { - "name": "stdout", - "output_type": "stream", - "text": [ - "Tuning RMSE (ml_m): [1.03274461]\n", - "Evaluation RMSE (ml_m): 1.0271747767073314\n", - "Tuning RMSE (ml_l): [1.08927038]\n", - "Evaluation RMSE (ml_l): 1.0837776193821544\n" - ] + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
X1X2X3X4X5X6X7X8X9X10...X43X44X45X46X47X48X49X50yd
0-1.221703-0.822147-2.196993-2.499879-0.341929-0.2810380.8532911.0959020.7266381.211289...-2.201716-0.8664390.5457011.5538110.8934931.1338440.3232570.748202-1.014441-1.551160
1-1.176971-1.688596-2.925414-2.272384-1.445496-1.861972-0.325206-0.759704-0.1814070.939779...-1.813400-0.823707-1.191542-1.250025-0.835989-0.758630-0.450238-0.190508-2.631763-1.886604
20.6313621.0018021.6177861.7036070.7086591.1370410.7417890.7921500.1902560.815059...1.3044120.281384-0.656459-0.118734-0.5744640.323391-0.2352780.7750140.1102600.765708
30.4027160.5243601.2694131.4636890.8415870.2729180.270527-0.1186730.327287-1.324871...-1.440236-2.145734-2.121639-1.846964-1.433101-1.845194-0.311476-0.3075691.229235-0.499877
40.047511-0.877817-1.776503-0.686996-0.444111-1.368758-0.336068-0.788738-0.236934-0.303945...-1.1398650.2010140.015537-0.225769-1.427309-0.979872-1.8070670.7807931.0700860.359521
\n", + "

5 rows × 52 columns

\n", + "
" + ], + "text/plain": [ + " X1 X2 X3 X4 X5 X6 X7 \\\n", + "0 -1.221703 -0.822147 -2.196993 -2.499879 -0.341929 -0.281038 0.853291 \n", + "1 -1.176971 -1.688596 -2.925414 -2.272384 -1.445496 -1.861972 -0.325206 \n", + "2 0.631362 1.001802 1.617786 1.703607 0.708659 1.137041 0.741789 \n", + "3 0.402716 0.524360 1.269413 1.463689 0.841587 0.272918 0.270527 \n", + "4 0.047511 -0.877817 -1.776503 -0.686996 -0.444111 -1.368758 -0.336068 \n", + "\n", + " X8 X9 X10 ... X43 X44 X45 X46 \\\n", + "0 1.095902 0.726638 1.211289 ... -2.201716 -0.866439 0.545701 1.553811 \n", + "1 -0.759704 -0.181407 0.939779 ... -1.813400 -0.823707 -1.191542 -1.250025 \n", + "2 0.792150 0.190256 0.815059 ... 1.304412 0.281384 -0.656459 -0.118734 \n", + "3 -0.118673 0.327287 -1.324871 ... -1.440236 -2.145734 -2.121639 -1.846964 \n", + "4 -0.788738 -0.236934 -0.303945 ... -1.139865 0.201014 0.015537 -0.225769 \n", + "\n", + " X47 X48 X49 X50 y d \n", + "0 0.893493 1.133844 0.323257 0.748202 -1.014441 -1.551160 \n", + "1 -0.835989 -0.758630 -0.450238 -0.190508 -2.631763 -1.886604 \n", + "2 -0.574464 0.323391 -0.235278 0.775014 0.110260 0.765708 \n", + "3 -1.433101 -1.845194 -0.311476 -0.307569 1.229235 -0.499877 \n", + "4 -1.427309 -0.979872 -1.807067 0.780793 1.070086 0.359521 \n", + "\n", + "[5 rows x 52 columns]" + ] + }, + "execution_count": 38, + "metadata": {}, + "output_type": "execute_result" } ], "source": [ @@ -31,7 +251,37 @@ "\n", "# Generate synthetic data\n", "data = make_plr_CCDDHNR2018(alpha=0.5, n_obs=1000, dim_x=50, return_type=\"DataFrame\")\n", + "data.head()\n", + "\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Manual Tuning with FLAML" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "##### In this section, we manually tuned two XGBoost models using FLAML for a partially linear regression setup.\n", + "##### 1. Initialize and Train AutoML Models:\n", + "We used FLAML to automatically tune two separate XGBoost models:\n", "\n", + "• Outcome Model (ml_l): This model predicts the outcome variable y. We configured the FLAML AutoML with a time budget of 120 seconds, using XGBoost as the estimator and rmse as the performance metric.\n", + "\n", + "• Treatment Model (ml_m): This model predicts the treatment variable d. Similarly, we set the time budget to 120 seconds, used XGBoost, and optimized for rmse." + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "metadata": {}, + "outputs": [], + "source": [ "# Initialize AutoML for outcome model (ml_l)\n", "automl_l = AutoML()\n", "settings_l = {\n", @@ -51,24 +301,86 @@ " \"task\": 'regression',\n", "}\n", "automl_m.fit(X_train=data.drop(columns=[\"y\", \"d\"]).values, y_train=data[\"d\"].values, verbose=2, **settings_m)\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "##### Evaluate Models for Overfitting:\n", + "After training, we compared the in-sample (training) and out-of-sample (test) root mean squared errors (RMSE) for both models to check for overfitting:\n", "\n", + "• rmse_oos_ml_m represents the out-of-sample RMSE for the treatment model.\n", + "\n", + "• rmse_oos_ml_l represents the out-of-sample RMSE for the outcome model." + ] + }, + { + "cell_type": "code", + "execution_count": 40, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "rmse_oos_ml_m: 1.0160587619805903\n", + "rmse_oos_ml_m: 1.1827553545725862\n" + ] + } + ], + "source": [ "# Check for Overfitting: Compare in-sample (train), out-of-sample (test) MSE\n", "# ml_m\n", "rmse_oos_ml_m = automl_m.best_loss\n", "rmse_oos_ml_l = automl_l.best_loss\n", - "\n", + "print(\"rmse_oos_ml_m:\",rmse_oos_ml_m)\n", + "print(\"rmse_oos_ml_m:\",rmse_oos_ml_l)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "##### Create and Fit DoubleML Model:\n", + "We created a DoubleMLData object with the dataset, specifying y as the outcome variable and d as the treatment variable. We then initialized a DoubleMLPLR model using the trained FLAML models for both the treatment and outcome components. " + ] + }, + { + "cell_type": "code", + "execution_count": 41, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " coef std err t P>|t| 2.5 % 97.5 %\n", + "d 0.552414 0.032577 16.95697 1.709343e-64 0.488563 0.616264\n", + "Tuning RMSE (ml_m): [1.0288543]\n", + "Evaluation RMSE (ml_m): 1.0160587619805903\n", + "Tuning RMSE (ml_l): [1.19167283]\n", + "Evaluation RMSE (ml_l): 1.1827553545725862\n" + ] + } + ], + "source": [ "# Create DoubleMLData object with the evaluation set\n", "obj_dml_data = dml.DoubleMLData(data, \"y\", \"d\")\n", "\n", "# Initialize DoubleMLPLR with the trained models from flaml\n", - "obj_dml_plr = dml.DoubleMLPLR(obj_dml_data, ml_m=automl_m.model.estimator, ml_l=automl_l.model.estimator)\n", + "obj_dml_plr_manual_tuned = dml.DoubleMLPLR(obj_dml_data, ml_m=automl_m.model.estimator, ml_l=automl_l.model.estimator)\n", "\n", "# Fit the DoubleMLPLR model\n", - "obj_dml_plr.fit()\n", + "obj_dml_plr_manual_tuned.fit()\n", + "\n", + "print(obj_dml_plr_manual_tuned.summary)\n", + "manual_tuned_summary = obj_dml_plr_manual_tuned.summary\n", "\n", "# Evaluate learners using evaluate_learners() (MSE for all nuisance components)\n", - "rmse_ins_ml_l = obj_dml_plr.evaluate_learners()['ml_l'][0]\n", - "rmse_ins_ml_m = obj_dml_plr.evaluate_learners()['ml_m'][0]\n", + "rmse_ins_ml_l = obj_dml_plr_manual_tuned.evaluate_learners()['ml_l'][0]\n", + "rmse_ins_ml_m = obj_dml_plr_manual_tuned.evaluate_learners()['ml_m'][0]\n", "\n", "# Print results\n", "print(\"Tuning RMSE (ml_m):\", rmse_ins_ml_m)\n", @@ -81,12 +393,22 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Replacing FLAML tuning with FLAML Classifier and Regressor " + "# Comparison of Model Tuning Approaches" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In this section, we compare different approaches for tuning models in the DoubleML framework:\n", + "##### Custom FLAML Models for Double Machine Learning\n", + "\n", + "In this section, we define custom classes for integrating FLAML (Fast Lightweight AutoML) with Double Machine Learning (DML). These classes are designed to facilitate automated machine learning model tuning for both regression and classification tasks.\n" ] }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 42, "metadata": {}, "outputs": [], "source": [ @@ -153,9 +475,18 @@ " return preds" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "##### Using Custom FLAML Models with Double Machine Learning\n", + "\n", + "We integrate the custom FLAML-based models FlamlRegressorDoubleML into the Double Machine Learning (DML) framework. The steps involve defining the FLAML regressors, setting up the DoubleMLPLR object, and fitting the model." + ] + }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 43, "metadata": {}, "outputs": [ { @@ -163,7 +494,7 @@ "output_type": "stream", "text": [ " coef std err t P>|t| 2.5 % 97.5 %\n", - "d 0.464399 0.029765 15.602241 7.028275e-55 0.406061 0.522738\n" + "d 0.554143 0.032679 16.957114 1.705155e-64 0.490093 0.618193\n" ] } ], @@ -173,51 +504,39 @@ "ml_m = FlamlRegressorDoubleML(time=120, estimator_list=['xgboost'], metric='rmse')\n", "\n", "# Create DoubleMLPLR object using the new regressors\n", - "dml_plr_obj_tuned = dml.DoubleMLPLR(obj_dml_data, ml_m, ml_l)\n", + "dml_plr_obj_api_tuned = dml.DoubleMLPLR(obj_dml_data, ml_m, ml_l)\n", "\n", "# Fit the DoubleMLPLR model\n", - "dml_plr_obj_tuned.fit(store_predictions=True)\n", + "dml_plr_obj_api_tuned.fit(store_predictions=True)\n", + "\n", + "#Retrieve the summary for API Tuned Models\n", + "api_tuned_summary = dml_plr_obj_api_tuned.summary\n", "\n", "# Print the summary\n", - "print(dml_plr_obj_tuned.summary)" + "print(dml_plr_obj_api_tuned.summary)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "##### Dummy Models:\n", + "We initialized and fit dummy models using DummyRegressor from sklearn:\n", + "\n", + "• ml_l_dummy: A dummy regressor for the outcome model, which predicts the mean value of the outcome.\n", + "\n", + "• ml_m_dummy: A dummy regressor for the treatment model, also predicting the mean value.\n", + "\n", + "These dummy models were used to create a DoubleMLPLR object (dml_plr_obj_dummy), which was then fit to the data. We retrieved and stored the summary of this model to compare with other methods." ] }, { "cell_type": "code", - "execution_count": 24, + "execution_count": 44, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Tuned Summary:\n", - " coef std err t P>|t| 2.5 % 97.5 %\n", - "d 0.464019 0.029818 15.561799 1.323263e-54 0.405577 0.52246\n", - "Untuned Summary:\n", - " coef std err t P>|t| 2.5 % 97.5 %\n", - "d 0.605325 0.023441 25.82346 4.835043e-147 0.559382 0.651268\n", - "Dummy Summary:\n", - " coef std err t P>|t| 2.5 % 97.5 %\n", - "d 0.67958 0.020288 33.496641 5.394302e-246 0.639816 0.719344\n", - "Extracted model labels: Index(['FLAML Tuned', 'AutoML Untuned', 'Dummy'], dtype='object', name='Model Type')\n", - "Extracted coefficient values: [0.46401856 0.60532514 0.67958017]\n" - ] - }, - { - "data": { - "image/png": "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p6tChQp2gxKlRJUqVTRt2jT16NFDRYoUUdu2bVWwYEHduHFDGzZs0PLlyzV27FhJd48g1qpVS0OHDtXp06dVunRprV69WsuWLVOfPn1sR6Dy58+vsWPHavDgwTp9+rSaNWumTJky6dSpU/ruu+/02muv2ULPfzVgwAAtWbJELVq0UKdOnVSuXDldu3ZNy5cv18yZM5M8ejtt2jQ988wzKlmypLp27ap8+fLp4sWL2rp1q/7+++8Ec2EnR7ly5TRjxgyNHTtWBQoUkL+/v2rXrq1ixYqpZs2aKleunLJmzao//vhDS5YssRscMDHPPfecRo8erY4dO6pKlSrat2+fvvzyy2Rdf50Yd3d3jR07Vq+//rpq166tli1b6tSpU5o3b16yt/nyyy8rKChIxYoVU0REhObOnauTJ0/qxx9/tDv7oWXLlvL29laVKlXk7++vgwcPatasWfLx8dF7772X6La3b9+uRYsW2b1e8+bNa5srvnPnzvrss89UqVKlfz2D5PPPP1f9+vX14osvqkmTJqpTp44yZMigY8eO6euvv9aFCxdsc3V/8MEHevbZZ1W5cmV17txZt2/f1ieffCI/P78HznGfGkaNGqVVq1apWrVq6tGjh2JjY/XJJ5+oePHido+DI15T7dq10+eff65+/fpp+/btqlatmiIjI7VmzRr16NFDTZs2VY0aNfT6669r/Pjx2r17t+rXry93d3cdO3ZM33zzjaZMmaLmzZun9sNi2+fMmTNr5syZypQpkzJkyKBKlSopJCREn332mZ599lkVL15cHTt2VM6cOXXu3DmtX79evr6++uGHH5J1H/7+/qpVq5YmTpyoGzduqGXLlnbLixQpovz586t///46d+6cfH199e233yZ7LIeNGzeqcePGypMnjy5duqTp06crV65ceuaZZx7qMQGQih7VMOkAkJijR4+arl27mrx58xoPDw+TKVMmU7VqVfPJJ5/YTa90584dM2rUKBMSEmLc3d1NcHCwGTx4sF0fY+5O8ZTYdEmSEkzFFT+10wcffGBri5866sSJE6Z+/frGx8fHBAQEmBEjRiSYTmnOnDmmYMGCxtPT0xQpUsTMmzcvwTQuSd33vcvip/SJjo42AwYMMKVLlzaZMmUyGTJkMKVLl050Tu1FixaZsmXLGk9PT5M1a1bTpk0b8/fff9v1SWoarMRqTMrU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AAAAwEEI3QAAAAAAOAihGwAAAAAAByF0AwAAAADgIIRuAAAAAAAcxOmhe9q0acqbN6+8vLxUqVIlbd++/YH9w8LC9MYbbygwMFCenp4qVKiQfvrpJ9vykSNHymKx2P0UKVLE0bsBAAAAAEACbs6880WLFqlfv36aOXOmKlWqpMmTJ6tBgwY6cuSI/P39E/SPiYlRvXr15O/vryVLlihnzpz666+/lDlzZrt+xYsX15o1a2y33dycupsAAAAAgCeUU9PoxIkT1bVrV3Xs2FGSNHPmTP3444+aO3euBg0alKD/3Llzde3aNW3ZskXu7u6SpLx58ybo5+bmphw5cji0dgAA0qNLEVG6dCM6xev5Z/KUv6+XAyoCACBtc1rojomJ0c6dOzV48GBbm4uLi+rWrautW7cmus7y5ctVuXJlvfHGG1q2bJmyZ8+u1q1b6+2335arq6ut37FjxxQUFCQvLy9VrlxZ48ePV+7cuZOsJTo6WtHR//yBERERkQp7CABA2vPltjOasvZYitfrXaeg+tYr5ICKAABI25wWuq9cuaK4uDgFBATYtQcEBOjw4cOJrnPy5EmtW7dObdq00U8//aTjx4+rR48eunPnjkaMGCFJqlSpkubPn6/ChQvrwoULGjVqlKpVq6b9+/crU6ZMiW53/PjxGjVqVOruIAAAaVCbSrlVr5j9Z3PUnTg1n3n3C/El3SrLy901wXr+mTwfSX0AAKQ1aepiZ6vVKn9/f82aNUuurq4qV66czp07pw8++MAWup999llb/1KlSqlSpUrKkyePFi9erM6dOye63cGDB6tfv3622xEREQoODnbszgAA8Bjy9/VKcJr4rZhY2/+LBfnKxyNN/fkAAIBTOe1TM1u2bHJ1ddXFixft2i9evJjk9diBgYFyd3e3O5W8aNGiCg0NVUxMjDw8PBKskzlzZhUqVEjHjx9PshZPT095evINPQAAAAAgdTltyjAPDw+VK1dOa9eutbVZrVatXbtWlStXTnSdqlWr6vjx47Jarba2o0ePKjAwMNHALUk3b97UiRMnFBgYmLo7AAAAAADAv3DqPN39+vXT7NmztWDBAh06dEjdu3dXZGSkbTTzdu3a2Q201r17d127dk29e/fW0aNH9eOPP2rcuHF64403bH369++vX3/9VadPn9aWLVv0wgsvyNXVVa+88soj3z8AAAAA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t0hBQUEaN26coqOjNWnSJL3//vvOLBUA8ATJmDGjMmTIoBUrVki6e433nTt35OnpqeLFi2vnzp16++23bQOuAQCeDJ9//rnq1q2rFi1aaNeuXbp+/bqyZcum559/Xjt27JDVapUzT/AmdEOS7J6EFotFklS4cGHdunVL06dPV2RkpO1bpNjYWJUvX14tW7ZU69atnVIvACB9i/9cunr1qsLDw3X+/HlJ0vDhw7Vz5071799f0t3gbbFYlCtXLm3ZskUrV66Uj4+P0+oGADje/QG6RYsWGjx4sHx8fFS/fn1169ZN33//vZo3b67//e9/2rJliy3jOAPXdEPGGFksFv3222/aunWrTp48qZdeekn16tXTxo0bVbduXXXs2FEdOnRQSEiIPvnkE+3du1cLFixQ1qxZnV0+ACCdif9c+uGHHzR58mRduHBBOXLk0IsvvqiePXtq8uTJmjx5sooXL65atWrp4MGDWrRokQ4ePKg8efI4u3wAgAPdew33xYsXFRMTo+DgYNvyZcuW6ffff9cnn3yiRo0a6bvvvtMrr7yiTz/9VF5eXk4J34RuSJKWLl2qrl27qmbNmsqQIYP+97//2f6wWbNmjbp06SJjjFxcXHTz5k39/PPPevrpp51dNgAgnfrpp5/00ksv6b333lOZMmX0888/67333tMff/yh/Pnza8eOHXr33XcVExMjd3d3TZkyRaVLl3Z22QCAR2TIkCFasWKFrly5os6dO6tXr17y9/e3LT99+rTmzp2rdevW6eDBgzp06JACAgJsX+w+SoRu6OjRo2rYsKGGDh2qzp07S7o7WM2QIUM0cuRIubi46MKFCzp9+rSuX7+ukiVL2n2bBABAarpz5446deqkIkWKaOjQoTp//ryqVq2qBg0aaObMmQn6xsXFycvLy0nVAgAeta+//lqDBg3SO++8o2vXrmnEiBF64YUXNG7cOLsznqxWq2JjY1WtWjWVLVs2wWfIo+LmlHvFYyUyMlJBQUHq3Lmzjh49qtq1a6tTp0626ViOHj2qQoUKKTAw0MmVAgCeBHFxcdq9e7eaNGmiK1euqGLFimrcuLHtj6X58+crf/78qlatmtzd3ZkiDADSufunBfPz89OgQYNsBwyrV6+umjVryhij999/33aA0BgjDw8PNWrUSPv373dK7RIDqUHS5cuXde7cOR04cEDPPvusGjVqZPvDZuPGjRo5cqT+/vtvJ1cJAHhSeHl5qVatWtqxY4eefvppNW7cWDNmzJB0d67ujRs3at++fYqLi3NypQAAR4u/xFWS5syZoyFDhmj06NEKDw+39alUqZJ+/fVXff/99xo8eLBOnTolSXJ1dZUknT9/XseOHdOtW7ce/Q6I0P1EMcYkOlR+rVq1VKhQIZUuXVqVK1fWrFmzbNc5rFy5UufPn5enp+ejLhcA8ASI/1yKiIjQ7du3be2FChXSpEmTFBISovHjx8vFxUVWq1UTJkzQxo0b9eyzz9r+mAIApE/3Xn89ZswYde/eXfv27dO2bdv03Xffadu2bba+FStW1K+//qr//e9/WrBgga39zJkzunz5subMmeO02S04vfwJY7FYtGXLFm3dulVZsmRRkyZNlD17dnXq1EmXL1/WzZs3dfLkSYWGhmrZsmX69NNP9dtvvyl79uzOLh0AkA5ZLBYtX75cY8aMkYeHhwoWLKj58+erZ8+eunLlij766CP16tVLGTNmVGRkpH766SetW7dOISEhzi4dAOBg8YF7586dOnr0qDZs2KAqVapo586devnllzV58mS99dZbKl++vCSpQoUKOnDggAoWLGjbRu7cubVw4UJlyJDBKfsgMZDaE2fFihV64YUXVLlyZW3atEkNGzbU22+/rRo1amjevHmaM2eOtm3bpsKFC8vb21uzZ89WmTJlnF02ACCd2rFjh2rVqqU333xTFotFCxcuVFBQkFavXi1fX1999tln+vPPP3X48GGVL19eHTp0UNGiRZ1dNgDgEfniiy80c+ZMxcTEaMWKFbYRyjdv3qx27dqpQoUKGjBggMqVK2e3XmxsrNzcHo9jzITuJ0D8aRmhoaHq16+fateurS5duujo0aNq3769MmbMqKFDh6pmzZqS7j6B8+TJI29vbz311FPOLR4AkG7t27dPly9f1vbt2zVo0CAZY3TkyBE1a9ZMvr6+WrNmjXx9fSUlHEQHAPBk+PXXXzVo0CAdPHhQn332mVq0aGFbtnXrVrVv31558+bVxx9/rCJFijix0qTx6fUEsFgs2rhxo/r27atLly6pWrVqku5eLzdv3jxFRkZq3LhxWrlypSSpatWqypUrF4EbAOAw169fV506dVS3bl1dv35d0t3PqyJFiuj7779XRESEGjVqpGvXrkkSgRsAngBWqzVB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dO8gNfc+ARM74h3f996jDAAApJZ7P5PiRUVF6bPPPtNnn32mMmXK2IK3JJ04cULBwcGcTg4AT4CkBjybPn26evbsqfHjx6tv37624P3qq6/q4sWLOn78uG3asPQgbV2BDkmy++PG1dXVNjVLs2bN1KNHD925c0fvvfee3WA1afmbIQDA4yk+cP/yyy9644031KtXL23dulVeXl5q3769unbtqr1796pdu3a6ffu2RowYofbt29sN8gkASL/iA/eBAwfs2nv06KGPP/5YgwcP1qRJkxQdHW07O6pu3bry9PR0RrkOw5HudOLeIw3Lly/Xu+++q7x582rBggXMww0AcJgff/xRLVq0UM2aNXX16lX98ccf+vzzz9WmTRvdvHlTX331lT788EPdunVLcXFx+v7771WxYkVnlw0AeEQ2bNig2rVr6/PPP7cNrhnvgw8+0NChQzVp0iR16tTJbg7utH5K+b0I3enIvcH7xx9/VMmSJZU7d24nVwUASG/iTxcMDw/XggUL5Onpqddff13h4eH64IMP9P7772vOnDlq166doqKidObMGe3evVsVK1ZU3rx5nV0+AMCBQkNDdfnyZe3Zs0dlypRRrly5NGPGDI0aNUpz5sxRmzZtbH0PHz6sSpUq6caNG4mG8vSCi3wfQ4ldH5ccFovFtm7jxo0dUBkA4EkUH7Lv3Lkjd3d32zQv5cuXV5EiRTRmzBhJkp+fn0aOHCmLxaJOnTrJxcVFr776qgoVKqRChQo5eS8AAI62dOlSzZkzR7t27VJkZKRiY2NVr149DR8+XN7e3mrfvr0k2YK3p6enevbsqTJlyuiFF15wZukOxTXdjyGLxaJr164pIiLiodYFACA1ubi46Pjx42rdurUOHTokSQoODlb79u114MABhYWFSbobzt3c3DRy5EgNGzZM7dq10+LFi51YOQDgUZk9e7a6dOmi2rVr64svvtCZM2c0aNAgHT16VG3atFGVKlX03nvvqW3btho5cqSWLFmi3r17a+/evWrRooXc3NwUGxvr7N1wCI50P2asVqsiIiJUqFAhvf766xo4cKD8/PycXRYA4Ann6empb7/9VpGRkfr4449VoEABvffee7JarerWrZvy5s2rGjVqyBgjV1dXDRs2TB4eHipZsqSzSwcAONjs2bPVs2dPffXVV3rxxRdt7cOHD1eRIkX07rvv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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "from sklearn.dummy import DummyRegressor\n", - "tuned_summary = dml_plr_obj_tuned.summary\n", "\n", "# Initialize and fit dummy models\n", "ml_l_dummy = DummyRegressor(strategy='mean')\n", @@ -229,7 +548,24 @@ "\n", "# Retrieve the summary for dummy models\n", "dummy_summary = dml_plr_obj_dummy.summary\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "##### AutoML Untuned Models\n", "\n", + "We set up AutoML models with minimal tuning for both the outcome and treatment variables. This process allows us to compare the performance of untuned models against those that have been manually or API-tuned." + ] + }, + { + "cell_type": "code", + "execution_count": 45, + "metadata": {}, + "outputs": [], + "source": [ "# AutoML Untuned\n", "automl_untuned_l = AutoML()\n", "settings = {\n", @@ -250,21 +586,115 @@ "}\n", "\n", "automl_untuned_m.fit(X_train=data.drop(columns=[\"y\", \"d\"]).values, y_train=data[\"d\"].values, verbose=0, **settings)\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "##### DoubleMLPLR with Untuned AutoML Models\n", + "\n", + "Here, we create a `DoubleMLPLR` object using the untuned AutoML models for the outcome and treatment regressions. We then fit the `DoubleMLPLR` model and retrieve the summary of the results.\n", "\n", + "This section allows us to evaluate the performance of the untuned AutoML models in the context of DoubleML." + ] + }, + { + "cell_type": "code", + "execution_count": 46, + "metadata": {}, + "outputs": [], + "source": [ "# Create DoubleMLPLR object using AutoML models\n", "dml_plr_obj_untuned_automl = dml.DoubleMLPLR(obj_dml_data, automl_untuned_l.model.estimator, automl_untuned_m.model.estimator)\n", "untuned_automl_summary = dml_plr_obj_untuned_automl.fit(store_predictions=True).summary\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "##### Combine and Save Summaries\n", "\n", + "We combine the summaries from various models: manually tuned FLAML models, API-tuned FLAML models, untuned AutoML models, and dummy models. The combined summary is saved to a file for further analysis." + ] + }, + { + "cell_type": "code", + "execution_count": 47, + "metadata": {}, + "outputs": [], + "source": [ "# Combine summaries for comparison\n", - "summary = pd.concat([tuned_summary, untuned_automl_summary, dummy_summary], keys=['FLAML Tuned', 'AutoML Untuned', 'Dummy'])\n", + "summary = pd.concat([manual_tuned_summary ,api_tuned_summary, untuned_automl_summary, dummy_summary], keys=['FLAML Manual Tuned', 'FLAML API Tuned', 'AutoML Untuned', 'Dummy'])\n", "summary.index.names = ['Model Type', 'Metric']\n", "\n", "# Save the summary to a file\n", "summary.to_pickle(\"summary_comparison.pkl\")\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Plots" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "##### Plot Coefficients and 95% Confidence Intervals\n", "\n", + "This section generates a plot comparing the coefficients and 95% confidence intervals for each model type. The plot helps visualize the differences in the estimated coefficients and their uncertainties." + ] + }, + { + "cell_type": "code", + "execution_count": 48, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Manual Tuned Summary:\n", + " coef std err t P>|t| 2.5 % 97.5 %\n", + "d 0.552414 0.032577 16.95697 1.709343e-64 0.488563 0.616264\n", + "API Tuned Summary:\n", + " coef std err t P>|t| 2.5 % 97.5 %\n", + "d 0.554143 0.032679 16.957114 1.705155e-64 0.490093 0.618193\n", + "Untuned Summary:\n", + " coef std err t P>|t| 2.5 % 97.5 %\n", + "d 0.643582 0.026402 24.3761 3.066249e-131 0.591835 0.69533\n", + "Dummy Summary:\n", + " coef std err t P>|t| 2.5 % 97.5 %\n", + "d 0.699246 0.022814 30.649577 2.677185e-206 0.654531 0.743961\n", + "Extracted model labels: Index(['FLAML Manual Tuned', 'FLAML API Tuned', 'AutoML Untuned', 'Dummy'], dtype='object', name='Model Type')\n", + "Extracted coefficient values: [0.55241377 0.55414277 0.64358224 0.69924583]\n" + ] + }, + { + "data": { + "image/png": "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9e7dW9evX9fw4cP13nvv2blKAPYSHh6uli1bysfHR5MmTZL0aADG77//XgMHDlT37t01YsQIO1cJIKkLCgpS1apVVa9ePQ0bNkyS9PDhQ7311ls6ceKE5syZoypVqlj2iANI3sxmc6x7szt27KgDBw5o9+7ddqjKGnu6YXPRv+tkyJBBoaGhunz5sqXdz89Pffv21dmzZ9W/f3/2eAOvMEdHR128eFEhISGWtkyZMqlly5aqVauWRo0axeBqAJ7LyclJkZGRypkzp6RHgdvZ2VmrV6+Wp6en+vfvr3Xr1rHHG0ghogP3uXPnFB4ebmkfPXq0Ll++rMmTJ9urNAtCN2ziyQMoovdq582bV5cvX9by5csVGRlpaU+fPr1KlSqlGjVq6M0337RLvQDsz8nJSfXr19f58+e1f/9+S3vGjBnl5+enggULas2aNQoMDLRfkQCSvDRp0ih16tRavXq1pEfneD98+FCurq4qXLiw9u7dqy+++MIy4BqA5G/BggWqUaOGGjdurH379unOnTvKmDGj6tevrz179shsNsueB3gTupHoDMOQyWTS7t27tXDhQg0fPlznz59XhQoVNHLkSPXs2VOTJ0/WqVOnFB4erpUrVyp37twaPny4Xn/9dXuXD+AliP6P78qVKzp16pRu3rwpSXr77bd1/fp1zZw5U//884+l/82bN9WsWTPt2bNH3t7edqkZQNITvS25deuWgoODdeXKFUnSoEGDLKewSY+Ct8lkUrZs2bR9+3b9/vvvSpUqld3qBvDfPB2gGzdurH79+ilVqlSqVauWPvnkE61YsUKNGjXSDz/8oO3bt1t2+NkD53TDJn7++Wd17txZxYoV0/3793XkyBENGTJEPXr00DfffKPRo0crbdq0Sp06tS5evKitW7eqRIkS9i4bwEsQ/cPcihUr1L9/f0VGRsrBwUHVq1fX0KFDtXPnTg0YMEBp06aVt7e3nJyc9Mcff2jXrl0qUKCAvcsHkEREb0t+/fVXTZw4UVevXlXmzJn13nvvqWvXrpo4caImTpyowoULq2rVqjp69KgWL16so0ePKkeOHPYuH8ALevIc7sDAQEVERCh79uyW6StXrtTOnTv13Xff6e2339Yvv/yiZs2aafr06XJzc7NL+CZ0I9EdOHBAb731lkaPHq3WrVsrLCxMqVKl0siRI9WvXz9J0r59+3Th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yf+Q8idxePkrJPo/sfbt26tJkyaWUQDje6g5gJTPbDbrjTfeUEREhJYuXarChQvHe97w8PAU98s0gBcX/R0iODhY8+fPl6urqz7++GMFBwfr66+/1pgxYzR79my1atVKYWFhunjxovbv368yZcooZ86c9i4fwAu6du2abty4oQMHDqhEiRLKli2bpk2bpqFDh2r27Nlq0aKFpe/x48dVtmxZ3b17N0YoT0nY0/0KcXR01LvvvisHBwd9+OGHkqTp06c/d483gJTtyc+/g4OD1q1bp//973/66KOPNH36dBUpUiReyyFwA6+26JAdPehq9OWASpUqpYIFC2r48OGSJE9PTw0ZMkQmk0nt2rWTg4ODWrZsqfz58zMuBJDMLV++XLNnz9a+ffsUGhqqyMhI1axZU4MGDZK7u7tat24tSZbg7erqqq5du6pEiRJ699137Vm6TZGoXjEODg6qX7++Fi5cqO+//14ff/yxpGef4w0g5TKbzTKZTLp3757u3r2rixcvysvLS7t27dLFixf18ccf6/Dhw/YuE0Ay4ODgoNOnT6t58+Y6duyYJCl79uxq3bq1jhw5oqCgIEmPtjtOTk4aMmSIvvzyS7Vq1UpLliyxY+UAEsPMmTPVoUMHVatWTYsWLdLFixfVt29fnTx5Ui1atFD58uX11Vdf6cMPP9SQIUO0bNkyde/eXQcPHlTjxo3l5OSkyMhIe6+GTXB4+SsqPDxca9as0YcffqgWLVrE61BzAClL9F6po0ePqlevXrpw4YLCw8M1dOhQffjhh7px44beeOMNvf766wna4w3g1XXp0iXlyJFDderU0bfffqu8efPq1q1b+vzzz/XDDz9o7dq1qly5suX7RmRkpMaOHat33333meNIAEjaZs6cqa5du+rHH3/Ue++9ZzVtyZIlGjlypDw9PbVixQr98MMPGjNmjNKkSSMvLy9t2LBBzs7Odqr85SB0p3DR/6n9888/OnPmjO7evatmzZrJzc1NUVFRWrVqlT788EM1b95cM2bMsJoHQMoVHbj379+vihUrqnXr1sqYMaMOHDiglStX6qefftIHH3ygW7du6Y033lC2bNkI3gCeKXrQowsXLqhUqVIqUaKEpk2bprx58yooKEg9evTQkiVL9Pvvv1sFbwDJW/RAaUOGDNGgQYMsR89GRUXJyenR2cyTJ09Wnz59tGjRIr3//vs6f/68XFxclDlzZjk4OCgyMtLSNyUidKdg0f+ZLV++XN27d1eGDBkUFRWl+/fva9WqVSpSpIjMZrNWrlypdu3aqU6dOvrxxx/tXTaAl+TEiRMqUqSIRo8erd69e0uSLly4oPfee0+vvfaafvnlF6VOndoSvHPmzKlJkyapRIkS9i0cQJLw5GCr0YE7+t/z58+rdOnSKlGihKZOnap8+fLp9u3b+uyzz7R8+XL9/PPPqlGjhp3XAEBiOHXqlNq3b68MGTLos88+U8WKFS3TntxOFCtWTBUqVNC0adOs2l+FgZtT9tq94kwmkzZv3qwOHTpoyJAhOnDggH766SedP39e7733nnbt2iUHBwc1bNhQ/v7++vPPP3X16lV7lw3gJXj48KFmz56tqKgoValSxdKWI0cOFS5cWKlSpZK7u7sePnyo1157Tf/884/27dunvn37KiIiwr7FA0gSHBwcdP78ed25c8cqcEdGRipnzpzas2eP9u/fr+7duysoKEgZMmTQ2LFjVatWLcs1uQEkf/ny5dPs2bMVHh6ukSNH6q+//rJMiz6aJSQkRA8ePJCPj48k68GaU3rglgjdKVpoaKg2btyonj17qn379rp06ZLq1q2r9u3bK1euXGrcuLH+/vtvmUwmffDBBzp+/LiyZMli77IBvATOzs5q1aqVWrdurdq1aysgIEDOzs46d+6cli9frurVq8vBwUHOzs6KjIxUhgwZdOHCBX333XdycXGxd/kAkoCwsDB17txZRYsW1e3bty3BO3owpJw5c2rbtm36888/NWjQIElSpkyZNH36dO3du1fu7u52XgMAiSVfvnz69ttvZTKZNGLECG3bts1q+tmzZ5UtWzb973//k6RXbgBnDi9P4davX69MmTIpV65cql27tooXL67p06dr27ZtqlixojJkyKA//vhDfn5+9i4VwEvy5GFcJ0+e1IgRI/T777/ru+++04ABA1SrVi1NmzZN0uPTVKL3YAFANMMwtHnzZg0ZMkR37tzR5s2bLaeyRe/xdnJy0sKFCzVo0CBt2rSJ628DKdypU6f06aefyjAMDRgwQBUrVlRkZKQaNGggBwcHrVy58pXYs/20V2+NXwF79+7VL7/8IkmqWbOmSpQooQMHDigqKkrdu3eXJDk5OalRo0aqUaOG0qZNa89yAdiY2WyW9OjwcUmWAUsk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hbCwMNauXcvBgwfp1q2bFaoXERERERGR37o6HboBvvvuOzp37szs2bN56aWXLCuQb9q0iTZt2tCnTx8AVq5cSVJSEh07dsRkMvHee++RlpaGr6+vlVsgIiIiIiIiv1V1esswk8nE2rVrady4Mc7OzsCt1csXLVpEQkICH330keXa8PBwjEYjr7zyCufPn1fgFhERERERkV+sToduo9FIWFgYJSUlbNmyBXt7e4qLi0lISGDDhg34+/sD/56GHhoaioODA4GBgbRv397K1YuIiIiIiMhvXZ2fXg5QWFjI4sWL2bt3L3l5eezevZu+fftSWVmJjY0N8O/gLSIiIiIiIvJrqRcp08XFhZiYGAYOHMhDDz1EZmYmADY2NpYtwhS4RURERERE5NdWp6eX365Vq1ZERUVhMpnYtm0bFRUVREZGWrYIU+gWERERERGRX1u9mF5+O/NU88zMTPr168eCBQusXZKIiIiIiIjUUfVueNfFxYXo6Gg6duzI4cOHuXz5srVLEhERERERkTqq3o10m50/fx64Ne1cREREREREpDrU29AtIiIiIiIiUt3q3fRyERERERERkZqi0C0iIiIiIiJSTRS6RURERERERKqJQreIiIiIiIhINVHoFhEREREREakmCt0iIiIiIiIi1UShW0RERERERKSaKHSLiIjI/yw1NRWDwUBRUdE93/O73/2O1157rdpqEhERqU0UukVEROqwcePGYTAYCAkJ+cm50NBQDAYD48aNq/nCRERE6gmFbhERkTqubdu2bNmyhdLSUsuxsrIy3n33Xdq1a2fFykREROo+hW4REZE6zs/Pj7Zt27Jjxw7LsR07dtCuXTt8fX0tx27evMm0adNo2bIl9vb29OzZk/T09Ds+6+OPP8bd3R0HBwf69OnDP/7xj5/8vrS0NAICAnBwcKBt27ZMmzaNGzduVFv7REREajOFbhERkXogODiYdevWWX5eu3Yt48ePv+OauXPnsn37djZs2EBGRgYdOnRg4MCBXLlyBYAzZ87w5JNP8vjjj5OVlcXEiRP5y1/+csdn5OXlMWjQIEaMGEF2djZJSUmkpaURFhZW/Y0UERGphRS6RURE6oGxY8eSlpZGfn4++fn5HDp0iLFjx1rO37hxgzfeeIMVK1bwxz/+kYceeoi33noLBwcH3n77bQDeeOMN2rdvT3x8PB4eHowZM+Yn74PHxcUxZswYZsyYQceOHfn9739PQkICGzdupKysrCabLCIiUivYWrsAERERqX4tWrRgyJAhrF+/nqqqKoYMGULz5s0t5/Py8igvL+cPf/iD5ViDBg145JFHyMnJASAnJ4dHH330js/t0aPHHT9/9dVXZGdns3nzZsuxqqoqTCYTp0+fxtPTszqaJyIiUmspdIuIiNQTwcHBlmneq1evrpbfcf36dSZPnsy0adN+ck6LtomISH2k0C0iIlJPDBo0iB9++AGDwcDAgQPvONe+fXsaNmzIoUOHcHNzA6C8vJz09HRmzJgBgKenJx988MEd933++ed3/Ozn58exY8fo0KFD9TVERETkN0TvdIuIiNQTNjY25OTkcOzYMWxsbO4416hRI6ZMmcKcOXNITk7m2LFjTJo0iZKSEiZMmABASEgIJ0+eZM6cOZw4cYJ3332X9evX3/E5kZGRHD58mLCwMLKysjh58iS7du3SQmoiIlJvKXSLiIjUI02aNKFJkyY/e27p0qWMGDGCoKAg/Pz8+O6779i9ezf3338/cGt6+Pbt23n//ffx8fHhzTffZMmSJXd8hre3NwcOHCA3N5eAgAB8fX2JjY3F1dW12tsmIiJSGxmqqqqqrF2EiIiIiIiISF2kkW4RERERERGRaqLQLSIiIiIiIlJNFLpFREREREREqolCt4iIiIiIiEg1UegWERERERERqSYK3SIiIiIiIiLVRKFbREREREREpJoodIuIiIiIiIhUE4VuERERERERkWqi0C0iIiIiIiJSTRS6RURERERERKqJQreIiIiIiIhINfk/f/yxg5cVvKgAAAAASUVORK5CYII=", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ "# Check the structure of the summary DataFrames\n", - "print(\"Tuned Summary:\")\n", - "print(tuned_summary.head())\n", + "print(\"Manual Tuned Summary:\")\n", + "print(manual_tuned_summary.head())\n", + "\n", + "print(\"API Tuned Summary:\")\n", + "print(api_tuned_summary.head())\n", "\n", "print(\"Untuned Summary:\")\n", "print(untuned_automl_summary.head())\n", @@ -299,7 +729,63 @@ "plt.xticks(rotation=45)\n", "plt.tight_layout()\n", "plt.show()\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "##### Compare Metrics and Plot Bar Charts\n", "\n", + "In this section, we compare metrics for different models and plot a bar chart to visualize the differences in their performance. We also save the comparison results to a file for future reference." + ] + }, + { + "cell_type": "code", + "execution_count": 51, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Summary DataFrame columns: Index(['coef', 'std err', 't', 'P>|t|', '2.5 %', '97.5 %'], dtype='object')\n", + "Summary DataFrame index: Index(['d'], dtype='object')\n", + "Available metrics: Index(['d'], dtype='object')\n", + "Summary DataFrame columns: Index(['coef', 'std err', 't', 'P>|t|', '2.5 %', '97.5 %'], dtype='object')\n", + "Summary DataFrame index: Index(['d'], dtype='object')\n", + "Available metrics: Index(['d'], dtype='object')\n", + "Summary DataFrame columns: Index(['coef', 'std err', 't', 'P>|t|', '2.5 %', '97.5 %'], dtype='object')\n", + "Summary DataFrame index: Index(['d'], dtype='object')\n", + "Available metrics: Index(['d'], dtype='object')\n", + "Summary DataFrame columns: Index(['coef', 'std err', 't', 'P>|t|', '2.5 %', '97.5 %'], dtype='object')\n", + "Summary DataFrame index: Index(['d'], dtype='object')\n", + "Available metrics: Index(['d'], dtype='object')\n" + ] + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAnYAAAHWCAYAAAD6oMSKAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAABfKklEQVR4nO3deVxN+f8H8Ne97SGhlIiMJYRqyjpDluxjmbENg4QYZIwMJpEtsiaRyZZtGBmMGcvYarIbpuxkjbKUbEWl5d7P7w+/7ugrMxnVuZ1ez8fjPr5zP+dz7n3fb8ft1fmcz+cohBACRERERFTsKaUugIiIiIgKBoMdERERkUww2BERERHJBIMdERERkUww2BERERHJBIMdERERkUww2BERERHJBIMdERERkUww2BERERHJBIMdEdH/y87OxsSJE2FtbQ2lUokePXoU6vu1atUKrVq1KrTX37hxI+rUqQM9PT2YmpoW2vsQkfZgsCOiIrFu3TooFAooFAocO3bsre1CCFhbW0OhUOCzzz7Lte3ly5eYNm0a6tevj1KlSqFChQpwcHDA2LFj8eDBA02/6dOna94jr0dCQsI/1hgaGooFCxagV69eWL9+PcaNG1cwH14CMTExGDx4MGrUqIFVq1Zh5cqV+dpvwIABMDQ0xPXr19/aNnfuXCgUCuzevbugyyWiAqIrdQFEVLIYGhpi8+bN+PTTT3O1Hz58GPfu3YOBgUGu9qysLLRs2RIxMTFwc3PDmDFj8PLlS1y+fBmbN2/G559/Disrq1z7/PDDDyhduvRb7/1vZ60iIiJQuXJlLF68+L99OC0SGRkJtVqNJUuWoGbNmvneLyAgAHv37sXXX3+NiIgITXtsbCxmzpyJnj17vhW8iUh7MNgRUZHq3Lkzfv75ZwQFBUFX9++voM2bN8PJyQmPHz/O1X/nzp04e/YsNm3ahP79++fa9urVK2RmZr71Hr169YKZmdl71/bo0aMCHbJUq9XIzMyEoaFhgb1mfj169AjAv4fZ/1WxYkXMmzcPw4cPx/r16+Hm5gYAGDVqFPT09LBkyZKCLpWIChCHYomoSPXr1w9PnjzBwYMHNW2ZmZnYtm3bW8ENAG7dugUA+OSTT97aZmhoCBMTkw+u6c6dO1AoFPjjjz9w+fJlzdBtZGQkACA1NRXjx4+HtbU1DAwMYGtri4ULF0IIket1FAoFPD09sWnTJtjZ2cHAwAD79u374Pr+1/LlyzWvb2VlhdGjR+P58+ea7TY2Npg2bRoAwNzcHAqFAtOnT8/36w8bNgyffPIJvvvuOzx58gRbtmzBvn374Ofnh8qVKxfwpyGigsRgR0RFysbGBs2aNcNPP/2kafv999+RnJyML7/88q3+1apVAwBs2LDhrSD1Lk+fPsXjx49zPd4MPv/L3NxcM9GgSpUq2LhxIzZu3Ii6detCCIFu3bph8eLF6NixIwICAmBra4sJEybAy8vrrdeKiIjAuHHj0LdvXyxZsgQ2Njb5qjm/pk+fjtGjR8PKygqLFi1Cz549sWLFCrRv3x5ZWVkAgMDAQHz++ecAXg9Lb9y4EV988UW+30OhUGDFihVITk7GyJEjMW7cODg7O2P06NEF+lmIqBAIIqIisHbtWgFAnDlzRixbtkyUKVNGpKWlCSGE6N27t2jdurUQQohq1aqJLl26aPZLS0sTtra2AoCoVq2aGDx4sFizZo1ITEx86z2mTZsmAOT5sLW1/dcaXVxchJ2dXa62nTt3CgDCz88vV3uvXr2EQqEQN2/e1LQBEEqlUly+fDlf/5+4uLgIFxeXfPUVQohHjx4JfX190b59e6FSqTTty5YtEwBEaGiopi3n/4ukpKR8v/7/8vb2FgCEjo6OiIqK+s+vQ0RFh2fsiKjI9enTB+np6di9ezdevHiB3bt35zkMCwBGRkb4888/MWHCBACvZ9cOHToUlSpVwpgxY5CRkfHWPtu3b8fBgwdzPdauXfufat27dy90dHTwzTff5GofP348hBD4/fffc7W7uLigXr16/+m9/s2hQ4eQmZmJb7/9Fkrl31/fHh4eMDExwZ49ewr0/XKuU7SyskL9+vUL9LWJqHBw8gQRFTlzc3O4urpi8+bNSEtLg0qlQq9evd7Zv2zZspg/fz7mz5+Pu3fvIjw8HAsXLsSyZctQtmxZ+Pn55erfsmXL/zR5Ii93796FlZUVypQpk6u9bt26mu1vql69eoG877tqAQBbW9tc7fr6+vjoo4/equVDxMfHa5aYuXTpEubPn48pU6YU2OsTUeHgGTsikkT//v3x+++/IyQkBJ06dcr37M1q1aphyJAhOH78OExNTbFp06bCLfQ9GRkZSV1CgfD09ATw+vrH3r17Y/bs2bh9+7bEVRHRv2GwIyJJfP7551AqlTh16tQ7h2H/Sbly5VCjRg08fPiwEKr7W7Vq1fDgwQO8ePEiV3tMTIxme1HJea9r167las/MzERsbGyB1fLLL7/gt99+w6xZs1ClShUEBgZCX1+fkyeIigEGOyKSROnSpfHDDz9g+vTp6Nq16zv7nT9//q217YDXw5JXrlx5a1iyoHXu3BkqlQrLli3L1b548WIoFAp06tSpUN//Ta6urtDX10dQUFCuGcJr1qxBcnIyunTp8sHv8eLFC3zzzTdwdHTEmDFjALy+xm7WrFnYt28ffv755w9+DyIqPLzGjogkk7P47T85ePAgpk2bhm7duqFp06YoXbo0bt++jdDQUGRkZOS5Ptu2bdvyvPNEu3btYGFh8V41du3aFa1bt4aPjw/u3LkDe3t7HDhwAL/++iu+/fZb1KhR471e70OYm5vD29sbM2bMQMeOHdGtWzdcu3YNy5cvR6NGjTBgwIAPfo8pU6bgwYMH2LFjB3R0dDTto0ePxvr16/Htt9+iY8eOb11zSETagcGOiLRaz5498eLFCxw4cAARERF4+vQpypUrh8aNG2P8+PFo3br1W/uMHDkyz9f6448/3jvYKZVK/Pbbb/D19UVYWBjWrl0LGxsbLFiwAOPHj/9Pn+lDTJ8+Hebm5li2bBnGjRuH8uXLY/jw4ZgzZw709PQ+6LWjoqIQHByMUaNGoVGjRrm26ejoICQkBE2bNsWUKVN4BwoiLaUQIp8rfhIRERGRVuM1dkREREQywaFYIiItkJSUBJVK9c7t+vr6KF++/H9+/ZcvX+Lly5f/2Mfc3DzXdXVEVPxwKJaISAvY2Nj84wLDLi4uiIyM/M+vP336dMyYMeMf+8TGxhb4vW2JqGgx2BERaYHjx48jPT39ndvLlSsHJyen//z6t2/f/tcFhj/99FMYGhr+5/cgIukx2BERERHJBCdPEBEREclEiZs8oVar8eDBA5QpUwYKhULqcoiIiIj+kRACL168gJWVFZTKfz4nV+KC3YMHD2BtbS11GURERETvJT4+HlWqVPnHPiUu2OXcBic+Ph4mJiYSV0NERET0z1JSUmBtbZ2vW/mVuGCXM/xqYmLCYEdERETFRn4uIePkCSIiIiKZYLAjIiIikgkGOyIiIiKZYLAjIiIikgkGOyIiIiKZYLAjIiIikgkGOyIiIiKZ0IpgFxwcDBsbGxgaGqJJkyY4ffr0O/u2atUKCoXirUeXLl2KsGIiIiIi7SN5sAsLC4OXlxemTZuG6Oho2Nvbo0OHDnj06FGe/Xfs2IGHDx9qHpcuXYKOjg569+5dxJUTERERaRfJg11AQAA8PDzg7u6OevXqISQkBMbGxggNDc2zf/ny5WFpaal5HDx4EMbGxgx2REREVOJJGuwyMzMRFRUFV1dXTZtSqYSrqytOnjyZr9dYs2YNvvzyS5QqVaqwyiQiIiIqFiS9V+zjx4+hUqlgYWGRq93CwgIxMTH/uv/p06dx6dIlrFmz5p19MjIykJGRoXmekpLy3wsmIiIi0mKSBrsPtWbNGjRo0ACNGzd+Zx9/f3/MmDGjCKsiIiIqXmy+3yN1CVrpztziNzFT0qFYMzMz6OjoIDExMVd7YmIiLC0t/3Hf1NRUbNmyBUOHDv3Hft7e3khOTtY84uPjP7huIiIiIm0kabDT19eHk5MTwsPDNW1qtRrh4eFo1qzZP+77888/IyMjAwMGDPjHfgYGBjAxMcn1ICIiIpIjyYdivby84ObmBmdnZzRu3BiBgYFITU2Fu7s7AGDQoEGoXLky/P39c+23Zs0a9OjRAxUqVJCibCIiIiKtI3mw69u3L5KSkuDr64uEhAQ4ODhg3759mgkVcXFxUCpzn1i8du0ajh07hgMHDkhRMhEREZFWUgghhNRFFKWUlBSULVsWycnJHJYlIiICJ0+8i7ZMnnif7CL5AsVEREREVDAY7IiIiIhkgsGOiIiISCYY7IiIiIhkgsGOiIiISCYY7IiIiIhkgsGOiIiISCYY7IiIiIhkgsGOiIiISCYY7IiIiIhkgsGOiIiISCYY7IiIiIhkgsGOiIiISCYY7IiIiIhkgsGOiIiISCYY7IiIiIhkgsGOiIiISCZ0pS6AiIgKh833e6QuQevcmdtF6hKIChXP2BERERHJBIMdERERkUww2BERERHJBIMdERERkUww2BERERHJBIMdERERkUww2BERERHJBIMdERERkUww2BERERHJBIMdERERkUww2BERERHJBIMdERERkUww2BERERHJhOTBLjg4GDY2NjA0NESTJk1w+vTpf+z//PlzjB49GpUqVYKBgQFq166NvXv3FlG1RERERNpLV8o3DwsLg5eXF0JCQtCkSRMEBgaiQ4cOuHbtGipWrPhW/8zMTLRr1w4VK1bEtm3bULlyZdy9exempqZFXzwRERGRlpE02AUEBMDDwwPu7u4AgJCQEOzZswehoaH4/vvv3+ofGhqKp0+f4sSJE9DT0wMA2NjYFGXJRERERFpLsqHYzMxMREVFwdXV9e9ilEq4urri5MmTee7z22+/oVmzZhg9ejQsLCxQv359zJkzByqV6p3vk5GRgZSUlFwPIiIiIjmSLNg9fvwYKpUKFhYWudotLCyQkJCQ5z63b9/Gtm3boFKpsHfvXkydOhWLFi2Cn5/fO9/H398fZcuW1Tysra0L9HMQERERaQvJJ0+8D7VajYoVK2LlypVwcnJC37594ePjg5CQkHfu4+3tjeTkZM0jPj6+CCsmIiIiKjqSXWNnZmYGHR0dJCYm5mpPTEyEpaVlnvtUqlQJenp60NHR0bTVrVsXCQkJyMzMhL6+/lv7GBgYwMDAoGCLJyIiItJCkp2x09fXh5OTE8LDwzVtarUa4eHhaNasWZ77fPLJJ7h58ybUarWm7fr166hUqVKeoY6IiIioJJF0KNbLywurVq3C+vXrcfXqVYwcORKpqamaWbKDBg2Ct7e3pv/IkSPx9OlTjB07FtevX8eePXswZ84cjB49WqqPQERERKQ1JF3upG/fvkhKSoKvry8SEhLg4OCAffv2aSZUxMXFQan8O3taW1tj//79GDduHBo2bIjKlStj7NixmDRpklQfgYiIiEhrSBrsAMDT0xOenp55bouMjHyrrVmzZjh16lQhV0VERERU/BSrWbFERERE9G4MdkREREQywWBHREREJBMMdkREREQywWBHREREJBMMdkREREQywWBHREREJBMMdkREREQywWBHREREJBMMdkREREQywWBHREREJBMMdkREREQyoSt1AUSUfzbf75G6BK10Z24XqUsgItIKDHYS4y/qvPEXNRER0fvjUCwRERGRTDDYEREREckEgx0RERGRTDDYEREREckEgx0RERGRTDDYEREREckEgx0RERGRTDDYEREREckEgx0RERGRTDDYEREREckEgx0RERGRTDDYEREREckEgx0RERGRTDDYEREREckEgx0RERGRTDDYEREREcmEVgS74OBg2NjYwNDQEE2aNMHp06ff2XfdunVQKBS5HoaGhkVYLREREZF2kjzYhYWFwcvLC9OmTUN0dDTs7e3RoUMHPHr06J37mJiY4OHDh5rH3bt3i7BiIiIiIu0kebALCAiAh4cH3N3dUa9ePYSEhMDY2BihoaHv3EehUMDS0lLzsLCwKMKKiYiIiLSTpMEuMzMTUVFRcHV11bQplUq4urri5MmT79zv5cuXqFatGqytrdG9e3dcvny5KMolIiIi0mqSBrvHjx9DpVK9dcbNwsICCQkJee5ja2uL0NBQ/Prrr/jxxx+hVqvRvHlz3Lt3L8/+GRkZSElJyfUgIiIikiPJh2LfV7NmzTBo0CA4ODjAxcUFO3bsgLm5OVasWJFnf39/f5QtW1bzsLa2LuKKiYiIiIqGpMHOzMwMOjo6SExMzNWemJgIS0vLfL2Gnp4eHB0dcfPmzTy3e3t7Izk5WfOIj4//4LqJiIiItJGkwU5fXx9OTk4IDw/XtKnVaoSHh6NZs2b5eg2VSoWLFy+iUqVKeW43MDCAiYlJrgcRERGRHOlKXYCXlxfc3Nzg7OyMxo0bIzAwEKmpqXB3dwcADBo0CJUrV4a/vz8AYObMmWjatClq1qyJ58+fY8GCBbh79y6GDRsm5ccgIiIikpzkwa5v375ISkqCr68vEhIS4ODggH379mkmVMTFxUGp/PvE4rNnz+Dh4YGEhASUK1cOTk5OOHHiBOrVqyfVRyAiIiLSCpIHOwDw9PSEp6dnntsiIyNzPV+8eDEWL15cBFURERERFS/FblYsEREREeWNwY6IiIhIJhjsiIiIiGSCwY6IiIhIJhjsiIiIiGSCwY6IiIhIJhjsiIiIiGSCwY6IiIhIJhjsiIiIiGSCwY6IiIhIJhjsiIiIiGSCwY6IiIhIJhjsiIiIiGSCwY6IiIhIJhjsiIiIiGSCwY6IiIhIJhjsiIiIiGSCwY6IiIhIJhjsiIiIiGSCwY6IiIhIJhjsiIiIiGSCwY6IiIhIJhjsiIiIiGSCwY6IiIhIJhjsiIiIiGSCwY6IiIhIJhjsiIiIiGSCwY6IiIhIJhjsiIiIiGSCwY6IiIhIJhjsiIiIiGRCK4JdcHAwbGxsYGhoiCZNmuD06dP52m/Lli1QKBTo0aNH4RZIREREVAxIHuzCwsLg5eWFadOmITo6Gvb29ujQoQMePXr0j/vduXMH3333HVq0aFFElRIRERFpN8mDXUBAADw8PODu7o569eohJCQExsbGCA0Nfec+KpUKX331FWbMmIGPPvqoCKslIiIi0l6SBrvMzExERUXB1dVV06ZUKuHq6oqTJ0++c7+ZM2eiYsWKGDp06L++R0ZGBlJSUnI9iIiIiORI0mD3+PFjqFQqWFhY5Gq3sLBAQkJCnvscO3YMa9aswapVq/L1Hv7+/ihbtqzmYW1t/cF1ExEREWkjyYdi38eLFy8wcOBArFq1CmZmZvnax9vbG8nJyZpHfHx8IVdJREREJI33Cnbz589Henq65vnx48eRkZGhef7ixQuMGjUq369nZmYGHR0dJCYm5mpPTEyEpaXlW/1v3bqFO3fuoGvXrtDV1YWuri42bNiA3377Dbq6urh169Zb+xgYGMDExCTXg4iIiEiO3ivYeXt748WLF5rnnTp1wv379zXP09LSsGLFiny/nr6+PpycnBAeHq5pU6vVCA8PR7Nmzd7qX6dOHVy8eBHnzp3TPLp164bWrVvj3LlzHGYlIiKiEk33fToLIf7x+X/h5eUFNzc3ODs7o3HjxggMDERqairc3d0BAIMGDULlypXh7+8PQ0ND1K9fP9f+pqamAPBWOxEREVFJ817BrjD07dsXSUlJ8PX1RUJCAhwcHLBv3z7NhIq4uDgolcXqUkAiIiIiSUge7ADA09MTnp6eeW6LjIz8x33XrVtX8AURERERFUPvHexWr16N0qVLAwCys7Oxbt06zQzVN6+/IyIiIqKi9V7BrmrVqrnWj7O0tMTGjRvf6kNERERERe+9gt2dO3cKqQwiIiIi+lCclUBEREQkE+8V7E6ePIndu3fnatuwYQOqV6+OihUrYvjw4bkWLCYiIiKiovNewW7mzJm4fPmy5vnFixcxdOhQuLq64vvvv8euXbvg7+9f4EUSERER0b97r2B37tw5tG3bVvN8y5YtaNKkCVatWgUvLy8EBQVh69atBV4kEREREf279wp2z5490ywcDACHDx9Gp06dNM8bNWqE+Pj4gquOiIiIiPLtvYKdhYUFYmNjAQCZmZmIjo5G06ZNNdtfvHgBPT29gq2QiIiIiPLlvYJd586d8f333+Po0aPw9vaGsbExWrRoodl+4cIF1KhRo8CLJCIiIqJ/917r2M2aNQtffPEFXFxcULp0aaxbtw76+vqa7aGhoWjfvn2BF0lERERE/+69gp2ZmRmOHDmC5ORklC5dGjo6Orm2//zzzyhTpkyBFkhERERE+fNewW7IkCH56hcaGvqfiiEiIiKi/+69gt26detQrVo1ODo6QghRWDURERER0X/wXsFu5MiR+OmnnxAbGwt3d3cMGDAA5cuXL6zaiIiIiOg9vNes2ODgYDx8+BATJ07Erl27YG1tjT59+mD//v08g0dEREQksfcKdgBgYGCAfv364eDBg7hy5Qrs7OwwatQo2NjY4OXLl4VRIxERERHlw3sHu1w7K5VQKBQQQkClUhVUTURERET0H7x3sMvIyMBPP/2Edu3aoXbt2rh48SKWLVuGuLg4lC5dujBqJCIiIqJ8eK/JE6NGjcKWLVtgbW2NIUOG4KeffoKZmVlh1UZERERE7+G9gl1ISAiqVq2Kjz76CIcPH8bhw4fz7Ldjx44CKY6IiIiI8u+9gt2gQYOgUCgKqxYiIiIi+gDvvUAxEREREWmnD5oVS0RERETag8GOiIiISCYY7IiIiIhkgsGOiIiISCYY7IiIiIhkgsGOiIiISCYY7IiIiIhkQiuCXXBwMGxsbGBoaIgmTZrg9OnT7+y7Y8cOODs7w9TUFKVKlYKDgwM2btxYhNUSERERaSfJg11YWBi8vLwwbdo0REdHw97eHh06dMCjR4/y7F++fHn4+Pjg5MmTuHDhAtzd3eHu7o79+/cXceVERERE2kXyYBcQEAAPDw+4u7ujXr16CAkJgbGxMUJDQ/Ps36pVK3z++eeoW7cuatSogbFjx6Jhw4Y4duxYEVdOREREpF0kDXaZmZmIioqCq6urpk2pVMLV1RUnT5781/2FEAgPD8e1a9fQsmXLwiyViIiISOu9171iC9rjx4+hUqlgYWGRq93CwgIxMTHv3C85ORmVK1dGRkYGdHR0sHz5crRr1y7PvhkZGcjIyNA8T0lJKZjiiYiIiLSMpMHuvypTpgzOnTuHly9fIjw8HF5eXvjoo4/QqlWrt/r6+/tjxowZRV8kERERURGTNNiZmZlBR0cHiYmJudoTExNhaWn5zv2USiVq1qwJAHBwcMDVq1fh7++fZ7Dz9vaGl5eX5nlKSgqsra0L5gMQERERaRFJr7HT19eHk5MTwsPDNW1qtRrh4eFo1qxZvl9HrVbnGm59k4GBAUxMTHI9iIiIiORI8qFYLy8vuLm5wdnZGY0bN0ZgYCBSU1Ph7u4OABg0aBAqV64Mf39/AK+HVp2dnVGjRg1kZGRg79692LhxI3744QcpPwYRERGR5CQPdn379kVSUhJ8fX2RkJAABwcH7Nu3TzOhIi4uDkrl3ycWU1NTMWrUKNy7dw9GRkaoU6cOfvzxR/Tt21eqj0BERESkFSQPdgDg6ekJT0/PPLdFRkbmeu7n5wc/P78iqIqIiIioeJF8gWIiIiIiKhgMdkREREQywWBHREREJBMMdkREREQywWBHREREJBMMdkREREQywWBHREREJBMMdkREREQywWBHREREJBMMdkREREQywWBHREREJBMMdkREREQywWBHREREJBMMdkREREQywWBHREREJBMMdkREREQywWBHREREJBMMdkREREQywWBHREREJBMMdkREREQywWBHREREJBMMdkREREQywWBHREREJBMMdkREREQywWBHREREJBMMdkREREQywWBHREREJBMMdkREREQywWBHREREJBMMdkREREQywWBHREREJBNaEeyCg4NhY2MDQ0NDNGnSBKdPn35n31WrVqFFixYoV64cypUrB1dX13/sT0RERFRSSB7swsLC4OXlhWnTpiE6Ohr29vbo0KEDHj16lGf/yMhI9OvXD3/88QdOnjwJa2trtG/fHvfv3y/iyomIiIi0i+TBLiAgAB4eHnB3d0e9evUQEhICY2NjhIaG5tl/06ZNGDVqFBwcHFCnTh2sXr0aarUa4eHhRVw5ERERkXaRNNhlZmYiKioKrq6umjalUglXV1ecPHkyX6+RlpaGrKwslC9fPs/tGRkZSElJyfUgIiIikiNJg93jx4+hUqlgYWGRq93CwgIJCQn5eo1JkybBysoqVzh8k7+/P8qWLat5WFtbf3DdRERERNpI8qHYDzF37lxs2bIFv/zyCwwNDfPs4+3tjeTkZM0jPj6+iKskIiIiKhq6Ur65mZkZdHR0kJiYmKs9MTERlpaW/7jvwoULMXfuXBw6dAgNGzZ8Zz8DAwMYGBgUSL1ERERE2kzSM3b6+vpwcnLKNfEhZyJEs2bN3rnf/PnzMWvWLOzbtw/Ozs5FUSoRERGR1pP0jB0AeHl5wc3NDc7OzmjcuDECAwORmpoKd3d3AMCgQYNQuXJl+Pv7AwDmzZsHX19fbN68GTY2Nppr8UqXLo3SpUtL9jmIiIiIpCZ5sOvbty+SkpLg6+uLhIQEODg4YN++fZoJFXFxcVAq/z6x+MMPPyAzMxO9evXK9TrTpk3D9OnTi7J0IiIiIq0iebADAE9PT3h6eua5LTIyMtfz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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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Cpvs19gVlqZNm+LkyZM4fPgwvLy80KlTp7det/c+/P39kZycLL3u3LlTgNUSERERfTxZg525uTm0tLSQlJSk1p6UlARLS8s857G0tHyv/kZGRqhcuTLq16+PpUuXQltbG0uXLpWW8b8hLzs7G0+ePHnrevX09GBsbKz2IiIiIipOZA12urq6cHFxQWRkpNSmUqkQGRkJNze3POdxc3NT6w8AERERb+3/+nIzMjKkZTx79gyxsbHS9KioKKhUKri6un7o5hARERHJSlvuAvz8/NC7d2/UqVMH9erVQ3BwMFJTU9G3b18AQK9evVC+fHkEBQUBAEaMGAF3d3fMnTsXrVu3xrp163DixAksWbIEAJCamooZM2agbdu2KFeuHB49eoSFCxfi3r176NixIwCgatWq8PLywoABAxAWFoasrCz4+vqiS5cu73VHLBEREVFxJHuw69y5Mx4+fIjAwEAkJibC2dkZO3fulG6QuH37NpTKfw4sNmjQAGvXrsWECRMwfvx42NnZYcuWLahevToAQEtLCxcvXsTKlSvx6NEjmJmZoW7dujhw4AAcHR2l5axZswa+vr5o3rw5lEol2rdvj5CQkKLdeCIiIqICJPs4dp8qjmNXPHGcMnXcN9Rx/yCiT9EnM44dERERERUcBjsiIiIiDcFgR0RERKQhGOyIiIiINASDHREREZGGYLAjIiIi0hAMdkREREQagsGOiIiISEMw2BERERFpCAY7IiIiIg3BYEdERESkIRjsiIiIiDQEgx0RERGRhmCwIyIiItIQDHZEREREGoLBjoiIiEhDMNgRERERaQgGOyIiIiINwWBHREREpCEY7IiIiIg0BIMdERERkYZgsCMiIiLSEAx2RERERBqCwY6IiIhIQzDYEREREWkIbbkLICKiomcz7i+5SyhWbs5sLXcJRAWCR+yIiIiINASDHREREZGGYLAjIiIi0hAMdkREREQagsGOiIiISEMw2BERERFpCAY7IiIiIg1RLILdwoULYWNjA319fbi6uuLYsWPv7L9hwwY4ODhAX18fNWrUwI4dO6RpWVlZGDt2LGrUqAEjIyNYWVmhV69eSEhIUFuGjY0NFAqF2mvmzJmFsn1ERERERUH2YBceHg4/Pz9MmjQJcXFxcHJygqenJx48eJBn/8OHD6Nr167w8fFBfHw8vL294e3tjbNnzwIA0tLS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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ "def print_scores(dml_obj, store_predictions=False):\n", " if store_predictions:\n", " dml_obj.fit(store_predictions=True)\n", @@ -321,82 +807,49 @@ "\n", "# Calculate and store scores for comparison\n", "scores = {\n", - " \"FLAML Tuned\": print_scores(dml_plr_obj_tuned, True),\n", + " \"FLAML Manual Tuned\": print_scores(obj_dml_plr_manual_tuned, True),\n", + " \"FLAML API Tuned\": print_scores(dml_plr_obj_api_tuned, True),\n", " \"AutoML Untuned\": print_scores(dml_plr_obj_untuned_automl, True),\n", " \"Dummy\": print_scores(dml_plr_obj_dummy, True)\n", "}\n", - "scores_df = pd.DataFrame(scores)\n", + "\n", + "# Convert the scores dictionary to a DataFrame for plotting\n", + "scores_df = pd.DataFrame(scores).T # Transpose to have the model types as rows\n", "\n", "# Save the scores to a file\n", "scores_df.to_pickle(\"scores_comparison.pkl\")\n", "\n", - "# Plot MSE scores\n", - "scores_df.plot(kind='bar', title='Comparison of Metrics for l_of_X and m_of_X')\n", - "plt.ylabel('Scores')\n", + "# Plot MSE for l_of_X and m_of_X separately\n", + "scores_df['coef'].plot(kind=\"bar\", title=\"MSE for l_of_X\")\n", + "plt.ylabel('MSE')\n", + "plt.xticks(rotation=45)\n", + "plt.tight_layout()\n", + "plt.show()\n", + "\n", + "scores_df['std err'].plot(kind=\"bar\", title=\"MSE for m_of_X\")\n", + "plt.ylabel('MSE')\n", "plt.xticks(rotation=45)\n", "plt.tight_layout()\n", "plt.show()" ] }, { - "cell_type": "code", - "execution_count": 21, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Summary DataFrame:\n", - " coef std err t P>|t| 2.5 % \\\n", - "Model Type Metric \n", - "FLAML Tuned d 0.464399 0.029765 15.602241 7.028275e-55 0.406061 \n", - "Manual Tuned d 0.606239 0.023633 25.651964 4.019974e-145 0.559919 \n", - "Dummy d 0.680642 0.020259 33.596561 1.883180e-247 0.640935 \n", - "\n", - " 97.5 % \n", - "Model Type Metric \n", - "FLAML Tuned d 0.522738 \n", - "Manual Tuned d 0.652559 \n", - "Dummy d 0.720350 \n" - ] - } - ], - "source": [ - "print(\"Summary DataFrame:\")\n", - "print(summary)" - ] - }, - { - "cell_type": "code", - "execution_count": 23, + "cell_type": "markdown", "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Available rows in summary:\n", - "Index(['d'], dtype='object')\n", - "Available columns in summary:\n", - "Index(['coef', 'std err', 't', 'P>|t|', '2.5 %', '97.5 %'], dtype='object')\n" - ] - } - ], "source": [ - "print(\"Available rows in summary:\")\n", - "print(dml_plr_obj_tuned.summary.index)\n", + "### Observations\n", + "\n", + "- **Coefficient Values**: The coefficients for the `FLAML Manual Tuned` and `FLAML API Tuned` models are quite similar, with the API-tuned model having a slightly higher coefficient. Both are lower compared to the `AutoML Untuned` and `Dummy` models.\n", + "- **Untuned AutoML Models**: The `AutoML Untuned` models yield a higher coefficient compared to the manually tuned FLAML models, indicating that the automated process of model tuning in AutoML may have overestimated the effect. The `Dummy` model has the highest coefficient, suggesting it could be overfitting or has a higher baseline value.\n", + "\n", + "### Conclusion\n", "\n", - "print(\"Available columns in summary:\")\n", - "print(dml_plr_obj_tuned.summary.columns)" + "- The **FLAML Manual Tuned** and **FLAML API Tuned** models provide similar results with coefficients close to 0.5, suggesting robust performance within their tuned configurations.\n", + "- The **AutoML Untuned** models offer higher coefficient values, indicating that even though they are untuned, they still provide a noticeable increase in coefficient compared to the tuned FLAML models.\n", + "- The **Dummy** model, having the highest coefficient, shows the largest discrepancy, which may imply it is not as well-calibrated as the other models.\n", + "\n", + "Overall, the manually tuned FLAML models and the API-tuned FLAML models show good alignment with the expectations, while the untuned and dummy models present larger coefficients which may suggest the need for further tuning or validation." ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] } ], "metadata": { From d244b5a859591eb0eef613224db21885c48e6421 Mon Sep 17 00:00:00 2001 From: PhilippBach Date: Thu, 19 Sep 2024 10:41:24 +0200 Subject: [PATCH 05/71] use r-lib actions to set up R on ubuntu-latest --- .github/workflows/deploy_docu_stable.yml | 23 +---------------------- 1 file changed, 1 insertion(+), 22 deletions(-) diff --git a/.github/workflows/deploy_docu_stable.yml b/.github/workflows/deploy_docu_stable.yml index 831b968c..e5b4992b 100644 --- a/.github/workflows/deploy_docu_stable.yml +++ b/.github/workflows/deploy_docu_stable.yml @@ -5,7 +5,6 @@ name: Deploy Docu (stable) on: workflow_dispatch: - jobs: build: @@ -27,34 +26,14 @@ jobs: python -m pip install --upgrade pip pip install -r requirements.txt - - name: Add R repository - run: | - sudo apt install dirmngr gnupg apt-transport-https ca-certificates software-properties-common - sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys E298A3A825C0D65DFD57CBB651716619E084DAB9 - sudo add-apt-repository 'deb https://cloud.r-project.org/bin/linux/ubuntu focal-cran40/' - name: Install R - run: | - sudo apt-get update - sudo apt-get install r-base - sudo apt-get install r-base-dev - sudo apt-get install -y zlib1g-dev libicu-dev pandoc make libcurl4-openssl-dev libssl-dev - - - name: Get user library folder - run: | - mkdir ${GITHUB_WORKSPACE}/tmp_r_libs_user - echo R_LIBS_USER=${GITHUB_WORKSPACE}/tmp_r_libs_user >> $GITHUB_ENV + uses: r-lib/actions/setup-r@v2 - name: Query R version run: | writeLines(sprintf("R-%i.%i", getRversion()$major, getRversion()$minor), ".github/R-version") shell: Rscript {0} - - name: Cache R packages - uses: actions/cache@v4 - with: - path: ${{ env.R_LIBS_USER }} - key: doubleml-user-guide-stable-${{ hashFiles('.github/R-version') }} - - name: Install R kernel for Jupyter and the R package DoubleML (dev) run: | install.packages('remotes') From 8318751ad040fd4abb108781d8ca296260be7b76 Mon Sep 17 00:00:00 2001 From: PhilippBach Date: Thu, 19 Sep 2024 10:43:32 +0200 Subject: [PATCH 06/71] upd r-lib actions in deploy test --- .github/workflows/test_build_docu_dev.yml | 31 ++--------------------- 1 file changed, 2 insertions(+), 29 deletions(-) diff --git a/.github/workflows/test_build_docu_dev.yml b/.github/workflows/test_build_docu_dev.yml index 01b58c10..3beff281 100644 --- a/.github/workflows/test_build_docu_dev.yml +++ b/.github/workflows/test_build_docu_dev.yml @@ -57,42 +57,15 @@ jobs: uses: actions/setup-python@v5 with: python-version: '3.12' - - name: Install dependencies and the python package - run: | - python -m pip install --upgrade pip - pip install -r requirements.txt - pip uninstall -y DoubleML - cd doubleml-for-py - pip install -e . - - - name: Add R repository - run: | - sudo apt install dirmngr gnupg apt-transport-https ca-certificates software-properties-common - sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys E298A3A825C0D65DFD57CBB651716619E084DAB9 - sudo add-apt-repository 'deb https://cloud.r-project.org/bin/linux/ubuntu focal-cran40/' + - name: Install R - run: | - sudo apt-get update - sudo apt-get install r-base - sudo apt-get install r-base-dev - sudo apt-get install -y zlib1g-dev libicu-dev pandoc make libcurl4-openssl-dev libssl-dev - - - name: Get user library folder - run: | - mkdir ${GITHUB_WORKSPACE}/tmp_r_libs_user - echo R_LIBS_USER=${GITHUB_WORKSPACE}/tmp_r_libs_user >> $GITHUB_ENV + uses: r-lib/actions/setup-r@v2 - name: Query R version run: | writeLines(sprintf("R-%i.%i", getRversion()$major, getRversion()$minor), ".github/R-version") shell: Rscript {0} - - name: Cache R packages - uses: actions/cache@v4 - with: - path: ${{ env.R_LIBS_USER }} - key: doubleml-test-build-dev-${{ hashFiles('.github/R-version') }} - - name: Install R kernel for Jupyter and the R package DoubleML (dev) if: ${{ github.event_name != 'workflow_dispatch' }} run: | From d2d9b957ebc7ed838019cc8ee6c8f776e300d89b Mon Sep 17 00:00:00 2001 From: PhilippBach Date: Thu, 19 Sep 2024 10:45:38 +0200 Subject: [PATCH 07/71] remove redundancy --- .github/workflows/test_build_docu_dev.yml | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-) diff --git a/.github/workflows/test_build_docu_dev.yml b/.github/workflows/test_build_docu_dev.yml index 3beff281..3b89674d 100644 --- a/.github/workflows/test_build_docu_dev.yml +++ b/.github/workflows/test_build_docu_dev.yml @@ -74,16 +74,7 @@ jobs: install.packages(c('ggplot2', 'IRkernel', 'xgboost', 'hdm', 'reshape2', 'gridExtra', "igraph", "mlr3filters", "mlr3measures", "did")) IRkernel::installspec() shell: Rscript {0} - - - name: Install R kernel for Jupyter and the R package DoubleML (dev) - if: ${{ github.event_name == 'workflow_dispatch' }} - run: | - install.packages('remotes') - remotes::install_github('DoubleML/doubleml-for-r@${{ github.event.inputs.doubleml-r-branch }}', dependencies = TRUE) - install.packages(c('ggplot2', 'IRkernel', 'xgboost', 'hdm', 'reshape2', 'gridExtra', "igraph", "mlr3filters", "mlr3measures", "did")) - IRkernel::installspec() - shell: Rscript {0} - + - name: Build docu with sphinx run: | make -C doc html # build docu From 3f0ecfa9eabf4c8f3422f2d6532ff0d56aca5698 Mon Sep 17 00:00:00 2001 From: PhilippBach Date: Thu, 19 Sep 2024 10:59:53 +0200 Subject: [PATCH 08/71] roll back, for workflow dispatch --- .github/workflows/test_build_docu_dev.yml | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/.github/workflows/test_build_docu_dev.yml b/.github/workflows/test_build_docu_dev.yml index 3b89674d..da968757 100644 --- a/.github/workflows/test_build_docu_dev.yml +++ b/.github/workflows/test_build_docu_dev.yml @@ -74,6 +74,15 @@ jobs: install.packages(c('ggplot2', 'IRkernel', 'xgboost', 'hdm', 'reshape2', 'gridExtra', "igraph", "mlr3filters", "mlr3measures", "did")) IRkernel::installspec() shell: Rscript {0} + + - name: Install R kernel for Jupyter and the R package DoubleML (dev) + if: ${{ github.event_name == 'workflow_dispatch' }} + run: | + install.packages('remotes') + remotes::install_github('DoubleML/doubleml-for-r@${{ github.event.inputs.doubleml-r-branch }}', dependencies = TRUE) + install.packages(c('ggplot2', 'IRkernel', 'xgboost', 'hdm', 'reshape2', 'gridExtra', "igraph", "mlr3filters", "mlr3measures", "did")) + IRkernel::installspec() + shell: Rscript {0} - name: Build docu with sphinx run: | From 389c036b43fccc44675d550ec541a93f2761db81 Mon Sep 17 00:00:00 2001 From: PhilippBach Date: Thu, 19 Sep 2024 11:02:20 +0200 Subject: [PATCH 09/71] r-lib actions for stable test --- .../workflows/test_build_docu_released.yml | 22 +------------------ 1 file changed, 1 insertion(+), 21 deletions(-) diff --git a/.github/workflows/test_build_docu_released.yml b/.github/workflows/test_build_docu_released.yml index 772aba94..240935c3 100644 --- a/.github/workflows/test_build_docu_released.yml +++ b/.github/workflows/test_build_docu_released.yml @@ -36,34 +36,14 @@ jobs: python -m pip install --upgrade pip pip install -r requirements.txt - - name: Add R repository - run: | - sudo apt install dirmngr gnupg apt-transport-https ca-certificates software-properties-common - sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys E298A3A825C0D65DFD57CBB651716619E084DAB9 - sudo add-apt-repository 'deb https://cloud.r-project.org/bin/linux/ubuntu focal-cran40/' - name: Install R - run: | - sudo apt-get update - sudo apt-get install r-base - sudo apt-get install r-base-dev - sudo apt-get install -y zlib1g-dev libicu-dev pandoc make libcurl4-openssl-dev libssl-dev - - - name: Get user library folder - run: | - mkdir ${GITHUB_WORKSPACE}/tmp_r_libs_user - echo R_LIBS_USER=${GITHUB_WORKSPACE}/tmp_r_libs_user >> $GITHUB_ENV + uses: r-lib/actions/setup-r@v2 - name: Query R version run: | writeLines(sprintf("R-%i.%i", getRversion()$major, getRversion()$minor), ".github/R-version") shell: Rscript {0} - - name: Cache R packages - uses: actions/cache@v4 - with: - path: ${{ env.R_LIBS_USER }} - key: doubleml-test-build-stable-${{ hashFiles('.github/R-version') }} - - name: Install R kernel for Jupyter and the R package DoubleML (dev) run: | install.packages('remotes') From 5a2950210bd89e862dcc4b6469f5239836fa6fc2 Mon Sep 17 00:00:00 2001 From: PhilippBach Date: Thu, 19 Sep 2024 12:04:41 +0200 Subject: [PATCH 10/71] rename and update flaml notebook --- ...aml_meets_doubleml_evaluate_learners.ipynb | 876 ------------------ doc/examples/index.rst | 1 + doc/examples/py_double_ml_meets_flaml.ipynb | 587 ++++++++++++ doc/examples/py_flaml_meets_doubleml.ipynb | 110 --- 4 files changed, 588 insertions(+), 986 deletions(-) delete mode 100644 doc/examples/flaml_meets_doubleml_evaluate_learners.ipynb create mode 100644 doc/examples/py_double_ml_meets_flaml.ipynb delete mode 100644 doc/examples/py_flaml_meets_doubleml.ipynb diff --git a/doc/examples/flaml_meets_doubleml_evaluate_learners.ipynb b/doc/examples/flaml_meets_doubleml_evaluate_learners.ipynb deleted file mode 100644 index 280135b9..00000000 --- a/doc/examples/flaml_meets_doubleml_evaluate_learners.ipynb +++ /dev/null @@ -1,876 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# DoubleML meets FLAML: Comparing AutoML tuning\n", - " In this notebook we are going to explore how to tune learners with [AUTOML](https://github.com/microsoft/FLAML) in [DoubleML](https://docs.doubleml.org/stable/index.html) framework." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Data Generation" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We created synthetic data using the [make_plr_CCDDHNR2018](https://docs.doubleml.org/stable/api/generated/doubleml.datasets.make_plr_CCDDHNR2018.html) function, which generates data for a potential outcomes framework with 1000 observations and 50 features. The data generated will have 50 covariates variables, 1 treatment variable and 1 outcome variable." - ] - }, - { - "cell_type": "code", - "execution_count": 37, - "metadata": {}, - "outputs": [], - "source": [ - "# pip install flaml" - ] - }, - { - "cell_type": "code", - "execution_count": 38, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
X1X2X3X4X5X6X7X8X9X10...X43X44X45X46X47X48X49X50yd
0-1.221703-0.822147-2.196993-2.499879-0.341929-0.2810380.8532911.0959020.7266381.211289...-2.201716-0.8664390.5457011.5538110.8934931.1338440.3232570.748202-1.014441-1.551160
1-1.176971-1.688596-2.925414-2.272384-1.445496-1.861972-0.325206-0.759704-0.1814070.939779...-1.813400-0.823707-1.191542-1.250025-0.835989-0.758630-0.450238-0.190508-2.631763-1.886604
20.6313621.0018021.6177861.7036070.7086591.1370410.7417890.7921500.1902560.815059...1.3044120.281384-0.656459-0.118734-0.5744640.323391-0.2352780.7750140.1102600.765708
30.4027160.5243601.2694131.4636890.8415870.2729180.270527-0.1186730.327287-1.324871...-1.440236-2.145734-2.121639-1.846964-1.433101-1.845194-0.311476-0.3075691.229235-0.499877
40.047511-0.877817-1.776503-0.686996-0.444111-1.368758-0.336068-0.788738-0.236934-0.303945...-1.1398650.2010140.015537-0.225769-1.427309-0.979872-1.8070670.7807931.0700860.359521
\n", - "

5 rows × 52 columns

\n", - "
" - ], - "text/plain": [ - " X1 X2 X3 X4 X5 X6 X7 \\\n", - "0 -1.221703 -0.822147 -2.196993 -2.499879 -0.341929 -0.281038 0.853291 \n", - "1 -1.176971 -1.688596 -2.925414 -2.272384 -1.445496 -1.861972 -0.325206 \n", - "2 0.631362 1.001802 1.617786 1.703607 0.708659 1.137041 0.741789 \n", - "3 0.402716 0.524360 1.269413 1.463689 0.841587 0.272918 0.270527 \n", - "4 0.047511 -0.877817 -1.776503 -0.686996 -0.444111 -1.368758 -0.336068 \n", - "\n", - " X8 X9 X10 ... X43 X44 X45 X46 \\\n", - "0 1.095902 0.726638 1.211289 ... -2.201716 -0.866439 0.545701 1.553811 \n", - "1 -0.759704 -0.181407 0.939779 ... -1.813400 -0.823707 -1.191542 -1.250025 \n", - "2 0.792150 0.190256 0.815059 ... 1.304412 0.281384 -0.656459 -0.118734 \n", - "3 -0.118673 0.327287 -1.324871 ... -1.440236 -2.145734 -2.121639 -1.846964 \n", - "4 -0.788738 -0.236934 -0.303945 ... -1.139865 0.201014 0.015537 -0.225769 \n", - "\n", - " X47 X48 X49 X50 y d \n", - "0 0.893493 1.133844 0.323257 0.748202 -1.014441 -1.551160 \n", - "1 -0.835989 -0.758630 -0.450238 -0.190508 -2.631763 -1.886604 \n", - "2 -0.574464 0.323391 -0.235278 0.775014 0.110260 0.765708 \n", - "3 -1.433101 -1.845194 -0.311476 -0.307569 1.229235 -0.499877 \n", - "4 -1.427309 -0.979872 -1.807067 0.780793 1.070086 0.359521 \n", - "\n", - "[5 rows x 52 columns]" - ] - }, - "execution_count": 38, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "import xgboost as xgb\n", - "import pandas as pd\n", - "import matplotlib.pyplot as plt\n", - "import numpy as np\n", - "\n", - "from doubleml.datasets import make_plr_CCDDHNR2018\n", - "import doubleml as dml\n", - "from flaml import AutoML\n", - "from sklearn.model_selection import train_test_split\n", - "from sklearn.metrics import mean_squared_error\n", - "\n", - "\n", - "# Generate synthetic data\n", - "data = make_plr_CCDDHNR2018(alpha=0.5, n_obs=1000, dim_x=50, return_type=\"DataFrame\")\n", - "data.head()\n", - "\n", - "\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Manual Tuning with FLAML" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "##### In this section, we manually tuned two XGBoost models using FLAML for a partially linear regression setup.\n", - "##### 1. Initialize and Train AutoML Models:\n", - "We used FLAML to automatically tune two separate XGBoost models:\n", - "\n", - "• Outcome Model (ml_l): This model predicts the outcome variable y. We configured the FLAML AutoML with a time budget of 120 seconds, using XGBoost as the estimator and rmse as the performance metric.\n", - "\n", - "• Treatment Model (ml_m): This model predicts the treatment variable d. Similarly, we set the time budget to 120 seconds, used XGBoost, and optimized for rmse." - ] - }, - { - "cell_type": "code", - "execution_count": 39, - "metadata": {}, - "outputs": [], - "source": [ - "# Initialize AutoML for outcome model (ml_l)\n", - "automl_l = AutoML()\n", - "settings_l = {\n", - " \"time_budget\": 120,\n", - " \"metric\": 'rmse',\n", - " \"estimator_list\": ['xgboost'],\n", - " \"task\": 'regression',\n", - "}\n", - "automl_l.fit(X_train=data.drop(columns=[\"y\", \"d\"]).values, y_train=data[\"y\"].values, verbose=2, **settings_l)\n", - "\n", - "# Initialize AutoML for treatment model (ml_m)\n", - "automl_m = AutoML()\n", - "settings_m = {\n", - " \"time_budget\": 120,\n", - " \"metric\": 'rmse',\n", - " \"estimator_list\": ['xgboost'],\n", - " \"task\": 'regression',\n", - "}\n", - "automl_m.fit(X_train=data.drop(columns=[\"y\", \"d\"]).values, y_train=data[\"d\"].values, verbose=2, **settings_m)\n", - "\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "##### Evaluate Models for Overfitting:\n", - "After training, we compared the in-sample (training) and out-of-sample (test) root mean squared errors (RMSE) for both models to check for overfitting:\n", - "\n", - "• rmse_oos_ml_m represents the out-of-sample RMSE for the treatment model.\n", - "\n", - "• rmse_oos_ml_l represents the out-of-sample RMSE for the outcome model." - ] - }, - { - "cell_type": "code", - "execution_count": 40, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "rmse_oos_ml_m: 1.0160587619805903\n", - "rmse_oos_ml_m: 1.1827553545725862\n" - ] - } - ], - "source": [ - "# Check for Overfitting: Compare in-sample (train), out-of-sample (test) MSE\n", - "# ml_m\n", - "rmse_oos_ml_m = automl_m.best_loss\n", - "rmse_oos_ml_l = automl_l.best_loss\n", - "print(\"rmse_oos_ml_m:\",rmse_oos_ml_m)\n", - "print(\"rmse_oos_ml_m:\",rmse_oos_ml_l)\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "##### Create and Fit DoubleML Model:\n", - "We created a DoubleMLData object with the dataset, specifying y as the outcome variable and d as the treatment variable. We then initialized a DoubleMLPLR model using the trained FLAML models for both the treatment and outcome components. " - ] - }, - { - "cell_type": "code", - "execution_count": 41, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - " coef std err t P>|t| 2.5 % 97.5 %\n", - "d 0.552414 0.032577 16.95697 1.709343e-64 0.488563 0.616264\n", - "Tuning RMSE (ml_m): [1.0288543]\n", - "Evaluation RMSE (ml_m): 1.0160587619805903\n", - "Tuning RMSE (ml_l): [1.19167283]\n", - "Evaluation RMSE (ml_l): 1.1827553545725862\n" - ] - } - ], - "source": [ - "# Create DoubleMLData object with the evaluation set\n", - "obj_dml_data = dml.DoubleMLData(data, \"y\", \"d\")\n", - "\n", - "# Initialize DoubleMLPLR with the trained models from flaml\n", - "obj_dml_plr_manual_tuned = dml.DoubleMLPLR(obj_dml_data, ml_m=automl_m.model.estimator, ml_l=automl_l.model.estimator)\n", - "\n", - "# Fit the DoubleMLPLR model\n", - "obj_dml_plr_manual_tuned.fit()\n", - "\n", - "print(obj_dml_plr_manual_tuned.summary)\n", - "manual_tuned_summary = obj_dml_plr_manual_tuned.summary\n", - "\n", - "# Evaluate learners using evaluate_learners() (MSE for all nuisance components)\n", - "rmse_ins_ml_l = obj_dml_plr_manual_tuned.evaluate_learners()['ml_l'][0]\n", - "rmse_ins_ml_m = obj_dml_plr_manual_tuned.evaluate_learners()['ml_m'][0]\n", - "\n", - "# Print results\n", - "print(\"Tuning RMSE (ml_m):\", rmse_ins_ml_m)\n", - "print(\"Evaluation RMSE (ml_m):\", rmse_oos_ml_m)\n", - "print(\"Tuning RMSE (ml_l):\", rmse_ins_ml_l)\n", - "print(\"Evaluation RMSE (ml_l):\", rmse_oos_ml_l)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Comparison of Model Tuning Approaches" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "In this section, we compare different approaches for tuning models in the DoubleML framework:\n", - "##### Custom FLAML Models for Double Machine Learning\n", - "\n", - "In this section, we define custom classes for integrating FLAML (Fast Lightweight AutoML) with Double Machine Learning (DML). These classes are designed to facilitate automated machine learning model tuning for both regression and classification tasks.\n" - ] - }, - { - "cell_type": "code", - "execution_count": 42, - "metadata": {}, - "outputs": [], - "source": [ - "from flaml import AutoML\n", - "from sklearn.utils.multiclass import unique_labels\n", - "\n", - "class FlamlRegressorDoubleML:\n", - " _estimator_type = 'regressor'\n", - "\n", - " def __init__(self, time, estimator_list, metric, *args, **kwargs):\n", - " self.auto_ml = AutoML(*args, **kwargs)\n", - " self.time = time\n", - " self.estimator_list = estimator_list\n", - " self.metric = metric\n", - "\n", - " def set_params(self, **params):\n", - " self.auto_ml.set_params(**params)\n", - " return self\n", - "\n", - " def get_params(self, deep=True):\n", - " dict = self.auto_ml.get_params(deep)\n", - " dict[\"time\"] = self.time\n", - " dict[\"estimator_list\"] = self.estimator_list\n", - " dict[\"metric\"] = self.metric\n", - " return dict\n", - "\n", - " def fit(self, X, y):\n", - " self.auto_ml.fit(X, y, task=\"regression\", time_budget=self.time, estimator_list=self.estimator_list, metric=self.metric, verbose=False)\n", - " self.tuned_model = self.auto_ml.model.estimator\n", - " return self\n", - "\n", - " def predict(self, x):\n", - " preds = self.tuned_model.predict(x)\n", - " return preds\n", - " \n", - "class FlamlClassifierDoubleML:\n", - " _estimator_type = 'classifier'\n", - "\n", - " def __init__(self, time, estimator_list, metric, *args, **kwargs):\n", - " self.auto_ml = AutoML(*args, **kwargs)\n", - " self.time = time\n", - " self.estimator_list = estimator_list\n", - " self.metric = metric\n", - "\n", - " def set_params(self, **params):\n", - " self.auto_ml.set_params(**params)\n", - " return self\n", - "\n", - " def get_params(self, deep=True):\n", - " dict = self.auto_ml.get_params(deep)\n", - " dict[\"time\"] = self.time\n", - " dict[\"estimator_list\"] = self.estimator_list\n", - " dict[\"metric\"] = self.metric\n", - " return dict\n", - "\n", - " def fit(self, X, y):\n", - " self.classes_ = unique_labels(y)\n", - " self.auto_ml.fit(X, y, task=\"classification\", time_budget=self.time, estimator_list=self.estimator_list, metric=self.metric, verbose=False)\n", - " self.tuned_model = self.auto_ml.model.estimator\n", - " return self\n", - "\n", - " def predict_proba(self, x):\n", - " preds = self.tuned_model.predict_proba(x)\n", - " return preds" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "##### Using Custom FLAML Models with Double Machine Learning\n", - "\n", - "We integrate the custom FLAML-based models FlamlRegressorDoubleML into the Double Machine Learning (DML) framework. The steps involve defining the FLAML regressors, setting up the DoubleMLPLR object, and fitting the model." - ] - }, - { - "cell_type": "code", - "execution_count": 43, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - " coef std err t P>|t| 2.5 % 97.5 %\n", - "d 0.554143 0.032679 16.957114 1.705155e-64 0.490093 0.618193\n" - ] - } - ], - "source": [ - "# Define the FlamlRegressorDoubleML\n", - "ml_l = FlamlRegressorDoubleML(time=120, estimator_list=['xgboost'], metric='rmse')\n", - "ml_m = FlamlRegressorDoubleML(time=120, estimator_list=['xgboost'], metric='rmse')\n", - "\n", - "# Create DoubleMLPLR object using the new regressors\n", - "dml_plr_obj_api_tuned = dml.DoubleMLPLR(obj_dml_data, ml_m, ml_l)\n", - "\n", - "# Fit the DoubleMLPLR model\n", - "dml_plr_obj_api_tuned.fit(store_predictions=True)\n", - "\n", - "#Retrieve the summary for API Tuned Models\n", - "api_tuned_summary = dml_plr_obj_api_tuned.summary\n", - "\n", - "# Print the summary\n", - "print(dml_plr_obj_api_tuned.summary)\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "##### Dummy Models:\n", - "We initialized and fit dummy models using DummyRegressor from sklearn:\n", - "\n", - "• ml_l_dummy: A dummy regressor for the outcome model, which predicts the mean value of the outcome.\n", - "\n", - "• ml_m_dummy: A dummy regressor for the treatment model, also predicting the mean value.\n", - "\n", - "These dummy models were used to create a DoubleMLPLR object (dml_plr_obj_dummy), which was then fit to the data. We retrieved and stored the summary of this model to compare with other methods." - ] - }, - { - "cell_type": "code", - "execution_count": 44, - "metadata": {}, - "outputs": [], - "source": [ - "from sklearn.dummy import DummyRegressor\n", - "\n", - "# Initialize and fit dummy models\n", - "ml_l_dummy = DummyRegressor(strategy='mean')\n", - "ml_m_dummy = DummyRegressor(strategy='mean')\n", - "\n", - "# Create DoubleMLPLR object using dummy regressors\n", - "dml_plr_obj_dummy = dml.DoubleMLPLR(obj_dml_data, ml_m_dummy, ml_l_dummy)\n", - "dml_plr_obj_dummy.fit(store_predictions=True)\n", - "\n", - "# Retrieve the summary for dummy models\n", - "dummy_summary = dml_plr_obj_dummy.summary\n", - "\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "##### AutoML Untuned Models\n", - "\n", - "We set up AutoML models with minimal tuning for both the outcome and treatment variables. This process allows us to compare the performance of untuned models against those that have been manually or API-tuned." - ] - }, - { - "cell_type": "code", - "execution_count": 45, - "metadata": {}, - "outputs": [], - "source": [ - "# AutoML Untuned\n", - "automl_untuned_l = AutoML()\n", - "settings = {\n", - " \"time_budget\": 0.01,\n", - " \"metric\": 'mse',\n", - " \"estimator_list\": ['xgboost'],\n", - " \"task\": 'regression',\n", - "}\n", - "\n", - "automl_untuned_l.fit(X_train=data.drop(columns=[\"y\", \"d\"]).values, y_train=data[\"y\"].values, verbose=0, **settings)\n", - "\n", - "automl_untuned_m = AutoML()\n", - "settings = {\n", - " \"time_budget\": 0.01,\n", - " \"metric\": 'mse',\n", - " \"estimator_list\": ['xgboost'],\n", - " \"task\": 'regression',\n", - "}\n", - "\n", - "automl_untuned_m.fit(X_train=data.drop(columns=[\"y\", \"d\"]).values, y_train=data[\"d\"].values, verbose=0, **settings)\n", - "\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "##### DoubleMLPLR with Untuned AutoML Models\n", - "\n", - "Here, we create a `DoubleMLPLR` object using the untuned AutoML models for the outcome and treatment regressions. We then fit the `DoubleMLPLR` model and retrieve the summary of the results.\n", - "\n", - "This section allows us to evaluate the performance of the untuned AutoML models in the context of DoubleML." - ] - }, - { - "cell_type": "code", - "execution_count": 46, - "metadata": {}, - "outputs": [], - "source": [ - "# Create DoubleMLPLR object using AutoML models\n", - "dml_plr_obj_untuned_automl = dml.DoubleMLPLR(obj_dml_data, automl_untuned_l.model.estimator, automl_untuned_m.model.estimator)\n", - "untuned_automl_summary = dml_plr_obj_untuned_automl.fit(store_predictions=True).summary\n", - "\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "##### Combine and Save Summaries\n", - "\n", - "We combine the summaries from various models: manually tuned FLAML models, API-tuned FLAML models, untuned AutoML models, and dummy models. The combined summary is saved to a file for further analysis." - ] - }, - { - "cell_type": "code", - "execution_count": 47, - "metadata": {}, - "outputs": [], - "source": [ - "# Combine summaries for comparison\n", - "summary = pd.concat([manual_tuned_summary ,api_tuned_summary, untuned_automl_summary, dummy_summary], keys=['FLAML Manual Tuned', 'FLAML API Tuned', 'AutoML Untuned', 'Dummy'])\n", - "summary.index.names = ['Model Type', 'Metric']\n", - "\n", - "# Save the summary to a file\n", - "summary.to_pickle(\"summary_comparison.pkl\")\n", - "\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Plots" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "##### Plot Coefficients and 95% Confidence Intervals\n", - "\n", - "This section generates a plot comparing the coefficients and 95% confidence intervals for each model type. The plot helps visualize the differences in the estimated coefficients and their uncertainties." - ] - }, - { - "cell_type": "code", - "execution_count": 48, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Manual Tuned Summary:\n", - " coef std err t P>|t| 2.5 % 97.5 %\n", - "d 0.552414 0.032577 16.95697 1.709343e-64 0.488563 0.616264\n", - "API Tuned Summary:\n", - " coef std err t P>|t| 2.5 % 97.5 %\n", - "d 0.554143 0.032679 16.957114 1.705155e-64 0.490093 0.618193\n", - "Untuned Summary:\n", - " coef std err t P>|t| 2.5 % 97.5 %\n", - "d 0.643582 0.026402 24.3761 3.066249e-131 0.591835 0.69533\n", - "Dummy Summary:\n", - " coef std err t P>|t| 2.5 % 97.5 %\n", - "d 0.699246 0.022814 30.649577 2.677185e-206 0.654531 0.743961\n", - "Extracted model labels: Index(['FLAML Manual Tuned', 'FLAML API Tuned', 'AutoML Untuned', 'Dummy'], dtype='object', name='Model Type')\n", - "Extracted coefficient values: [0.55241377 0.55414277 0.64358224 0.69924583]\n" - ] - }, - { - "data": { - "image/png": "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9e7dW9evX9fw4cP13nvv2blKAPYSHh6uli1bysfHR5MmTZL0aADG77//XgMHDlT37t01YsQIO1cJIKkLCgpS1apVVa9ePQ0bNkyS9PDhQ7311ls6ceKE5syZoypVqlj2iANI3sxmc6x7szt27KgDBw5o9+7ddqjKGnu6YXPRv+tkyJBBoaGhunz5sqXdz89Pffv21dmzZ9W/f3/2eAOvMEdHR128eFEhISGWtkyZMqlly5aqVauWRo0axeBqAJ7LyclJkZGRypkzp6RHgdvZ2VmrV6+Wp6en+vfvr3Xr1rHHG0ghogP3uXPnFB4ebmkfPXq0Ll++rMmTJ9urNAtCN2ziyQMoovdq582bV5cvX9by5csVGRlpaU+fPr1KlSqlGjVq6M0337RLvQDsz8nJSfXr19f58+e1f/9+S3vGjBnl5+enggULas2aNQoMDLRfkQCSvDRp0ih16tRavXq1pEfneD98+FCurq4qXLiw9u7dqy+++MIy4BqA5G/BggWqUaOGGjdurH379unOnTvKmDGj6tevrz179shsNsueB3gTupHoDMOQyWTS7t27tXDhQg0fPlznz59XhQoVNHLkSPXs2VOTJ0/WqVOnFB4erpUrVyp37twaPny4Xn/9dXuXD+AliP6P78qVKzp16pRu3rwpSXr77bd1/fp1zZw5U//884+l/82bN9WsWTPt2bNH3t7edqkZQNITvS25deuWgoODdeXKFUnSoEGDLKewSY+Ct8lkUrZs2bR9+3b9/vvvSpUqld3qBvDfPB2gGzdurH79+ilVqlSqVauWPvnkE61YsUKNGjXSDz/8oO3bt1t2+NkD53TDJn7++Wd17txZxYoV0/3793XkyBENGTJEPXr00DfffKPRo0crbdq0Sp06tS5evKitW7eqRIkS9i4bwEsQ/cPcihUr1L9/f0VGRsrBwUHVq1fX0KFDtXPnTg0YMEBp06aVt7e3nJyc9Mcff2jXrl0qUKCAvcsHkEREb0t+/fVXTZw4UVevXlXmzJn13nvvqWvXrpo4caImTpyowoULq2rVqjp69KgWL16so0ePKkeOHPYuH8ALevIc7sDAQEVERCh79uyW6StXrtTOnTv13Xff6e2339Yvv/yiZs2aafr06XJzc7NL+CZ0I9EdOHBAb731lkaPHq3WrVsrLCxMqVKl0siRI9WvXz9J0r59+3Th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yf+Q8idxePkrJPo/sfbt26tJkyaWUQDje6g5gJTPbDbrjTfeUEREhJYuXarChQvHe97w8PAU98s0gBcX/R0iODhY8+fPl6urqz7++GMFBwfr66+/1pgxYzR79my1atVKYWFhunjxovbv368yZcooZ86c9i4fwAu6du2abty4oQMHDqhEiRLKli2bpk2bpqFDh2r27Nlq0aKFpe/x48dVtmxZ3b17N0YoT0nY0/0KcXR01LvvvisHBwd9+OGHkqTp06c/d483gJTtyc+/g4OD1q1bp//973/66KOPNH36dBUpUiReyyFwA6+26JAdPehq9OWASpUqpYIFC2r48OGSJE9PTw0ZMkQmk0nt2rWTg4ODWrZsqfz58zMuBJDMLV++XLNnz9a+ffsUGhqqyMhI1axZU4MGDZK7u7tat24tSZbg7erqqq5du6pEiRJ699137Vm6TZGoXjEODg6qX7++Fi5cqO+//14ff/yxpGef4w0g5TKbzTKZTLp3757u3r2rixcvysvLS7t27dLFixf18ccf6/Dhw/YuE0Ay4ODgoNOnT6t58+Y6duyYJCl79uxq3bq1jhw5oqCgIEmPtjtOTk4aMmSIvvzyS7Vq1UpLliyxY+UAEsPMmTPVoUMHVatWTYsWLdLFixfVt29fnTx5Ui1atFD58uX11Vdf6cMPP9SQIUO0bNkyde/eXQcPHlTjxo3l5OSkyMhIe6+GTXB4+SsqPDxca9as0YcffqgWLVrE61BzAClL9F6po0ePqlevXrpw4YLCw8M1dOhQffjhh7px44beeOMNvf766wna4w3g1XXp0iXlyJFDderU0bfffqu8efPq1q1b+vzzz/XDDz9o7dq1qly5suX7RmRkpMaOHat33333meNIAEjaZs6cqa5du+rHH3/Ue++9ZzVtyZIlGjlypDw9PbVixQr98MMPGjNmjNKkSSMvLy9t2LBBzs7Odqr85SB0p3DR/6n9888/OnPmjO7evatmzZrJzc1NUVFRWrVqlT788EM1b95cM2bMsJoHQMoVHbj379+vihUrqnXr1sqYMaMOHDiglStX6qefftIHH3ygW7du6Y033lC2bNkI3gCeKXrQowsXLqhUqVIqUaKEpk2bprx58yooKEg9evTQkiVL9Pvvv1sFbwDJW/RAaUOGDNGgQYMsR89GRUXJyenR2cyTJ09Wnz59tGjRIr3//vs6f/68XFxclDlzZjk4OCgyMtLSNyUidKdg0f+ZLV++XN27d1eGDBkUFRWl+/fva9WqVSpSpIjMZrNWrlypdu3aqU6dOvrxxx/tXTaAl+TEiRMqUqSIRo8erd69e0uSLly4oPfee0+vvfaafvnlF6VOndoSvHPmzKlJkyapRIkS9i0cQJLw5GCr0YE7+t/z58+rdOnSKlGihKZOnap8+fLp9u3b+uyzz7R8+XL9/PPPqlGjhp3XAEBiOHXqlNq3b68MGTLos88+U8WKFS3TntxOFCtWTBUqVNC0adOs2l+FgZtT9tq94kwmkzZv3qwOHTpoyJAhOnDggH766SedP39e7733nnbt2iUHBwc1bNhQ/v7++vPPP3X16lV7lw3gJXj48KFmz56tqKgoValSxdKWI0cOFS5cWKlSpZK7u7sePnyo1157Tf/884/27dunvn37KiIiwr7FA0gSHBwcdP78ed25c8cqcEdGRipnzpzas2eP9u/fr+7duysoKEgZMmTQ2LFjVatWLcs1uQEkf/ny5dPs2bMVHh6ukSNH6q+//rJMiz6aJSQkRA8ePJCPj48k68GaU3rglgjdKVpoaKg2btyonj17qn379rp06ZLq1q2r9u3bK1euXGrcuLH+/vtvmUwmffDBBzp+/LiyZMli77IBvATOzs5q1aqVWrdurdq1aysgIEDOzs46d+6cli9frurVq8vBwUHOzs6KjIxUhgwZdOHCBX333XdycXGxd/kAkoCwsDB17txZRYsW1e3bty3BO3owpJw5c2rbtm36888/NWjQIElSpkyZNH36dO3du1fu7u52XgMAiSVfvnz69ttvZTKZNGLECG3bts1q+tmzZ5UtWzb973//k6RXbgBnDi9P4davX69MmTIpV65cql27tooXL67p06dr27ZtqlixojJkyKA//vhDfn5+9i4VwEvy5GFcJ0+e1IgRI/T777/ru+++04ABA1SrVi1NmzZN0uPTVKL3YAFANMMwtHnzZg0ZMkR37tzR5s2bLaeyRe/xdnJy0sKFCzVo0CBt2rSJ628DKdypU6f06aefyjAMDRgwQBUrVlRkZKQaNGggBwcHrVy58pXYs/20V2+NXwF79+7VL7/8IkmqWbOmSpQooQMHDigqKkrdu3eXJDk5OalRo0aqUaOG0qZNa89yAdiY2WyW9OjwcUmWAUskKX/+/Pryyy/19ttvq3nz5ipYsKCmTZsmwzAslxOTROAGEIPJZFKVKlU0atQopU2bVpUrV9atW7fk6Oiohw8fWgZFcnR0VLp06ZQ+fXo7VwzA1p7c4/3VV19p27ZtatKkic6fP6/ly5fLwcHB8r3kVULoTmGCg4M1YMAAffPNN/r1118t7efPn9ehQ4eULl06SdJvv/1m+fU5f/78dqoWwMsQfVmwtm3b6ptvvpEkqxFC8+fPry+++EIdOnTQzp07tWXLFplMplfu0C8ACWcymVS+fHmNHTtWHh4eqlKlim7dumV1+Z+DBw8qW7Zsr+TeLeBV9GTwrlq1qo4cOaL9+/dbTll7FbcFHF6eAm3btk1jxoxReHi4unTpovr168tsNqt06dI6deqUChcurCNHjmjr1q2MQgy8AiIjI9W9e3dt3rxZXl5eCg0NVePGjVWvXj0VLFjQ0u/YsWMaPXq01q1bp4ULF6pmzZp2rBpAchB9CophGNq2bZv69u2r8+fPa/78+QoPD9e2bds0bdo0bdmyRUWLFrV3uQBeouPHj2vq1KkaP368ZayHlHxZsGchdCdz0f/ZBQcHy9PT09K+c+dODRs2TGazWZ07d1b9+vV19+5dTZw4UW5ubqpfv74KFChgx8oBvEzz58/XuHHj9M8//2ju3LnaunWr1qxZo549e+p///uf5dI9Fy5cULdu3XTkyBEdPnxYbm5uXEcXwDM9eb3tkydPauDAgQoICJCPj4+8vb01fvx4AjfwinuVA7dE6E4Rdu7cqfHjx6tbt25W18XbsWOH+vTpI8MwNGjQINWuXVuS9X+OAF4dtWvXVuXKldWnTx85Oztrw4YNqlu3rtKkSaOqVauqa9euKlWqlCIiIvTgwQNlzZrV3iUDsLMX/c5w9OhRvfbaa3J1dbWc2gYAr6pX74D6FOjmzZs6evSopk+fru3bt1vay5Urp379+ungwYMaOHCg5RxvAjfwaon+bbVevXravn275VzL5cuXy8fHR3PmzNGNGzfUunVr1atXT56engRu4BUXPdBR9PYjevDF54nu7+vrK29vbwI3AEh6dffxJ2NP/+r8zjvvyGw2a+TIkfr2228lSeXLl5ckpUuXTm+88YayZ8/O+dvAKyp6e9G0aVONHj1a8+bN0+7du7VixQr9+uuv8vPzU926dRUQEKD8+fMzUjkAOTg46NKlS/rggw/0888/y8fHJ16XDuSHfQCIicPLk5nowL17926dPXtWzs7Oev/99yVJK1as0FdffaUcOXKoTZs2euuttzRw4ECFhYVpwIAB/NoMvMKivyxPmTJFn332mbJly6bFixfLz8/P6rrdAPDkd42OHTvKbDZrw4YN8vb2fmbw5vQ1AIgdoTsZWrZsmdq3b69MmTIpIiJCefPm1caNGyVJq1atkr+/v3bv3i0fHx9dunRJmzdvVvHixe1cNYCkYO/evapTp45Gjx6tDh06ELgBWERvD+7fv69UqVLJbDZr586d6tevn65fv67NmzfHGrwjIyMVGhpqNaArAOAxQncyEf3r8YMHD9SmTRu98847qlWrlvbt26fPPvtMrq6u+ueffyRJR44c0enTp3X58mXVqVNHuXPntnP1AJKSTz/9VFu2bNHmzZuVPn16e5cDIAk5evSo3n33XY0ZM0YNGzaUYRjavn27+vfvH2vwfvjwobp3765jx45p/fr1cnR0ZG83ADyF3RvJhMlk0p9//qk6derIbDarUqVK8vb2Vp06dTRnzhw9ePBAJUuWlCQVLlxYDRo0UOfOnQncQAqW0N9Mo/s3bdpUt27d0oYNG2xRFoBkKjIyUqNHj9apU6fUo0cPLV26VCaTSeXLl9eoUaPk5eWlKlWqKDAwUI6Ojrp//7569epluSShk5MTgRsAYkHoTiYMw9D169d15coVbdq0SRkzZpT0KIyXKVNG8+bNU2RkJCEbeIWYTCbdvn1bISEh8e4vPbqyQalSpRhcEYAVR0dHlSpVSgUKFFCDBg3Up08fLVmyJNbgfenSJY0YMUKzZ8/Wn3/+KT8/P3uXDwBJFqE7iYveM2UymVSnTh19/fXXcnV1VePGjS19HBwcVLZsWU2dOlUZM2bUuXPn7FUugJfEbDYrKChI+fPn15gxYxQcHByv+aKiomQymbRixQrly5fPxlUCSOqiv2dEbxs+/PBDPXjwQJGRkWrU6P/au9Owqsv8j+Pvc0BZTCVxQVKZLhUkEgSldEbEJZdRSyfTcpRS1EQBFTcGIUxTcYkWVMppcs1GNDXrqlAT0QttQYGoRDF0SEdwR0YBAw7/B17njFb+x5mCQ/B5PZLfcvjeD7g9n999/+77KWbNmsV77713R/B2dXXFzc2NV155hbS0NPz8/KzcChGR2k2hu5Yy/yd47do1ysvL+de//kWjRo3o378/q1at4vjx4wwbNsxyvcFgoGfPnhw8eJAHH3zQWmWLSDUz9w1GoxEnJyfmzp3LihUrWLVq1T0Fb20HJiLw7324S0tLgX/3Dc2aNWPOnDkYDAaeeeYZBg0axIwZM+4I3jExMYwePZr09HQFbhGRe6DQXQuZF0375JNPGDVqFAEBATz11FNkZ2fTqFEjBg4cyMsvv8w333zDk08+abnPYDBgb29vxcpFpDqZTCYMBgMXLlzg7NmzAMydO5f4+HheeOGFuwbv8vJy0tLSuHHjRk2XLCK1lNFo5Pjx4/j6+rJ06VIyMjIsD/W8vLzYtWsXDRo0IC4ujsGDBxMREcGOHTswGAz07t2bv/3tb3Tu3NnKrRAR+W1Q6K6FDAYDH3zwASNHjiQgIICwsDAcHR3p3bs3hw8fxtHRkUGDBhEfH8/+/fv585//bO2SRaQGGI1GTpw4QZs2bYiJieHMmTMAhIeH8/rrr1uCd1FRkeWemzdvMnXqVIYOHWoZ0RIRuXnzpmXRtNWrV5OYmEjfvn05duwYvXv3ZvLkySxYsAAnJyciIiJ44oknCAoK4oMPPsBgMODg4GDtJoiI/GbYWruA+s48qn27vLw8lixZwrJlywgNDeXs2bPExMTg6OhI//79SU5OJiAggP79+7Np0yY6depkpepFpKYdOXKEiooKNm7ciMlkIi4ujgceeIDw8HAApk+fjsFgIDQ0lMaNGzN79mySkpJISUmxLMAoImJnZ8eECROorKxk9+7dPP744+zfv5+xY8fStm1b7r//foqLi7l06RKenp5MmTIFOzs7PD09rV26iMhvjkK3FZlMJoxGIwUFBVy8eBFvb2/g1tPngIAAxo8fzz//+U/69etH//79iYmJ4emnn+app54iKSmJ3r17M3ToUCu3QkRq0uDBgwkODsbJyYl169Zx/fp1Vq1ahaur6x3B22QycebMGTZt2qSFjkTkZ/Xq1YsGDRpw8eJF5s2bxxdffMG5c+dITk5mwYIFXL16lZycHFxcXHj44YdZunQpDRs2tHbZIiK/OYaq/3ajV/lV5eXl4evrS//+/Zk3b55ly438/Hzc3NwIDQ2loKCAzZs34+DgwHPPPcff//53nJ2dycvLw8HBQXtiitRRPzcTBiAkJISSkhLmz59P9+7dCQwMJCEhAVdXVwASExMJCwvDxsaG9PR0bQ0mIv+vzz//nLlz53Lx4kX27t1LmzZtyM3NpaSkhC5duty1LxIRkXujd7qtLCMjg+vXr7N3717i4+PJyMgAwM3NjbKyMo4dO4aPj4/l3an77ruPrVu3kp2djaOjo/4TFKmjzIumXbx4kQsXLlBRUWE5t2jRIg4fPsypU6dISUnh008/Zfr06Zw7dw6AqVOnsnnzZjIzMxW4RcTCPM6Sn5/P6dOn+fbbbwHo3r07r776Kq1ataJ37958//33uLu7W2bg6buGiMgvo5HuWiA0NJSSkhL27NmDr68vixcvxsfHB4Dx48eTnJzM66+/TmpqKu+//z6HDh3StmAi9UBOTg5eXl4EBATg7u5uWdTI0dGR6dOnY2trS3x8POnp6Tz22GMMHjyY5cuX07ZtW2uXLiK1jHm0eseOHURGRlJZWcmlS5cYNWoUf/nLX+jQoQNHjx5lzpw5FBYWkpycTLt27axdtohInaCR7hpk3hPTrLKykqqqKlq0aEGDBg04cOAA3377LfPmzSMzMxOA6OhoevToQWRkJF9++SUfffSRArdIPZGbmwvAlStXOHXqFH369CEqKoqUlBTGjBnDunXryM7Oxt/fn9TUVJKSknjhhReorKy0cuUiUtsYDAYOHjxIUFAQc+bMYePGjSQlJfHRRx8RERHB6dOn6dq1K0uXLsXR0ZEnn3ySiooKNDYjIvLLaaS7hpgXTSssLOTSpUt4eXlZpmsVFxfz0EMPsXr1arp06ULPnj3x8fFh6dKlPPzwwwB8//33NG3alKZNm1qzGSJSwzZv3kxQUBCvvvoqjRo14ty5c6xYsYKgoCDWrl3LrFmziI2Nxc7OjuzsbOzs7PDw8LB22SJSC8XGxvLll1+SnJxsOZaTk0NgYCBPPfUUiYmJwK1X35ydnXFzc7NWqSIidYpGumuI0Wjk5MmTuLm5MWrUKEaOHElubi6FhYU0adKEsLAwPvzwQ9zc3Pjkk0/IysoiJiaGI0eOANCuXTsFbpE6rKqqyjKiZDKZLDNjxowZQ2JiIjNnzuTChQtERUVx9OhRWrZsSadOnfD29sbOzg6TyYS3t7cCt0g9d/usOvNaECUlJQCcP3+e8vJy4Fafc/PmTTw9PUlMTGTbtm2cOnUKAD8/PwVuEZFfkbYMq0EnTpygvLwcJycn8vPzCQ4OpmXLlowbNw5/f38SEhJIT0/H39+fvXv30q1bNxwcHFi/fj12dnbWLl9Eqol5Jsy1a9do2rQpRuOt56EVFRXY2toSEhKCwWBgypQplJaWMn/+fF588UUiIyMtiyya7xGR+s1oNJKfn8+lS5fo2rUr27dv58SJE8ybN4+BAweyfv16Pv74YwYPHmzZ/sve3h5nZ2caN25s5epFROomhe4aNHToUDZv3kxUVBQTJkygdevWlJWVMXHiREaNGkVhYSFvvPEGXl5eeHp6kpmZicFgUOAWqeOMRiM5OTn06tWL4cOHM2bMGDp37oyzs7MlkE+ePBmDwUBISAhGo5GIiAicnJysXbqI1DIlJSXExMSQnp7O+PHjiYqKYsOGDQAEBgby3HPPERERQVVVFUOGDKGqqorPPvsMR0dHbG31tVBEpDqod60h5i/Oo0ePpqSkhIULFzJy5EhiY2N54okn2LNnD48++iiPPfYYjo6OVFZW4u7ubu2yRaSGHD9+HEdHR/Ly8njrrbfIyspi+fLleHh40KFDBwCef/55TCYT06ZNo7S0lOjoaL12IiJ3MO9uMGXKFObNm0dsbCxBQUFUVVXh7OxMaGgoRqOR4cOH06VLFxo0aMDx48fZt28f999/v7XLFxGpk7SQWg0yb9cBsG7dOmJiYhgxYgSRkZE88MADd5wXkfrl9OnTLFy4kLFjx+Lv78+SJUtIS0vD3t6eAQMGMHr0aFxdXbGxsWHlypXExsaSm5tLixYtrF26iNQS5gf8ly5dYtCgQfzwww/Y2dmxcuVKunfvbrmuuLiYzz77jLS0NJydnRk6dKjl4Z6IiPz6FLpr2O3Bev369URHRzNq1CjCwsJo3769lasTEWsKCQnhm2++IS0tDYDCwkICAwM5efIk/fr1w9XVlZkzZ+Lj40NxcTFNmjSxcsUiUtvk5OTg6enJlStXOHbsGPHx8eTn55OYmEj37t31gF9ExAq08k4NMxgMlhWKx40bx+LFi9m5cyfLli3j9OnTVq5ORKzBvNrwggULAPjwww8BiIqKoqKigpSUFIYPH87XX3/N0KFDKSoqUuAWkZ8oKCjA29ub4OBgmjVrRs+ePQkNDcXNzY2wsDC++OILDAYDcXFxLF261LKSuYiIVC+NdP9K/tsnx7dfv2bNGhISEkhJSaFVq1bVVaKI1HKlpaVMmjSJFi1acPXqVfbs2cOuXbvw9/e3XFNQUEDr1q2tWKWI1FZlZWVs2bKF6dOn88wzz7BmzRoAPv30U9asWcP+/fvp1asX77//PhkZGXTp0sW6BYuI1BMK3b+iK1euYGtre88jULcHb/NWQSJSN93+9/7/PaTLysrCz8+P5s2bc+DAATw9Pf/jPSJSP/1cv1BWVsb27duZNGkSQUFBluCdkZHB/v37OXbsGLNnz7b0LSIiUv20evmvwGQyUVxcjLu7O5MnT2bu3Ln3FKDNU80NBoOmiorUYea/88LCQoxGIy1btrQseHQ7k8mEl5cX48aNw2Aw4O7ubrlXgVtEfsxgMLBv3z4OHz7MCy+8ANzac3vEiBEABAcH07BhQ1auXImfnx9+fn4/2/eIiEj1Uq/7C5gnCRiNRpycnJg7dy4rVqxg1apVXLt27Z4+w/xFWl+oReoug8FAUVERwcHBTJkyxRK+ze9ymxmNRho0aEBAQAA7d+4kNzdXfYOI3FVFRQVHjx5l/vz5xMXFWY6bg3d4eDirV69m8uTJlnMK3CIiNU897//IZDJhMBi4cOECZ8+eBWDu3LnEx8fzwgsv3DV4l5eXk5aWxo0bN2q6ZBGpYbeHaicnJwIDA7l8+TJRUVF3Dd4A48ePx8PDg9jYWKqqqtBbQCL124/7CfPPtra2BAcH8/LLL7Ns2TIWLVpkucbe3p4OHTrQpUsXkpOTKSgoUF8iImIlCt3/I6PRyIkTJ2jTpg0xMTGcOXMGgPDwcF5//XVL8C4qKrLcc/PmTaZOncrQoUMpLS21UuUiUhPMUzgzMjJ48cUXAYiMjGTEiBGcPHnyjuBdWVlpue/mzZts3bqVAQMGsHz5ck0tFxGMRiPHjx8nOjqa/Pz8O/qE5s2bExQURHR0NPHx8SxevNhy7uzZszz99NPk5OTQunVr9SUiIlaid7p/gSNHjlBRUcHGjRsxmUzExcXxwAMPEB4eDsD06dMxGAyEhobSuHFjZs+eTVJSEikpKTRv3tzK1YtIdTEH7uzsbPz9/YmIiLCcCw8Pp6qqiq1btxIVFcWSJUto3bo1JpOJiooKwsPDOXjwIHv37qVt27ZWbIWI1Bbl5eU8++yzHDlyhG3btjFs2DAeeeQRRo4cCUCLFi0ICgrC1taWqKgodu7cSbNmzfjyyy/57LPPcHR0tHILRETqN61e/gtcvXqVOXPm4OTkxLp16wgMDGTVqlW4uroCsHLlSqZPn87ChQs5c+YMmzZtIi0tDT8/PytXLiLVxRy4v/rqK3r06EFERMQdI09mCQkJbN26lY4dOxIXF4eLiwthYWGsXbuWgwcP0q1bNytULyK11YoVK7C1teXhhx/m0KFDJCQkMGTIEHr06EFISIjlXe1Dhw7x1ltv0axZMyZMmICXl5eVKxcREYXue3S37XpCQkIoKSlh/vz5dO/encDAQBISEizBOzExkbCwMGxsbEhPT9eemCL1wHfffUfnzp2ZPXs2L730kqX/2LRpE23atKFPnz7ArQdzSUlJdOzYEZPJxHvvvUdaWhq+vr5WboGI1DapqakMGzaMffv20a1bNwoKCvjrX//K8uXL6dy5MxMmTKBXr154eHhY1oLQomkiIrWDeuN7YF407eLFi1y4cIGKigrLuUWLFnH48GFOnTpFSkoKn376KdOnT+fcuXMATJ06lc2bN5OZmanALVIPmEwm1q5dS+PGjXF2dgZurV6+aNEiZs2axX333We5Njw8nNGjR3Pw4EG2b9+uwC0id9W7d2+ef/55XnvtNcrKymjdujU5OTm0a9eOTp068c4779C5c2fi4+MxGAwK3CIitYje6b4HRqORnJwcvLy8CAgIwN3dnQULFuDk5ETz5s0ZMmQIycnJxMfHs3fvXh577DFmzZrF8uXLadu2LaNHj7Z2E0SkhhiNRsLCwigpKWHLli3Y29tTXFxMQkICGzZswN/fH/j3NPTQ0FAcHBwIDAykffv2Vq5eRGqzRx99lFdeeYWGDRsyceJEUlNT2bdvH15eXpw4cYLdu3fTr18/a5cpIiI/ounl92jXrl386U9/wsvLi5YtW3L27FkGDRrEsGHDuO+++xg0aBCpqal4e3uTmZlJ165defbZZ3n77bexsbGxdvkiUsMKCwtZvHgxe/fuJS8vj927d9O3b18qKystfYI5eIuI3KvAwEDS0tJwcXHh448/xsfHx9oliYjIf6CR7ns0bNgwNm3aRFBQEBMnTqRRo0acO3eOYcOGERQURElJCUlJSXh4eODr60tWVhZ2dnYK3CL1lIuLCzExMRiNRlJTU8nMzKRv377Y2NhYgrcCt4jcK/PaEJGRkRQWFrJs2TJ8fHzuuuaMiIjUHvrG9zPMC5DArZEok8kEwJgxY0hMTGTmzJlcuHCBqKgojh49SsuWLenUqRPe3t7Y2dlhMpnw9vbGw8PDms0QEStr1aoVUVFR9OrVi23btrFs2TIAbGxsLP2KiMi9MAfrrl27YjKZOHr06B3HRUSk9tL08h8xT/e8du0aTZs2tRyvqKjA1vbWxIA1a9YwZcoUoqOjmT9/Pra2tpSWluLg4GCtskWkFjNPNc/MzKRfv34sWLDA2iWJyG/YO++8Q0hICCkpKTzyyCPWLkdERP4DjXT/iHnRtA4dOjBp0iRSU1O5fPkytra2lpGpyZMn8+abb7J48WJeeuklioqKFLhF5K5cXFyIjo6mY8eOHD58mMuXL1u7JBH5DevTpw/+/v6W7UlFRKR200j3z9i5cyczZsygffv2tG7dmqysLJYvX46HhwcdOnSwXPfmm28ybdo0ZsyYQXR09B0j4yIiP3b+/Hng1rRzEZFfoqysDHt7e2uXISIi90Ch+2ecPn2ahQsXMnbsWPz9/VmyZAlpaWnY29szYMAARo8ejaurKzY2NqxcuZLY2Fhyc3Np0aKFtUsXERERERGRWkSh+y5CQkL45ptvSEtLA269kxkYGMjJkyfp168frq6uzJw5Ex8fH4qLi2nSpImVKxYREREREZHaRu90/4j5vW3zQkcffvghAFFRUVRUVJCSksLw4cP5+uuvGTp0KEVFRQrcIiIiIiIi8rM00n0XpaWlTJo0iRYtWnD16lX27NnDrl278Pf3t1xTUFBA69atrViliIiIiIiI1Gb1MnRXVVVZ9rW8/d8/lpWVhZ+fH82bN+fAgQN4enr+x3tEREREREREzGytXUBNMwfmwsJCjEYjLVu2tOzNfTuTyYSXlxfjxo3DYDDg7u5uuVeBW0RERERERO5FvXun22AwUFRURHBwMFOmTLGEb/O73GZGo5EGDRoQEBDAzp07yc3NVdgWERERERGR/0q9Cd23h2onJycCAwO5fPkyUVFRdw3eAOPHj8fDw4PY2Fiqqqqoh7PxRURERERE5H9UL0K3efp4RkYGL774IgCRkZGMGDGCkydP3hG8KysrLffdvHmTrVu3MmDAAJYvX66p5SIiIiIiIvJfqfOh2xy4s7Oz8ff35/r165Zz4eHhjBo1yhK8CwoKsLGxwWQy8cMPPxAeHk5sbCwTJ07kwQcftGIrRERERERE5LeoTq9ebg7cX331FT169CAiIoLFixf/5LqEhAS2bt1Kx44diYuLw8XFhbCwMNauXcvBgwfp1q2bFaoXERERERGR37o6HboBvvvuOzp37szs2bN56aWXLCuQb9q0iTZt2tCnTx8AVq5cSVJSEh07dsRkMvHee++RlpaGr6+vlVsgIiIiIiIiv1V1esswk8nE2rVrady4Mc7OzsCt1csXLVpEQkICH330keXa8PBwjEYjr7zyCufPn1fgFhERERERkV+sToduo9FIWFgYJSUlbNmyBXt7e4qLi0lISGDDhg34+/sD/56GHhoaioODA4GBgbRv397K1YuIiIiIiMhvXZ2fXg5QWFjI4sWL2bt3L3l5eezevZu+fftSWVmJjY0N8O/gLSIiIiIiIvJrqRcp08XFhZiYGAYOHMhDDz1EZmYmADY2NpYtwhS4RURERERE5NdWp6eX365Vq1ZERUVhMpnYtm0bFRUVREZGWrYIU+gWERERERGRX1u9mF5+O/NU88zMTPr168eCBQusXZKIiIiIiIjUUfVueNfFxYXo6Gg6duzI4cOHuXz5srVLEhERERERkTqq3o10m50/fx64Ne1cREREREREpDrU29AtIiIiIiIiUt3q3fRyERERERERkZqi0C0iIiIiIiJSTRS6RURERERERKqJQreIiIiIiIhINVHoFhEREREREakmCt0iIiIiIiIi1UShW0RERERERKSaKHSLiIjI/yw1NRWDwUBRUdE93/O73/2O1157rdpqEhERqU0UukVEROqwcePGYTAYCAkJ+cm50NBQDAYD48aNq/nCRERE6gmFbhERkTqubdu2bNmyhdLSUsuxsrIy3n33Xdq1a2fFykREROo+hW4REZE6zs/Pj7Zt27Jjxw7LsR07dtCuXTt8fX0tx27evMm0adNo2bIl9vb29OzZk/T09Ds+6+OPP8bd3R0HBwf69OnDP/7xj5/8vrS0NAICAnBwcKBt27ZMmzaNGzduVFv7REREajOFbhERkXogODiYdevWWX5eu3Yt48ePv+OauXPnsn37djZs2EBGRgYdOnRg4MCBXLlyBYAzZ87w5JNP8vjjj5OVlcXEiRP5y1/+csdn5OXlMWjQIEaMGEF2djZJSUmkpaURFhZW/Y0UERGphRS6RURE6oGxY8eSlpZGfn4++fn5HDp0iLFjx1rO37hxgzfeeIMVK1bwxz/+kYceeoi33noLBwcH3n77bQDeeOMN2rdvT3x8PB4eHowZM+Yn74PHxcUxZswYZsyYQceOHfn9739PQkICGzdupKysrCabLCIiUivYWrsAERERqX4tWrRgyJAhrF+/nqqqKoYMGULz5s0t5/Py8igvL+cPf/iD5ViDBg145JFHyMnJASAnJ4dHH330js/t0aPHHT9/9dVXZGdns3nzZsuxqqoqTCYTp0+fxtPTszqaJyIiUmspdIuIiNQTwcHBlmneq1evrpbfcf36dSZPnsy0adN+ck6LtomISH2k0C0iIlJPDBo0iB9++AGDwcDAgQPvONe+fXsaNmzIoUOHcHNzA6C8vJz09HRmzJgBgKenJx988MEd933++ed3/Ozn58exY8fo0KFD9TVERETkN0TvdIuIiNQTNjY25OTkcOzYMWxsbO4416hRI6ZMmcKcOXNITk7m2LFjTJo0iZKSEiZMmABASEgIJ0+eZM6cOZw4cYJ3332X9evX3/E5kZGRHD58mLCwMLKysjh58iS7du3SQmoiIlJvKXSLiIjUI02aNKFJkyY/e27p0qWMGDGCoKAg/Pz8+O6779i9ezf3338/cGt6+Pbt23n//ffx8fHhzTffZMmSJXd8hre3NwcOHCA3N5eAgAB8fX2JjY3F1dW12tsmIiJSGxmqqqqqrF2EiIiIiIiISF2kkW4RERERERGRaqLQLSIiIiIiIlJNFLpFREREREREqolCt4iIiIiIiEg1UegWERERERERqSYK3SIiIiIiIiLVRKFbREREREREpJoodIuIiIiIiIhUE4VuERERERERkWqi0C0iIiIiIiJSTRS6RURERERERKqJQreIiIiIiIhINfk/f/yxg5cVvKgAAAAASUVORK5CYII=", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "# Check the structure of the summary DataFrames\n", - "print(\"Manual Tuned Summary:\")\n", - "print(manual_tuned_summary.head())\n", - "\n", - "print(\"API Tuned Summary:\")\n", - "print(api_tuned_summary.head())\n", - "\n", - "print(\"Untuned Summary:\")\n", - "print(untuned_automl_summary.head())\n", - "\n", - "print(\"Dummy Summary:\")\n", - "print(dummy_summary.head())\n", - "\n", - "# Check if `summary` contains the required columns\n", - "required_columns = ['coef', '2.5 %', '97.5 %']\n", - "if not all(col in summary.columns for col in required_columns):\n", - " raise ValueError(\"Summary DataFrame is missing required columns.\")\n", - "\n", - "# Extract model labels and coefficient values\n", - "model_labels = summary.index.get_level_values('Model Type')\n", - "coef_values = summary['coef'].values\n", - "\n", - "print(\"Extracted model labels:\", model_labels)\n", - "print(\"Extracted coefficient values:\", coef_values)\n", - "\n", - "# Calculate errors\n", - "errors = np.full((2, len(coef_values)), np.nan)\n", - "errors[0, :] = summary['coef'] - summary['2.5 %']\n", - "errors[1, :] = summary['97.5 %'] - summary['coef']\n", - "\n", - "# Plot Coefficients and 95% Confidence Intervals\n", - "plt.figure(figsize=(10, 6))\n", - "plt.errorbar(model_labels, coef_values, fmt='o', yerr=errors, capsize=5)\n", - "plt.axhline(0.5, color='red', linestyle='--')\n", - "plt.xlabel('Model')\n", - "plt.ylabel('Coefficients and 95%-CI')\n", - "plt.title('Comparison of Coefficients and 95% Confidence Intervals')\n", - "plt.xticks(rotation=45)\n", - "plt.tight_layout()\n", - "plt.show()\n", - "\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "##### Compare Metrics and Plot Bar Charts\n", - "\n", - "In this section, we compare metrics for different models and plot a bar chart to visualize the differences in their performance. We also save the comparison results to a file for future reference." - ] - }, - { - "cell_type": "code", - "execution_count": 51, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Summary DataFrame columns: Index(['coef', 'std err', 't', 'P>|t|', '2.5 %', '97.5 %'], dtype='object')\n", - "Summary DataFrame index: Index(['d'], dtype='object')\n", - "Available metrics: Index(['d'], dtype='object')\n", - "Summary DataFrame columns: Index(['coef', 'std err', 't', 'P>|t|', '2.5 %', '97.5 %'], dtype='object')\n", - "Summary DataFrame index: Index(['d'], dtype='object')\n", - "Available metrics: Index(['d'], dtype='object')\n", - "Summary DataFrame columns: Index(['coef', 'std err', 't', 'P>|t|', '2.5 %', '97.5 %'], dtype='object')\n", - "Summary DataFrame index: Index(['d'], dtype='object')\n", - "Available metrics: Index(['d'], dtype='object')\n", - "Summary DataFrame columns: Index(['coef', 'std err', 't', 'P>|t|', '2.5 %', '97.5 %'], dtype='object')\n", - "Summary DataFrame index: Index(['d'], dtype='object')\n", - "Available metrics: Index(['d'], dtype='object')\n" - ] - }, - { - "data": { - "image/png": "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Zdy9exempqZFXzwRERGRlpE02AUEBMDDwwPu7u4AgJCQEOzZswehoaH4/vvv3+ofGhqKp0+f4sSJE9DT0wMA2NjYFGXJRERERFpLsqHYzMxMREVFwdXV9e9ilEq4urri5MmTee7z22+/oVmzZhg9ejQsLCxQv359zJkzByqV6p3vk5GRgZSUlFwPIiIiIjmSLNg9fvwYKpUKFhYWudotLCyQkJCQ5z63b9/Gtm3boFKpsHfvXkydOhWLFi2Cn5/fO9/H398fZcuW1Tysra0L9HMQERERaQvJJ0+8D7VajYoVK2LlypVwcnJC37594ePjg5CQkHfu4+3tjeTkZM0jPj6+CCsmIiIiKjqSXWNnZmYGHR0dJCYm5mpPTEyEpaVlnvtUqlQJenp60NHR0bTVrVsXCQkJyMzMhL6+/lv7GBgYwMDAoGCLJyIiItJCkp2x09fXh5OTE8LDwzVtarUa4eHhaNasWZ77fPLJJ7h58ybUarWm7fr166hUqVKeoY6IiIioJJF0KNbLywurVq3C+vXrcfXqVYwcORKpqamaWbKDBg2Ct7e3pv/IkSPx9OlTjB07FtevX8eePXswZ84cjB49WqqPQERERKQ1JF3upG/fvkhKSoKvry8SEhLg4OCAffv2aSZUxMXFQan8O3taW1tj//79GDduHBo2bIjKlStj7NixmDRpklQfgYiIiEhrSBrsAMDT0xOenp55bouMjHyrrVmzZjh16lQhV0VERERU/BSrWbFERERE9G4MdkREREQywWBHREREJBMMdkREREQywWBHREREJBMMdkREREQywWBHREREJBMMdkREREQywWBHREREJBMMdkREREQywWBHREREJBMMdkREREQyoSt1AUSUfzbf75G6BK10Z24XqUsgItIKDHYS4y/qvPEXNRER0fvjUCwRERGRTDDYEREREckEgx0RERGRTDDYEREREckEgx0RERGRTDDYEREREckEgx0RERGRTDDYEREREckEgx0RERGRTDDYEREREckEgx0RERGRTDDYEREREckEgx0RERGRTDDYEREREckEgx0RERGRTDDYEREREcmEVgS74OBg2NjYwNDQEE2aNMHp06ff2XfdunVQKBS5HoaGhkVYLREREZF2kjzYhYWFwcvLC9OmTUN0dDTs7e3RoUMHPHr06J37mJiY4OHDh5rH3bt3i7Bi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7Nu3TzOhIi4uDkrl3ycWU1NTMWrUKNy7dw9GRkaoU6cOfvzxR/Tt21eqj0BERESkFSQPdgDg6ekJT0/PPLdFRkbmeu7n5wc/P78iqIqIiIioeJF8gWIiIiIiKhgMdkREREQywWBHREREJBMMdkREREQywWBHREREJBMMdkREREQywWBHREREJBMMdkREREQywWBHREREJBMMdkREREQywWBHREREJBMMdkREREQywWBHREREJBMMdkREREQywWBHREREJBMMdkREREQywWBHREREJBMMdkREREQywWBHREREJBMMdkREREQywWBHREREJBMMdkREREQywWBHREREJBMMdkREREQywWBHREREJBMMdkREREQywWBHREREJBMMdkREREQywWBHREREJBMMdkREREQywWBHREREJBNaEeyCg4NhY2MDQ0NDNGnSBKdPn35n31WrVqFFixYoV64cypUrB1dX13/sT0RERFRSSB7swsLC4OXlhWnTpiE6Ohr29vbo0KEDHj16lGf/yMhI9OvXD3/88QdOnjwJa2trtG/fHvfv3y/iyomIiIi0i+TBLiAgAB4eHnB3d0e9evUQEhICY2NjhIaG5tl/06ZNGDVqFBwcHFCnTh2sXr0aarUa4eHhRVw5ERERkXaRNNhlZmYiKioKrq6umjalUglXV1ecPHkyX6+RlpaGrKwslC9fPs/tGRkZSElJyfUgIiIikiNJg93jx4+hUqlgYWGRq93CwgIJCQn5eo1JkybBysoqVzh8k7+/P8qWLat5WFtbf3DdRERERNpI8qHYDzF37lxs2bIFv/zyCwwNDfPs4+3tjeTkZM0jPj6+iKskIiIiKhq6Ur65mZkZdHR0kJiYmKs9MTERlpaW/7jvwoULMXfuXBw6dAgNGzZ8Zz8DAwMYGBgUSL1ERERE2kzSM3b6+vpwcnLKNfEhZyJEs2bN3rnf/PnzMWvWLOzbtw/Ozs5FUSoRERGR1pP0jB0AeHl5wc3NDc7OzmjcuDECAwORmpoKd3d3AMCgQYNQuXJl+Pv7AwDmzZsHX19fbN68GTY2Nppr8UqXLo3SpUtL9jmIiIiIpCZ5sOvbty+SkpLg6+uLhIQEODg4YN++fZoJFXFxcVAq/z6x+MMPPyAzMxO9evXK9TrTpk3D9OnTi7J0IiIiIq0iebADAE9PT3h6eua5LTIyMtfz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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "image/png": "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Cpvs19gVlqZNm+LkyZM4fPgwvLy80KlTp7det/c+/P39kZycLL3u3LlTgNUSERERfTxZg525uTm0tLSQlJSk1p6UlARLS8s857G0tHyv/kZGRqhcuTLq16+PpUuXQltbG0uXLpWW8b8hLzs7G0+ePHnrevX09GBsbKz2IiIiIipOZA12urq6cHFxQWRkpNSmUqkQGRkJNze3POdxc3NT6w8AERERb+3/+nIzMjKkZTx79gyxsbHS9KioKKhUKri6un7o5hARERHJSlvuAvz8/NC7d2/UqVMH9erVQ3BwMFJTU9G3b18AQK9evVC+fHkEBQUBAEaMGAF3d3fMnTsXrVu3xrp163DixAksWbIEAJCamooZM2agbdu2KFeuHB49eoSFCxfi3r176NixIwCgatWq8PLywoABAxAWFoasrCz4+vqiS5cu73VHLBEREVFxJHuw69y5Mx4+fIjAwEAkJibC2dkZO3fulG6QuH37NpTKfw4sNmjQAGvXrsWECRMwfvx42NnZYcuWLahevToAQEtLCxcvXsTKlSvx6NEjmJmZoW7dujhw4AAcHR2l5axZswa+vr5o3rw5lEol2rdvj5CQkKLdeCIiIqICJPs4dp8qjmNXPHGcMnXcN9Rx/yCiT9EnM44dERERERUcBjsiIiIiDcFgR0RERKQhGOyIiIiINASDHREREZGGYLAjIiIi0hAMdkREREQagsGOiIiISEMw2BERERFpCAY7IiIiIg3BYEdERESkIRjsiIiIiDQEgx0RERGRhmCwIyIiItIQDHZEREREGoLBjoiIiEhDMNgRERERaQgGOyIiIiINwWBHREREpCEY7IiIiIg0BIMdERERkYZgsCMiIiLSEAx2RERERBqCwY6IiIhIQzDYEREREWkIbbkLICKiomcz7i+5SyhWbs5sLXcJRAWCR+yIiIiINASDHREREZGGYLAjIiIi0hAMdkREREQagsGOiIiISEMw2BERERFpCAY7IiIiIg1RLILdwoULYWNjA319fbi6uuLYsWPv7L9hwwY4ODhAX18fNWrUwI4dO6RpWVlZGDt2LGrUqAEjIyNYWVmhV69eSEhIUFuGjY0NFAqF2mvmzJmFsn1ERERERUH2YBceHg4/Pz9MmjQJcXFxcHJygqenJx48eJBn/8OHD6Nr167w8fFBfHw8vL294e3tjbNnzwIA0tLS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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "def print_scores(dml_obj, store_predictions=False):\n", - " if store_predictions:\n", - " dml_obj.fit(store_predictions=True)\n", - " summary_df = dml_obj.summary\n", - " print(\"Summary DataFrame columns:\", summary_df.columns)\n", - " print(\"Summary DataFrame index:\", summary_df.index)\n", - " \n", - " # Extract available metrics from the index\n", - " available_metrics = summary_df.index\n", - " print(\"Available metrics:\", available_metrics)\n", - " \n", - " # Select a metric to compare, e.g., 'd'\n", - " metric_to_use = 'd'\n", - " if metric_to_use not in available_metrics:\n", - " raise KeyError(f\"{metric_to_use} not found in summary.\")\n", - " \n", - " scores = summary_df.loc[metric_to_use]\n", - " return scores\n", - "\n", - "# Calculate and store scores for comparison\n", - "scores = {\n", - " \"FLAML Manual Tuned\": print_scores(obj_dml_plr_manual_tuned, True),\n", - " \"FLAML API Tuned\": print_scores(dml_plr_obj_api_tuned, True),\n", - " \"AutoML Untuned\": print_scores(dml_plr_obj_untuned_automl, True),\n", - " \"Dummy\": print_scores(dml_plr_obj_dummy, True)\n", - "}\n", - "\n", - "# Convert the scores dictionary to a DataFrame for plotting\n", - "scores_df = pd.DataFrame(scores).T # Transpose to have the model types as rows\n", - "\n", - "# Save the scores to a file\n", - "scores_df.to_pickle(\"scores_comparison.pkl\")\n", - "\n", - "# Plot MSE for l_of_X and m_of_X separately\n", - "scores_df['coef'].plot(kind=\"bar\", title=\"MSE for l_of_X\")\n", - "plt.ylabel('MSE')\n", - "plt.xticks(rotation=45)\n", - "plt.tight_layout()\n", - "plt.show()\n", - "\n", - "scores_df['std err'].plot(kind=\"bar\", title=\"MSE for m_of_X\")\n", - "plt.ylabel('MSE')\n", - "plt.xticks(rotation=45)\n", - "plt.tight_layout()\n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Observations\n", - "\n", - "- **Coefficient Values**: The coefficients for the `FLAML Manual Tuned` and `FLAML API Tuned` models are quite similar, with the API-tuned model having a slightly higher coefficient. Both are lower compared to the `AutoML Untuned` and `Dummy` models.\n", - "- **Untuned AutoML Models**: The `AutoML Untuned` models yield a higher coefficient compared to the manually tuned FLAML models, indicating that the automated process of model tuning in AutoML may have overestimated the effect. The `Dummy` model has the highest coefficient, suggesting it could be overfitting or has a higher baseline value.\n", - "\n", - "### Conclusion\n", - "\n", - "- The **FLAML Manual Tuned** and **FLAML API Tuned** models provide similar results with coefficients close to 0.5, suggesting robust performance within their tuned configurations.\n", - "- The **AutoML Untuned** models offer higher coefficient values, indicating that even though they are untuned, they still provide a noticeable increase in coefficient compared to the tuned FLAML models.\n", - "- The **Dummy** model, having the highest coefficient, shows the largest discrepancy, which may imply it is not as well-calibrated as the other models.\n", - "\n", - "Overall, the manually tuned FLAML models and the API-tuned FLAML models show good alignment with the expectations, while the untuned and dummy models present larger coefficients which may suggest the need for further tuning or validation." - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python (myenv_py311)", - "language": "python", - "name": "myenv_py311" - }, - "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.11.10" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/doc/examples/index.rst b/doc/examples/index.rst index 7daddaae..6787b6ae 100644 --- a/doc/examples/index.rst +++ b/doc/examples/index.rst @@ -30,6 +30,7 @@ General Examples py_double_ml_did_pretest.ipynb py_double_ml_basic_iv.ipynb py_double_ml_plm_irm_hetfx.ipynb + py_double_ml_meets_flaml.ipynb Effect Heterogeneity diff --git a/doc/examples/py_double_ml_meets_flaml.ipynb b/doc/examples/py_double_ml_meets_flaml.ipynb new file mode 100644 index 00000000..bd0e0fff --- /dev/null +++ b/doc/examples/py_double_ml_meets_flaml.ipynb @@ -0,0 +1,587 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# DoubleML meets FLAML: Comparing AutoML tuning\n", + "\n", + "In this notebook we are going to explore how to tune learners with [AUTOML](https://github.com/microsoft/FLAML) in [DoubleML](https://docs.doubleml.org/stable/index.html) framework." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Data Generation" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We created synthetic data using the [make_plr_CCDDHNR2018](https://docs.doubleml.org/stable/api/generated/doubleml.datasets.make_plr_CCDDHNR2018.html) function, which generates data for a potential outcomes framework with 1000 observations and 50 features. The data generated will have 50 covariates variables, 1 treatment variable and 1 outcome variable." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import xgboost as xgb\n", + "import pandas as pd\n", + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "\n", + "from doubleml.datasets import make_plr_CCDDHNR2018\n", + "import doubleml as dml\n", + "from flaml import AutoML\n", + "from sklearn.model_selection import train_test_split\n", + "from sklearn.metrics import mean_squared_error\n", + "\n", + "# Generate synthetic data\n", + "data = make_plr_CCDDHNR2018(alpha=0.5, n_obs=1000, dim_x=50, return_type=\"DataFrame\")\n", + "data.head()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Manual Tuning with FLAML" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In this section, we manually tune two [XGBoost](https://xgboost.readthedocs.io/en/stable/) models using FLAML for a [partially linear regression](https://docs.doubleml.org/stable/guide/models.html#partially-linear-regression-model-plr) setup. This means, we implement the tuning with `FLAML` for the nuisance estimation manually. Once the tuning has been completed, we pass the learners to `DoubleML`.\n", + "\n", + "### Step 1: Initialize and Train the AutoML Models:\n", + "\n", + "We use FLAML to automatically tune two separate [XGBoost](https://xgboost.readthedocs.io/en/stable/) models:\n", + "\n", + "• Outcome Model ($ml_\\ell$): This model predicts the outcome variable y. We configured the FLAML AutoML with a time budget of 120 seconds, using XGBoost as the estimator and rmse as the performance metric.\n", + "\n", + "• Treatment Model (ml_m): This model predicts the treatment variable d. Similarly, we set the time budget to 120 seconds, used XGBoost, and optimized for rmse." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "ename": "KeyboardInterrupt", + "evalue": "", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)", + "Cell \u001b[1;32mIn[2], line 19\u001b[0m\n\u001b[0;32m 12\u001b[0m automl_m \u001b[38;5;241m=\u001b[39m AutoML()\n\u001b[0;32m 13\u001b[0m settings_m \u001b[38;5;241m=\u001b[39m {\n\u001b[0;32m 14\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mtime_budget\u001b[39m\u001b[38;5;124m\"\u001b[39m: \u001b[38;5;241m120\u001b[39m,\n\u001b[0;32m 15\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mmetric\u001b[39m\u001b[38;5;124m\"\u001b[39m: \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mrmse\u001b[39m\u001b[38;5;124m'\u001b[39m,\n\u001b[0;32m 16\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mestimator_list\u001b[39m\u001b[38;5;124m\"\u001b[39m: [\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mxgboost\u001b[39m\u001b[38;5;124m'\u001b[39m],\n\u001b[0;32m 17\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mtask\u001b[39m\u001b[38;5;124m\"\u001b[39m: \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mregression\u001b[39m\u001b[38;5;124m'\u001b[39m,\n\u001b[0;32m 18\u001b[0m }\n\u001b[1;32m---> 19\u001b[0m automl_m\u001b[38;5;241m.\u001b[39mfit(X_train\u001b[38;5;241m=\u001b[39mdata\u001b[38;5;241m.\u001b[39mdrop(columns\u001b[38;5;241m=\u001b[39m[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124my\u001b[39m\u001b[38;5;124m\"\u001b[39m, \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124md\u001b[39m\u001b[38;5;124m\"\u001b[39m])\u001b[38;5;241m.\u001b[39mvalues, y_train\u001b[38;5;241m=\u001b[39mdata[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124md\u001b[39m\u001b[38;5;124m\"\u001b[39m]\u001b[38;5;241m.\u001b[39mvalues, verbose\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m2\u001b[39m, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39msettings_m)\n", + "File \u001b[1;32mc:\\Users\\bachp\\anaconda3\\Lib\\site-packages\\flaml\\automl\\automl.py:1929\u001b[0m, in \u001b[0;36mAutoML.fit\u001b[1;34m(self, X_train, y_train, dataframe, label, metric, task, n_jobs, log_file_name, estimator_list, time_budget, max_iter, sample, ensemble, eval_method, log_type, model_history, split_ratio, n_splits, log_training_metric, mem_thres, pred_time_limit, train_time_limit, X_val, y_val, sample_weight_val, groups_val, groups, verbose, retrain_full, split_type, learner_selector, hpo_method, starting_points, seed, n_concurrent_trials, keep_search_state, preserve_checkpoint, early_stop, force_cancel, append_log, auto_augment, min_sample_size, use_ray, use_spark, free_mem_ratio, metric_constraints, custom_hp, time_col, cv_score_agg_func, skip_transform, mlflow_logging, fit_kwargs_by_estimator, **fit_kwargs)\u001b[0m\n\u001b[0;32m 1927\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[0;32m 1928\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_training_log \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m\n\u001b[1;32m-> 1929\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_search()\n\u001b[0;32m 1930\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_best_estimator:\n\u001b[0;32m 1931\u001b[0m logger\u001b[38;5;241m.\u001b[39minfo(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mfit succeeded\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n", + "File \u001b[1;32mc:\\Users\\bachp\\anaconda3\\Lib\\site-packages\\flaml\\automl\\automl.py:2483\u001b[0m, in \u001b[0;36mAutoML._search\u001b[1;34m(self)\u001b[0m\n\u001b[0;32m 2481\u001b[0m state\u001b[38;5;241m.\u001b[39mbest_config \u001b[38;5;241m=\u001b[39m state\u001b[38;5;241m.\u001b[39minit_config[\u001b[38;5;241m0\u001b[39m] \u001b[38;5;28;01mif\u001b[39;00m state\u001b[38;5;241m.\u001b[39minit_config \u001b[38;5;28;01melse\u001b[39;00m {}\n\u001b[0;32m 2482\u001b[0m \u001b[38;5;28;01melif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_use_ray \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;28;01mFalse\u001b[39;00m \u001b[38;5;129;01mand\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_use_spark \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;28;01mFalse\u001b[39;00m:\n\u001b[1;32m-> 2483\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_search_sequential()\n\u001b[0;32m 2484\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[0;32m 2485\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_search_parallel()\n", + "File \u001b[1;32mc:\\Users\\bachp\\anaconda3\\Lib\\site-packages\\flaml\\automl\\automl.py:2319\u001b[0m, in \u001b[0;36mAutoML._search_sequential\u001b[1;34m(self)\u001b[0m\n\u001b[0;32m 2313\u001b[0m search_state\u001b[38;5;241m.\u001b[39msearch_alg\u001b[38;5;241m.\u001b[39msearcher\u001b[38;5;241m.\u001b[39mset_search_properties(\n\u001b[0;32m 2314\u001b[0m metric\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mNone\u001b[39;00m,\n\u001b[0;32m 2315\u001b[0m mode\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mNone\u001b[39;00m,\n\u001b[0;32m 2316\u001b[0m metric_target\u001b[38;5;241m=\u001b[39m\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_state\u001b[38;5;241m.\u001b[39mbest_loss,\n\u001b[0;32m 2317\u001b[0m )\n\u001b[0;32m 2318\u001b[0m start_run_time \u001b[38;5;241m=\u001b[39m time\u001b[38;5;241m.\u001b[39mtime()\n\u001b[1;32m-> 2319\u001b[0m analysis \u001b[38;5;241m=\u001b[39m tune\u001b[38;5;241m.\u001b[39mrun(\n\u001b[0;32m 2320\u001b[0m search_state\u001b[38;5;241m.\u001b[39mtraining_function,\n\u001b[0;32m 2321\u001b[0m search_alg\u001b[38;5;241m=\u001b[39msearch_state\u001b[38;5;241m.\u001b[39msearch_alg,\n\u001b[0;32m 2322\u001b[0m time_budget_s\u001b[38;5;241m=\u001b[39mtime_budget_s,\n\u001b[0;32m 2323\u001b[0m verbose\u001b[38;5;241m=\u001b[39m\u001b[38;5;28mmax\u001b[39m(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mverbose \u001b[38;5;241m-\u001b[39m \u001b[38;5;241m3\u001b[39m, \u001b[38;5;241m0\u001b[39m),\n\u001b[0;32m 2324\u001b[0m use_ray\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mFalse\u001b[39;00m,\n\u001b[0;32m 2325\u001b[0m use_spark\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mFalse\u001b[39;00m,\n\u001b[0;32m 2326\u001b[0m )\n\u001b[0;32m 2327\u001b[0m time_used \u001b[38;5;241m=\u001b[39m time\u001b[38;5;241m.\u001b[39mtime() \u001b[38;5;241m-\u001b[39m start_run_time\n\u001b[0;32m 2328\u001b[0m better \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mFalse\u001b[39;00m\n", + "File \u001b[1;32mc:\\Users\\bachp\\anaconda3\\Lib\\site-packages\\flaml\\tune\\tune.py:814\u001b[0m, in \u001b[0;36mrun\u001b[1;34m(evaluation_function, config, low_cost_partial_config, cat_hp_cost, metric, mode, time_budget_s, points_to_evaluate, evaluated_rewards, resource_attr, min_resource, max_resource, reduction_factor, scheduler, search_alg, verbose, local_dir, num_samples, resources_per_trial, config_constraints, metric_constraints, max_failure, use_ray, use_spark, use_incumbent_result_in_evaluation, log_file_name, lexico_objectives, force_cancel, n_concurrent_trials, **ray_args)\u001b[0m\n\u001b[0;32m 812\u001b[0m result \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m\n\u001b[0;32m 813\u001b[0m \u001b[38;5;28;01mwith\u001b[39;00m PySparkOvertimeMonitor(time_start, time_budget_s, force_cancel):\n\u001b[1;32m--> 814\u001b[0m result \u001b[38;5;241m=\u001b[39m evaluation_function(trial_to_run\u001b[38;5;241m.\u001b[39mconfig)\n\u001b[0;32m 815\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m result \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[0;32m 816\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(result, \u001b[38;5;28mdict\u001b[39m):\n", + "File \u001b[1;32mc:\\Users\\bachp\\anaconda3\\Lib\\site-packages\\flaml\\automl\\state.py:304\u001b[0m, in \u001b[0;36mAutoMLState._compute_with_config_base\u001b[1;34m(config_w_resource, state, estimator, is_report)\u001b[0m\n\u001b[0;32m 289\u001b[0m \u001b[38;5;28;01mdel\u001b[39;00m config[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mFLAML_sample_size\u001b[39m\u001b[38;5;124m\"\u001b[39m]\n\u001b[0;32m 290\u001b[0m budget \u001b[38;5;241m=\u001b[39m (\n\u001b[0;32m 291\u001b[0m \u001b[38;5;28;01mNone\u001b[39;00m\n\u001b[0;32m 292\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m state\u001b[38;5;241m.\u001b[39mtime_budget \u001b[38;5;241m<\u001b[39m \u001b[38;5;241m0\u001b[39m\n\u001b[1;32m (...)\u001b[0m\n\u001b[0;32m 295\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m (state\u001b[38;5;241m.\u001b[39mtime_budget \u001b[38;5;241m-\u001b[39m state\u001b[38;5;241m.\u001b[39mtime_from_start) \u001b[38;5;241m/\u001b[39m \u001b[38;5;241m2\u001b[39m \u001b[38;5;241m*\u001b[39m sample_size \u001b[38;5;241m/\u001b[39m state\u001b[38;5;241m.\u001b[39mdata_size[\u001b[38;5;241m0\u001b[39m]\n\u001b[0;32m 296\u001b[0m )\n\u001b[0;32m 298\u001b[0m (\n\u001b[0;32m 299\u001b[0m trained_estimator,\n\u001b[0;32m 300\u001b[0m val_loss,\n\u001b[0;32m 301\u001b[0m metric_for_logging,\n\u001b[0;32m 302\u001b[0m _,\n\u001b[0;32m 303\u001b[0m pred_time,\n\u001b[1;32m--> 304\u001b[0m ) \u001b[38;5;241m=\u001b[39m compute_estimator(\n\u001b[0;32m 305\u001b[0m sampled_X_train,\n\u001b[0;32m 306\u001b[0m sampled_y_train,\n\u001b[0;32m 307\u001b[0m state\u001b[38;5;241m.\u001b[39mX_val,\n\u001b[0;32m 308\u001b[0m state\u001b[38;5;241m.\u001b[39my_val,\n\u001b[0;32m 309\u001b[0m state\u001b[38;5;241m.\u001b[39mweight_val,\n\u001b[0;32m 310\u001b[0m state\u001b[38;5;241m.\u001b[39mgroups_val,\n\u001b[0;32m 311\u001b[0m state\u001b[38;5;241m.\u001b[39mtrain_time_limit \u001b[38;5;28;01mif\u001b[39;00m budget \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m \u001b[38;5;28;01melse\u001b[39;00m \u001b[38;5;28mmin\u001b[39m(budget, state\u001b[38;5;241m.\u001b[39mtrain_time_limit \u001b[38;5;129;01mor\u001b[39;00m np\u001b[38;5;241m.\u001b[39minf),\n\u001b[0;32m 312\u001b[0m state\u001b[38;5;241m.\u001b[39mkf,\n\u001b[0;32m 313\u001b[0m config,\n\u001b[0;32m 314\u001b[0m state\u001b[38;5;241m.\u001b[39mtask,\n\u001b[0;32m 315\u001b[0m estimator,\n\u001b[0;32m 316\u001b[0m state\u001b[38;5;241m.\u001b[39meval_method,\n\u001b[0;32m 317\u001b[0m state\u001b[38;5;241m.\u001b[39mmetric,\n\u001b[0;32m 318\u001b[0m state\u001b[38;5;241m.\u001b[39mbest_loss,\n\u001b[0;32m 319\u001b[0m state\u001b[38;5;241m.\u001b[39mn_jobs,\n\u001b[0;32m 320\u001b[0m state\u001b[38;5;241m.\u001b[39mlearner_classes\u001b[38;5;241m.\u001b[39mget(estimator),\n\u001b[0;32m 321\u001b[0m state\u001b[38;5;241m.\u001b[39mcv_score_agg_func,\n\u001b[0;32m 322\u001b[0m state\u001b[38;5;241m.\u001b[39mlog_training_metric,\n\u001b[0;32m 323\u001b[0m this_estimator_kwargs,\n\u001b[0;32m 324\u001b[0m state\u001b[38;5;241m.\u001b[39mfree_mem_ratio,\n\u001b[0;32m 325\u001b[0m )\n\u001b[0;32m 326\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m state\u001b[38;5;241m.\u001b[39mretrain_final \u001b[38;5;129;01mand\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m state\u001b[38;5;241m.\u001b[39mmodel_history:\n\u001b[0;32m 327\u001b[0m trained_estimator\u001b[38;5;241m.\u001b[39mcleanup()\n", + "File \u001b[1;32mc:\\Users\\bachp\\anaconda3\\Lib\\site-packages\\flaml\\automl\\ml.py:369\u001b[0m, in \u001b[0;36mcompute_estimator\u001b[1;34m(X_train, y_train, X_val, y_val, weight_val, groups_val, budget, kf, config_dic, task, estimator_name, eval_method, eval_metric, best_val_loss, n_jobs, estimator_class, cv_score_agg_func, log_training_metric, fit_kwargs, free_mem_ratio)\u001b[0m\n\u001b[0;32m 351\u001b[0m val_loss, metric_for_logging, train_time, pred_time \u001b[38;5;241m=\u001b[39m get_val_loss(\n\u001b[0;32m 352\u001b[0m config_dic,\n\u001b[0;32m 353\u001b[0m estimator,\n\u001b[1;32m (...)\u001b[0m\n\u001b[0;32m 366\u001b[0m free_mem_ratio\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m0\u001b[39m,\n\u001b[0;32m 367\u001b[0m )\n\u001b[0;32m 368\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[1;32m--> 369\u001b[0m val_loss, metric_for_logging, train_time, pred_time \u001b[38;5;241m=\u001b[39m task\u001b[38;5;241m.\u001b[39mevaluate_model_CV(\n\u001b[0;32m 370\u001b[0m config_dic,\n\u001b[0;32m 371\u001b[0m estimator,\n\u001b[0;32m 372\u001b[0m X_train,\n\u001b[0;32m 373\u001b[0m y_train,\n\u001b[0;32m 374\u001b[0m budget,\n\u001b[0;32m 375\u001b[0m kf,\n\u001b[0;32m 376\u001b[0m eval_metric,\n\u001b[0;32m 377\u001b[0m best_val_loss,\n\u001b[0;32m 378\u001b[0m cv_score_agg_func,\n\u001b[0;32m 379\u001b[0m log_training_metric\u001b[38;5;241m=\u001b[39mlog_training_metric,\n\u001b[0;32m 380\u001b[0m fit_kwargs\u001b[38;5;241m=\u001b[39mfit_kwargs,\n\u001b[0;32m 381\u001b[0m free_mem_ratio\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m0\u001b[39m,\n\u001b[0;32m 382\u001b[0m )\n\u001b[0;32m 384\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(estimator, TransformersEstimator):\n\u001b[0;32m 385\u001b[0m \u001b[38;5;28;01mdel\u001b[39;00m fit_kwargs[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mmetric\u001b[39m\u001b[38;5;124m\"\u001b[39m], fit_kwargs[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mX_val\u001b[39m\u001b[38;5;124m\"\u001b[39m], fit_kwargs[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124my_val\u001b[39m\u001b[38;5;124m\"\u001b[39m]\n", + "File \u001b[1;32mc:\\Users\\bachp\\anaconda3\\Lib\\site-packages\\flaml\\automl\\task\\generic_task.py:740\u001b[0m, in \u001b[0;36mGenericTask.evaluate_model_CV\u001b[1;34m(self, config, estimator, X_train_all, y_train_all, budget, kf, eval_metric, best_val_loss, cv_score_agg_func, log_training_metric, fit_kwargs, free_mem_ratio)\u001b[0m\n\u001b[0;32m 737\u001b[0m groups_val \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m\n\u001b[0;32m 739\u001b[0m estimator\u001b[38;5;241m.\u001b[39mcleanup()\n\u001b[1;32m--> 740\u001b[0m val_loss_i, metric_i, train_time_i, pred_time_i \u001b[38;5;241m=\u001b[39m get_val_loss(\n\u001b[0;32m 741\u001b[0m config,\n\u001b[0;32m 742\u001b[0m estimator,\n\u001b[0;32m 743\u001b[0m X_train,\n\u001b[0;32m 744\u001b[0m y_train,\n\u001b[0;32m 745\u001b[0m X_val,\n\u001b[0;32m 746\u001b[0m y_val,\n\u001b[0;32m 747\u001b[0m weight_val,\n\u001b[0;32m 748\u001b[0m groups_val,\n\u001b[0;32m 749\u001b[0m eval_metric,\n\u001b[0;32m 750\u001b[0m \u001b[38;5;28mself\u001b[39m,\n\u001b[0;32m 751\u001b[0m labels,\n\u001b[0;32m 752\u001b[0m budget_per_train,\n\u001b[0;32m 753\u001b[0m log_training_metric\u001b[38;5;241m=\u001b[39mlog_training_metric,\n\u001b[0;32m 754\u001b[0m fit_kwargs\u001b[38;5;241m=\u001b[39mfit_kwargs,\n\u001b[0;32m 755\u001b[0m free_mem_ratio\u001b[38;5;241m=\u001b[39mfree_mem_ratio,\n\u001b[0;32m 756\u001b[0m )\n\u001b[0;32m 757\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(metric_i, \u001b[38;5;28mdict\u001b[39m) \u001b[38;5;129;01mand\u001b[39;00m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mintermediate_results\u001b[39m\u001b[38;5;124m\"\u001b[39m \u001b[38;5;129;01min\u001b[39;00m metric_i\u001b[38;5;241m.\u001b[39mkeys():\n\u001b[0;32m 758\u001b[0m \u001b[38;5;28;01mdel\u001b[39;00m metric_i[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mintermediate_results\u001b[39m\u001b[38;5;124m\"\u001b[39m]\n", + "File \u001b[1;32mc:\\Users\\bachp\\anaconda3\\Lib\\site-packages\\flaml\\automl\\ml.py:494\u001b[0m, in \u001b[0;36mget_val_loss\u001b[1;34m(config, estimator, X_train, y_train, X_val, y_val, weight_val, groups_val, eval_metric, task, labels, budget, log_training_metric, fit_kwargs, free_mem_ratio)\u001b[0m\n\u001b[0;32m 489\u001b[0m start \u001b[38;5;241m=\u001b[39m time\u001b[38;5;241m.\u001b[39mtime()\n\u001b[0;32m 490\u001b[0m \u001b[38;5;66;03m# if groups_val is not None:\u001b[39;00m\n\u001b[0;32m 491\u001b[0m \u001b[38;5;66;03m# fit_kwargs['groups_val'] = groups_val\u001b[39;00m\n\u001b[0;32m 492\u001b[0m \u001b[38;5;66;03m# fit_kwargs['X_val'] = X_val\u001b[39;00m\n\u001b[0;32m 493\u001b[0m \u001b[38;5;66;03m# fit_kwargs['y_val'] = y_val\u001b[39;00m\n\u001b[1;32m--> 494\u001b[0m estimator\u001b[38;5;241m.\u001b[39mfit(X_train, y_train, budget\u001b[38;5;241m=\u001b[39mbudget, free_mem_ratio\u001b[38;5;241m=\u001b[39mfree_mem_ratio, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mfit_kwargs)\n\u001b[0;32m 495\u001b[0m val_loss, metric_for_logging, pred_time, _ \u001b[38;5;241m=\u001b[39m _eval_estimator(\n\u001b[0;32m 496\u001b[0m config,\n\u001b[0;32m 497\u001b[0m estimator,\n\u001b[1;32m (...)\u001b[0m\n\u001b[0;32m 508\u001b[0m fit_kwargs,\n\u001b[0;32m 509\u001b[0m )\n\u001b[0;32m 510\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mhasattr\u001b[39m(estimator, \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mintermediate_results\u001b[39m\u001b[38;5;124m\"\u001b[39m):\n", + "File \u001b[1;32mc:\\Users\\bachp\\anaconda3\\Lib\\site-packages\\flaml\\automl\\model.py:1667\u001b[0m, in \u001b[0;36mXGBoostSklearnEstimator.fit\u001b[1;34m(self, X_train, y_train, budget, free_mem_ratio, **kwargs)\u001b[0m\n\u001b[0;32m 1665\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mparams[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mtree_method\u001b[39m\u001b[38;5;124m\"\u001b[39m] \u001b[38;5;241m=\u001b[39m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mgpu_hist\u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[0;32m 1666\u001b[0m kwargs\u001b[38;5;241m.\u001b[39mpop(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mgpu_per_trial\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[1;32m-> 1667\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28msuper\u001b[39m()\u001b[38;5;241m.\u001b[39mfit(X_train, y_train, budget, free_mem_ratio, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs)\n", + "File \u001b[1;32mc:\\Users\\bachp\\anaconda3\\Lib\\site-packages\\flaml\\automl\\model.py:1422\u001b[0m, in \u001b[0;36mLGBMEstimator.fit\u001b[1;34m(self, X_train, y_train, budget, free_mem_ratio, **kwargs)\u001b[0m\n\u001b[0;32m 1420\u001b[0m callbacks \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m\n\u001b[0;32m 1421\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m callbacks \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[1;32m-> 1422\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_fit(X_train, y_train, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs)\n\u001b[0;32m 1423\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[0;32m 1424\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_fit(X_train, y_train, callbacks\u001b[38;5;241m=\u001b[39mcallbacks, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs)\n", + "File \u001b[1;32mc:\\Users\\bachp\\anaconda3\\Lib\\site-packages\\flaml\\automl\\model.py:232\u001b[0m, in \u001b[0;36mBaseEstimator._fit\u001b[1;34m(self, X_train, y_train, **kwargs)\u001b[0m\n\u001b[0;32m 229\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m logger\u001b[38;5;241m.\u001b[39mlevel \u001b[38;5;241m==\u001b[39m logging\u001b[38;5;241m.\u001b[39mDEBUG:\n\u001b[0;32m 230\u001b[0m \u001b[38;5;66;03m# xgboost 1.6 doesn't display all the params in the model str\u001b[39;00m\n\u001b[0;32m 231\u001b[0m logger\u001b[38;5;241m.\u001b[39mdebug(\u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mflaml.automl.model - \u001b[39m\u001b[38;5;132;01m{\u001b[39;00mmodel\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m fit started with params \u001b[39m\u001b[38;5;132;01m{\u001b[39;00m\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mparams\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m\"\u001b[39m)\n\u001b[1;32m--> 232\u001b[0m model\u001b[38;5;241m.\u001b[39mfit(X_train, y_train, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs)\n\u001b[0;32m 233\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m logger\u001b[38;5;241m.\u001b[39mlevel \u001b[38;5;241m==\u001b[39m logging\u001b[38;5;241m.\u001b[39mDEBUG:\n\u001b[0;32m 234\u001b[0m logger\u001b[38;5;241m.\u001b[39mdebug(\u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mflaml.automl.model - \u001b[39m\u001b[38;5;132;01m{\u001b[39;00mmodel\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m fit finished\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n", + "File \u001b[1;32mc:\\Users\\bachp\\anaconda3\\Lib\\site-packages\\xgboost\\core.py:730\u001b[0m, in \u001b[0;36mrequire_keyword_args..throw_if..inner_f\u001b[1;34m(*args, **kwargs)\u001b[0m\n\u001b[0;32m 728\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m k, arg \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28mzip\u001b[39m(sig\u001b[38;5;241m.\u001b[39mparameters, args):\n\u001b[0;32m 729\u001b[0m kwargs[k] \u001b[38;5;241m=\u001b[39m arg\n\u001b[1;32m--> 730\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m func(\u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs)\n", + "File \u001b[1;32mc:\\Users\\bachp\\anaconda3\\Lib\\site-packages\\xgboost\\sklearn.py:1090\u001b[0m, in \u001b[0;36mXGBModel.fit\u001b[1;34m(self, X, y, sample_weight, base_margin, eval_set, eval_metric, early_stopping_rounds, verbose, xgb_model, sample_weight_eval_set, base_margin_eval_set, feature_weights, callbacks)\u001b[0m\n\u001b[0;32m 1079\u001b[0m obj \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m\n\u001b[0;32m 1081\u001b[0m (\n\u001b[0;32m 1082\u001b[0m model,\n\u001b[0;32m 1083\u001b[0m metric,\n\u001b[1;32m (...)\u001b[0m\n\u001b[0;32m 1088\u001b[0m xgb_model, eval_metric, params, early_stopping_rounds, callbacks\n\u001b[0;32m 1089\u001b[0m )\n\u001b[1;32m-> 1090\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_Booster \u001b[38;5;241m=\u001b[39m train(\n\u001b[0;32m 1091\u001b[0m params,\n\u001b[0;32m 1092\u001b[0m train_dmatrix,\n\u001b[0;32m 1093\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mget_num_boosting_rounds(),\n\u001b[0;32m 1094\u001b[0m evals\u001b[38;5;241m=\u001b[39mevals,\n\u001b[0;32m 1095\u001b[0m early_stopping_rounds\u001b[38;5;241m=\u001b[39mearly_stopping_rounds,\n\u001b[0;32m 1096\u001b[0m evals_result\u001b[38;5;241m=\u001b[39mevals_result,\n\u001b[0;32m 1097\u001b[0m obj\u001b[38;5;241m=\u001b[39mobj,\n\u001b[0;32m 1098\u001b[0m custom_metric\u001b[38;5;241m=\u001b[39mmetric,\n\u001b[0;32m 1099\u001b[0m verbose_eval\u001b[38;5;241m=\u001b[39mverbose,\n\u001b[0;32m 1100\u001b[0m xgb_model\u001b[38;5;241m=\u001b[39mmodel,\n\u001b[0;32m 1101\u001b[0m callbacks\u001b[38;5;241m=\u001b[39mcallbacks,\n\u001b[0;32m 1102\u001b[0m )\n\u001b[0;32m 1104\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_set_evaluation_result(evals_result)\n\u001b[0;32m 1105\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mself\u001b[39m\n", + "File \u001b[1;32mc:\\Users\\bachp\\anaconda3\\Lib\\site-packages\\xgboost\\core.py:730\u001b[0m, in \u001b[0;36mrequire_keyword_args..throw_if..inner_f\u001b[1;34m(*args, **kwargs)\u001b[0m\n\u001b[0;32m 728\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m k, arg \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28mzip\u001b[39m(sig\u001b[38;5;241m.\u001b[39mparameters, args):\n\u001b[0;32m 729\u001b[0m kwargs[k] \u001b[38;5;241m=\u001b[39m arg\n\u001b[1;32m--> 730\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m func(\u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs)\n", + "File \u001b[1;32mc:\\Users\\bachp\\anaconda3\\Lib\\site-packages\\xgboost\\training.py:181\u001b[0m, in \u001b[0;36mtrain\u001b[1;34m(params, dtrain, num_boost_round, evals, obj, feval, maximize, early_stopping_rounds, evals_result, verbose_eval, xgb_model, callbacks, custom_metric)\u001b[0m\n\u001b[0;32m 179\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m cb_container\u001b[38;5;241m.\u001b[39mbefore_iteration(bst, i, dtrain, evals):\n\u001b[0;32m 180\u001b[0m \u001b[38;5;28;01mbreak\u001b[39;00m\n\u001b[1;32m--> 181\u001b[0m bst\u001b[38;5;241m.\u001b[39mupdate(dtrain, i, obj)\n\u001b[0;32m 182\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m cb_container\u001b[38;5;241m.\u001b[39mafter_iteration(bst, i, dtrain, evals):\n\u001b[0;32m 183\u001b[0m \u001b[38;5;28;01mbreak\u001b[39;00m\n", + "File \u001b[1;32mc:\\Users\\bachp\\anaconda3\\Lib\\site-packages\\xgboost\\core.py:2051\u001b[0m, in \u001b[0;36mBooster.update\u001b[1;34m(self, dtrain, iteration, fobj)\u001b[0m\n\u001b[0;32m 2047\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_assign_dmatrix_features(dtrain)\n\u001b[0;32m 2049\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m fobj \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[0;32m 2050\u001b[0m _check_call(\n\u001b[1;32m-> 2051\u001b[0m _LIB\u001b[38;5;241m.\u001b[39mXGBoosterUpdateOneIter(\n\u001b[0;32m 2052\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mhandle, ctypes\u001b[38;5;241m.\u001b[39mc_int(iteration), dtrain\u001b[38;5;241m.\u001b[39mhandle\n\u001b[0;32m 2053\u001b[0m )\n\u001b[0;32m 2054\u001b[0m )\n\u001b[0;32m 2055\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[0;32m 2056\u001b[0m pred \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mpredict(dtrain, output_margin\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mTrue\u001b[39;00m, training\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mTrue\u001b[39;00m)\n", + "\u001b[1;31mKeyboardInterrupt\u001b[0m: " + ] + } + ], + "source": [ + "# Initialize AutoML for outcome model (ml_l): Predict Y based on X\n", + "automl_l = AutoML()\n", + "settings_l = {\n", + " \"time_budget\": 120,\n", + " \"metric\": 'rmse',\n", + " \"estimator_list\": ['xgboost'],\n", + " \"task\": 'regression',\n", + "}\n", + "automl_l.fit(X_train=data.drop(columns=[\"y\", \"d\"]).values, y_train=data[\"y\"].values, verbose=2, **settings_l)\n", + "\n", + "# Initialize AutoML for treatment model (ml_m): Predict D based on X\n", + "automl_m = AutoML()\n", + "settings_m = {\n", + " \"time_budget\": 120,\n", + " \"metric\": 'rmse',\n", + " \"estimator_list\": ['xgboost'],\n", + " \"task\": 'regression',\n", + "}\n", + "automl_m.fit(X_train=data.drop(columns=[\"y\", \"d\"]).values, y_train=data[\"d\"].values, verbose=2, **settings_m)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Step 2: Evaluate the Tuned Models \n", + "\n", + "We can evaluate the loss as reported by `FLAML`. For more details, we refer to the [FLAML documentation](https://microsoft.github.io/FLAML/docs/Getting-Started)\n", + "\n", + "• `rmse_oos_ml_m` represents the out-of-sample RMSE for the treatment model.\n", + "\n", + "• `rmse_oos_ml_l` represents the out-of-sample RMSE for the outcome model." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Check for Overfitting: Compare in-sample (train), out-of-sample (test) MSE\n", + "# ml_m\n", + "rmse_oos_ml_m = automl_m.best_loss\n", + "rmse_oos_ml_l = automl_l.best_loss\n", + "print(\"rmse_oos_ml_m:\",rmse_oos_ml_m)\n", + "print(\"rmse_oos_ml_m:\",rmse_oos_ml_l)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Step 3: Create and Fit DoubleML Model\n", + "\n", + "We create a [DoubleMLData](https://docs.doubleml.org/stable/guide/data_backend.html) object with the dataset, specifying $y$ as the outcome variable and $d$ as the treatment variable. We then initialize a `DoubleMLPLR` model using the tuned `FLAML` models for both the treatment and outcome components. " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Create DoubleMLData object with the evaluation set\n", + "obj_dml_data = dml.DoubleMLData(data, \"y\", \"d\")\n", + "\n", + "# Initialize DoubleMLPLR with the trained models from flaml\n", + "obj_dml_plr_manual_tuned = dml.DoubleMLPLR(obj_dml_data, ml_m=automl_m.model.estimator,\n", + " ml_l=automl_l.model.estimator)\n", + "\n", + "# Fit the DoubleMLPLR model\n", + "obj_dml_plr_manual_tuned.fit(store_predictions=True)\n", + "\n", + "print(obj_dml_plr_manual_tuned.summary)\n", + "manual_tuned_summary = obj_dml_plr_manual_tuned.summary\n", + "print(manual_tuned_summary)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can also use the `DoubleML`'s built-in learner evaluation, which is based on the cross-fitting procedure." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Evaluate learners using evaluate_learners() (MSE for all nuisance components)\n", + "rmse_dml_ml_l = obj_dml_plr_manual_tuned.evaluate_learners()['ml_l'][0]\n", + "rmse_dml_ml_m = obj_dml_plr_manual_tuned.evaluate_learners()['ml_m'][0]\n", + "\n", + "# Print results\n", + "print(\"RMLSE evaluated by DoubleML (ml_l):\", rmse_dml_ml_l)\n", + "print(\"RMSE evaluated by DoubleML (ml_m):\", rmse_dml_ml_m)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Comparison of Model Tuning Approaches" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Instead of externally tuning the `FLAML` learners, it is also possible to tune the AutoML learners internally. To do so, we have to define custom classes for integrating `FLAML` with `DoubleML`. The tuning will be automatically be started when calling `DoubleML`'s `fit()` method. This approach does not make it necessary to manually specify the learning tasks.\n", + "\n", + "\n", + "### Step 1: Designing Custom FLAML Models for Double Machine Learning\n", + "\n", + "In this section, we define custom classes for integrating FLAML (Fast Lightweight AutoML) with Double Machine Learning (DML). These classes are designed to facilitate automated machine learning model tuning for both regression and classification tasks.\n" + ] + }, + { + "cell_type": "code", + "execution_count": 42, + "metadata": {}, + "outputs": [], + "source": [ + "from flaml import AutoML\n", + "from sklearn.utils.multiclass import unique_labels\n", + "\n", + "class FlamlRegressorDoubleML:\n", + " _estimator_type = 'regressor'\n", + "\n", + " def __init__(self, time, estimator_list, metric, *args, **kwargs):\n", + " self.auto_ml = AutoML(*args, **kwargs)\n", + " self.time = time\n", + " self.estimator_list = estimator_list\n", + " self.metric = metric\n", + "\n", + " def set_params(self, **params):\n", + " self.auto_ml.set_params(**params)\n", + " return self\n", + "\n", + " def get_params(self, deep=True):\n", + " dict = self.auto_ml.get_params(deep)\n", + " dict[\"time\"] = self.time\n", + " dict[\"estimator_list\"] = self.estimator_list\n", + " dict[\"metric\"] = self.metric\n", + " return dict\n", + "\n", + " def fit(self, X, y):\n", + " self.auto_ml.fit(X, y, task=\"regression\", time_budget=self.time, estimator_list=self.estimator_list, metric=self.metric, verbose=False)\n", + " self.tuned_model = self.auto_ml.model.estimator\n", + " return self\n", + "\n", + " def predict(self, x):\n", + " preds = self.tuned_model.predict(x)\n", + " return preds\n", + " \n", + "class FlamlClassifierDoubleML:\n", + " _estimator_type = 'classifier'\n", + "\n", + " def __init__(self, time, estimator_list, metric, *args, **kwargs):\n", + " self.auto_ml = AutoML(*args, **kwargs)\n", + " self.time = time\n", + " self.estimator_list = estimator_list\n", + " self.metric = metric\n", + "\n", + " def set_params(self, **params):\n", + " self.auto_ml.set_params(**params)\n", + " return self\n", + "\n", + " def get_params(self, deep=True):\n", + " dict = self.auto_ml.get_params(deep)\n", + " dict[\"time\"] = self.time\n", + " dict[\"estimator_list\"] = self.estimator_list\n", + " dict[\"metric\"] = self.metric\n", + " return dict\n", + "\n", + " def fit(self, X, y):\n", + " self.classes_ = unique_labels(y)\n", + " self.auto_ml.fit(X, y, task=\"classification\", time_budget=self.time, estimator_list=self.estimator_list, metric=self.metric, verbose=False)\n", + " self.tuned_model = self.auto_ml.model.estimator\n", + " return self\n", + "\n", + " def predict_proba(self, x):\n", + " preds = self.tuned_model.predict_proba(x)\n", + " return preds" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Step 2: Using Custom FLAML Models when calling `DoubleML`'s `fit()` Method\n", + "\n", + "We integrate the custom `FLAML`-based models `FlamlRegressorDoubleML` into the Double Machine Learning (DML) framework. The steps involve defining the `FLAML` regressors, setting up the `DoubleMLPLR` object, and fitting the model." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Define the FlamlRegressorDoubleML\n", + "ml_l = FlamlRegressorDoubleML(time=120, estimator_list=['xgboost'], metric='rmse')\n", + "ml_m = FlamlRegressorDoubleML(time=120, estimator_list=['xgboost'], metric='rmse')\n", + "\n", + "# Create DoubleMLPLR object using the new regressors\n", + "dml_plr_obj_api_tuned = dml.DoubleMLPLR(obj_dml_data, ml_m, ml_l)\n", + "\n", + "# Fit the DoubleMLPLR model\n", + "dml_plr_obj_api_tuned.fit(store_predictions=True)\n", + "\n", + "#Retrieve the summary for API Tuned Models\n", + "api_tuned_summary = dml_plr_obj_api_tuned.summary\n", + "\n", + "# Print the summary\n", + "print(dml_plr_obj_api_tuned.summary)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Comparison to Dummy Models and Untuned AutoML Learners\n", + "\n", + "\n", + "### Dummy Learners\n", + "\n", + "As a comparison, we can use dummy `sklearn`'s `DummyRegressor` learners\n", + "\n", + "• `ml_l_dummy`: A dummy regressor for the outcome model, which predicts the mean value of the outcome.\n", + "\n", + "• `ml_m_dummy`: A dummy regressor for the treatment model, also predicting the mean value.\n", + "\n", + "These dummy models are used to create a `DoubleMLPLR` object, which was then fit to the data. We retrieve and stored the summary of this model to compare with other methods." + ] + }, + { + "cell_type": "code", + "execution_count": 44, + "metadata": {}, + "outputs": [], + "source": [ + "from sklearn.dummy import DummyRegressor\n", + "\n", + "# Initialize and fit dummy models\n", + "ml_l_dummy = DummyRegressor(strategy='mean')\n", + "ml_m_dummy = DummyRegressor(strategy='mean')\n", + "\n", + "# Create DoubleMLPLR object using dummy regressors\n", + "dml_plr_obj_dummy = dml.DoubleMLPLR(obj_dml_data, ml_m_dummy, ml_l_dummy)\n", + "dml_plr_obj_dummy.fit(store_predictions=True)\n", + "\n", + "# Retrieve the summary for dummy models\n", + "dummy_summary = dml_plr_obj_dummy.summary" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### AutoML Untuned Models\n", + "\n", + "We set up AutoML models with minimal tuning for both the outcome and treatment variables. This process allows us to compare the performance of untuned models against those that have been manually or API-tuned." + ] + }, + { + "cell_type": "code", + "execution_count": 45, + "metadata": {}, + "outputs": [], + "source": [ + "# AutoML Untuned\n", + "automl_untuned_l = AutoML()\n", + "settings = {\n", + " \"time_budget\": 0.01,\n", + " \"metric\": 'mse',\n", + " \"estimator_list\": ['xgboost'],\n", + " \"task\": 'regression',\n", + "}\n", + "\n", + "automl_untuned_l.fit(X_train=data.drop(columns=[\"y\", \"d\"]).values, y_train=data[\"y\"].values, verbose=0, **settings)\n", + "\n", + "automl_untuned_m = AutoML()\n", + "settings = {\n", + " \"time_budget\": 0.01,\n", + " \"metric\": 'mse',\n", + " \"estimator_list\": ['xgboost'],\n", + " \"task\": 'regression',\n", + "}\n", + "\n", + "automl_untuned_m.fit(X_train=data.drop(columns=[\"y\", \"d\"]).values, y_train=data[\"d\"].values, verbose=0, **settings)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "##### DoubleMLPLR with Untuned AutoML Models\n", + "\n", + "Here, we create a `DoubleMLPLR` object using the untuned AutoML models for the outcome and treatment regressions. We then fit the `DoubleMLPLR` model and retrieve the summary of the results. This section allows us to evaluate the performance of the untuned AutoML models in the context of DoubleML." + ] + }, + { + "cell_type": "code", + "execution_count": 46, + "metadata": {}, + "outputs": [], + "source": [ + "# Create DoubleMLPLR object using AutoML models\n", + "dml_plr_obj_untuned_automl = dml.DoubleMLPLR(obj_dml_data, automl_untuned_l.model.estimator, automl_untuned_m.model.estimator)\n", + "untuned_automl_summary = dml_plr_obj_untuned_automl.fit(store_predictions=True).summary" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Summary\n", + "\n", + "We combine the summaries from various models: manually tuned FLAML models, API-tuned FLAML models, untuned AutoML models, and dummy models." + ] + }, + { + "cell_type": "code", + "execution_count": 47, + "metadata": {}, + "outputs": [], + "source": [ + "# Combine summaries for comparison\n", + "summary = pd.concat([manual_tuned_summary ,api_tuned_summary, untuned_automl_summary, dummy_summary],\n", + " keys=['FLAML Manual Tuned', 'FLAML API Tuned', 'AutoML Untuned', 'Dummy'])\n", + "summary.index.names = ['Model Type', 'Metric']\n", + "\n", + "# Print the summary\n", + "print(summary)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Plots" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "##### Plot Coefficients and 95% Confidence Intervals\n", + "\n", + "This section generates a plot comparing the coefficients and 95% confidence intervals for each model type. The plot helps visualize the differences in the estimated coefficients and their uncertainties." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Check the structure of the summary DataFrames\n", + "print(\"Manual Tuned Summary:\")\n", + "print(manual_tuned_summary.head())\n", + "\n", + "print(\"API Tuned Summary:\")\n", + "print(api_tuned_summary.head())\n", + "\n", + "print(\"Untuned Summary:\")\n", + "print(untuned_automl_summary.head())\n", + "\n", + "print(\"Dummy Summary:\")\n", + "print(dummy_summary.head())\n", + "\n", + "# Extract model labels and coefficient values\n", + "model_labels = summary.index.get_level_values('Model Type')\n", + "coef_values = summary['coef'].values\n", + "\n", + "# Calculate errors\n", + "errors = np.full((2, len(coef_values)), np.nan)\n", + "errors[0, :] = summary['coef'] - summary['2.5 %']\n", + "errors[1, :] = summary['97.5 %'] - summary['coef']\n", + "\n", + "# Plot Coefficients and 95% Confidence Intervals\n", + "plt.figure(figsize=(10, 6))\n", + "plt.errorbar(model_labels, coef_values, fmt='o', yerr=errors, capsize=5)\n", + "plt.axhline(0.5, color='red', linestyle='--')\n", + "plt.xlabel('Model')\n", + "plt.ylabel('Coefficients and 95%-CI')\n", + "plt.title('Comparison of Coefficients and 95% Confidence Intervals')\n", + "plt.xticks(rotation=45)\n", + "plt.tight_layout()\n", + "plt.show()\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "##### Compare Metrics for Nuisance Estimation\n", + "\n", + "In this section, we compare metrics for different models and plot a bar chart to visualize the differences in their performance. We also save the comparison results to a file for future reference." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "def print_scores(dml_obj):\n", + " summary_df = dml_obj.summary\n", + " print(\"Summary DataFrame columns:\", summary_df.columns)\n", + " print(\"Summary DataFrame index:\", summary_df.index)\n", + " \n", + " scores = summary_df.loc['d']\n", + " return scores\n", + "\n", + "# Calculate and store scores for comparison\n", + "scores = {\n", + " \"FLAML Manual Tuned\": obj_dml_plr_manual_tuned.summary.loc['d'],\n", + " \"FLAML API Tuned\": dml_plr_obj_api_tuned.summary.loc['d'],\n", + " \"AutoML Untuned\": dml_plr_obj_untuned_automl.summary.loc['d'],\n", + " \"Dummy\": dml_plr_obj_dummy.summary.loc['d']\n", + "}\n", + "\n", + "# Convert the scores dictionary to a DataFrame for plotting\n", + "scores_df = pd.DataFrame(scores).T\n", + "\n", + "# Plot MSE for l_of_X and m_of_X separately\n", + "scores_df['coef'].plot(kind=\"bar\", title=\"MSE for l_of_X\")\n", + "plt.ylabel('RMSE')\n", + "plt.xticks(rotation=45)\n", + "plt.tight_layout()\n", + "plt.show()\n", + "\n", + "scores_df['std err'].plot(kind=\"bar\", title=\"MSE for m_of_X\")\n", + "plt.ylabel('RMSE')\n", + "plt.xticks(rotation=45)\n", + "plt.tight_layout()\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Observations\n", + "\n", + "- **Coefficient Values**: The coefficients for the `FLAML Manual Tuned` and `FLAML API Tuned` models are quite similar, with the API-tuned model having a slightly higher coefficient. Both are lower compared to the `AutoML Untuned` and `Dummy` models.\n", + "- **Untuned AutoML Models**: The `AutoML Untuned` models yield a higher coefficient compared to the manually tuned FLAML models, indicating that the automated process of model tuning in AutoML may have overestimated the effect. The `Dummy` model has the highest coefficient, suggesting it could be overfitting or has a higher baseline value.\n", + "\n", + "### Conclusion\n", + "\n", + "- The **FLAML Manual Tuned** and **FLAML API Tuned** models provide similar results with coefficients close to 0.5, suggesting robust performance within their tuned configurations.\n", + "- The **AutoML Untuned** models offer higher coefficient values, indicating that even though they are untuned, they still provide a noticeable increase in coefficient compared to the tuned FLAML models.\n", + "- The **Dummy** model, having the highest coefficient, shows the largest discrepancy. This reflects the fact, that the learner is not actually learning any meaningful relationship between the features and the outcome/treatment variable. \n", + "\n", + "Overall, the manually tuned FLAML models and the API-tuned FLAML models show good alignment with the expectations, while the untuned and dummy models present larger coefficients which may suggest the need for further tuning or validation." + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "base", + "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.11.5" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/doc/examples/py_flaml_meets_doubleml.ipynb b/doc/examples/py_flaml_meets_doubleml.ipynb deleted file mode 100644 index 627af790..00000000 --- a/doc/examples/py_flaml_meets_doubleml.ipynb +++ /dev/null @@ -1,110 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# FLAML meets DoubleMl\n", - "With this notebook we would like to demonstrate how to use the AutoML library `FLAML` to tune learners in the DoubleML framework." - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Tuning RMSE (ml_m): [1.02181707]\n", - "Evaluation RMSE (ml_m): 1.020225215425113\n", - "Tuning RMSE (ml_l): [1.14851273]\n", - "Evaluation RMSE (ml_l): 1.1476134085232756\n" - ] - } - ], - "source": [ - "import xgboost as xgb\n", - "import pandas as pd\n", - "import matplotlib.pyplot as plt\n", - "import numpy as np\n", - "\n", - "from doubleml.datasets import make_plr_CCDDHNR2018\n", - "import doubleml as dml\n", - "from flaml import AutoML\n", - "from sklearn.model_selection import train_test_split\n", - "from sklearn.metrics import mean_squared_error\n", - "\n", - "\n", - "# Generate synthetic data\n", - "data = make_plr_CCDDHNR2018(alpha=0.5, n_obs=1000, dim_x=50, return_type=\"DataFrame\")\n", - "\n", - "# Initialize AutoML for outcome model (ml_l)\n", - "automl_l = AutoML()\n", - "settings_l = {\n", - " \"time_budget\": 120,\n", - " \"metric\": 'rmse',\n", - " \"estimator_list\": ['xgboost'],\n", - " \"task\": 'regression',\n", - "}\n", - "automl_l.fit(X_train=data.drop(columns=[\"y\", \"d\"]).values, y_train=data[\"y\"].values, verbose=2, **settings_l)\n", - "\n", - "# Initialize AutoML for treatment model (ml_m)\n", - "automl_m = AutoML()\n", - "settings_m = {\n", - " \"time_budget\": 120,\n", - " \"metric\": 'rmse',\n", - " \"estimator_list\": ['xgboost'],\n", - " \"task\": 'regression',\n", - "}\n", - "automl_m.fit(X_train=data.drop(columns=[\"y\", \"d\"]).values, y_train=data[\"d\"].values, verbose=2, **settings_m)\n", - "\n", - "# Check for Overfitting: Compare in-sample (train), out-of-sample (test) MSE\n", - "# ml_m\n", - "rmse_oos_ml_m = automl_m.best_loss\n", - "rmse_oos_ml_l = automl_l.best_loss\n", - "\n", - "# Create DoubleMLData object with the evaluation set\n", - "obj_dml_data = dml.DoubleMLData(data, \"y\", \"d\")\n", - "\n", - "# Initialize DoubleMLPLR with the trained models from flaml\n", - "obj_dml_plr = dml.DoubleMLPLR(obj_dml_data, ml_m=automl_m.model.estimator, ml_l=automl_l.model.estimator)\n", - "\n", - "# Fit the DoubleMLPLR model\n", - "obj_dml_plr.fit()\n", - "\n", - "# Evaluate learners using evaluate_learners() (MSE for all nuisance components)\n", - "rmse_ins_ml_l = obj_dml_plr.evaluate_learners()['ml_l'][0]\n", - "rmse_ins_ml_m = obj_dml_plr.evaluate_learners()['ml_m'][0]\n", - "\n", - "# Print results\n", - "print(\"Tuning RMSE (ml_m):\", rmse_ins_ml_m)\n", - "print(\"Evaluation RMSE (ml_m):\", rmse_oos_ml_m)\n", - "print(\"Tuning RMSE (ml_l):\", rmse_ins_ml_l)\n", - "print(\"Evaluation RMSE (ml_l):\", rmse_oos_ml_l)" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "flaml", - "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.12.4" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} From 3424ea92ec08e329f658666514dcc95b30181e9b Mon Sep 17 00:00:00 2001 From: PhilippBach Date: Thu, 19 Sep 2024 12:05:48 +0200 Subject: [PATCH 11/71] add flaml --- doc/examples/py_double_ml_meets_flaml.ipynb | 238 +++++++++++++++++--- requirements.txt | 1 + 2 files changed, 204 insertions(+), 35 deletions(-) diff --git a/doc/examples/py_double_ml_meets_flaml.ipynb b/doc/examples/py_double_ml_meets_flaml.ipynb index bd0e0fff..2c18eaf1 100644 --- a/doc/examples/py_double_ml_meets_flaml.ipynb +++ b/doc/examples/py_double_ml_meets_flaml.ipynb @@ -25,20 +25,216 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 1, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
X1X2X3X4X5X6X7X8X9X10...X43X44X45X46X47X48X49X50yd
0-0.958780-0.507249-1.237299-0.337038-0.7884220.6655230.6781250.523511-0.2847771.068380...-0.1435430.9211380.6655481.0548780.1899050.720578-0.233471-0.234903-0.380769-1.175313
1-2.087473-1.1304470.2175361.1591320.1275480.212890-0.269660-0.345525-0.8392330.753701...-1.894524-0.906226-1.606975-0.064347-0.114221-0.440485-0.636874-0.587217-1.186199-1.249428
20.068261-1.063256-0.736680-1.522021-1.323320-0.698194-0.727295-1.579768-1.694986-1.289432...-0.885460-0.9301170.7983090.9377431.8337592.1766401.3754780.6153880.109074-0.324468
31.7473011.2802511.5502650.9457500.341581-0.2177250.228431-0.370202-0.1539720.265725...-0.4353780.4745801.2467450.721851-0.044084-0.4034260.1396091.0771182.4701872.178118
4-0.1937770.5357800.3963721.0695511.0780340.928753-0.737033-0.784358-0.6847710.346732...-0.519718-1.189992-0.800305-0.582279-0.3851560.063406-0.5702240.270637-1.056063-0.723587
\n", + "

5 rows × 52 columns

\n", + "
" + ], + "text/plain": [ + " X1 X2 X3 X4 X5 X6 X7 \\\n", + "0 -0.958780 -0.507249 -1.237299 -0.337038 -0.788422 0.665523 0.678125 \n", + "1 -2.087473 -1.130447 0.217536 1.159132 0.127548 0.212890 -0.269660 \n", + "2 0.068261 -1.063256 -0.736680 -1.522021 -1.323320 -0.698194 -0.727295 \n", + "3 1.747301 1.280251 1.550265 0.945750 0.341581 -0.217725 0.228431 \n", + "4 -0.193777 0.535780 0.396372 1.069551 1.078034 0.928753 -0.737033 \n", + "\n", + " X8 X9 X10 ... X43 X44 X45 X46 \\\n", + "0 0.523511 -0.284777 1.068380 ... -0.143543 0.921138 0.665548 1.054878 \n", + "1 -0.345525 -0.839233 0.753701 ... -1.894524 -0.906226 -1.606975 -0.064347 \n", + "2 -1.579768 -1.694986 -1.289432 ... -0.885460 -0.930117 0.798309 0.937743 \n", + "3 -0.370202 -0.153972 0.265725 ... -0.435378 0.474580 1.246745 0.721851 \n", + "4 -0.784358 -0.684771 0.346732 ... -0.519718 -1.189992 -0.800305 -0.582279 \n", + "\n", + " X47 X48 X49 X50 y d \n", + "0 0.189905 0.720578 -0.233471 -0.234903 -0.380769 -1.175313 \n", + "1 -0.114221 -0.440485 -0.636874 -0.587217 -1.186199 -1.249428 \n", + "2 1.833759 2.176640 1.375478 0.615388 0.109074 -0.324468 \n", + "3 -0.044084 -0.403426 0.139609 1.077118 2.470187 2.178118 \n", + "4 -0.385156 0.063406 -0.570224 0.270637 -1.056063 -0.723587 \n", + "\n", + "[5 rows x 52 columns]" + ] + }, + "execution_count": 1, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ - "import xgboost as xgb\n", "import pandas as pd\n", "import matplotlib.pyplot as plt\n", - "import numpy as np\n", "\n", "from doubleml.datasets import make_plr_CCDDHNR2018\n", "import doubleml as dml\n", "from flaml import AutoML\n", - "from sklearn.model_selection import train_test_split\n", - "from sklearn.metrics import mean_squared_error\n", "\n", "# Generate synthetic data\n", "data = make_plr_CCDDHNR2018(alpha=0.5, n_obs=1000, dim_x=50, return_type=\"DataFrame\")\n", @@ -71,35 +267,7 @@ "cell_type": "code", "execution_count": 2, "metadata": {}, - "outputs": [ - { - "ename": "KeyboardInterrupt", - "evalue": "", - "output_type": "error", - "traceback": [ - "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[1;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)", - "Cell \u001b[1;32mIn[2], line 19\u001b[0m\n\u001b[0;32m 12\u001b[0m automl_m \u001b[38;5;241m=\u001b[39m AutoML()\n\u001b[0;32m 13\u001b[0m settings_m \u001b[38;5;241m=\u001b[39m {\n\u001b[0;32m 14\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mtime_budget\u001b[39m\u001b[38;5;124m\"\u001b[39m: \u001b[38;5;241m120\u001b[39m,\n\u001b[0;32m 15\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mmetric\u001b[39m\u001b[38;5;124m\"\u001b[39m: \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mrmse\u001b[39m\u001b[38;5;124m'\u001b[39m,\n\u001b[0;32m 16\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mestimator_list\u001b[39m\u001b[38;5;124m\"\u001b[39m: [\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mxgboost\u001b[39m\u001b[38;5;124m'\u001b[39m],\n\u001b[0;32m 17\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mtask\u001b[39m\u001b[38;5;124m\"\u001b[39m: \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mregression\u001b[39m\u001b[38;5;124m'\u001b[39m,\n\u001b[0;32m 18\u001b[0m }\n\u001b[1;32m---> 19\u001b[0m automl_m\u001b[38;5;241m.\u001b[39mfit(X_train\u001b[38;5;241m=\u001b[39mdata\u001b[38;5;241m.\u001b[39mdrop(columns\u001b[38;5;241m=\u001b[39m[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124my\u001b[39m\u001b[38;5;124m\"\u001b[39m, \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124md\u001b[39m\u001b[38;5;124m\"\u001b[39m])\u001b[38;5;241m.\u001b[39mvalues, y_train\u001b[38;5;241m=\u001b[39mdata[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124md\u001b[39m\u001b[38;5;124m\"\u001b[39m]\u001b[38;5;241m.\u001b[39mvalues, verbose\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m2\u001b[39m, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39msettings_m)\n", - "File \u001b[1;32mc:\\Users\\bachp\\anaconda3\\Lib\\site-packages\\flaml\\automl\\automl.py:1929\u001b[0m, in \u001b[0;36mAutoML.fit\u001b[1;34m(self, X_train, y_train, dataframe, label, metric, task, n_jobs, log_file_name, estimator_list, time_budget, max_iter, sample, ensemble, eval_method, log_type, model_history, split_ratio, n_splits, log_training_metric, mem_thres, pred_time_limit, train_time_limit, X_val, y_val, sample_weight_val, groups_val, groups, verbose, retrain_full, split_type, learner_selector, hpo_method, starting_points, seed, n_concurrent_trials, keep_search_state, preserve_checkpoint, early_stop, force_cancel, append_log, auto_augment, min_sample_size, use_ray, use_spark, free_mem_ratio, metric_constraints, custom_hp, time_col, cv_score_agg_func, skip_transform, mlflow_logging, fit_kwargs_by_estimator, **fit_kwargs)\u001b[0m\n\u001b[0;32m 1927\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[0;32m 1928\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_training_log \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m\n\u001b[1;32m-> 1929\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_search()\n\u001b[0;32m 1930\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_best_estimator:\n\u001b[0;32m 1931\u001b[0m logger\u001b[38;5;241m.\u001b[39minfo(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mfit succeeded\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n", - "File \u001b[1;32mc:\\Users\\bachp\\anaconda3\\Lib\\site-packages\\flaml\\automl\\automl.py:2483\u001b[0m, in \u001b[0;36mAutoML._search\u001b[1;34m(self)\u001b[0m\n\u001b[0;32m 2481\u001b[0m state\u001b[38;5;241m.\u001b[39mbest_config \u001b[38;5;241m=\u001b[39m state\u001b[38;5;241m.\u001b[39minit_config[\u001b[38;5;241m0\u001b[39m] \u001b[38;5;28;01mif\u001b[39;00m state\u001b[38;5;241m.\u001b[39minit_config \u001b[38;5;28;01melse\u001b[39;00m {}\n\u001b[0;32m 2482\u001b[0m \u001b[38;5;28;01melif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_use_ray \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;28;01mFalse\u001b[39;00m \u001b[38;5;129;01mand\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_use_spark \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;28;01mFalse\u001b[39;00m:\n\u001b[1;32m-> 2483\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_search_sequential()\n\u001b[0;32m 2484\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[0;32m 2485\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_search_parallel()\n", - "File \u001b[1;32mc:\\Users\\bachp\\anaconda3\\Lib\\site-packages\\flaml\\automl\\automl.py:2319\u001b[0m, in \u001b[0;36mAutoML._search_sequential\u001b[1;34m(self)\u001b[0m\n\u001b[0;32m 2313\u001b[0m search_state\u001b[38;5;241m.\u001b[39msearch_alg\u001b[38;5;241m.\u001b[39msearcher\u001b[38;5;241m.\u001b[39mset_search_properties(\n\u001b[0;32m 2314\u001b[0m metric\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mNone\u001b[39;00m,\n\u001b[0;32m 2315\u001b[0m mode\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mNone\u001b[39;00m,\n\u001b[0;32m 2316\u001b[0m metric_target\u001b[38;5;241m=\u001b[39m\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_state\u001b[38;5;241m.\u001b[39mbest_loss,\n\u001b[0;32m 2317\u001b[0m )\n\u001b[0;32m 2318\u001b[0m start_run_time \u001b[38;5;241m=\u001b[39m time\u001b[38;5;241m.\u001b[39mtime()\n\u001b[1;32m-> 2319\u001b[0m analysis \u001b[38;5;241m=\u001b[39m tune\u001b[38;5;241m.\u001b[39mrun(\n\u001b[0;32m 2320\u001b[0m search_state\u001b[38;5;241m.\u001b[39mtraining_function,\n\u001b[0;32m 2321\u001b[0m search_alg\u001b[38;5;241m=\u001b[39msearch_state\u001b[38;5;241m.\u001b[39msearch_alg,\n\u001b[0;32m 2322\u001b[0m time_budget_s\u001b[38;5;241m=\u001b[39mtime_budget_s,\n\u001b[0;32m 2323\u001b[0m verbose\u001b[38;5;241m=\u001b[39m\u001b[38;5;28mmax\u001b[39m(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mverbose \u001b[38;5;241m-\u001b[39m \u001b[38;5;241m3\u001b[39m, \u001b[38;5;241m0\u001b[39m),\n\u001b[0;32m 2324\u001b[0m use_ray\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mFalse\u001b[39;00m,\n\u001b[0;32m 2325\u001b[0m use_spark\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mFalse\u001b[39;00m,\n\u001b[0;32m 2326\u001b[0m )\n\u001b[0;32m 2327\u001b[0m time_used \u001b[38;5;241m=\u001b[39m time\u001b[38;5;241m.\u001b[39mtime() \u001b[38;5;241m-\u001b[39m start_run_time\n\u001b[0;32m 2328\u001b[0m better \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mFalse\u001b[39;00m\n", - "File \u001b[1;32mc:\\Users\\bachp\\anaconda3\\Lib\\site-packages\\flaml\\tune\\tune.py:814\u001b[0m, in \u001b[0;36mrun\u001b[1;34m(evaluation_function, config, low_cost_partial_config, cat_hp_cost, metric, mode, time_budget_s, points_to_evaluate, evaluated_rewards, resource_attr, min_resource, max_resource, reduction_factor, scheduler, search_alg, verbose, local_dir, num_samples, resources_per_trial, config_constraints, metric_constraints, max_failure, use_ray, use_spark, use_incumbent_result_in_evaluation, log_file_name, lexico_objectives, force_cancel, n_concurrent_trials, **ray_args)\u001b[0m\n\u001b[0;32m 812\u001b[0m result \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m\n\u001b[0;32m 813\u001b[0m \u001b[38;5;28;01mwith\u001b[39;00m PySparkOvertimeMonitor(time_start, time_budget_s, force_cancel):\n\u001b[1;32m--> 814\u001b[0m result \u001b[38;5;241m=\u001b[39m evaluation_function(trial_to_run\u001b[38;5;241m.\u001b[39mconfig)\n\u001b[0;32m 815\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m result \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[0;32m 816\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(result, \u001b[38;5;28mdict\u001b[39m):\n", - "File \u001b[1;32mc:\\Users\\bachp\\anaconda3\\Lib\\site-packages\\flaml\\automl\\state.py:304\u001b[0m, in \u001b[0;36mAutoMLState._compute_with_config_base\u001b[1;34m(config_w_resource, state, estimator, is_report)\u001b[0m\n\u001b[0;32m 289\u001b[0m \u001b[38;5;28;01mdel\u001b[39;00m config[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mFLAML_sample_size\u001b[39m\u001b[38;5;124m\"\u001b[39m]\n\u001b[0;32m 290\u001b[0m budget \u001b[38;5;241m=\u001b[39m (\n\u001b[0;32m 291\u001b[0m \u001b[38;5;28;01mNone\u001b[39;00m\n\u001b[0;32m 292\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m state\u001b[38;5;241m.\u001b[39mtime_budget \u001b[38;5;241m<\u001b[39m \u001b[38;5;241m0\u001b[39m\n\u001b[1;32m (...)\u001b[0m\n\u001b[0;32m 295\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m (state\u001b[38;5;241m.\u001b[39mtime_budget \u001b[38;5;241m-\u001b[39m state\u001b[38;5;241m.\u001b[39mtime_from_start) \u001b[38;5;241m/\u001b[39m \u001b[38;5;241m2\u001b[39m \u001b[38;5;241m*\u001b[39m sample_size \u001b[38;5;241m/\u001b[39m state\u001b[38;5;241m.\u001b[39mdata_size[\u001b[38;5;241m0\u001b[39m]\n\u001b[0;32m 296\u001b[0m )\n\u001b[0;32m 298\u001b[0m (\n\u001b[0;32m 299\u001b[0m trained_estimator,\n\u001b[0;32m 300\u001b[0m val_loss,\n\u001b[0;32m 301\u001b[0m metric_for_logging,\n\u001b[0;32m 302\u001b[0m _,\n\u001b[0;32m 303\u001b[0m pred_time,\n\u001b[1;32m--> 304\u001b[0m ) \u001b[38;5;241m=\u001b[39m compute_estimator(\n\u001b[0;32m 305\u001b[0m sampled_X_train,\n\u001b[0;32m 306\u001b[0m sampled_y_train,\n\u001b[0;32m 307\u001b[0m state\u001b[38;5;241m.\u001b[39mX_val,\n\u001b[0;32m 308\u001b[0m state\u001b[38;5;241m.\u001b[39my_val,\n\u001b[0;32m 309\u001b[0m state\u001b[38;5;241m.\u001b[39mweight_val,\n\u001b[0;32m 310\u001b[0m state\u001b[38;5;241m.\u001b[39mgroups_val,\n\u001b[0;32m 311\u001b[0m state\u001b[38;5;241m.\u001b[39mtrain_time_limit \u001b[38;5;28;01mif\u001b[39;00m budget \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m \u001b[38;5;28;01melse\u001b[39;00m \u001b[38;5;28mmin\u001b[39m(budget, state\u001b[38;5;241m.\u001b[39mtrain_time_limit \u001b[38;5;129;01mor\u001b[39;00m np\u001b[38;5;241m.\u001b[39minf),\n\u001b[0;32m 312\u001b[0m state\u001b[38;5;241m.\u001b[39mkf,\n\u001b[0;32m 313\u001b[0m config,\n\u001b[0;32m 314\u001b[0m state\u001b[38;5;241m.\u001b[39mtask,\n\u001b[0;32m 315\u001b[0m estimator,\n\u001b[0;32m 316\u001b[0m state\u001b[38;5;241m.\u001b[39meval_method,\n\u001b[0;32m 317\u001b[0m state\u001b[38;5;241m.\u001b[39mmetric,\n\u001b[0;32m 318\u001b[0m state\u001b[38;5;241m.\u001b[39mbest_loss,\n\u001b[0;32m 319\u001b[0m state\u001b[38;5;241m.\u001b[39mn_jobs,\n\u001b[0;32m 320\u001b[0m state\u001b[38;5;241m.\u001b[39mlearner_classes\u001b[38;5;241m.\u001b[39mget(estimator),\n\u001b[0;32m 321\u001b[0m state\u001b[38;5;241m.\u001b[39mcv_score_agg_func,\n\u001b[0;32m 322\u001b[0m state\u001b[38;5;241m.\u001b[39mlog_training_metric,\n\u001b[0;32m 323\u001b[0m this_estimator_kwargs,\n\u001b[0;32m 324\u001b[0m state\u001b[38;5;241m.\u001b[39mfree_mem_ratio,\n\u001b[0;32m 325\u001b[0m )\n\u001b[0;32m 326\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m state\u001b[38;5;241m.\u001b[39mretrain_final \u001b[38;5;129;01mand\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m state\u001b[38;5;241m.\u001b[39mmodel_history:\n\u001b[0;32m 327\u001b[0m trained_estimator\u001b[38;5;241m.\u001b[39mcleanup()\n", - "File \u001b[1;32mc:\\Users\\bachp\\anaconda3\\Lib\\site-packages\\flaml\\automl\\ml.py:369\u001b[0m, in \u001b[0;36mcompute_estimator\u001b[1;34m(X_train, y_train, X_val, y_val, weight_val, groups_val, budget, kf, config_dic, task, estimator_name, eval_method, eval_metric, best_val_loss, n_jobs, estimator_class, cv_score_agg_func, log_training_metric, fit_kwargs, free_mem_ratio)\u001b[0m\n\u001b[0;32m 351\u001b[0m val_loss, metric_for_logging, train_time, pred_time \u001b[38;5;241m=\u001b[39m get_val_loss(\n\u001b[0;32m 352\u001b[0m config_dic,\n\u001b[0;32m 353\u001b[0m estimator,\n\u001b[1;32m (...)\u001b[0m\n\u001b[0;32m 366\u001b[0m free_mem_ratio\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m0\u001b[39m,\n\u001b[0;32m 367\u001b[0m )\n\u001b[0;32m 368\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[1;32m--> 369\u001b[0m val_loss, metric_for_logging, train_time, pred_time \u001b[38;5;241m=\u001b[39m task\u001b[38;5;241m.\u001b[39mevaluate_model_CV(\n\u001b[0;32m 370\u001b[0m config_dic,\n\u001b[0;32m 371\u001b[0m estimator,\n\u001b[0;32m 372\u001b[0m X_train,\n\u001b[0;32m 373\u001b[0m y_train,\n\u001b[0;32m 374\u001b[0m budget,\n\u001b[0;32m 375\u001b[0m kf,\n\u001b[0;32m 376\u001b[0m eval_metric,\n\u001b[0;32m 377\u001b[0m best_val_loss,\n\u001b[0;32m 378\u001b[0m cv_score_agg_func,\n\u001b[0;32m 379\u001b[0m log_training_metric\u001b[38;5;241m=\u001b[39mlog_training_metric,\n\u001b[0;32m 380\u001b[0m fit_kwargs\u001b[38;5;241m=\u001b[39mfit_kwargs,\n\u001b[0;32m 381\u001b[0m free_mem_ratio\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m0\u001b[39m,\n\u001b[0;32m 382\u001b[0m )\n\u001b[0;32m 384\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(estimator, TransformersEstimator):\n\u001b[0;32m 385\u001b[0m \u001b[38;5;28;01mdel\u001b[39;00m fit_kwargs[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mmetric\u001b[39m\u001b[38;5;124m\"\u001b[39m], fit_kwargs[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mX_val\u001b[39m\u001b[38;5;124m\"\u001b[39m], fit_kwargs[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124my_val\u001b[39m\u001b[38;5;124m\"\u001b[39m]\n", - "File \u001b[1;32mc:\\Users\\bachp\\anaconda3\\Lib\\site-packages\\flaml\\automl\\task\\generic_task.py:740\u001b[0m, in \u001b[0;36mGenericTask.evaluate_model_CV\u001b[1;34m(self, config, estimator, X_train_all, y_train_all, budget, kf, eval_metric, best_val_loss, cv_score_agg_func, log_training_metric, fit_kwargs, free_mem_ratio)\u001b[0m\n\u001b[0;32m 737\u001b[0m groups_val \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m\n\u001b[0;32m 739\u001b[0m estimator\u001b[38;5;241m.\u001b[39mcleanup()\n\u001b[1;32m--> 740\u001b[0m val_loss_i, metric_i, train_time_i, pred_time_i \u001b[38;5;241m=\u001b[39m get_val_loss(\n\u001b[0;32m 741\u001b[0m config,\n\u001b[0;32m 742\u001b[0m estimator,\n\u001b[0;32m 743\u001b[0m X_train,\n\u001b[0;32m 744\u001b[0m y_train,\n\u001b[0;32m 745\u001b[0m X_val,\n\u001b[0;32m 746\u001b[0m y_val,\n\u001b[0;32m 747\u001b[0m weight_val,\n\u001b[0;32m 748\u001b[0m groups_val,\n\u001b[0;32m 749\u001b[0m eval_metric,\n\u001b[0;32m 750\u001b[0m \u001b[38;5;28mself\u001b[39m,\n\u001b[0;32m 751\u001b[0m labels,\n\u001b[0;32m 752\u001b[0m budget_per_train,\n\u001b[0;32m 753\u001b[0m log_training_metric\u001b[38;5;241m=\u001b[39mlog_training_metric,\n\u001b[0;32m 754\u001b[0m fit_kwargs\u001b[38;5;241m=\u001b[39mfit_kwargs,\n\u001b[0;32m 755\u001b[0m free_mem_ratio\u001b[38;5;241m=\u001b[39mfree_mem_ratio,\n\u001b[0;32m 756\u001b[0m )\n\u001b[0;32m 757\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(metric_i, \u001b[38;5;28mdict\u001b[39m) \u001b[38;5;129;01mand\u001b[39;00m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mintermediate_results\u001b[39m\u001b[38;5;124m\"\u001b[39m \u001b[38;5;129;01min\u001b[39;00m metric_i\u001b[38;5;241m.\u001b[39mkeys():\n\u001b[0;32m 758\u001b[0m \u001b[38;5;28;01mdel\u001b[39;00m metric_i[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mintermediate_results\u001b[39m\u001b[38;5;124m\"\u001b[39m]\n", - "File \u001b[1;32mc:\\Users\\bachp\\anaconda3\\Lib\\site-packages\\flaml\\automl\\ml.py:494\u001b[0m, in \u001b[0;36mget_val_loss\u001b[1;34m(config, estimator, X_train, y_train, X_val, y_val, weight_val, groups_val, eval_metric, task, labels, budget, log_training_metric, fit_kwargs, free_mem_ratio)\u001b[0m\n\u001b[0;32m 489\u001b[0m start \u001b[38;5;241m=\u001b[39m time\u001b[38;5;241m.\u001b[39mtime()\n\u001b[0;32m 490\u001b[0m \u001b[38;5;66;03m# if groups_val is not None:\u001b[39;00m\n\u001b[0;32m 491\u001b[0m \u001b[38;5;66;03m# fit_kwargs['groups_val'] = groups_val\u001b[39;00m\n\u001b[0;32m 492\u001b[0m \u001b[38;5;66;03m# fit_kwargs['X_val'] = X_val\u001b[39;00m\n\u001b[0;32m 493\u001b[0m \u001b[38;5;66;03m# fit_kwargs['y_val'] = y_val\u001b[39;00m\n\u001b[1;32m--> 494\u001b[0m estimator\u001b[38;5;241m.\u001b[39mfit(X_train, y_train, budget\u001b[38;5;241m=\u001b[39mbudget, free_mem_ratio\u001b[38;5;241m=\u001b[39mfree_mem_ratio, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mfit_kwargs)\n\u001b[0;32m 495\u001b[0m val_loss, metric_for_logging, pred_time, _ \u001b[38;5;241m=\u001b[39m _eval_estimator(\n\u001b[0;32m 496\u001b[0m config,\n\u001b[0;32m 497\u001b[0m estimator,\n\u001b[1;32m (...)\u001b[0m\n\u001b[0;32m 508\u001b[0m fit_kwargs,\n\u001b[0;32m 509\u001b[0m )\n\u001b[0;32m 510\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mhasattr\u001b[39m(estimator, \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mintermediate_results\u001b[39m\u001b[38;5;124m\"\u001b[39m):\n", - "File \u001b[1;32mc:\\Users\\bachp\\anaconda3\\Lib\\site-packages\\flaml\\automl\\model.py:1667\u001b[0m, in \u001b[0;36mXGBoostSklearnEstimator.fit\u001b[1;34m(self, X_train, y_train, budget, free_mem_ratio, **kwargs)\u001b[0m\n\u001b[0;32m 1665\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mparams[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mtree_method\u001b[39m\u001b[38;5;124m\"\u001b[39m] \u001b[38;5;241m=\u001b[39m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mgpu_hist\u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[0;32m 1666\u001b[0m kwargs\u001b[38;5;241m.\u001b[39mpop(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mgpu_per_trial\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[1;32m-> 1667\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28msuper\u001b[39m()\u001b[38;5;241m.\u001b[39mfit(X_train, y_train, budget, free_mem_ratio, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs)\n", - "File \u001b[1;32mc:\\Users\\bachp\\anaconda3\\Lib\\site-packages\\flaml\\automl\\model.py:1422\u001b[0m, in \u001b[0;36mLGBMEstimator.fit\u001b[1;34m(self, X_train, y_train, budget, free_mem_ratio, **kwargs)\u001b[0m\n\u001b[0;32m 1420\u001b[0m callbacks \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m\n\u001b[0;32m 1421\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m callbacks \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[1;32m-> 1422\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_fit(X_train, y_train, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs)\n\u001b[0;32m 1423\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[0;32m 1424\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_fit(X_train, y_train, callbacks\u001b[38;5;241m=\u001b[39mcallbacks, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs)\n", - "File \u001b[1;32mc:\\Users\\bachp\\anaconda3\\Lib\\site-packages\\flaml\\automl\\model.py:232\u001b[0m, in \u001b[0;36mBaseEstimator._fit\u001b[1;34m(self, X_train, y_train, **kwargs)\u001b[0m\n\u001b[0;32m 229\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m logger\u001b[38;5;241m.\u001b[39mlevel \u001b[38;5;241m==\u001b[39m logging\u001b[38;5;241m.\u001b[39mDEBUG:\n\u001b[0;32m 230\u001b[0m \u001b[38;5;66;03m# xgboost 1.6 doesn't display all the params in the model str\u001b[39;00m\n\u001b[0;32m 231\u001b[0m logger\u001b[38;5;241m.\u001b[39mdebug(\u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mflaml.automl.model - \u001b[39m\u001b[38;5;132;01m{\u001b[39;00mmodel\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m fit started with params \u001b[39m\u001b[38;5;132;01m{\u001b[39;00m\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mparams\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m\"\u001b[39m)\n\u001b[1;32m--> 232\u001b[0m model\u001b[38;5;241m.\u001b[39mfit(X_train, y_train, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs)\n\u001b[0;32m 233\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m logger\u001b[38;5;241m.\u001b[39mlevel \u001b[38;5;241m==\u001b[39m logging\u001b[38;5;241m.\u001b[39mDEBUG:\n\u001b[0;32m 234\u001b[0m logger\u001b[38;5;241m.\u001b[39mdebug(\u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mflaml.automl.model - \u001b[39m\u001b[38;5;132;01m{\u001b[39;00mmodel\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m fit finished\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n", - "File \u001b[1;32mc:\\Users\\bachp\\anaconda3\\Lib\\site-packages\\xgboost\\core.py:730\u001b[0m, in \u001b[0;36mrequire_keyword_args..throw_if..inner_f\u001b[1;34m(*args, **kwargs)\u001b[0m\n\u001b[0;32m 728\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m k, arg \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28mzip\u001b[39m(sig\u001b[38;5;241m.\u001b[39mparameters, args):\n\u001b[0;32m 729\u001b[0m kwargs[k] \u001b[38;5;241m=\u001b[39m arg\n\u001b[1;32m--> 730\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m func(\u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs)\n", - "File \u001b[1;32mc:\\Users\\bachp\\anaconda3\\Lib\\site-packages\\xgboost\\sklearn.py:1090\u001b[0m, in \u001b[0;36mXGBModel.fit\u001b[1;34m(self, X, y, sample_weight, base_margin, eval_set, eval_metric, early_stopping_rounds, verbose, xgb_model, sample_weight_eval_set, base_margin_eval_set, feature_weights, callbacks)\u001b[0m\n\u001b[0;32m 1079\u001b[0m obj \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m\n\u001b[0;32m 1081\u001b[0m (\n\u001b[0;32m 1082\u001b[0m model,\n\u001b[0;32m 1083\u001b[0m metric,\n\u001b[1;32m (...)\u001b[0m\n\u001b[0;32m 1088\u001b[0m xgb_model, eval_metric, params, early_stopping_rounds, callbacks\n\u001b[0;32m 1089\u001b[0m )\n\u001b[1;32m-> 1090\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_Booster \u001b[38;5;241m=\u001b[39m train(\n\u001b[0;32m 1091\u001b[0m params,\n\u001b[0;32m 1092\u001b[0m train_dmatrix,\n\u001b[0;32m 1093\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mget_num_boosting_rounds(),\n\u001b[0;32m 1094\u001b[0m evals\u001b[38;5;241m=\u001b[39mevals,\n\u001b[0;32m 1095\u001b[0m early_stopping_rounds\u001b[38;5;241m=\u001b[39mearly_stopping_rounds,\n\u001b[0;32m 1096\u001b[0m evals_result\u001b[38;5;241m=\u001b[39mevals_result,\n\u001b[0;32m 1097\u001b[0m obj\u001b[38;5;241m=\u001b[39mobj,\n\u001b[0;32m 1098\u001b[0m custom_metric\u001b[38;5;241m=\u001b[39mmetric,\n\u001b[0;32m 1099\u001b[0m verbose_eval\u001b[38;5;241m=\u001b[39mverbose,\n\u001b[0;32m 1100\u001b[0m xgb_model\u001b[38;5;241m=\u001b[39mmodel,\n\u001b[0;32m 1101\u001b[0m callbacks\u001b[38;5;241m=\u001b[39mcallbacks,\n\u001b[0;32m 1102\u001b[0m )\n\u001b[0;32m 1104\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_set_evaluation_result(evals_result)\n\u001b[0;32m 1105\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mself\u001b[39m\n", - "File \u001b[1;32mc:\\Users\\bachp\\anaconda3\\Lib\\site-packages\\xgboost\\core.py:730\u001b[0m, in \u001b[0;36mrequire_keyword_args..throw_if..inner_f\u001b[1;34m(*args, **kwargs)\u001b[0m\n\u001b[0;32m 728\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m k, arg \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28mzip\u001b[39m(sig\u001b[38;5;241m.\u001b[39mparameters, args):\n\u001b[0;32m 729\u001b[0m kwargs[k] \u001b[38;5;241m=\u001b[39m arg\n\u001b[1;32m--> 730\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m func(\u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs)\n", - "File \u001b[1;32mc:\\Users\\bachp\\anaconda3\\Lib\\site-packages\\xgboost\\training.py:181\u001b[0m, in \u001b[0;36mtrain\u001b[1;34m(params, dtrain, num_boost_round, evals, obj, feval, maximize, early_stopping_rounds, evals_result, verbose_eval, xgb_model, callbacks, custom_metric)\u001b[0m\n\u001b[0;32m 179\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m cb_container\u001b[38;5;241m.\u001b[39mbefore_iteration(bst, i, dtrain, evals):\n\u001b[0;32m 180\u001b[0m \u001b[38;5;28;01mbreak\u001b[39;00m\n\u001b[1;32m--> 181\u001b[0m bst\u001b[38;5;241m.\u001b[39mupdate(dtrain, i, obj)\n\u001b[0;32m 182\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m cb_container\u001b[38;5;241m.\u001b[39mafter_iteration(bst, i, dtrain, evals):\n\u001b[0;32m 183\u001b[0m \u001b[38;5;28;01mbreak\u001b[39;00m\n", - "File \u001b[1;32mc:\\Users\\bachp\\anaconda3\\Lib\\site-packages\\xgboost\\core.py:2051\u001b[0m, in \u001b[0;36mBooster.update\u001b[1;34m(self, dtrain, iteration, fobj)\u001b[0m\n\u001b[0;32m 2047\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_assign_dmatrix_features(dtrain)\n\u001b[0;32m 2049\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m fobj \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[0;32m 2050\u001b[0m _check_call(\n\u001b[1;32m-> 2051\u001b[0m _LIB\u001b[38;5;241m.\u001b[39mXGBoosterUpdateOneIter(\n\u001b[0;32m 2052\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mhandle, ctypes\u001b[38;5;241m.\u001b[39mc_int(iteration), dtrain\u001b[38;5;241m.\u001b[39mhandle\n\u001b[0;32m 2053\u001b[0m )\n\u001b[0;32m 2054\u001b[0m )\n\u001b[0;32m 2055\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[0;32m 2056\u001b[0m pred \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mpredict(dtrain, output_margin\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mTrue\u001b[39;00m, training\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mTrue\u001b[39;00m)\n", - "\u001b[1;31mKeyboardInterrupt\u001b[0m: " - ] - } - ], + "outputs": [], "source": [ "# Initialize AutoML for outcome model (ml_l): Predict Y based on X\n", "automl_l = AutoML()\n", diff --git a/requirements.txt b/requirements.txt index 244fda10..b3e88245 100644 --- a/requirements.txt +++ b/requirements.txt @@ -19,3 +19,4 @@ plotly seaborn xgboost lightgbm +flaml \ No newline at end of file From c677d7c21fb820f801a2f38f5b7827959f2470f1 Mon Sep 17 00:00:00 2001 From: PhilippBach Date: Thu, 19 Sep 2024 12:17:02 +0200 Subject: [PATCH 12/71] upd notebook --- doc/examples/py_double_ml_meets_flaml.ipynb | 288 +++++++++++--------- 1 file changed, 159 insertions(+), 129 deletions(-) diff --git a/doc/examples/py_double_ml_meets_flaml.ipynb b/doc/examples/py_double_ml_meets_flaml.ipynb index 2c18eaf1..d511bb90 100644 --- a/doc/examples/py_double_ml_meets_flaml.ipynb +++ b/doc/examples/py_double_ml_meets_flaml.ipynb @@ -75,123 +75,123 @@ " \n", " \n", " 0\n", - " -0.958780\n", - " -0.507249\n", - " -1.237299\n", - " -0.337038\n", - " -0.788422\n", - " 0.665523\n", - " 0.678125\n", - " 0.523511\n", - " -0.284777\n", - " 1.068380\n", + " -0.368031\n", + " -1.689853\n", + " -0.526414\n", + " -0.643074\n", + " -0.157774\n", + " -0.144487\n", + " 0.362700\n", + " 0.466783\n", + " -0.092726\n", + " 0.895316\n", " ...\n", - " -0.143543\n", - " 0.921138\n", - " 0.665548\n", - " 1.054878\n", - " 0.189905\n", - " 0.720578\n", - " -0.233471\n", - " -0.234903\n", - " -0.380769\n", - " -1.175313\n", + " 1.040265\n", + " 0.594805\n", + " -0.084448\n", + " 0.451681\n", + " -0.455551\n", + " -0.014698\n", + " 0.319293\n", + " -0.069872\n", + " 0.094012\n", + " -0.493958\n", " \n", " \n", " 1\n", - " -2.087473\n", - " -1.130447\n", - " 0.217536\n", - " 1.159132\n", - " 0.127548\n", - " 0.212890\n", - " -0.269660\n", - " -0.345525\n", - " -0.839233\n", - " 0.753701\n", + " 1.714814\n", + " 2.091893\n", + " 1.611906\n", + " 1.601585\n", + " 0.263206\n", + " -0.925554\n", + " -0.809992\n", + " 0.557693\n", + " 0.511080\n", + " 0.099212\n", " ...\n", - " -1.894524\n", - " -0.906226\n", - " -1.606975\n", - " -0.064347\n", - " -0.114221\n", - " -0.440485\n", - " -0.636874\n", - " -0.587217\n", - " -1.186199\n", - " -1.249428\n", + " 0.220281\n", + " -0.187899\n", + " -0.327932\n", + " -0.349030\n", + " -0.363309\n", + " 0.866551\n", + " 0.515476\n", + " 0.814062\n", + " 1.766736\n", + " 2.408963\n", " \n", " \n", " 2\n", - " 0.068261\n", - " -1.063256\n", - " -0.736680\n", - " -1.522021\n", - " -1.323320\n", - " -0.698194\n", - " -0.727295\n", - " -1.579768\n", - " -1.694986\n", - " -1.289432\n", + " -1.291187\n", + " -1.829907\n", + " -1.836269\n", + " -1.083209\n", + " -1.370531\n", + " -1.381615\n", + " -1.934436\n", + " -0.988396\n", + " -0.200813\n", + " -0.017348\n", " ...\n", - " -0.885460\n", - " -0.930117\n", - " 0.798309\n", - " 0.937743\n", - " 1.833759\n", - " 2.176640\n", - " 1.375478\n", - " 0.615388\n", - " 0.109074\n", - " -0.324468\n", + " 0.747955\n", + " 1.158486\n", + " 0.757950\n", + " 0.308727\n", + " 0.204232\n", + " 0.297127\n", + " -0.150408\n", + " -0.329756\n", + " -1.346593\n", + " -2.295508\n", " \n", " \n", " 3\n", - " 1.747301\n", - " 1.280251\n", - " 1.550265\n", - " 0.945750\n", - " 0.341581\n", - " -0.217725\n", - " 0.228431\n", - " -0.370202\n", - " -0.153972\n", - " 0.265725\n", + " -0.618230\n", + " -0.521589\n", + " 0.343459\n", + " 0.260298\n", + " -0.878743\n", + " -0.762960\n", + " -1.250186\n", + " 0.306366\n", + " 0.083006\n", + " -0.440434\n", " ...\n", - " -0.435378\n", - " 0.474580\n", - " 1.246745\n", - " 0.721851\n", - " -0.044084\n", - " -0.403426\n", - " 0.139609\n", - " 1.077118\n", - " 2.470187\n", - " 2.178118\n", + " -0.178278\n", + " -0.812761\n", + " -0.538006\n", + " -0.151514\n", + " -0.609313\n", + " -0.478738\n", + " -0.447635\n", + " -0.857543\n", + " 0.418773\n", + " -0.772577\n", " \n", " \n", " 4\n", - " -0.193777\n", - " 0.535780\n", - " 0.396372\n", - " 1.069551\n", - " 1.078034\n", - " 0.928753\n", - " -0.737033\n", - " -0.784358\n", - " -0.684771\n", - " 0.346732\n", + " -1.686006\n", + " -0.737666\n", + " -0.847629\n", + " -0.597370\n", + " 0.126047\n", + " 1.149483\n", + " 0.733414\n", + " 1.083345\n", + " 0.496245\n", + " 0.683059\n", " ...\n", - " -0.519718\n", - " -1.189992\n", - " -0.800305\n", - " -0.582279\n", - " -0.385156\n", - " 0.063406\n", - " -0.570224\n", - " 0.270637\n", - " -1.056063\n", - " -0.723587\n", + " -1.640443\n", + " -0.887162\n", + " 0.111251\n", + " 0.363222\n", + " -0.164374\n", + " -0.304590\n", + " -0.486097\n", + " -1.294510\n", + " -1.016705\n", + " -1.333984\n", " \n", " \n", "\n", @@ -200,25 +200,25 @@ ], "text/plain": [ " X1 X2 X3 X4 X5 X6 X7 \\\n", - "0 -0.958780 -0.507249 -1.237299 -0.337038 -0.788422 0.665523 0.678125 \n", - "1 -2.087473 -1.130447 0.217536 1.159132 0.127548 0.212890 -0.269660 \n", - "2 0.068261 -1.063256 -0.736680 -1.522021 -1.323320 -0.698194 -0.727295 \n", - "3 1.747301 1.280251 1.550265 0.945750 0.341581 -0.217725 0.228431 \n", - "4 -0.193777 0.535780 0.396372 1.069551 1.078034 0.928753 -0.737033 \n", + "0 -0.368031 -1.689853 -0.526414 -0.643074 -0.157774 -0.144487 0.362700 \n", + "1 1.714814 2.091893 1.611906 1.601585 0.263206 -0.925554 -0.809992 \n", + "2 -1.291187 -1.829907 -1.836269 -1.083209 -1.370531 -1.381615 -1.934436 \n", + "3 -0.618230 -0.521589 0.343459 0.260298 -0.878743 -0.762960 -1.250186 \n", + "4 -1.686006 -0.737666 -0.847629 -0.597370 0.126047 1.149483 0.733414 \n", "\n", " X8 X9 X10 ... X43 X44 X45 X46 \\\n", - "0 0.523511 -0.284777 1.068380 ... -0.143543 0.921138 0.665548 1.054878 \n", - "1 -0.345525 -0.839233 0.753701 ... -1.894524 -0.906226 -1.606975 -0.064347 \n", - "2 -1.579768 -1.694986 -1.289432 ... -0.885460 -0.930117 0.798309 0.937743 \n", - "3 -0.370202 -0.153972 0.265725 ... -0.435378 0.474580 1.246745 0.721851 \n", - "4 -0.784358 -0.684771 0.346732 ... -0.519718 -1.189992 -0.800305 -0.582279 \n", + "0 0.466783 -0.092726 0.895316 ... 1.040265 0.594805 -0.084448 0.451681 \n", + "1 0.557693 0.511080 0.099212 ... 0.220281 -0.187899 -0.327932 -0.349030 \n", + "2 -0.988396 -0.200813 -0.017348 ... 0.747955 1.158486 0.757950 0.308727 \n", + "3 0.306366 0.083006 -0.440434 ... -0.178278 -0.812761 -0.538006 -0.151514 \n", + "4 1.083345 0.496245 0.683059 ... -1.640443 -0.887162 0.111251 0.363222 \n", "\n", " X47 X48 X49 X50 y d \n", - "0 0.189905 0.720578 -0.233471 -0.234903 -0.380769 -1.175313 \n", - "1 -0.114221 -0.440485 -0.636874 -0.587217 -1.186199 -1.249428 \n", - "2 1.833759 2.176640 1.375478 0.615388 0.109074 -0.324468 \n", - "3 -0.044084 -0.403426 0.139609 1.077118 2.470187 2.178118 \n", - "4 -0.385156 0.063406 -0.570224 0.270637 -1.056063 -0.723587 \n", + "0 -0.455551 -0.014698 0.319293 -0.069872 0.094012 -0.493958 \n", + "1 -0.363309 0.866551 0.515476 0.814062 1.766736 2.408963 \n", + "2 0.204232 0.297127 -0.150408 -0.329756 -1.346593 -2.295508 \n", + "3 -0.609313 -0.478738 -0.447635 -0.857543 0.418773 -0.772577 \n", + "4 -0.164374 -0.304590 -0.486097 -1.294510 -1.016705 -1.333984 \n", "\n", "[5 rows x 52 columns]" ] @@ -305,16 +305,25 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 3, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "rmse_oos_ml_m: 0.9842067721235772\n", + "rmse_oos_ml_m: 1.1424416317208945\n" + ] + } + ], "source": [ "# Check for Overfitting: Compare in-sample (train), out-of-sample (test) MSE\n", "# ml_m\n", "rmse_oos_ml_m = automl_m.best_loss\n", "rmse_oos_ml_l = automl_l.best_loss\n", "print(\"rmse_oos_ml_m:\",rmse_oos_ml_m)\n", - "print(\"rmse_oos_ml_m:\",rmse_oos_ml_l)\n" + "print(\"rmse_oos_ml_l:\",rmse_oos_ml_l)\n" ] }, { @@ -328,9 +337,23 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 11, "metadata": {}, - "outputs": [], + "outputs": [ + { + "ename": "ValueError", + "evalue": "Apply fit() before confint().", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mValueError\u001b[0m Traceback (most recent call last)", + "Cell \u001b[1;32mIn[11], line 11\u001b[0m\n\u001b[0;32m 8\u001b[0m \u001b[38;5;66;03m# Fit the DoubleMLPLR model\u001b[39;00m\n\u001b[0;32m 9\u001b[0m obj_dml_plr_manual_tuned\u001b[38;5;241m.\u001b[39mfit()\n\u001b[1;32m---> 11\u001b[0m manual_tuned_summary \u001b[38;5;241m=\u001b[39m obj_dml_plr_manual_tuned\u001b[38;5;241m.\u001b[39msummary\n\u001b[0;32m 12\u001b[0m \u001b[38;5;28mprint\u001b[39m(manual_tuned_summary)\n", + "File \u001b[1;32mc:\\users\\bachp\\documents\\promotion\\dissundpapers\\software\\doubleml\\doubleml-for-py\\doubleml\\double_ml.py:431\u001b[0m, in \u001b[0;36mDoubleML.summary\u001b[1;34m(self)\u001b[0m\n\u001b[0;32m 425\u001b[0m summary_stats \u001b[38;5;241m=\u001b[39m np\u001b[38;5;241m.\u001b[39mtranspose(np\u001b[38;5;241m.\u001b[39mvstack(\n\u001b[0;32m 426\u001b[0m [\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mcoef, \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mse,\n\u001b[0;32m 427\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mt_stat, \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mpval]))\n\u001b[0;32m 428\u001b[0m df_summary \u001b[38;5;241m=\u001b[39m pd\u001b[38;5;241m.\u001b[39mDataFrame(summary_stats,\n\u001b[0;32m 429\u001b[0m columns\u001b[38;5;241m=\u001b[39mcol_names,\n\u001b[0;32m 430\u001b[0m index\u001b[38;5;241m=\u001b[39m\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_dml_data\u001b[38;5;241m.\u001b[39md_cols)\n\u001b[1;32m--> 431\u001b[0m ci \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mconfint()\n\u001b[0;32m 432\u001b[0m df_summary \u001b[38;5;241m=\u001b[39m df_summary\u001b[38;5;241m.\u001b[39mjoin(ci)\n\u001b[0;32m 433\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m df_summary\n", + "File \u001b[1;32mc:\\users\\bachp\\documents\\promotion\\dissundpapers\\software\\doubleml\\doubleml-for-py\\doubleml\\double_ml.py:618\u001b[0m, in \u001b[0;36mDoubleML.confint\u001b[1;34m(self, joint, level)\u001b[0m\n\u001b[0;32m 598\u001b[0m \u001b[38;5;250m\u001b[39m\u001b[38;5;124;03m\"\"\"\u001b[39;00m\n\u001b[0;32m 599\u001b[0m \u001b[38;5;124;03mConfidence intervals for DoubleML models.\u001b[39;00m\n\u001b[0;32m 600\u001b[0m \n\u001b[1;32m (...)\u001b[0m\n\u001b[0;32m 614\u001b[0m \u001b[38;5;124;03m A data frame with the confidence interval(s).\u001b[39;00m\n\u001b[0;32m 615\u001b[0m \u001b[38;5;124;03m\"\"\"\u001b[39;00m\n\u001b[0;32m 617\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mframework \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[1;32m--> 618\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mValueError\u001b[39;00m(\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mApply fit() before confint().\u001b[39m\u001b[38;5;124m'\u001b[39m)\n\u001b[0;32m 620\u001b[0m df_ci \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mframework\u001b[38;5;241m.\u001b[39mconfint(joint\u001b[38;5;241m=\u001b[39mjoint, level\u001b[38;5;241m=\u001b[39mlevel)\n\u001b[0;32m 621\u001b[0m df_ci\u001b[38;5;241m.\u001b[39mset_index(pd\u001b[38;5;241m.\u001b[39mIndex(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_dml_data\u001b[38;5;241m.\u001b[39md_cols), inplace\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mTrue\u001b[39;00m)\n", + "\u001b[1;31mValueError\u001b[0m: Apply fit() before confint()." + ] + } + ], "source": [ "# Create DoubleMLData object with the evaluation set\n", "obj_dml_data = dml.DoubleMLData(data, \"y\", \"d\")\n", @@ -342,9 +365,8 @@ "# Fit the DoubleMLPLR model\n", "obj_dml_plr_manual_tuned.fit(store_predictions=True)\n", "\n", - "print(obj_dml_plr_manual_tuned.summary)\n", "manual_tuned_summary = obj_dml_plr_manual_tuned.summary\n", - "print(manual_tuned_summary)\n" + "print(manual_tuned_summary)" ] }, { @@ -356,17 +378,26 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 12, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "RMLSE evaluated by DoubleML (ml_l): [1.13809748]\n", + "RMSE evaluated by DoubleML (ml_m): [1.00242534]\n" + ] + } + ], "source": [ "# Evaluate learners using evaluate_learners() (MSE for all nuisance components)\n", "rmse_dml_ml_l = obj_dml_plr_manual_tuned.evaluate_learners()['ml_l'][0]\n", "rmse_dml_ml_m = obj_dml_plr_manual_tuned.evaluate_learners()['ml_m'][0]\n", "\n", "# Print results\n", - "print(\"RMLSE evaluated by DoubleML (ml_l):\", rmse_dml_ml_l)\n", - "print(\"RMSE evaluated by DoubleML (ml_m):\", rmse_dml_ml_m)" + "print(\"RMSE evaluated by DoubleML (ml_m):\", rmse_dml_ml_m)\n", + "print(\"RMSE evaluated by DoubleML (ml_l):\", rmse_dml_ml_l)\n" ] }, { @@ -390,11 +421,10 @@ }, { "cell_type": "code", - "execution_count": 42, + "execution_count": 13, "metadata": {}, "outputs": [], "source": [ - "from flaml import AutoML\n", "from sklearn.utils.multiclass import unique_labels\n", "\n", "class FlamlRegressorDoubleML:\n", @@ -468,7 +498,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 14, "metadata": {}, "outputs": [], "source": [ From 1a417e04d5f3147d682f21153fcae6f0b2fdac94 Mon Sep 17 00:00:00 2001 From: PhilippBach Date: Thu, 19 Sep 2024 12:20:04 +0200 Subject: [PATCH 13/71] add knitr dependency --- .github/workflows/test_build_docu_dev.yml | 4 ++-- .github/workflows/test_build_docu_released.yml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/test_build_docu_dev.yml b/.github/workflows/test_build_docu_dev.yml index da968757..de5c933a 100644 --- a/.github/workflows/test_build_docu_dev.yml +++ b/.github/workflows/test_build_docu_dev.yml @@ -71,7 +71,7 @@ jobs: run: | install.packages('remotes') remotes::install_github('DoubleML/doubleml-for-r', dependencies = TRUE) - install.packages(c('ggplot2', 'IRkernel', 'xgboost', 'hdm', 'reshape2', 'gridExtra', "igraph", "mlr3filters", "mlr3measures", "did")) + install.packages(c('knitr', 'ggplot2', 'IRkernel', 'xgboost', 'hdm', 'reshape2', 'gridExtra', "igraph", "mlr3filters", "mlr3measures", "did")) IRkernel::installspec() shell: Rscript {0} @@ -80,7 +80,7 @@ jobs: run: | install.packages('remotes') remotes::install_github('DoubleML/doubleml-for-r@${{ github.event.inputs.doubleml-r-branch }}', dependencies = TRUE) - install.packages(c('ggplot2', 'IRkernel', 'xgboost', 'hdm', 'reshape2', 'gridExtra', "igraph", "mlr3filters", "mlr3measures", "did")) + install.packages(c('knitr', 'ggplot2', 'IRkernel', 'xgboost', 'hdm', 'reshape2', 'gridExtra', "igraph", "mlr3filters", "mlr3measures", "did")) IRkernel::installspec() shell: Rscript {0} diff --git a/.github/workflows/test_build_docu_released.yml b/.github/workflows/test_build_docu_released.yml index 240935c3..37e6431f 100644 --- a/.github/workflows/test_build_docu_released.yml +++ b/.github/workflows/test_build_docu_released.yml @@ -48,7 +48,7 @@ jobs: run: | install.packages('remotes') remotes::install_cran('DoubleML', dependencies = TRUE) - install.packages(c('ggplot2', 'IRkernel', 'xgboost', 'hdm', 'reshape2', 'gridExtra', "igraph", "mlr3filters", "mlr3measures", "did")) + install.packages(c('knitr', 'ggplot2', 'IRkernel', 'xgboost', 'hdm', 'reshape2', 'gridExtra', "igraph", "mlr3filters", "mlr3measures", "did")) IRkernel::installspec() shell: Rscript {0} From 40aa1f75fcb09370fe472caf8d943fc3616eaa3f Mon Sep 17 00:00:00 2001 From: PhilippBach Date: Thu, 19 Sep 2024 12:50:01 +0200 Subject: [PATCH 14/71] setup pandoc --- .github/workflows/test_build_docu_dev.yml | 3 +++ .github/workflows/test_build_docu_released.yml | 3 +++ 2 files changed, 6 insertions(+) diff --git a/.github/workflows/test_build_docu_dev.yml b/.github/workflows/test_build_docu_dev.yml index de5c933a..2602936a 100644 --- a/.github/workflows/test_build_docu_dev.yml +++ b/.github/workflows/test_build_docu_dev.yml @@ -66,6 +66,9 @@ jobs: writeLines(sprintf("R-%i.%i", getRversion()$major, getRversion()$minor), ".github/R-version") shell: Rscript {0} + - name: Install pandoc + uses: r-lib/actions/setup-pandoc@v2 + - name: Install R kernel for Jupyter and the R package DoubleML (dev) if: ${{ github.event_name != 'workflow_dispatch' }} run: | diff --git a/.github/workflows/test_build_docu_released.yml b/.github/workflows/test_build_docu_released.yml index 37e6431f..805ed1dc 100644 --- a/.github/workflows/test_build_docu_released.yml +++ b/.github/workflows/test_build_docu_released.yml @@ -43,6 +43,9 @@ jobs: run: | writeLines(sprintf("R-%i.%i", getRversion()$major, getRversion()$minor), ".github/R-version") shell: Rscript {0} + + - name: Install pandoc + uses: r-lib/actions/setup-pandoc@v2 - name: Install R kernel for Jupyter and the R package DoubleML (dev) run: | From 61d2566cbfe705f5031bdebd193fd6076cccd96b Mon Sep 17 00:00:00 2001 From: PhilippBach Date: Thu, 19 Sep 2024 14:08:20 +0200 Subject: [PATCH 15/71] fix url (broken url) --- doc/examples/py_double_ml_apo.ipynb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/examples/py_double_ml_apo.ipynb b/doc/examples/py_double_ml_apo.ipynb index fc378910..2353d49a 100644 --- a/doc/examples/py_double_ml_apo.ipynb +++ b/doc/examples/py_double_ml_apo.ipynb @@ -6,7 +6,7 @@ "source": [ "# Python: Average Potential Outcome (APO) Models\n", "\n", - "In this example, we illustrate how the [DoubleML](https://docs.doubleml.org/stable/index.html) package can be used to estimate average potential outcomes (APOs) in an interactive regression model (see [DoubleMLIRM](https://docs.doubleml.org/stable/guide/models.html#interactive-regression-model-irm)).\n", + "In this example, we illustrate how the [DoubleML](https://docs.doubleml.org/stable/index.html) package can be used to estimate average potential outcomes (APOs) in an interactive regression model (see [DoubleMLIRM](https://docs.doubleml.org/stable/guide/models.html#interactive-regression-models-irm)).\n", "\n", "The goal is to estimate the average potential outcome\n", "\n", From c3fe9368600735e8138e37ffb34ed5d1ce45b0cb Mon Sep 17 00:00:00 2001 From: PhilippBach Date: Thu, 19 Sep 2024 14:09:01 +0200 Subject: [PATCH 16/71] exception for unifr.ch --- doc/conf.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/doc/conf.py b/doc/conf.py index 0b848a55..c69f9c79 100644 --- a/doc/conf.py +++ b/doc/conf.py @@ -197,6 +197,8 @@ 'https://glmnet.stanford.edu/reference/cv.glmnet.html', # Valid URL (error not replicable), Causes 409 Client Error: Too Many Requests for url 'http://dx.doi.org/10.2139/ssrn.3619201', + # Valid URL, Causes ConnectTimeoutError + 'https://folia.unifr.ch/global/documents/306524', ] # To execute R code via jupyter-execute one needs to install the R kernel for jupyter From db9696b1abb9c47e127afe957e9e4c58960c79f1 Mon Sep 17 00:00:00 2001 From: PhilippBach Date: Fri, 20 Sep 2024 09:26:27 +0200 Subject: [PATCH 17/71] fix IRM link in APO example --- doc/examples/py_double_ml_apo.ipynb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/examples/py_double_ml_apo.ipynb b/doc/examples/py_double_ml_apo.ipynb index 2353d49a..6dddaae3 100644 --- a/doc/examples/py_double_ml_apo.ipynb +++ b/doc/examples/py_double_ml_apo.ipynb @@ -172,8 +172,8 @@ "source": [ "## Single Average Potential Outcome Models (APO)\n", "\n", - "Further, we have to specify machine learning algorithms. As in the [DoubleMLIRM](https://docs.doubleml.org/stable/guide/models.html#interactive-regression-model-irm) model, we have to set ``ml_m`` as a classifier and ``ml_g`` as a regressor (since the outcome is continuous). As in the \n", - "[DoubleMLIRM](https://docs.doubleml.org/stable/guide/models.html#interactive-regression-model-irm) model, the classifier ``ml_m`` is used to estimate the conditional probability of receiving treatment level $d$ given the covariates $X$\n", + "Further, we have to specify machine learning algorithms. As in the [DoubleMLIRM](https://docs.doubleml.org/stable/guide/models.html#interactive-regression-models-irm) model, we have to set ``ml_m`` as a classifier and ``ml_g`` as a regressor (since the outcome is continuous). As in the \n", + "[DoubleMLIRM](https://docs.doubleml.org/stable/guide/models.html#interactive-regression-models-irm) model, the classifier ``ml_m`` is used to estimate the conditional probability of receiving treatment level $d$ given the covariates $X$\n", "\n", "$$m_{0,d}(X) = \\mathbb{E}[1\\{D=d\\}|X]$$\n", "\n", From ca67450333e0d383fb754071d1e00820fb9934b6 Mon Sep 17 00:00:00 2001 From: PhilippBach Date: Fri, 20 Sep 2024 09:45:56 +0200 Subject: [PATCH 18/71] install R dependencies through r-lib workflow --- .github/workflows/test_build_docu_dev.yml | 6 +++--- .github/workflows/test_build_docu_released.yml | 8 ++++---- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/.github/workflows/test_build_docu_dev.yml b/.github/workflows/test_build_docu_dev.yml index 2602936a..8c61a575 100644 --- a/.github/workflows/test_build_docu_dev.yml +++ b/.github/workflows/test_build_docu_dev.yml @@ -61,14 +61,14 @@ jobs: - name: Install R uses: r-lib/actions/setup-r@v2 + - name: Install R dependencies + uses: r-lib/actions/setup-r-dependencies@v2 + - name: Query R version run: | writeLines(sprintf("R-%i.%i", getRversion()$major, getRversion()$minor), ".github/R-version") shell: Rscript {0} - - name: Install pandoc - uses: r-lib/actions/setup-pandoc@v2 - - name: Install R kernel for Jupyter and the R package DoubleML (dev) if: ${{ github.event_name != 'workflow_dispatch' }} run: | diff --git a/.github/workflows/test_build_docu_released.yml b/.github/workflows/test_build_docu_released.yml index 805ed1dc..8f1eed92 100644 --- a/.github/workflows/test_build_docu_released.yml +++ b/.github/workflows/test_build_docu_released.yml @@ -38,16 +38,16 @@ jobs: - name: Install R uses: r-lib/actions/setup-r@v2 + + - name: Install R dependencies + uses: r-lib/actions/setup-r-dependencies@v2 - name: Query R version run: | writeLines(sprintf("R-%i.%i", getRversion()$major, getRversion()$minor), ".github/R-version") shell: Rscript {0} - - - name: Install pandoc - uses: r-lib/actions/setup-pandoc@v2 - - name: Install R kernel for Jupyter and the R package DoubleML (dev) + - name: Install R kernel for Jupyter and the R package DoubleML (CRAN release) run: | install.packages('remotes') remotes::install_cran('DoubleML', dependencies = TRUE) From 0e8885418dc8204c23a10475d596b19ba6e22afa Mon Sep 17 00:00:00 2001 From: PhilippBach Date: Fri, 20 Sep 2024 09:54:30 +0200 Subject: [PATCH 19/71] roll bakc --- .github/workflows/test_build_docu_dev.yml | 6 +++--- .github/workflows/test_build_docu_released.yml | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/test_build_docu_dev.yml b/.github/workflows/test_build_docu_dev.yml index 8c61a575..2602936a 100644 --- a/.github/workflows/test_build_docu_dev.yml +++ b/.github/workflows/test_build_docu_dev.yml @@ -61,14 +61,14 @@ jobs: - name: Install R uses: r-lib/actions/setup-r@v2 - - name: Install R dependencies - uses: r-lib/actions/setup-r-dependencies@v2 - - name: Query R version run: | writeLines(sprintf("R-%i.%i", getRversion()$major, getRversion()$minor), ".github/R-version") shell: Rscript {0} + - name: Install pandoc + uses: r-lib/actions/setup-pandoc@v2 + - name: Install R kernel for Jupyter and the R package DoubleML (dev) if: ${{ github.event_name != 'workflow_dispatch' }} run: | diff --git a/.github/workflows/test_build_docu_released.yml b/.github/workflows/test_build_docu_released.yml index 8f1eed92..9b464671 100644 --- a/.github/workflows/test_build_docu_released.yml +++ b/.github/workflows/test_build_docu_released.yml @@ -39,13 +39,13 @@ jobs: - name: Install R uses: r-lib/actions/setup-r@v2 - - name: Install R dependencies - uses: r-lib/actions/setup-r-dependencies@v2 - - name: Query R version run: | writeLines(sprintf("R-%i.%i", getRversion()$major, getRversion()$minor), ".github/R-version") shell: Rscript {0} + + - name: Install pandoc + uses: r-lib/actions/setup-pandoc@v2 - name: Install R kernel for Jupyter and the R package DoubleML (CRAN release) run: | From 206148991a9dfb3807ef60f441c48d5afd5e89f8 Mon Sep 17 00:00:00 2001 From: PhilippBach Date: Fri, 20 Sep 2024 11:21:45 +0200 Subject: [PATCH 20/71] upd link in other files --- doc/examples/py_double_ml_cate.ipynb | 2 +- doc/examples/py_double_ml_gate.ipynb | 4 ++-- doc/examples/py_double_ml_gate_sensitivity.ipynb | 2 +- doc/examples/py_double_ml_policy_tree.ipynb | 2 +- doc/examples/py_double_ml_sensitivity_booking.ipynb | 2 +- 5 files changed, 6 insertions(+), 6 deletions(-) diff --git a/doc/examples/py_double_ml_cate.ipynb b/doc/examples/py_double_ml_cate.ipynb index 3b5afd81..62b7966b 100644 --- a/doc/examples/py_double_ml_cate.ipynb +++ b/doc/examples/py_double_ml_cate.ipynb @@ -9,7 +9,7 @@ "source": [ "# Python: Conditional Average Treatment Effects (CATEs) for IRM models\n", "\n", - "In this simple example, we illustrate how the [DoubleML](https://docs.doubleml.org/stable/index.html) package can be used to estimate conditional average treatment effects with B-splines for one or two-dimensional effects in the [DoubleMLIRM](https://docs.doubleml.org/stable/guide/models.html#interactive-regression-model-irm) model." + "In this simple example, we illustrate how the [DoubleML](https://docs.doubleml.org/stable/index.html) package can be used to estimate conditional average treatment effects with B-splines for one or two-dimensional effects in the [DoubleMLIRM](https://docs.doubleml.org/stable/guide/models.html#interactive-regression-models-irm) model." ] }, { diff --git a/doc/examples/py_double_ml_gate.ipynb b/doc/examples/py_double_ml_gate.ipynb index 2d6c23c5..382a6476 100644 --- a/doc/examples/py_double_ml_gate.ipynb +++ b/doc/examples/py_double_ml_gate.ipynb @@ -9,7 +9,7 @@ "source": [ "# Python: Group Average Treatment Effects (GATEs) for IRM models\n", "\n", - "In this simple example, we illustrate how the [DoubleML](https://docs.doubleml.org/stable/index.html) package can be used to estimate group average treatment effects in the [DoubleMLIRM](https://docs.doubleml.org/stable/guide/models.html#interactive-regression-model-irm) model." + "In this simple example, we illustrate how the [DoubleML](https://docs.doubleml.org/stable/index.html) package can be used to estimate group average treatment effects in the [DoubleMLIRM](https://docs.doubleml.org/stable/guide/models.html#interactive-regression-models-irm) model." ] }, { @@ -167,7 +167,7 @@ "metadata": {}, "source": [ "## Interactive Regression Model (IRM)\n", - "The first step is to fit a [DoubleML IRM Model](https://docs.doubleml.org/stable/guide/models.html#interactive-regression-model-irm) to the data." + "The first step is to fit a [DoubleML IRM Model](https://docs.doubleml.org/stable/guide/models.html#interactive-regression-models-irm) to the data." ] }, { diff --git a/doc/examples/py_double_ml_gate_sensitivity.ipynb b/doc/examples/py_double_ml_gate_sensitivity.ipynb index 20ecb705..7810ad26 100644 --- a/doc/examples/py_double_ml_gate_sensitivity.ipynb +++ b/doc/examples/py_double_ml_gate_sensitivity.ipynb @@ -6,7 +6,7 @@ "source": [ "# Python: GATE Sensitivity Analysis\n", "\n", - "In this simple example, we illustrate how the [DoubleML](https://docs.doubleml.org/stable/index.html) package can be used to perfrom a sensitivity analysis for group average treatment effects in the [DoubleMLIRM](https://docs.doubleml.org/stable/guide/models.html#interactive-regression-model-irm) model.\n" + "In this simple example, we illustrate how the [DoubleML](https://docs.doubleml.org/stable/index.html) package can be used to perfrom a sensitivity analysis for group average treatment effects in the [DoubleMLIRM](https://docs.doubleml.org/stable/guide/models.html#interactive-regression-models-irm) model.\n" ] }, { diff --git a/doc/examples/py_double_ml_policy_tree.ipynb b/doc/examples/py_double_ml_policy_tree.ipynb index 0a4109bc..3c981f97 100644 --- a/doc/examples/py_double_ml_policy_tree.ipynb +++ b/doc/examples/py_double_ml_policy_tree.ipynb @@ -173,7 +173,7 @@ "metadata": {}, "source": [ "## Interactive Regression Model (IRM)\n", - "The first step is to fit a [DoubleML IRM Model](https://docs.doubleml.org/stable/guide/models.html#interactive-regression-model-irm) to the data." + "The first step is to fit a [DoubleML IRM Model](https://docs.doubleml.org/stable/guide/models.html#interactive-regression-models-irm) to the data." ] }, { diff --git a/doc/examples/py_double_ml_sensitivity_booking.ipynb b/doc/examples/py_double_ml_sensitivity_booking.ipynb index ce41354c..fe8677ad 100644 --- a/doc/examples/py_double_ml_sensitivity_booking.ipynb +++ b/doc/examples/py_double_ml_sensitivity_booking.ipynb @@ -85,7 +85,7 @@ "\n", "### 1. Formulation of Causal Model & Identification Assumptions\n", "\n", - "In the use case, we focused on a nonparametric model for the treatment effect, also called [Interactive Regression Model (IRM)](https://docs.doubleml.org/stable/guide/models.html#interactive-regression-model-irm). Under the assumptions of consistency, overlap and unconfoundedness, this model can be used to identify the Average Treatment Effect (ATE) and the Average Treatment Effect on the Treated (ATT). The identification strategy was based on a DAG.\n", + "In the use case, we focused on a nonparametric model for the treatment effect, also called [Interactive Regression Model (IRM)](https://docs.doubleml.org/stable/guide/models.html#interactive-regression-models-irm). Under the assumptions of consistency, overlap and unconfoundedness, this model can be used to identify the Average Treatment Effect (ATE) and the Average Treatment Effect on the Treated (ATT). The identification strategy was based on a DAG.\n", "\n", "![DAG underlying to the causal analysis.](figures/dag_usecase_revised.png)\n", "\n", From dde41476ef026c73bc7248b6cbdbb5533561f797 Mon Sep 17 00:00:00 2001 From: PhilippBach Date: Fri, 27 Sep 2024 10:37:17 +0200 Subject: [PATCH 21/71] test workflow --- .github/workflows/test_build_docu_dev.yml | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/.github/workflows/test_build_docu_dev.yml b/.github/workflows/test_build_docu_dev.yml index 2602936a..443e1f83 100644 --- a/.github/workflows/test_build_docu_dev.yml +++ b/.github/workflows/test_build_docu_dev.yml @@ -1,5 +1,3 @@ -# Workflow based on https://github.com/actions/starter-workflows/blob/main/ci/python-package.yml - name: Test Docu Build (with dev pkgs) on: @@ -23,10 +21,8 @@ on: schedule: - cron: "0 9 * * 1,3,5" - jobs: build: - runs-on: ubuntu-latest env: GITHUB_PAT: ${{ secrets.GITHUB_TOKEN }} @@ -50,8 +46,13 @@ jobs: path: doubleml-for-py ref: ${{ github.event.inputs.doubleml-py-branch }} + - name: Install dependencies + run: | + sudo apt-get update + sudo apt-get install -y libicu-dev libcurl4-openssl-dev libssl-dev + - name: Install graphviz - run: sudo apt-get install graphviz + run: sudo apt-get install -y graphviz - name: Install python uses: actions/setup-python@v5 @@ -99,4 +100,4 @@ jobs: uses: actions/upload-artifact@v4 with: name: build_html - path: doc/_build/html/ + path: doc/_build/html/ \ No newline at end of file From fc4f8fbdb0bd076630ae732871573590c77a71b2 Mon Sep 17 00:00:00 2001 From: OliverSchacht <65898638+OliverSchacht@users.noreply.github.com> Date: Mon, 7 Oct 2024 13:35:43 +0200 Subject: [PATCH 22/71] add rdd.rst --- doc/shared/models/rdd.rst | 51 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 doc/shared/models/rdd.rst diff --git a/doc/shared/models/rdd.rst b/doc/shared/models/rdd.rst new file mode 100644 index 00000000..0ec72dc3 --- /dev/null +++ b/doc/shared/models/rdd.rst @@ -0,0 +1,51 @@ +**Regression Discontinuity Designs (RDD)** are causal inference methods used when treatment assignment is determined by a continuous running variable ("score") crossing a known threshold ("cutoff"). These designs exploit discontinuities in the probability of receiving treatment at the cutoff to estimate local treatment effects. RDDs are divided into two main types: **Sharp** and **Fuzzy**. + +The key idea behind RDD is that units just above and just below the threshold are assumed to be comparable, differing only in the treatment assignment. This allows to estimate the causal effect at the threshold by comparing outcomes of treated and untreated units. + +Let :math:`S_i` represent the score, and let :math:`c` denote the cutoff point. Further, let :math:`Y_i(1)` and :math:`Y_i(0)` denote the potential outcomes with and without treatment, respectively. + +The parameter of interest in an RDD is the **Local Average Treatment Effect (LATE)** at the cutoff: + +.. math:: + + \theta_{\text{LATE}} = \mathbb[Y_i(1)-Y_i(0)\mid S = c] + +Our implementation follows work from `Noack, Olma and Rothe (2024) `_. By using a set of additional covariates :math:`X_i` for each observation, :math:`Y_i` and :math:`D_i` can be adjusted in a first stage, to reduce the standart deviation in estimation of $\theta$. + +Sharp Regression Discontinuity Design +************************************* + +In a **Sharp RDD**, the treatment is deterministically assigned at the cutoff (:math:`D_i = \mathbb{1}\{S_i \geq c\}`). + +The LATE is identified as the difference in the conditional expectation of :math:`Y_i` at the cutoff from both sides: + +.. math:: + + \theta_{\text{SRD}} = \lim_{\epsilon \to 0} \left[ \mathbb{E}[Y_i | S_i = c + \epsilon] - \mathbb{E}[Y_i | S_i = c - \epsilon] \right] + +The assumptions for identifying the LATE in a sharp RDD are + +- **Continuity:** The potential outcomes :math:`Y_i(1)` and :math:`Y_i(0)` are continuous around the cutoff, meaning no other factors besides treatment change discontinuously at the threshold. + +- **Exogeneity of the Score:** Units cannot perfectly manipulate their value of :math:`S_i` to either receive or avoid treatment exactly at the cutoff. + +Fuzzy Regression Discontinuity Design +************************************* + +In a **Fuzzy RDD**, treatment assignment is identical to the sharp RDD (:math:`T_i = \mathbb{1}\{S_i \geq c\}`), however, compliance is limited around the cutoff which leads to a different treatment received than assigned (:math:`D_i \neq T_i`) for some units. + +The **LATE** is identified by comparing the jump in the probability of receiving treatment with the jump in the outcome. + +The LATE for Fuzzy RDD is given by: + +.. math:: + + \theta_{\text{FRD}} = \frac{\lim_{\epsilon \to 0} \left[ \mathbb{E}[Y_i | S_i = c + \epsilon] - \mathbb{E}[Y_i | S_i = c - \epsilon] \right]}{\lim_{\epsilon \to 0} \left[ \mathbb{E}[D_i | S_i = c + \epsilon] - \mathbb{E}[D_i | S_i = c - \epsilon] \right]} + +The assumptions for identifying the LATE in a fuzzy RDD are + +- **Continuity of Potential Outcomes:** Similar to sharp RDD, the potential outcomes :math:`Y_i(1)` and :math:`Y_i(0)` must be continuous at the cutoff. + +- **Continuity of Treatment Assignment Probability:** The probability of receiving treatment :math:`\mathbb{E}[D_i | S_i]` must change discontinuously at the cutoff, but there should be no other jumps in the probability. + +- **Monotonicity:** There must be no "defiers", meaning individuals for whom the treatment assignment goes in the opposite direction of the score. \ No newline at end of file From 46de31d5088552a80cab8c4193caa877c4bb8944 Mon Sep 17 00:00:00 2001 From: OliverSchacht <65898638+OliverSchacht@users.noreply.github.com> Date: Tue, 8 Oct 2024 16:18:03 +0200 Subject: [PATCH 23/71] update doc --- doc/shared/models/rdd.rst | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/doc/shared/models/rdd.rst b/doc/shared/models/rdd.rst index 0ec72dc3..ec90349a 100644 --- a/doc/shared/models/rdd.rst +++ b/doc/shared/models/rdd.rst @@ -8,9 +8,11 @@ The parameter of interest in an RDD is the **Local Average Treatment Effect (LAT .. math:: - \theta_{\text{LATE}} = \mathbb[Y_i(1)-Y_i(0)\mid S = c] + \theta_{0} = \mathbb[Y(1)-Y(0)\mid S = c] -Our implementation follows work from `Noack, Olma and Rothe (2024) `_. By using a set of additional covariates :math:`X_i` for each observation, :math:`Y_i` and :math:`D_i` can be adjusted in a first stage, to reduce the standart deviation in estimation of $\theta$. +Our implementation follows work from `Noack, Olma and Rothe (2024) `_, however, our notation is slightly different to be consistent with the package. + +By using a set of additional covariates :math:`X_i` for each observation, :math:`Y_i` and :math:`D_i` can be adjusted in a first stage, to reduce the standart deviation in estimation of $\theta$. Sharp Regression Discontinuity Design ************************************* @@ -29,6 +31,20 @@ The assumptions for identifying the LATE in a sharp RDD are - **Exogeneity of the Score:** Units cannot perfectly manipulate their value of :math:`S_i` to either receive or avoid treatment exactly at the cutoff. +Without the use of covariates, :math:`\theta` is typically estimated by running seperate local linear regressions on each side of the cutoff, yielding an estimator of the form + +.. math:: + + \hat{\theta}_{\text{SRD}} = \sum_{i=1}^n w_i(h)Y_i, + +where the :math:`w_i(h)` are local linear regression weights that depend on the data through the realizations of the running variable only and :math:`h > 0` is a bandwidth. + + + + + + + Fuzzy Regression Discontinuity Design ************************************* From 6a2485c6c32010634aaefecea30f55e546a7cc78 Mon Sep 17 00:00:00 2001 From: OliverSchacht <65898638+OliverSchacht@users.noreply.github.com> Date: Tue, 8 Oct 2024 16:20:51 +0200 Subject: [PATCH 24/71] add example notebook, work in progress --- doc/examples/py_double_ml_rdflex.ipynb | 11177 +++++++++++++++++++++++ 1 file changed, 11177 insertions(+) create mode 100644 doc/examples/py_double_ml_rdflex.ipynb diff --git a/doc/examples/py_double_ml_rdflex.ipynb b/doc/examples/py_double_ml_rdflex.ipynb new file mode 100644 index 00000000..c84f2b20 --- /dev/null +++ b/doc/examples/py_double_ml_rdflex.ipynb @@ -0,0 +1,11177 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# DoubleML for Flexible Covariate Adjustment in Regression Discontinuity Designs (RDD)\n", + "\n", + "This notebook demonstrates how to use RDD designs within ``DoubleML``. Our implementation ``RDFlex`` follows the work from [Noack, Olma and Rothe (2024)](https://arxiv.org/abs/2107.07942). \n", + "\n", + "In RDD treatment assignment is determined by a continuous running variable (\"score\", $S$) crossing a known threshold (\"cutoff\", $c$). We aim to estimate the local average treatment effect \n", + "$$\\theta_{0} = \\mathbb{E}[Y_i(1)-Y_i(0)\\mid S = c]$$\n", + "at the cutoff value. We therefore assume, that individuals are not able to manipulate their score in the neighborhood of the cutoff, and that there is a discontinuity in outcome which is sorely to be explained by the score." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "import pandas as pd\n", + "\n", + "import plotly.express as px\n", + "import plotly.graph_objs as go\n", + "from plotly.subplots import make_subplots\n", + "from statsmodels.nonparametric.kernel_regression import KernelReg\n", + "\n", + "from lightgbm import LGBMRegressor, LGBMClassifier\n", + "from sklearn.ensemble import RandomForestRegressor, RandomForestClassifier\n", + "from sklearn.linear_model import LinearRegression, LogisticRegression\n", + "\n", + "from rdrobust import rdrobust\n", + "\n", + "import doubleml as dml\n", + "from doubleml.rdd import RDFlex\n", + "from doubleml.rdd.datasets import make_simple_rdd_data" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Sharp RDD\n", + "\n", + "In the sharp design, the treatment assignment is deterministic given the score. Namely, all the individuals with a score higher than the cutoff, receive the treatment $$D_i = \\mathbb{I}[S_i > c].$$\n", + "\n", + "### Generate Data\n", + "\n", + "The function ``make_simple_rdd_data()`` can be used to generate data of a rather standard RDD setting. If we set ``fuzzy = False``, the generated data follows a sharp RDD. We also generate covariates $X$ that can be used to adjust the estimation at a later stage." + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
ydscorex0x1x2
02.1315331.00.496714-0.665035-0.7908640.272860
19.2052610.0-0.1382640.412951-0.9368280.872424
23.3376771.00.647689-0.8960570.0825930.418121
37.7671241.01.5230300.7419380.4281740.603456
43.5184070.0-0.234153-0.3211000.629650-0.839770
\n", + "
" + ], + "text/plain": [ + " y d score x0 x1 x2\n", + "0 2.131533 1.0 0.496714 -0.665035 -0.790864 0.272860\n", + "1 9.205261 0.0 -0.138264 0.412951 -0.936828 0.872424\n", + "2 3.337677 1.0 0.647689 -0.896057 0.082593 0.418121\n", + "3 7.767124 1.0 1.523030 0.741938 0.428174 0.603456\n", + "4 3.518407 0.0 -0.234153 -0.321100 0.629650 -0.839770" + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "np.random.seed(42)\n", + "\n", + "fuzzy = False\n", + "data_dict = make_simple_rdd_data(n_obs=1000, fuzzy=fuzzy)\n", + "\n", + "cov_names = ['x' + str(i) for i in range(data_dict['X'].shape[1])]\n", + "df = pd.DataFrame(\n", + " np.column_stack((data_dict['Y'], data_dict['D'], data_dict['score'], data_dict['X'])),\n", + " columns=['y', 'd', 'score'] + cov_names,\n", + ")\n", + "df.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "C:\\Users\\BAQ7040\\AppData\\Roaming\\Python\\Python311\\site-packages\\plotly\\express\\_core.py:1979: FutureWarning:\n", + "\n", + "When grouping with a length-1 list-like, you will need to pass a length-1 tuple to get_group in a future version of pandas. Pass `(name,)` instead of `name` to silence this warning.\n", + "\n" + ] + }, + { + "data": { + "application/vnd.plotly.v1+json": { + "config": { + "plotlyServerURL": "https://plot.ly" + }, + "data": [ + { + "hovertemplate": "Treatment=True
Score=%{x}
Outcome=%{y}", + "legendgroup": "True", + "marker": { + "color": "#636efa", + "symbol": "circle" + }, + "mode": "markers", + "name": "True", + "orientation": "v", + "showlegend": true, + "type": "scatter", + "x": [ + 0.4967141530112327, + 0.6476885381006925, + 1.5230298564080254, + 1.5792128155073915, + 0.7674347291529088, + 0.5425600435859647, + 0.24196227156603412, + 0.3142473325952739, + 1.465648768921554, + 0.06752820468792384, + 0.11092258970986608, + 0.37569801834567196, + 1.8522781845089378, + 0.822544912103189, + 0.2088635950047554, + 0.19686123586912352, + 0.7384665799954104, + 0.1713682811899705, + 1.0571222262189157, + 0.3436182895684614, + 0.324083969394795, + 0.6116762888408679, + 1.030999522495951, + 0.9312801191161986, + 0.33126343140356396, + 0.9755451271223592, + 0.812525822394198, + 1.356240028570823, + 1.0035328978920242, + 0.36163602504763415, + 0.36139560550841393, + 1.5380365664659692, + 1.5646436558140062, + 0.8219025043752238, + 0.08704706823817122, + 0.0917607765355023, + 0.3571125715117464, + 1.477894044741516, + 0.9154021177020741, + 0.32875110965968446, + 0.5132674331133561, + 0.09707754934804039, + 0.9686449905328892, + 0.29612027706457605, + 0.26105527217988933, + 0.00511345664246089, + 0.4040508568145384, + 1.8861859012105302, + 0.17457781283183896, + 0.25755039072276437, + 0.06023020994102644, + 2.463242112485286, + 0.30154734233361247, + 1.1428228145150205, + 0.7519330326867741, + 0.7910319470430469, + 1.4027943109360992, + 0.5868570938002703, + 2.1904556258099785, + 0.09965136508764122, + 0.06856297480602733, + 0.4735924306351816, + 1.5499344050175394, + 0.8135172173696698, + 0.22745993460412942, + 1.307142754282428, + 0.1846338585323042, + 0.25988279424842353, + 0.7818228717773104, + 0.5219415656168976, + 0.29698467323318606, + 0.25049285034587654, + 0.3464482094969757, + 0.23225369716100355, + 0.29307247329868125, + 1.8657745111447566, + 0.4738329209117875, + 0.6565536086338297, + 0.787084603742452, + 1.158595579007404, + 0.9633761292443218, + 0.4127809269364983, + 0.82206015999449, + 1.8967929826539474, + 0.3411519748166439, + 0.27669079933001905, + 0.8271832490360238, + 0.01300189187790702, + 1.4535340771573169, + 2.720169166589619, + 0.6256673477650062, + 0.4824724152431853, + 0.714000494092092, + 0.47323762457354485, + 0.8563987943234723, + 0.21409374413020396, + 0.173180925851182, + 0.3853173797288368, + 0.1537251059455279, + 0.058208718445999896, + 0.3577873603482833, + 0.5607845263682344, + 1.083051243175277, + 1.053802052034903, + 0.5150352672086598, + 0.5137859509122088, + 0.5150476863060479, + 3.852731490654721, + 0.570890510693167, + 1.135565640180599, + 0.9540017634932023, + 0.651391251305798, + 0.7589692204932674, + 0.08187413938632256, + 2.3146585666735087, + 0.6862601903745135, + 1.088950596967366, + 0.06428001909546277, + 0.6795977489346758, + 0.21645858958197486, + 0.045571839903813784, + 2.1439440893253257, + 0.6339190223180112, + 0.18645431476942764, + 0.852433334796224, + 0.5049872789804571, + 0.8657551941701215, + 1.7654542402810969, + 0.40498171096095553, + 0.9178619470547761, + 2.1221561970126332, + 1.0324652605511468, + 1.2669111491866227, + 0.44381942814622843, + 0.7746340534293368, + 1.6324113039316352, + 0.13074057728609134, + 1.4412732890661155, + 1.1631637521549596, + 0.010233061019587049, + 0.46210347426327075, + 0.19905969557347003, + 0.06980208499001891, + 0.11351734525124804, + 0.6621306745210467, + 1.586016816145352, + 2.1330333746562666, + 0.5883172064845765, + 0.28099186773503265, + 0.8496020970210246, + 0.35701548596504734, + 0.8995998754332507, + 0.30729952087660933, + 0.8128621188389601, + 0.6296288419236122, + 0.7472936051232618, + 0.6103702654334648, + 0.117327383308782, + 1.277664895788425, + 0.5470973811700379, + 1.09877685198719, + 0.8254163489880298, + 0.8135096360006385, + 1.305478807154329, + 0.02100384163275905, + 0.6819529712949639, + 0.3241663524884421, + 0.09699596499271819, + 0.5951570254369136, + 2.0923872756854602, + 1.1581108735000678, + 0.7916626939629359, + 0.6241198170521551, + 0.6283455092642799, + 0.07580455819372633, + 0.9751197334177512, + 0.41293145427562433, + 0.2436872114919123, + 0.24496657110872277, + 0.2320499373576363, + 0.3109075655980046, + 1.475356216949552, + 0.8576596232020194, + 0.3227185603380895, + 0.5193465142411723, + 1.5327389130025777, + 0.40171172209894146, + 0.6901439917111125, + 0.22409248181041677, + 0.01259240078179486, + 0.09767609854883172, + 0.024510174258942714, + 0.49799829124544975, + 1.4511436077950417, + 0.9592708260852069, + 2.1531824575115563, + 0.8723206367206782, + 0.18334200573835174, + 2.1898029332176723, + 0.15039378647620763, + 0.34175597577715944, + 1.8761708392158862, + 0.9504238381860503, + 0.4919191715065057, + 1.8314587658543537, + 1.179440120721287, + 1.3538723741654128, + 1.2378163119734618, + 0.005243699718183166, + 0.046980593764742055, + 0.6228499323474987, + 0.12029563171189886, + 0.514438834058749, + 0.7116148780888898, + 1.277676821898509, + 0.33231401197959165, + 1.551151975522523, + 0.11567463429285867, + 1.1792971840638264, + 0.06751848141010895, + 2.060747924881987, + 1.7553408424432044, + 0.9715709509543554, + 0.6453759495851475, + 1.3686315575323487, + 0.6860514599984393, + 1.0584244868495878, + 0.7175422557959623, + 1.502357052096028, + 0.07409478041977519, + 1.6286155455712918, + 0.3840654489393073, + 0.6696725488300385, + 0.36659824609684827, + 0.9551423205012383, + 0.5040465155178444, + 1.9647251329163893, + 0.03526355197172861, + 0.213979910734222, + 0.6141667000434252, + 0.7575077100473051, + 1.3668742674445247, + 1.6449677135012837, + 0.5765569630557664, + 0.3112501545435361, + 3.0788808084552377, + 1.1195749114345768, + 0.2034636358672231, + 1.6871416350725648, + 0.8816397569494505, + 1.4799441388900259, + 0.0773683076476183, + 1.5231240772696573, + 0.5389100436846587, + 0.9261775475316414, + 1.9094166404701305, + 0.5629692366905709, + 0.04852162794482699, + 0.2704568257798388, + 0.755391225825756, + 0.5009171876243808, + 0.09933230542922587, + 0.751387123371789, + 0.543360192379935, + 0.5705986685931593, + 0.048084946661381994, + 0.25972250172148187, + 0.6385924587773739, + 0.047398671316414016, + 1.0062928092144405, + 0.8356921120651418, + 0.5298041779152828, + 1.4415686206579004, + 0.57707212718054, + 0.37114587337130883, + 0.08658978747289992, + 1.1677820616598074, + 0.2544208433012131, + 0.3376026620752022, + 0.39445214237829684, + 0.2897748568964129, + 2.075400798645439, + 0.8711247034316923, + 1.2012139221639448, + 0.0184183791895517, + 1.6764373122752827, + 0.32692737376416264, + 0.8294055811834892, + 0.23561455810856594, + 0.7708651938869668, + 1.143754043206929, + 0.3384964074944141, + 0.6327818661062848, + 2.270692857804396, + 0.18186625505849516, + 0.24822058630033608, + 0.8303358165442456, + 0.07156623721939247, + 0.47897982574639186, + 0.3336621052869483, + 1.0375399442578992, + 0.3773004930448522, + 0.7569886166453519, + 0.8696059201056602, + 1.355637858804951, + 0.41343490322370086, + 1.876795812558066, + 1.496044311489183, + 0.6543656563540577, + 0.2799686263198203, + 2.4457519796168263, + 0.1292211819752275, + 0.10939479460489289, + 0.725766623898692, + 0.4810092317367132, + 0.22388402427913137, + 0.4714683571359957, + 1.8820244964750337, + 1.3454200461549777, + 1.593186626639397, + 0.055724912288694604, + 1.0941915184709485, + 1.5295503194606137, + 0.8231705839619146, + 0.07331796718840389, + 1.669021525289393, + 0.6962063648134184, + 1.8489560949453452, + 1.1265650295477574, + 2.5733598032498604, + 0.05921843401448826, + 0.013929291912946203, + 0.19808476076785494, + 0.10643022769189683, + 1.5039929885826886, + 1.0915068519224618, + 1.246085192497629, + 1.7522704434236227, + 0.9356783931474612, + 1.2715550949941588, + 0.7216720640432351, + 0.48937456122791806, + 0.7129984301723881, + 0.7109599682034915, + 0.44426331148603976, + 1.159329803364248, + 0.6159356069442637, + 0.5931012579683838, + 0.326133022242118, + 0.924027019206901, + 1.0490092258368893, + 0.6060099513456396, + 1.7547941819843647, + 1.6964563682900382, + 0.2110174672026184, + 0.39913611435207086, + 1.1033018820165215, + 0.11422764866203965, + 0.1503017614618776, + 0.3078017688920592, + 0.743264094022715, + 0.17086543812794186, + 0.01843393306539316, + 0.34758170536167105, + 0.19584525509768155, + 0.40825275571447184, + 1.0291556373256436, + 0.472597482413043, + 0.25602973431387566, + 0.9826909839455139, + 1.6654744444625766, + 1.0143700650181304, + 0.026091050210833786, + 0.517659020469123, + 0.18676676447707832, + 1.0536417966078395, + 2.632382064837391, + 0.4933179008808892, + 0.1848361236948739, + 0.7003098794089914, + 0.12200981464536144, + 2.5600845382687947, + 1.1492733262856758, + 1.77080063563551, + 1.8124485579969287, + 0.7077519354554754, + 0.632407739055521, + 0.9725544496267299, + 0.6218099622171964, + 0.620672097550678, + 0.17770100093325383, + 0.3801978510059632, + 0.6105857452838231, + 0.5597904479310398, + 1.0807807255546218, + 0.8339221545489041, + 0.4591800792284367, + 0.42961821913258585, + 0.20768768716311115, + 0.27157883719537346, + 1.0531528533329035, + 0.6815006973726244, + 0.028318376130461172, + 0.02975613949574519, + 0.9382838059759977, + 0.09612077694098337, + 0.22213377163371284, + 1.2557561255735208, + 1.4469778843537329, + 0.19655477651157463, + 1.0318445394686349, + 0.26705026586925884, + 0.889630795623437, + 0.08228398927542419, + 1.0654803750653512, + 1.40934744018558, + 2.2988981236192503, + 1.453384477117701, + 1.5795721457307124, + 0.23421473253652075, + 1.5505004928140769, + 0.9843223984765838, + 0.6748194921666038, + 0.3824097461840506, + 0.1664522082130561, + 0.4924512640081491, + 0.2891686439078181, + 2.4553001399108942, + 1.1890165311075518, + 1.4205042479898549, + 0.4714155563864041, + 0.6329318177555108, + 0.2029230208512997, + 1.5475052013300616, + 1.7958776730955217, + 0.28586539072490497, + 0.334456789987025, + 0.6585442726728304, + 2.0102045387663496, + 1.7945578635177877, + 0.2237879516388985, + 1.188393273448084, + 2.5269324258736217, + 1.044160877069072, + 0.6818914896263114, + 1.8467073257360336, + 0.5839281853259639, + 0.5906548306923093, + 1.1087035805829077, + 0.820482181197364, + 0.5072740311072977, + 1.066674689589154, + 1.1692955904456728, + 1.3821589910375272, + 0.6487098875896427, + 0.14671368643332283, + 1.2065089665083568, + 0.3686733088729012, + 0.028744822934817487, + 1.2784518626072987, + 0.19109906801990334, + 0.04643654815614881, + 0.7462535660272207, + 0.6454841811410754, + 2.16325472330546, + 0.21915032766393897, + 0.24938368371075526, + 1.5774532797634744, + 0.27902152577033923, + 0.6078965097165392, + 0.1866091231563581, + 0.19408999289830758, + 1.073631749859772, + 0.132969674146876, + 1.1950466289248425, + 0.37721187506452086, + 1.5655240292343404, + 1.8811570694405901, + 0.4400144500533324, + 0.7083564472993533, + 0.24380071377119883, + 0.8724573282801447, + 0.650201177958661, + 1.8466369960476658, + 0.24333944932269183, + 0.3520553965142968, + 1.4437646040732595, + 1.1172958315881276, + 0.34272534637770413, + 0.4567532191537839, + 0.5697672802322039, + 0.44770856001731496, + 0.6427227598675439, + 1.3291525301324314, + 0.19652116970147013, + 0.7090037575885123, + 1.4401172154494728, + 1.8009404329108156, + 0.12810441491078928, + 0.8406435489887241, + 0.7604146561442974, + 0.7858001586508322, + 0.42545756178496474, + 1.5033983017671506, + 0.8773622905756714, + 0.02688583899453078, + 0.20838280794755248, + 1.7976865268495226, + 0.6408428612670098, + 0.5725827813561586 + ], + "xaxis": "x", + "y": [ + 2.1315329707498756, + 3.3376770604434096, + 7.767124195272413, + 0.7481591385679691, + 4.1128433169824365, + 9.491430242004125, + 19.22182141446181, + 11.557796064985189, + 4.936439468036899, + 3.333810324078476, + 4.441113900423861, + 0.6455892358611679, + 0.49610928527468745, + 2.4006011335875828, + 5.163316458119373, + 8.391790673613986, + 2.4564095455635835, + 7.319450585831383, + 2.4707465154292434, + 10.402939953767364, + 12.446147009792307, + 8.882718432316555, + 0.857904007273836, + 2.447186683872495, + 7.018174078288615, + 0.9357156158889749, + 0.16920539181221195, + 0.6185619513651668, + 4.562255000224275, + 2.7184291960342915, + 1.7681742811982453, + 6.108978259340933, + 7.401531100522695, + 7.840952968279986, + 0.6953135686971497, + 2.436535977334167, + 2.743388211356075, + 8.301152100586544, + 0.6183924355825982, + 9.695049328101154, + 3.6601487948925118, + 2.6058994457584688, + 1.0246028681435824, + 11.690108377884076, + 1.9344216148461812, + 11.855325061722992, + 1.6514489549231508, + 9.361676779831594, + 2.9379692479846318, + 1.9046269186816902, + 10.370143028347302, + -1.3901783421862923, + 4.948184205680325, + 1.2880687838570863, + 8.26102961975762, + 0.45539124774730894, + 15.70558111975564, + 3.9263253615199267, + 10.44991370265823, + 9.879740840545962, + 3.355173393466349, + 3.8910293090041606, + -0.07290139915820362, + 4.095558006274662, + 12.15394583676655, + 0.6937345905224344, + 11.67560310448758, + 4.010683176834139, + 1.0746839428581927, + 7.100881196152617, + 2.9841599788421855, + 3.8923436288171525, + 1.1508329887233149, + 11.383218174775342, + 1.4822430277021466, + 1.1766678151414163, + 0.5223850194716981, + 10.641029747336491, + 10.629678264549034, + 1.5506860258251056, + 1.6172716862858332, + 3.3084111889169994, + 3.8225384869477117, + 3.2181525178476242, + 10.805669683789443, + 1.3964934007804224, + 3.2800128692883628, + 3.1846391000756857, + 10.695429298642578, + 2.949958256339423, + 7.540022705566691, + 1.1527314494379268, + 11.551630376432174, + 8.3458031736762, + 4.984611047058473, + 5.767512050794933, + 2.101664189937632, + 7.774453798507568, + 11.482890588252625, + 3.8175035271584896, + 1.3122601053818665, + 4.6490582097789, + 5.257826041964947, + 8.129020265816388, + 6.922582683560283, + 1.1653790943806284, + 4.165502646998374, + -1.8956593067123448, + 1.9624725455037058, + 2.093985760729416, + 1.697114967540403, + 6.252821237159777, + 3.984922545466563, + 18.49063350079053, + 0.07521768037949655, + 4.266382856770973, + 3.038629780857546, + 7.590612944393139, + 2.2215644054189174, + 4.508484870146033, + 3.376999774476586, + -0.21115656764338744, + 5.9333496168305055, + 4.052521960469138, + 0.8250147782077821, + 8.499434814511643, + 10.26899685904756, + 3.8126959290713813, + 6.635898714469415, + 1.6067198965643417, + 10.253468884792, + 1.4395963925845616, + 3.372127918876701, + 2.613768873063521, + 14.20294480605421, + 2.3822255468743685, + 4.089857223659319, + 9.251431469744308, + 6.312500447045307, + 1.4577170243517266, + 9.311059176415537, + 11.114319085950685, + 3.1863095083950803, + 3.2897871368232043, + 7.504518978570107, + 1.0559006941062314, + 2.2450940978353717, + 2.26843289183069, + 1.7707473664381386, + 4.559847930572106, + 1.6015579142205745, + 12.086912144333144, + 5.701325415891191, + 6.849392435651532, + 1.4451798332463686, + 3.378382187645317, + 10.499967443850583, + 13.451913885465364, + 4.6519681588390585, + 2.4453863318307465, + 3.17518004565509, + 10.660132568416012, + 6.012996884384393, + 3.666740148539145, + 12.253347417655641, + 5.856761811694221, + 7.826404734778256, + 0.83522967339717, + 3.1478380983232426, + 1.0301256344165093, + 9.812055248429134, + 2.1631727023884055, + 0.7012947549049051, + 2.2807440727810087, + 2.8777095496338707, + 3.5396243352582575, + 5.078411778327921, + 7.644037683454063, + 4.214157582480626, + 3.227813526987917, + 1.8950854683377898, + 8.273768587290384, + 7.042883019888062, + 6.279430040654341, + 2.8576360333014215, + 9.286549565264568, + 1.3859158480677314, + 2.3275920490961854, + 5.767573515014574, + 3.7506312572570675, + 1.320713395894615, + 10.212869818117555, + 2.0697294814897242, + 1.441404312485799, + 9.864553840551586, + 0.36125477879677126, + 6.437503714512308, + 13.433645420156413, + 11.558320613040664, + 9.346558165443854, + 1.1488593990287084, + -0.7561679491099725, + 15.336113654335783, + 8.742170519056472, + 6.481454238265168, + 3.182703497253395, + 4.393459525076071, + 0.16748120721465015, + 8.781178798807002, + 4.928918555552588, + 5.072259981144448, + 2.1755560735466304, + 3.1373996095846595, + 9.993369457421977, + 5.028053326716646, + 5.055439186487435, + 1.8034782530713143, + 1.5961170573645533, + 3.56840838135132, + 16.285666127796514, + 0.13279900178749257, + 3.0736395780402708, + 0.15201500920458605, + 9.924536594732846, + 5.339198033172685, + 1.4954878511372058, + 5.772096833019086, + 2.7108024218677156, + 0.7287727343342003, + 3.687378622941323, + 3.346178117658042, + 4.218066681557937, + 3.758993624607027, + 11.20175638993969, + 0.3381790137322365, + 7.528369810863078, + 0.9306497421556346, + 4.204034610650169, + 3.3432442539973195, + 9.71074983031172, + 4.557018092529859, + 8.857878161767035, + 10.312343392753021, + 1.5378009481349695, + 0.6218758239390858, + 0.41576963106511766, + 17.67219702866147, + 3.3602581922121884, + 2.606247664100731, + 8.900380424673967, + 1.714476689271548, + 3.7984664567673025, + 0.9493116253535325, + 15.97536241219612, + 10.747751324261445, + 7.429029407672949, + 11.461948489000513, + 7.6017247723226085, + 2.6221905275316195, + 15.561566983734414, + 3.2472739807087194, + 1.4424887305932574, + 7.567256309752906, + 4.98937736257439, + 2.9304105594386973, + 1.5440083928142925, + 4.910497743060022, + 3.5533164633405154, + 4.787410781944382, + 4.041051760850429, + 6.049063673908385, + 3.5380672836712668, + 17.3501756288875, + 4.414451845562086, + 1.0668413861439257, + 0.9016493835817596, + 7.966632540366974, + 7.485218190712658, + 3.2916061223331776, + 3.1942601281344674, + 7.334674184175711, + 7.608729224468053, + 4.790858808540129, + 5.694034084347684, + 8.99644827443137, + 1.0259593417054744, + 0.903881514393115, + 3.4682813300473905, + 8.903317816428128, + 2.825454795082282, + 0.7180558258955793, + 10.451390235445258, + 2.333681002415545, + -0.5612011685691527, + 0.9529046956183496, + 0.655027521025904, + 1.2806207733069654, + 10.707794186867956, + 0.9973423297502046, + 13.12212737619498, + 9.23479312102998, + 5.270786789765304, + 11.843685565471757, + 6.12995661035467, + 3.2507894624967104, + 2.225507657701971, + 1.9311208435599505, + 1.6751235864821505, + 9.409456739377488, + 7.762737823232642, + -0.37720636798744966, + 7.476265254210922, + 5.627234572872154, + 3.6405360758007754, + 2.643080378516415, + 1.5128381297378348, + 2.199991641756983, + 0.5071285036084491, + 7.003384050152647, + 1.909785634098101, + 1.1403594522327065, + 0.3634373369124242, + 7.623795045571737, + 9.052018101176614, + 2.8663517202569726, + 1.5597488142143623, + 2.5826115596699974, + 3.738647173883102, + 1.3278337233353543, + 2.867946078811882, + 2.5503144297881106, + 4.431706524679094, + 4.081029353260243, + 5.433622799801779, + 3.269758397089347, + 0.3242531342459827, + 0.9090846593811345, + 0.890293978639035, + 2.450408765726328, + 6.856331384339364, + 8.52619462926133, + 1.947913278028056, + 6.450414778728382, + 3.798103152703199, + 8.139719937627595, + 1.4359646648590099, + 5.207482267025496, + 2.3951108901876825, + 6.799779922419049, + 10.136664129270939, + 2.6768491835032, + 2.3874300185476756, + 2.038573705341423, + 5.004488160490057, + 5.715150198716844, + 1.039748285389097, + 10.280410257625999, + 12.86283064800677, + 3.5746511488610855, + 2.8656980416874878, + 2.599544256017886, + 6.409149893354449, + 14.443109269806254, + 1.0405251052260949, + 3.326674209951898, + 10.989663463088544, + 1.8105097926902487, + 14.741330533081028, + 15.08675973075185, + 5.1631116750875305, + 9.343661006938557, + 14.126360366511257, + 11.484363268268915, + 8.94184778379353, + 0.9604537983261285, + 0.8361869555188473, + 2.1002647215789483, + 2.478117428845026, + 7.843235818802062, + 14.742011015515583, + 4.200182925056385, + 1.8547623673745726, + 8.268738146118627, + 0.17075516241577054, + -0.8970479734796357, + 9.982459249510216, + 3.122639019004143, + 5.208129305459214, + 3.9995262966163194, + 1.0384176311229965, + 8.090803240651615, + 2.720588981637568, + 1.2655670677957835, + 12.810847900217274, + 3.2207719681897062, + 1.9527694504544508, + 6.975683242729285, + 5.962908178484416, + 2.031201552091179, + 3.296266063714319, + 2.8497814258160656, + 3.5992640315712263, + 6.028692328076521, + 2.1798547277503113, + 15.946078372524447, + 11.270067835171865, + 9.886737882436176, + 10.069873531748522, + 0.4350976808393294, + 3.419671289176756, + 8.120498029715673, + 3.276912806764646, + 5.150771578281058, + 11.536778020411017, + 1.1283312841804798, + 5.2922772679270125, + -1.148029602795451, + 6.618234052355605, + 9.995383628078763, + 19.79728717826931, + 8.221699603028048, + 1.756730298878706, + 0.39346236105816546, + 1.9973513226644182, + 3.9146292154471363, + 6.655009309637468, + 7.306798402879964, + 6.636471794024103, + 1.2105875042335548, + 5.977174263502021, + 3.335659958519535, + 4.9740231500169205, + 5.696409647756136, + 12.304050151594982, + 12.479961038493842, + 5.267925637149455, + 8.205193667618506, + 6.64127892567596, + 2.584589230653057, + 1.4859153087462587, + 3.094530550283568, + 0.8210502191076455, + -1.6565034675323356, + 3.4066291519265084, + 2.1271109392217773, + 11.528410984296546, + 11.104263573155796, + 2.2723724206920943, + 4.902928411074227, + 2.32253510026496, + 9.505170913193153, + 1.676351819404714, + 5.913072392765526, + 4.240607888229912, + 3.549793526789535, + 5.190377999146584, + 3.0969532739309678, + 0.3993222635384932, + 3.4469460988229064, + -0.12939358371016055, + 4.275655223374612, + 2.0051290473754992, + 5.675153024575338, + 1.3168115685827253, + 5.9090892410023175, + 1.5297744205662447, + 11.434182971375352, + 20.61617591266843, + 0.9834804292692843, + 0.2894674597174777, + 4.629916875604893, + 5.166479641650803, + 9.456054689668147, + 6.707682575146893, + 4.311981700299243, + 2.727290679463529, + 1.346888081763368, + 2.091256797952634, + 2.649932550296708, + 6.72998362612404, + 1.9431963436581852, + 1.9958889934089596, + 9.265758554728484, + 1.1918107314354887, + 10.799943755267028, + 5.368437067503507, + 6.050692810470485, + 0.7575948792915393, + 0.6414350611769419, + 1.9941981378277107, + 10.241776461541852, + 15.16722724171395, + 3.679959347327524, + 0.9821083549665657, + 1.865779046900708, + 2.0294581789518995, + 5.685763930151271, + -0.21122174624071013, + 2.072247638121533, + 1.2025334601292297, + 7.65936297015509, + 4.512297107524395, + 1.3890972245536044, + 10.881249015037312, + 0.19665229532292433, + 1.2976555696566456, + 5.162651574559774, + 4.170255155954141, + 2.992416291482686, + 6.144238251062534 + ], + "yaxis": "y" + }, + { + "hovertemplate": "Treatment=False
Score=%{x}
Outcome=%{y}", + "legendgroup": "False", + "marker": { + "color": "#EF553B", + "symbol": "circle" + }, + "mode": "markers", + "name": "False", + "orientation": "v", + "showlegend": true, + "type": "scatter", + "x": [ + -0.13826430117118466, + -0.23415337472333597, + -0.23413695694918055, + -0.4694743859349521, + -0.46341769281246226, + -0.46572975357025687, + -1.913280244657798, + -1.7249178325130328, + -0.5622875292409727, + -1.0128311203344238, + -0.9080240755212109, + -1.4123037013352915, + -0.22577630048653566, + -1.4247481862134568, + -0.5443827245251827, + -1.1509935774223028, + -0.600638689918805, + -0.2916937497932768, + -0.6017066122293969, + -0.013497224737933921, + -1.0577109289559004, + -1.2208436499710222, + -1.9596701238797756, + -1.3281860488984305, + -0.11564828238824053, + -0.3011036955892888, + -1.4785219903674274, + -0.7198442083947086, + -0.4606387709597875, + -1.763040155362734, + -0.38508228041631654, + -0.6769220003059587, + -0.8392175232226385, + -0.3092123758512146, + -0.47917423784528995, + -0.18565897666381712, + -1.1063349740060282, + -1.1962066240806708, + -0.07201012158033385, + -0.6451197546051243, + -0.03582603910995154, + -2.6197451040897444, + -0.29900735046586746, + -1.9875689146008928, + -0.21967188783751193, + -0.5182702182736474, + -0.8084936028931876, + -0.5017570435845365, + -0.5297602037670388, + -0.7020530938773524, + -0.3276621465977682, + -0.39210815313215763, + -1.4635149481321186, + -0.23458713337514692, + -1.4153707420504142, + -0.42064532276535904, + -0.3427145165267695, + -0.8022772692216189, + -0.16128571166600914, + -0.07444591576616721, + -1.9187712152990415, + -0.026513875449216878, + -0.19236096478112252, + -0.03471176970524331, + -1.168678037619532, + -0.9093874547947389, + -1.4018510627922809, + -0.9905363251306883, + -0.5662977296027719, + -0.5034756541161992, + -1.5506634310661327, + -1.0623037137261049, + -0.9194242342338032, + -0.7832532923362371, + -0.3220615162056756, + -1.2308643164339552, + -1.6074832345612275, + -1.236950710878082, + -1.3204566130842763, + -0.6800247215784908, + -0.7143514180263678, + -1.1913034972026486, + -0.9746816702273214, + -0.8206823183517105, + -0.2453881160028705, + -0.7537361643574896, + -0.8895144296255233, + -0.8158102849654383, + -0.0771017094141042, + -0.2646568332379561, + -0.8571575564162826, + -1.0708924980611123, + -0.2234627853258509, + -0.07282891265687277, + -0.846793718068405, + -1.5148472246858646, + -0.4465149520670211, + -1.245738778711988, + -0.883857436201133, + -1.142970297830623, + -1.377669367957091, + -0.9378250399151228, + -0.3152692446403456, + -0.7728252145375718, + -0.23681860674000887, + -0.48536354782910346, + -1.867265192591748, + -1.6127158711896517, + -0.47193186578943347, + -1.0777447779293061, + -0.7153037092599682, + -0.7303666317171367, + -0.6516003476058171, + -2.025142586657607, + -0.661786464768388, + -0.7925207384327007, + -0.11473644146689901, + -1.2002964070557762, + -0.3345012358409484, + -0.4749453111609562, + -0.6533292325737119, + -1.2608839543350452, + -1.5193699659540134, + -0.48423407286625136, + -0.7076694656187807, + -0.926930471578083, + -0.05952535606180008, + -3.2412673400690726, + -1.0243876413342898, + -0.2525681513931603, + -1.2477831819648495, + -1.4301413779606327, + -0.44004448669698376, + -1.4358621511794394, + -0.9815086510479509, + -0.6002168771587947, + -0.3853135968617602, + -1.237815498826849, + -1.9520877995225019, + -0.15178509503558332, + -0.6226995198205938, + -0.20812225035727522, + -0.4930009346588328, + -0.5893647569442115, + -0.6929095952606542, + -0.8289950109220723, + -0.5601810401969696, + -0.020901593964148132, + -0.5915713888358299, + -0.20219265243389406, + -0.2176812032272203, + -0.31026675659345604, + -0.13014305436768459, + -0.8182206832334725, + -1.006017381499702, + -1.2141886127877322, + -0.012246772846914623, + -0.8972543714858315, + -0.6771617115121117, + -0.14705738150213865, + -0.8254971967925115, + -0.32138584165299344, + -0.5637245528039747, + -0.8222203955664315, + -0.5069431753711298, + -0.4710383056183228, + -1.4480843414973241, + -1.4074637743765552, + -0.718444221252436, + -0.21344715171184725, + -0.1599385299634271, + -0.01901620790268883, + -1.0025293646378088, + -0.01851313599238993, + -0.2886586389201383, + -0.827230943552323, + -0.1087601484568576, + -0.40122047188583626, + -0.7730097838554665, + -0.7673475628880495, + -0.8082982853551515, + -0.8397218421807761, + -0.5993926454440222, + -2.123895724309807, + -0.525755021680761, + -0.759132661553698, + -0.5769036556624031, + -0.898414671348358, + -1.3202332070206422, + -0.4691756521047048, + -1.7131345290908775, + -0.11453984525261789, + -1.594427658794367, + -0.5993750229537729, + -0.45006547147924364, + -1.0676204293825944, + -0.1423794850212935, + -1.1246420918378692, + -1.5341141707356223, + -0.7484865365565536, + -0.2489641484790735, + -0.9649234605801045, + -1.7587394864231143, + -1.183258512665775, + -2.0392321777601006, + -0.26940683444455776, + -1.3801014582148914, + -1.7033824393551547, + -0.05554769889661878, + -0.03269474809409311, + -2.0674421000398766, + -0.08912003951278841, + -1.3044695005048532, + -0.9398797863273552, + -0.5138669173366935, + -1.0592135218889516, + -0.06267909727317188, + -0.9857260463355437, + -0.5302576183724408, + -0.7928728322623442, + -0.10703035995455783, + -1.035242322419374, + -0.553649305347182, + -1.1978778925888485, + -0.6997255079925856, + -0.11232804969082982, + -0.22096959953322298, + -0.5305011476105275, + -0.57581824064468, + -0.275051697151644, + -2.301921164735585, + -1.5151910621985523, + -0.24903603955637832, + -0.12791759148076653, + -0.9555404406004258, + -1.6064463202575725, + -0.7563507452843033, + -1.4222537095976742, + -0.6465728842425266, + -1.081548003614395, + -0.007972641316617372, + -0.8612842013282637, + -1.0372461543264564, + -0.1903386780836082, + -0.8756182533847572, + -1.382799730964336, + -1.3985675738191412, + -0.6506425691218269, + -0.48712538376469605, + -0.5923939242388692, + -0.863990769679816, + -0.8309501164110378, + -0.05023810944913695, + -0.23894804686640975, + -0.9075636620415979, + -0.5767713305683327, + -0.977555244798551, + -1.6694052811213718, + -0.6626237589458467, + -0.7632591565425169, + -1.804882100664519, + -1.6275424378831627, + -0.9043166251044086, + -1.6615200622689599, + -0.06607979864731657, + -1.2110161997624567, + -0.6518361078021592, + -0.8604133652839524, + -0.38455554422982535, + -0.5768918695231487, + -1.129706854657618, + -2.4716445001272893, + -0.7968952554704768, + -0.2030453860429927, + -0.6039851867158206, + -0.15567723539207948, + -0.4118769661224674, + -0.48760622407249354, + -0.4325581878196209, + -0.42098448082026296, + -0.32602353216784113, + -0.4080753730215514, + -2.038124535177854, + -1.008086310917404, + -1.8707919210258557, + -0.35151348404130867, + -0.21910052880886424, + -2.211135309007885, + -1.4785862457798415, + -0.4152879139008013, + -0.4593608995402441, + -0.8498443694647918, + -0.8560838259088672, + -0.4776574467651167, + -0.510016398854747, + -0.26987493529337125, + -0.9787637157823074, + -0.4442932600761116, + -0.9221653241776254, + -0.773789199103573, + -1.244654703311417, + -1.7787202489042786, + -0.05558467091045507, + -1.1254890472983765, + -0.7904744554453119, + -0.5112156764311852, + -0.9896048202585809, + -0.12578692009964815, + -1.6924646297148194, + -0.15800789857898942, + -0.42688106994742003, + -1.0121043752601675, + -1.6548566718657693, + -1.2899608997410539, + -1.295078772063616, + -0.3357846992901282, + -0.2595913513636048, + -1.5031429531181062, + -0.24574306408594432, + -0.2727235697476705, + -2.6968866429415717, + -0.05429486651781221, + -0.23093453020867796, + -0.26888869055483056, + -1.1065259087416703, + -0.024125087110003277, + -0.14436041192394247, + -0.5736620068802363, + -0.5468589412403921, + -0.03275327021599839, + -0.543424771133765, + -0.7128457826771644, + -0.2549772174208553, + -2.650969808393012, + -2.0733902324081495, + -0.34268759408034877, + -0.37144086599579146, + -1.4075116947178212, + -0.7778166875908753, + -1.1105758454658288, + -1.1290517712172292, + -0.5245202662797737, + -1.2221278088919454, + -0.24032539815813503, + -0.3748208075495975, + -0.3609661658190799, + -1.0810633275998973, + -0.3095464393139903, + -1.251113576385303, + -0.18490213644298903, + -0.5227230205190395, + -0.7043436905427592, + -1.4084612963635597, + -1.5566291735239037, + -1.280429352496283, + -2.081929407883722, + -0.09671311187039239, + -0.5449190868089497, + -0.037634702424848364, + -0.36361221221385587, + -0.056945623721067457, + -1.7101683926566256, + -1.348185422105713, + -0.18398333635267913, + -0.5397596803093615, + -0.7783047254023127, + -0.978372777615032, + -1.7025836042378404, + -1.8408742313316453, + -1.2795769667357015, + -0.6248185776956788, + -0.7257438131534656, + -0.7553829323533225, + -0.6115178029919482, + -1.4066610968482223, + -0.9232332461109043, + -1.3516846056163336, + -0.9758732529773327, + -0.949398888831943, + -0.8583577801812136, + -0.5756378262377739, + -0.09605989972464987, + -0.7031764251258874, + -0.0349884904969617, + -0.6269670577877674, + -0.5624667758942676, + -1.5702247198904564, + -0.7271371758248686, + -0.24751863555150475, + -0.07443342910004629, + -1.3353443587101013, + -0.07016571145864703, + -1.6609609335159914, + -1.2767485758203094, + -1.0810565404082624, + -0.03955515385665504, + -0.5160447282173739, + -0.4622752887050425, + -0.4344962274323156, + -0.30917212346863937, + -0.4787486216634773, + -0.8946073022195039, + -0.18687164416135904, + -0.4397310582741749, + -1.485560373036972, + -0.5172884501003722, + -0.36283856043965906, + -0.4455025214007718, + -0.5228600271532683, + -0.42018681709585726, + -0.2817846088605072, + -1.344450511034277, + -0.9186519464841982, + -1.0041407667520679, + -0.7677975651041284, + -0.03468488738678118, + -0.998354040738791, + -0.21398884422550896, + -0.04946370965243295, + -1.1227220215622986, + -0.637739984251316, + -0.5309969550018176, + -0.6231405264247644, + -0.5554771191602547, + -0.6373871273065177, + -0.5707462937494763, + -0.8323555731042287, + -0.5522230442809712, + -1.515744114997232, + -0.6127886904843862, + -0.38770155993598415, + -0.1769472274940494, + -0.7982972445384537, + -1.3793192280145272, + -0.7309300399419191, + -0.033126972873797095, + -0.5176112990361714, + -0.016422896072752075, + -0.5308687729203206, + -0.48943944251822213, + -0.35929209078705954, + -0.16711808031685435, + -0.8169356709872361, + -0.3933388123273607, + -1.3598561409799192, + -0.30777823495300083, + -0.0952955323869521, + -0.44643361455052827, + -1.0265152994110602, + -0.7001208149391732, + -1.5231869047837747, + -0.5589218472715883, + -0.0657502610729878, + -0.5551995266931984, + -1.448013900416244, + -2.198805956620082, + -0.5020542243526112, + -1.0212328171307132, + -0.5640786307367284, + -1.2803043986708944, + -0.09917586377938291, + -1.0700847663261526, + -1.5255251709247388, + -0.6919080698812444, + -0.045586016355497805, + -0.24123605785632987, + -1.251539424190444, + -0.0821511783925688, + -0.08973569428722672, + -0.6763923020592697, + -0.04015795064434341, + -1.4307751021180481, + -0.6810516574748808, + -0.6526239793023909, + -0.4461834332147797, + -1.889540730945531, + -0.4523063192490767, + -2.4238793266289567, + -1.5839028234857233, + -0.966976143129213, + -0.047711356141979855, + -0.0036025390905684044, + -1.1583646891925428, + -0.22096417382966393, + -2.0417348684242906, + -0.24717738252059693, + -0.6819842479977986, + -1.0016200098949155, + -0.2811002928859549, + -0.5711789897827968 + ], + "xaxis": "x", + "y": [ + 9.205261167861494, + 3.5184065183554654, + 8.343772418394707, + 4.464359928290405, + 3.0563356901690937, + 1.3615999257157252, + 1.275484453655825, + 2.6192232516105034, + 5.508615118087808, + 1.2974507376626918, + 4.231042791423715, + 5.745691769143536, + 5.791927411501191, + 7.2764971558169735, + 8.553632580183374, + 3.9378426976965675, + 8.199955176155413, + 0.32421530102408114, + 10.760961439253784, + -0.3756937038823863, + 3.220751662359263, + 3.334706672185873, + 7.652028280004303, + 0.570099828388501, + 11.178100918657426, + 17.577963722847965, + 4.965644999539916, + 0.5260475386522028, + 1.3246973368078483, + 4.366552517818616, + 1.5803732778973196, + 6.045007101847658, + 19.841873087271434, + 6.219066218451047, + 6.899657800072792, + 3.0690128883734977, + 1.3571340694495375, + 1.220890735050157, + 1.466151622331343, + -0.041662233621488354, + 9.292177980501732, + 7.819235981426694, + 2.4336654798581576, + 0.4999137411478758, + 0.9684966647131934, + 2.472908937722393, + 9.395205090196505, + 7.525120877423831, + 1.814283177282542, + 5.265552107670654, + 2.634285722780752, + 0.6857247750865538, + 0.4814140629812199, + 2.0121051299449233, + 1.6607787445225182, + 4.801892044287716, + 0.7714890721589855, + 3.914003116473506, + 4.732745605375674, + 8.573327677044313, + 1.0613880990948823, + 1.4750690469473215, + 16.028319137451795, + 2.8462956310008214, + 6.337591704532634, + -0.006609620796110771, + 10.425350071741804, + 3.248776603440306, + 0.509611157736492, + 6.832394966677228, + 6.495467078404538, + -0.07022134498284481, + 16.243685127647602, + 0.6625735024620792, + 0.7463603174480453, + 11.196866612579644, + 2.0169090465539217, + 5.179729244323186, + -0.13429457413312706, + 10.610045682292958, + 4.439542882257554, + 7.137309461378128, + 0.8335507847427969, + 6.024734808571596, + 8.979401573714242, + 1.5827457716718185, + 0.44854501422764126, + 3.4141425243162944, + 2.418656872597653, + 9.355346181966821, + -0.22801583443500123, + 7.148120221068655, + 5.037321626889873, + 4.51015694873306, + 3.2533077263019416, + 16.472807922377893, + 2.1185425201955312, + 0.28249884985599855, + 2.235344242009358, + 1.7616437066712936, + -0.13193646878975818, + 14.36980542339821, + 1.7097672565267146, + 1.9962390272005057, + -0.1274133661618491, + 0.9583421724350449, + 2.934556665303445, + 0.546634435940819, + 2.7278585156702317, + 7.975695004725944, + 2.2851327466695572, + 0.8798219104562294, + 9.055257820249373, + 1.632786665388183, + 8.045259080002769, + 6.689314508159182, + 8.983150902137096, + 0.5612829495120453, + 8.621860640243085, + 0.6395472451635591, + 0.13325704694822132, + 2.0886736749365316, + 1.9866926991319431, + 2.6409821642077214, + -0.21329937211077177, + 9.117985970126508, + 4.266720323161483, + 6.706209120978575, + 1.3476798217617605, + 4.850930229706136, + 7.806813783350091, + 3.4441543687983946, + 6.015587228176673, + 9.568736500811594, + 8.19540990353838, + 4.749973486124939, + 6.385691318934307, + 2.8870414255519705, + 4.639340533885447, + 0.9683893591917982, + 12.155656484773532, + 1.6902482968094241, + 1.8826910916625972, + 3.9872789005039797, + 1.2902250784191982, + 4.443514838306929, + 9.25927512619368, + 7.059705933899023, + 4.638685908468305, + 1.8895662975831067, + -0.2141565782299317, + 3.9623480650763834, + 7.602725574878751, + 5.51040538242031, + 1.215945542264764, + 1.044504848259474, + 7.867782998930899, + -0.0703719303093876, + 3.301337146926469, + 0.27229617798147704, + 6.907335238456296, + 0.23300679275301617, + 10.808384435732538, + -0.748889486019636, + 12.487226614059734, + 1.4413389190670947, + 0.3677371066021673, + 0.05400502330475726, + 3.220529601687432, + 7.622794626232032, + 6.660837867194528, + 1.676371082302052, + -0.17415559470725486, + 2.137907140932381, + 1.0370638897318107, + 0.6387474496875047, + 5.468940494641348, + 0.6958426043425507, + 1.023950254805143, + 3.5346530386737682, + 7.526379014346223, + -0.3080686703368427, + 0.3060480529833499, + 5.049116074819689, + -0.17788449644844853, + 0.4243087140516217, + 0.5544139842534694, + 0.9965106495802344, + 7.208381129260889, + 11.590991196395581, + 9.142794082750973, + 1.7394467462751488, + 13.532627338553407, + 4.796276938760826, + 9.574425138514147, + 8.286560554883701, + 1.9168947134586773, + 13.942925628113782, + 3.073073722958033, + 5.469656318904619, + 1.6373440657340201, + 9.26273659063607, + 0.9653704413023574, + 1.746480557810436, + 7.158132850851906, + 0.30199321209423885, + 2.207030476745607, + 5.440442243216736, + 1.7835146960952513, + 6.778930035367241, + 5.600792229195962, + 9.515211195892674, + 0.7403374643098577, + 10.22578122338326, + 2.4085351033707734, + 1.5427172005378376, + 7.7498730580456545, + 3.280057546174133, + 0.7966171611510633, + 5.293983034780157, + 0.4445708004409658, + 1.7180764355744944, + 1.4974960434659323, + 4.980134489868571, + 1.3705996753797212, + -0.35527474203586934, + 2.1573391244783724, + 8.994471348178633, + 6.127915849491979, + 1.9415389043070181, + 2.347124964057026, + 1.8007694602409698, + 4.544343820727818, + 17.331870363849152, + 0.3890622280681236, + 0.8044463166495925, + 3.3210835536504475, + 0.7185732716727131, + 5.436502046754177, + 7.073489752611379, + -0.4124078224850031, + 1.4495905513086877, + 11.643928998964993, + 17.265972624874806, + 10.45840660191556, + 0.35212072255527066, + 15.024342388943767, + 1.3711224054245343, + 1.5555096433975422, + 2.2534676479705995, + 3.577187202649305, + 3.4141865282867174, + 1.9315724989153988, + 0.4492691537460317, + 16.851236325020317, + 1.7870500427686278, + -0.1750217850882944, + 3.093797379274558, + 7.229884513267392, + 4.756447771940901, + 12.471952693684115, + 2.5207108925346464, + 8.830092833559139, + 4.028920366475544, + 2.730645874519063, + 4.4453806604352, + 1.8150218524624373, + 9.464645051580337, + -0.373306080983991, + 9.109592608109214, + 1.0839979397106765, + 2.674236081505276, + 1.3784293677165596, + 8.793405776619437, + 3.77014099714957, + 10.164064671743102, + 8.534601855376973, + 6.163629791925399, + 7.1125366239181265, + 2.6497585563592208, + 9.201284174893983, + 2.4463465251695036, + 5.24450960577456, + 4.095499907239252, + 3.2626326934197207, + 4.244573599726972, + 1.1597527508370036, + 0.7084748568910306, + 1.6513302029244321, + 8.498633136222933, + 9.349355119348747, + 8.913136159539166, + 1.26745207583228, + 2.0317784562969896, + 4.819644567143215, + 2.115041283457362, + 1.7567772393216012, + 7.156595132244517, + 2.386590645346442, + 6.3339489837076135, + 1.7902211592515593, + 0.8628111749286197, + 9.035895189896735, + 3.6192222941564447, + 10.571583258650847, + 0.3402026026708754, + 1.6258882297944637, + 8.262480251513505, + 2.700732676511482, + 6.991284847499139, + 11.336572062474719, + 0.495144846412771, + 4.1565354744392735, + 1.3330355409939436, + 1.1826515112373168, + 3.089591474506063, + 2.3604454554809156, + 5.06957069815973, + 0.6130765911259505, + 1.2451572616129578, + 0.4150673293475587, + 8.205156395720202, + -0.08821422135718901, + 0.7930212904195799, + 1.2010314220637681, + 1.5968383766951206, + 6.3738770308670105, + 3.4141622218931533, + 2.3583883381335013, + 8.195169818929745, + 3.314680047902673, + 6.577379579117012, + 9.943220349728056, + 10.733077576837497, + 2.337412822748274, + 2.69651401188904, + 2.430472275531548, + 4.915919777161315, + 3.180999396156557, + 6.2260058712591935, + 5.813480859395392, + 0.5469201714336109, + -0.2608315968616289, + 1.7549849484925293, + 3.4221102344351504, + 0.047415237960372, + 3.71758286104229, + 1.2225579309378536, + 2.2604362759250156, + 15.174823796160155, + 6.454838423607447, + 11.655592936123629, + 16.3687592355027, + 1.4198868709995598, + 2.3147871266320865, + 4.218673850139978, + 10.114529223355724, + 2.740783864165119, + 12.527491175779446, + 1.7532998335704464, + 6.755692150223804, + 0.5926653452903705, + 1.38330117482117, + 3.084299682941338, + 0.14045888230649933, + 6.624124537864187, + 1.100328975527514, + 8.834908102687907, + 2.0203421266125656, + 0.23347822558403747, + 0.5614926544300746, + 2.229467488522225, + 1.6570109294609565, + 3.023173842484077, + 4.6270098814533895, + 0.7168094826671146, + 3.2657760363728063, + 0.2780816245255471, + 0.6868657958466227, + 3.3837529959167005, + 1.5437761842794295, + 1.5203403033652958, + 0.4413806794008475, + 0.31951244046391913, + 0.5409647572511408, + 8.429142859234034, + 4.444943897228863, + 1.970102291048323, + 6.925752553479282, + 1.4495819348609282, + 5.414750380231556, + 1.233248454530705, + 1.583462026280745, + 0.014319226529760462, + 4.5944605282506235, + 7.294017366060366, + 0.57512800929278, + 5.9647764048727865, + 9.862301956640493, + 2.3872039668415406, + 0.7014811332010542, + 6.122489375472544, + 1.6044720073493286, + 8.545381354326118, + 5.318230383995225, + -0.047041941809236876, + 0.14499195704924878, + 1.07883838903741, + 5.682870940287144, + 1.0193275234345083, + 6.294760102564424, + 0.7538698631089537, + 10.085615584570917, + 3.0023392827900777, + 1.4448581209117852, + 0.48371926719553804, + 2.203702758867613, + 0.7417320557311575, + 5.6448130082468175, + 2.206723543699168, + 1.115658492002276, + 0.8651378855151438, + 9.637150246527856, + 1.4087472909536356, + 7.900513824461623, + 0.5492932131051853, + 0.4051122026484606, + 0.3340987638606818, + 1.2975125695253478, + 1.8607753186096982, + 1.066167396612305, + 0.21273411527508415, + 0.9934776995019708, + 18.92186593210092, + 1.1743639449794019, + 10.587484473893419, + 11.090230371813842, + 7.263972631185062, + 6.606040917780645, + 0.7963834016735832, + 2.427061719641658, + 10.238818709579919, + 1.0127147372030256, + 2.917642065113388, + 5.15437291580514, + 1.308100584997736, + 4.885155577261686, + 10.555639347132589, + 9.500919286565116, + 9.983161984941434, + 1.8634204175298956, + 1.0106740903175286, + 2.5228552504341675, + 4.599854571275722, + 6.231683935347874, + 3.1360582775965264, + 0.29831162343818174, + 9.050658052038136, + 0.624766514540844, + 6.34584914162904, + 8.631515840603019, + 1.3212499109220306, + 3.1329255055282603, + 0.6580208387866686, + 0.960475599896778, + 2.1517078419737126, + 0.8714315032170394, + 7.893812408918852, + 3.6921634370259677, + 2.136328451280092, + 4.103715872136765, + 8.498939223845133, + 2.128540196994499, + 4.6554283025235055, + 0.5248166371161477, + 8.613067196213908, + 1.3193694568688028, + 1.1313459223367046, + 0.9128511545086413, + 1.8068929379498802, + 7.051545857825981, + 7.902010708053001, + 1.3801082802587534, + 5.037738243947991, + 15.484959110064866, + 0.3652147054957546, + -0.10979372598736035, + 0.32349144430865795, + 2.1368048236068207, + 1.197826663231203 + ], + "yaxis": "y" + } + ], + "layout": { + "legend": { + "title": { + "text": "Treatment" + }, + "tracegroupgap": 0 + }, + "template": { + "data": { + "bar": [ + { + "error_x": { + "color": "#2a3f5f" + }, + "error_y": { + "color": "#2a3f5f" + }, + "marker": { + "line": { + "color": "#E5ECF6", + "width": 0.5 + }, + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "bar" + } + ], + "barpolar": [ + { + "marker": { + "line": { + "color": "#E5ECF6", + "width": 0.5 + }, + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "barpolar" + } + ], + "carpet": [ + { + "aaxis": { + "endlinecolor": "#2a3f5f", + "gridcolor": "white", + "linecolor": "white", + "minorgridcolor": "white", + "startlinecolor": "#2a3f5f" + }, + "baxis": { + "endlinecolor": "#2a3f5f", + "gridcolor": "white", + "linecolor": "white", + "minorgridcolor": "white", + "startlinecolor": "#2a3f5f" + }, + "type": "carpet" + } + ], + "choropleth": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "choropleth" + } + ], + "contour": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "contour" + } + ], + "contourcarpet": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "contourcarpet" + } + ], + "heatmap": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "heatmap" + } + ], + "heatmapgl": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "heatmapgl" + } + ], + "histogram": [ + { + "marker": { + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "histogram" + } + ], + "histogram2d": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "histogram2d" + } + ], + "histogram2dcontour": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "histogram2dcontour" + } + ], + "mesh3d": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "mesh3d" + } + ], + "parcoords": [ + { + "line": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "parcoords" + } + ], + "pie": [ + { + "automargin": true, + "type": "pie" + } + ], + "scatter": [ + { + "fillpattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + }, + "type": "scatter" + } + ], + "scatter3d": [ + { + "line": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatter3d" + } + ], + "scattercarpet": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattercarpet" + } + ], + "scattergeo": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattergeo" + } + ], + "scattergl": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattergl" + } + ], + "scattermapbox": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattermapbox" + } + ], + "scatterpolar": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterpolar" + } + ], + "scatterpolargl": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterpolargl" + } + ], + "scatterternary": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterternary" + } + ], + "surface": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "surface" + } + ], + "table": [ + { + "cells": { + "fill": { + "color": "#EBF0F8" + }, + "line": { + "color": "white" + } + }, + "header": { + "fill": { + "color": "#C8D4E3" + }, + "line": { + "color": "white" + } + }, + "type": "table" + } + ] + }, + "layout": { + "annotationdefaults": { + "arrowcolor": "#2a3f5f", + "arrowhead": 0, + "arrowwidth": 1 + }, + "autotypenumbers": "strict", + "coloraxis": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "colorscale": { + "diverging": [ + [ + 0, + "#8e0152" + ], + [ + 0.1, + "#c51b7d" + ], + [ + 0.2, + "#de77ae" + ], + [ + 0.3, + "#f1b6da" + ], + [ + 0.4, + "#fde0ef" + ], + [ + 0.5, + "#f7f7f7" + ], + [ + 0.6, + "#e6f5d0" + ], + [ + 0.7, + "#b8e186" + ], + [ + 0.8, + "#7fbc41" + ], + [ + 0.9, + "#4d9221" + ], + [ + 1, + "#276419" + ] + ], + "sequential": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "sequentialminus": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ] + }, + "colorway": [ + "#636efa", + "#EF553B", + "#00cc96", + "#ab63fa", + "#FFA15A", + "#19d3f3", + "#FF6692", + "#B6E880", + "#FF97FF", + "#FECB52" + ], + "font": { + "color": "#2a3f5f" + }, + "geo": { + "bgcolor": "white", + "lakecolor": "white", + "landcolor": "#E5ECF6", + "showlakes": true, + "showland": true, + "subunitcolor": "white" + }, + "hoverlabel": { + "align": "left" + }, + "hovermode": "closest", + "mapbox": { + "style": "light" + }, + "paper_bgcolor": "white", + "plot_bgcolor": "#E5ECF6", + "polar": { + "angularaxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + }, + "bgcolor": "#E5ECF6", + "radialaxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + } + }, + "scene": { + "xaxis": { + "backgroundcolor": "#E5ECF6", + "gridcolor": "white", + "gridwidth": 2, + "linecolor": "white", + "showbackground": true, + "ticks": "", + "zerolinecolor": "white" + }, + "yaxis": { + "backgroundcolor": "#E5ECF6", + "gridcolor": "white", + "gridwidth": 2, + "linecolor": "white", + "showbackground": true, + "ticks": "", + "zerolinecolor": "white" + }, + "zaxis": { + "backgroundcolor": "#E5ECF6", + "gridcolor": "white", + "gridwidth": 2, + "linecolor": "white", + "showbackground": true, + "ticks": "", + "zerolinecolor": "white" + } + }, + "shapedefaults": { + "line": { + "color": "#2a3f5f" + } + }, + "ternary": { + "aaxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + }, + "baxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + }, + "bgcolor": "#E5ECF6", + "caxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + } + }, + "title": { + "x": 0.05 + }, + "xaxis": { + "automargin": true, + "gridcolor": "white", + "linecolor": "white", + "ticks": "", + "title": { + "standoff": 15 + }, + "zerolinecolor": "white", + "zerolinewidth": 2 + }, + "yaxis": { + "automargin": true, + "gridcolor": "white", + "linecolor": "white", + "ticks": "", + "title": { + "standoff": 15 + }, + "zerolinecolor": "white", + "zerolinewidth": 2 + } + } + }, + "title": { + "text": "Scatter Plot of Outcome vs. Score by Treatment Status" + }, + "xaxis": { + "anchor": "y", + "domain": [ + 0, + 1 + ], + "title": { + "text": "Score" + } + }, + "yaxis": { + "anchor": "x", + "domain": [ + 0, + 1 + ], + "title": { + "text": "Outcome" + } + } + } + } + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "fig = px.scatter(\n", + " x=df['score'],\n", + " y=df['y'],\n", + " color=df['d'].astype(bool),\n", + " labels={\n", + " \"x\": \"Score\", \n", + " \"y\": \"Outcome\",\n", + " \"color\": \"Treatment\"\n", + " },\n", + " title=\"Scatter Plot of Outcome vs. Score by Treatment Status\"\n", + ")\n", + "\n", + "fig.update_layout(\n", + " xaxis_title=\"Score\",\n", + " yaxis_title=\"Outcome\"\n", + ")\n", + "fig.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Oracle Values and Comparisons\n", + "\n", + "The generated oracle values for the potential outcomes can be used in a kernel regression to get an oracle estimator at the cutoff. " + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The oracle LATE is estimated as 0.9213381266257252\n" + ] + }, + { + "data": { + "application/vnd.plotly.v1+json": { + "config": { + "plotlyServerURL": "https://plot.ly" + }, + "data": [ + { + "marker": { + "color": "blue" + }, + "mode": "markers", + "name": "ITE", + "type": "scatter", + "x": [ + 0.4967141530112327, + -0.13826430117118466, + 0.6476885381006925, + 1.5230298564080254, + -0.23415337472333597, + -0.23413695694918055, + 1.5792128155073915, + 0.7674347291529088, + -0.4694743859349521, + 0.5425600435859647, + -0.46341769281246226, + -0.46572975357025687, + 0.24196227156603412, + -1.913280244657798, + -1.7249178325130328, + -0.5622875292409727, + -1.0128311203344238, + 0.3142473325952739, + -0.9080240755212109, + -1.4123037013352915, + 1.465648768921554, + -0.22577630048653566, + 0.06752820468792384, + -1.4247481862134568, + -0.5443827245251827, + 0.11092258970986608, + -1.1509935774223028, + 0.37569801834567196, + -0.600638689918805, + -0.2916937497932768, + -0.6017066122293969, + 1.8522781845089378, + -0.013497224737933921, + -1.0577109289559004, + 0.822544912103189, + -1.2208436499710222, + 0.2088635950047554, + -1.9596701238797756, + -1.3281860488984305, + 0.19686123586912352, + 0.7384665799954104, + 0.1713682811899705, + -0.11564828238824053, + -0.3011036955892888, + -1.4785219903674274, + -0.7198442083947086, + -0.4606387709597875, + 1.0571222262189157, + 0.3436182895684614, + -1.763040155362734, + 0.324083969394795, + -0.38508228041631654, + -0.6769220003059587, + 0.6116762888408679, + 1.030999522495951, + 0.9312801191161986, + -0.8392175232226385, + -0.3092123758512146, + 0.33126343140356396, + 0.9755451271223592, + -0.47917423784528995, + -0.18565897666381712, + -1.1063349740060282, + -1.1962066240806708, + 0.812525822394198, + 1.356240028570823, + -0.07201012158033385, + 1.0035328978920242, + 0.36163602504763415, + -0.6451197546051243, + 0.36139560550841393, + 1.5380365664659692, + -0.03582603910995154, + 1.5646436558140062, + -2.6197451040897444, + 0.8219025043752238, + 0.08704706823817122, + -0.29900735046586746, + 0.0917607765355023, + -1.9875689146008928, + -0.21967188783751193, + 0.3571125715117464, + 1.477894044741516, + -0.5182702182736474, + -0.8084936028931876, + -0.5017570435845365, + 0.9154021177020741, + 0.32875110965968446, + -0.5297602037670388, + 0.5132674331133561, + 0.09707754934804039, + 0.9686449905328892, + -0.7020530938773524, + -0.3276621465977682, + -0.39210815313215763, + -1.4635149481321186, + 0.29612027706457605, + 0.26105527217988933, + 0.00511345664246089, + -0.23458713337514692, + -1.4153707420504142, + -0.42064532276535904, + -0.3427145165267695, + -0.8022772692216189, + -0.16128571166600914, + 0.4040508568145384, + 1.8861859012105302, + 0.17457781283183896, + 0.25755039072276437, + -0.07444591576616721, + -1.9187712152990415, + -0.026513875449216878, + 0.06023020994102644, + 2.463242112485286, + -0.19236096478112252, + 0.30154734233361247, + -0.03471176970524331, + -1.168678037619532, + 1.1428228145150205, + 0.7519330326867741, + 0.7910319470430469, + -0.9093874547947389, + 1.4027943109360992, + -1.4018510627922809, + 0.5868570938002703, + 2.1904556258099785, + -0.9905363251306883, + -0.5662977296027719, + 0.09965136508764122, + -0.5034756541161992, + -1.5506634310661327, + 0.06856297480602733, + -1.0623037137261049, + 0.4735924306351816, + -0.9194242342338032, + 1.5499344050175394, + -0.7832532923362371, + -0.3220615162056756, + 0.8135172173696698, + -1.2308643164339552, + 0.22745993460412942, + 1.307142754282428, + -1.6074832345612275, + 0.1846338585323042, + 0.25988279424842353, + 0.7818228717773104, + -1.236950710878082, + -1.3204566130842763, + 0.5219415656168976, + 0.29698467323318606, + 0.25049285034587654, + 0.3464482094969757, + -0.6800247215784908, + 0.23225369716100355, + 0.29307247329868125, + -0.7143514180263678, + 1.8657745111447566, + 0.4738329209117875, + -1.1913034972026486, + 0.6565536086338297, + -0.9746816702273214, + 0.787084603742452, + 1.158595579007404, + -0.8206823183517105, + 0.9633761292443218, + 0.4127809269364983, + 0.82206015999449, + 1.8967929826539474, + -0.2453881160028705, + -0.7537361643574896, + -0.8895144296255233, + -0.8158102849654383, + -0.0771017094141042, + 0.3411519748166439, + 0.27669079933001905, + 0.8271832490360238, + 0.01300189187790702, + 1.4535340771573169, + -0.2646568332379561, + 2.720169166589619, + 0.6256673477650062, + -0.8571575564162826, + -1.0708924980611123, + 0.4824724152431853, + -0.2234627853258509, + 0.714000494092092, + 0.47323762457354485, + -0.07282891265687277, + -0.846793718068405, + -1.5148472246858646, + -0.4465149520670211, + 0.8563987943234723, + 0.21409374413020396, + -1.245738778711988, + 0.173180925851182, + 0.3853173797288368, + -0.883857436201133, + 0.1537251059455279, + 0.058208718445999896, + -1.142970297830623, + 0.3577873603482833, + 0.5607845263682344, + 1.083051243175277, + 1.053802052034903, + -1.377669367957091, + -0.9378250399151228, + 0.5150352672086598, + 0.5137859509122088, + 0.5150476863060479, + 3.852731490654721, + 0.570890510693167, + 1.135565640180599, + 0.9540017634932023, + 0.651391251305798, + -0.3152692446403456, + 0.7589692204932674, + -0.7728252145375718, + -0.23681860674000887, + -0.48536354782910346, + 0.08187413938632256, + 2.3146585666735087, + -1.867265192591748, + 0.6862601903745135, + -1.6127158711896517, + -0.47193186578943347, + 1.088950596967366, + 0.06428001909546277, + -1.0777447779293061, + -0.7153037092599682, + 0.6795977489346758, + -0.7303666317171367, + 0.21645858958197486, + 0.045571839903813784, + -0.6516003476058171, + 2.1439440893253257, + 0.6339190223180112, + -2.025142586657607, + 0.18645431476942764, + -0.661786464768388, + 0.852433334796224, + -0.7925207384327007, + -0.11473644146689901, + 0.5049872789804571, + 0.8657551941701215, + -1.2002964070557762, + -0.3345012358409484, + -0.4749453111609562, + -0.6533292325737119, + 1.7654542402810969, + 0.40498171096095553, + -1.2608839543350452, + 0.9178619470547761, + 2.1221561970126332, + 1.0324652605511468, + -1.5193699659540134, + -0.48423407286625136, + 1.2669111491866227, + -0.7076694656187807, + 0.44381942814622843, + 0.7746340534293368, + -0.926930471578083, + -0.05952535606180008, + -3.2412673400690726, + -1.0243876413342898, + -0.2525681513931603, + -1.2477831819648495, + 1.6324113039316352, + -1.4301413779606327, + -0.44004448669698376, + 0.13074057728609134, + 1.4412732890661155, + -1.4358621511794394, + 1.1631637521549596, + 0.010233061019587049, + -0.9815086510479509, + 0.46210347426327075, + 0.19905969557347003, + -0.6002168771587947, + 0.06980208499001891, + -0.3853135968617602, + 0.11351734525124804, + 0.6621306745210467, + 1.586016816145352, + -1.237815498826849, + 2.1330333746562666, + -1.9520877995225019, + -0.15178509503558332, + 0.5883172064845765, + 0.28099186773503265, + -0.6226995198205938, + -0.20812225035727522, + -0.4930009346588328, + -0.5893647569442115, + 0.8496020970210246, + 0.35701548596504734, + -0.6929095952606542, + 0.8995998754332507, + 0.30729952087660933, + 0.8128621188389601, + 0.6296288419236122, + -0.8289950109220723, + -0.5601810401969696, + 0.7472936051232618, + 0.6103702654334648, + -0.020901593964148132, + 0.117327383308782, + 1.277664895788425, + -0.5915713888358299, + 0.5470973811700379, + -0.20219265243389406, + -0.2176812032272203, + 1.09877685198719, + 0.8254163489880298, + 0.8135096360006385, + 1.305478807154329, + 0.02100384163275905, + 0.6819529712949639, + -0.31026675659345604, + 0.3241663524884421, + -0.13014305436768459, + 0.09699596499271819, + 0.5951570254369136, + -0.8182206832334725, + 2.0923872756854602, + -1.006017381499702, + -1.2141886127877322, + 1.1581108735000678, + 0.7916626939629359, + 0.6241198170521551, + 0.6283455092642799, + -0.012246772846914623, + -0.8972543714858315, + 0.07580455819372633, + -0.6771617115121117, + 0.9751197334177512, + -0.14705738150213865, + -0.8254971967925115, + -0.32138584165299344, + 0.41293145427562433, + -0.5637245528039747, + -0.8222203955664315, + 0.2436872114919123, + 0.24496657110872277, + -0.5069431753711298, + -0.4710383056183228, + 0.2320499373576363, + -1.4480843414973241, + -1.4074637743765552, + -0.718444221252436, + -0.21344715171184725, + 0.3109075655980046, + 1.475356216949552, + 0.8576596232020194, + -0.1599385299634271, + -0.01901620790268883, + -1.0025293646378088, + -0.01851313599238993, + -0.2886586389201383, + 0.3227185603380895, + -0.827230943552323, + 0.5193465142411723, + 1.5327389130025777, + -0.1087601484568576, + 0.40171172209894146, + 0.6901439917111125, + -0.40122047188583626, + 0.22409248181041677, + 0.01259240078179486, + 0.09767609854883172, + -0.7730097838554665, + 0.024510174258942714, + 0.49799829124544975, + 1.4511436077950417, + 0.9592708260852069, + 2.1531824575115563, + -0.7673475628880495, + 0.8723206367206782, + 0.18334200573835174, + 2.1898029332176723, + -0.8082982853551515, + -0.8397218421807761, + -0.5993926454440222, + -2.123895724309807, + -0.525755021680761, + -0.759132661553698, + 0.15039378647620763, + 0.34175597577715944, + 1.8761708392158862, + 0.9504238381860503, + -0.5769036556624031, + -0.898414671348358, + 0.4919191715065057, + -1.3202332070206422, + 1.8314587658543537, + 1.179440120721287, + -0.4691756521047048, + -1.7131345290908775, + 1.3538723741654128, + -0.11453984525261789, + 1.2378163119734618, + -1.594427658794367, + -0.5993750229537729, + 0.005243699718183166, + 0.046980593764742055, + -0.45006547147924364, + 0.6228499323474987, + -1.0676204293825944, + -0.1423794850212935, + 0.12029563171189886, + 0.514438834058749, + 0.7116148780888898, + -1.1246420918378692, + -1.5341141707356223, + 1.277676821898509, + 0.33231401197959165, + -0.7484865365565536, + 1.551151975522523, + 0.11567463429285867, + 1.1792971840638264, + 0.06751848141010895, + 2.060747924881987, + 1.7553408424432044, + -0.2489641484790735, + 0.9715709509543554, + 0.6453759495851475, + 1.3686315575323487, + -0.9649234605801045, + 0.6860514599984393, + 1.0584244868495878, + -1.7587394864231143, + -1.183258512665775, + -2.0392321777601006, + -0.26940683444455776, + 0.7175422557959623, + 1.502357052096028, + 0.07409478041977519, + 1.6286155455712918, + -1.3801014582148914, + -1.7033824393551547, + -0.05554769889661878, + 0.3840654489393073, + -0.03269474809409311, + -2.0674421000398766, + -0.08912003951278841, + -1.3044695005048532, + 0.6696725488300385, + 0.36659824609684827, + -0.9398797863273552, + -0.5138669173366935, + -1.0592135218889516, + -0.06267909727317188, + 0.9551423205012383, + -0.9857260463355437, + 0.5040465155178444, + -0.5302576183724408, + -0.7928728322623442, + -0.10703035995455783, + -1.035242322419374, + -0.553649305347182, + -1.1978778925888485, + 1.9647251329163893, + 0.03526355197172861, + -0.6997255079925856, + 0.213979910734222, + -0.11232804969082982, + -0.22096959953322298, + 0.6141667000434252, + 0.7575077100473051, + -0.5305011476105275, + -0.57581824064468, + -0.275051697151644, + -2.301921164735585, + -1.5151910621985523, + 1.3668742674445247, + 1.6449677135012837, + -0.24903603955637832, + 0.5765569630557664, + 0.3112501545435361, + 3.0788808084552377, + 1.1195749114345768, + -0.12791759148076653, + -0.9555404406004258, + -1.6064463202575725, + 0.2034636358672231, + -0.7563507452843033, + -1.4222537095976742, + -0.6465728842425266, + -1.081548003614395, + 1.6871416350725648, + 0.8816397569494505, + -0.007972641316617372, + 1.4799441388900259, + 0.0773683076476183, + -0.8612842013282637, + 1.5231240772696573, + 0.5389100436846587, + -1.0372461543264564, + -0.1903386780836082, + -0.8756182533847572, + -1.382799730964336, + 0.9261775475316414, + 1.9094166404701305, + -1.3985675738191412, + 0.5629692366905709, + -0.6506425691218269, + -0.48712538376469605, + -0.5923939242388692, + -0.863990769679816, + 0.04852162794482699, + -0.8309501164110378, + 0.2704568257798388, + -0.05023810944913695, + -0.23894804686640975, + -0.9075636620415979, + -0.5767713305683327, + 0.755391225825756, + 0.5009171876243808, + -0.977555244798551, + 0.09933230542922587, + 0.751387123371789, + -1.6694052811213718, + 0.543360192379935, + -0.6626237589458467, + 0.5705986685931593, + -0.7632591565425169, + -1.804882100664519, + -1.6275424378831627, + 0.048084946661381994, + 0.25972250172148187, + -0.9043166251044086, + 0.6385924587773739, + -1.6615200622689599, + -0.06607979864731657, + -1.2110161997624567, + -0.6518361078021592, + 0.047398671316414016, + -0.8604133652839524, + -0.38455554422982535, + 1.0062928092144405, + -0.5768918695231487, + 0.8356921120651418, + -1.129706854657618, + 0.5298041779152828, + 1.4415686206579004, + -2.4716445001272893, + -0.7968952554704768, + 0.57707212718054, + -0.2030453860429927, + 0.37114587337130883, + -0.6039851867158206, + 0.08658978747289992, + -0.15567723539207948, + 1.1677820616598074, + 0.2544208433012131, + 0.3376026620752022, + -0.4118769661224674, + -0.48760622407249354, + -0.4325581878196209, + 0.39445214237829684, + -0.42098448082026296, + 0.2897748568964129, + 2.075400798645439, + 0.8711247034316923, + -0.32602353216784113, + 1.2012139221639448, + -0.4080753730215514, + -2.038124535177854, + -1.008086310917404, + -1.8707919210258557, + -0.35151348404130867, + 0.0184183791895517, + 1.6764373122752827, + 0.32692737376416264, + -0.21910052880886424, + 0.8294055811834892, + -2.211135309007885, + 0.23561455810856594, + 0.7708651938869668, + -1.4785862457798415, + 1.143754043206929, + 0.3384964074944141, + -0.4152879139008013, + 0.6327818661062848, + 2.270692857804396, + 0.18186625505849516, + 0.24822058630033608, + -0.4593608995402441, + -0.8498443694647918, + 0.8303358165442456, + -0.8560838259088672, + 0.07156623721939247, + -0.4776574467651167, + 0.47897982574639186, + 0.3336621052869483, + 1.0375399442578992, + -0.510016398854747, + -0.26987493529337125, + -0.9787637157823074, + -0.4442932600761116, + 0.3773004930448522, + 0.7569886166453519, + -0.9221653241776254, + 0.8696059201056602, + 1.355637858804951, + 0.41343490322370086, + 1.876795812558066, + -0.773789199103573, + -1.244654703311417, + -1.7787202489042786, + 1.496044311489183, + 0.6543656563540577, + -0.05558467091045507, + 0.2799686263198203, + -1.1254890472983765, + 2.4457519796168263, + 0.1292211819752275, + 0.10939479460489289, + 0.725766623898692, + 0.4810092317367132, + 0.22388402427913137, + -0.7904744554453119, + 0.4714683571359957, + 1.8820244964750337, + 1.3454200461549777, + 1.593186626639397, + -0.5112156764311852, + -0.9896048202585809, + -0.12578692009964815, + 0.055724912288694604, + 1.0941915184709485, + -1.6924646297148194, + 1.5295503194606137, + -0.15800789857898942, + -0.42688106994742003, + -1.0121043752601675, + -1.6548566718657693, + 0.8231705839619146, + 0.07331796718840389, + -1.2899608997410539, + -1.295078772063616, + -0.3357846992901282, + 1.669021525289393, + -0.2595913513636048, + -1.5031429531181062, + -0.24574306408594432, + -0.2727235697476705, + -2.6968866429415717, + -0.05429486651781221, + -0.23093453020867796, + 0.6962063648134184, + 1.8489560949453452, + 1.1265650295477574, + -0.26888869055483056, + -1.1065259087416703, + 2.5733598032498604, + 0.05921843401448826, + 0.013929291912946203, + -0.024125087110003277, + 0.19808476076785494, + -0.14436041192394247, + -0.5736620068802363, + -0.5468589412403921, + -0.03275327021599839, + -0.543424771133765, + -0.7128457826771644, + 0.10643022769189683, + -0.2549772174208553, + 1.5039929885826886, + -2.650969808393012, + 1.0915068519224618, + 1.246085192497629, + -2.0733902324081495, + -0.34268759408034877, + -0.37144086599579146, + -1.4075116947178212, + -0.7778166875908753, + -1.1105758454658288, + 1.7522704434236227, + 0.9356783931474612, + 1.2715550949941588, + 0.7216720640432351, + -1.1290517712172292, + -0.5245202662797737, + 0.48937456122791806, + -1.2221278088919454, + 0.7129984301723881, + -0.24032539815813503, + -0.3748208075495975, + 0.7109599682034915, + 0.44426331148603976, + -0.3609661658190799, + 1.159329803364248, + -1.0810633275998973, + 0.6159356069442637, + 0.5931012579683838, + -0.3095464393139903, + 0.326133022242118, + -1.251113576385303, + 0.924027019206901, + -0.18490213644298903, + -0.5227230205190395, + 1.0490092258368893, + -0.7043436905427592, + -1.4084612963635597, + -1.5566291735239037, + 0.6060099513456396, + -1.280429352496283, + 1.7547941819843647, + -2.081929407883722, + 1.6964563682900382, + 0.2110174672026184, + -0.09671311187039239, + -0.5449190868089497, + 0.39913611435207086, + -0.037634702424848364, + 1.1033018820165215, + 0.11422764866203965, + 0.1503017614618776, + -0.36361221221385587, + -0.056945623721067457, + 0.3078017688920592, + -1.7101683926566256, + -1.348185422105713, + 0.743264094022715, + 0.17086543812794186, + -0.18398333635267913, + 0.01843393306539316, + 0.34758170536167105, + -0.5397596803093615, + -0.7783047254023127, + 0.19584525509768155, + -0.978372777615032, + 0.40825275571447184, + -1.7025836042378404, + 1.0291556373256436, + 0.472597482413043, + 0.25602973431387566, + 0.9826909839455139, + 1.6654744444625766, + 1.0143700650181304, + -1.8408742313316453, + -1.2795769667357015, + -0.6248185776956788, + 0.026091050210833786, + 0.517659020469123, + -0.7257438131534656, + 0.18676676447707832, + -0.7553829323533225, + -0.6115178029919482, + -1.4066610968482223, + -0.9232332461109043, + -1.3516846056163336, + -0.9758732529773327, + 1.0536417966078395, + -0.949398888831943, + 2.632382064837391, + 0.4933179008808892, + 0.1848361236948739, + -0.8583577801812136, + 0.7003098794089914, + -0.5756378262377739, + 0.12200981464536144, + 2.5600845382687947, + -0.09605989972464987, + 1.1492733262856758, + -0.7031764251258874, + -0.0349884904969617, + 1.77080063563551, + -0.6269670577877674, + 1.8124485579969287, + 0.7077519354554754, + -0.5624667758942676, + 0.632407739055521, + 0.9725544496267299, + 0.6218099622171964, + -1.5702247198904564, + -0.7271371758248686, + -0.24751863555150475, + -0.07443342910004629, + 0.620672097550678, + 0.17770100093325383, + -1.3353443587101013, + 0.3801978510059632, + 0.6105857452838231, + 0.5597904479310398, + 1.0807807255546218, + 0.8339221545489041, + 0.4591800792284367, + -0.07016571145864703, + -1.6609609335159914, + 0.42961821913258585, + 0.20768768716311115, + 0.27157883719537346, + -1.2767485758203094, + -1.0810565404082624, + 1.0531528533329035, + -0.03955515385665504, + 0.6815006973726244, + 0.028318376130461172, + 0.02975613949574519, + 0.9382838059759977, + -0.5160447282173739, + 0.09612077694098337, + -0.4622752887050425, + -0.4344962274323156, + -0.30917212346863937, + 0.22213377163371284, + -0.4787486216634773, + 1.2557561255735208, + -0.8946073022195039, + -0.18687164416135904, + -0.4397310582741749, + 1.4469778843537329, + 0.19655477651157463, + 1.0318445394686349, + -1.485560373036972, + 0.26705026586925884, + 0.889630795623437, + 0.08228398927542419, + 1.0654803750653512, + -0.5172884501003722, + 1.40934744018558, + 2.2988981236192503, + -0.36283856043965906, + -0.4455025214007718, + 1.453384477117701, + 1.5795721457307124, + -0.5228600271532683, + -0.42018681709585726, + -0.2817846088605072, + -1.344450511034277, + -0.9186519464841982, + -1.0041407667520679, + -0.7677975651041284, + -0.03468488738678118, + 0.23421473253652075, + 1.5505004928140769, + -0.998354040738791, + 0.9843223984765838, + -0.21398884422550896, + -0.04946370965243295, + 0.6748194921666038, + -1.1227220215622986, + 0.3824097461840506, + 0.1664522082130561, + 0.4924512640081491, + 0.2891686439078181, + 2.4553001399108942, + -0.637739984251316, + -0.5309969550018176, + -0.6231405264247644, + -0.5554771191602547, + -0.6373871273065177, + 1.1890165311075518, + 1.4205042479898549, + -0.5707462937494763, + -0.8323555731042287, + 0.4714155563864041, + -0.5522230442809712, + 0.6329318177555108, + 0.2029230208512997, + -1.515744114997232, + 1.5475052013300616, + 1.7958776730955217, + -0.6127886904843862, + -0.38770155993598415, + 0.28586539072490497, + 0.334456789987025, + 0.6585442726728304, + 2.0102045387663496, + -0.1769472274940494, + -0.7982972445384537, + -1.3793192280145272, + -0.7309300399419191, + -0.033126972873797095, + 1.7945578635177877, + -0.5176112990361714, + 0.2237879516388985, + -0.016422896072752075, + 1.188393273448084, + 2.5269324258736217, + -0.5308687729203206, + -0.48943944251822213, + 1.044160877069072, + 0.6818914896263114, + 1.8467073257360336, + 0.5839281853259639, + -0.35929209078705954, + 0.5906548306923093, + 1.1087035805829077, + 0.820482181197364, + 0.5072740311072977, + 1.066674689589154, + 1.1692955904456728, + 1.3821589910375272, + 0.6487098875896427, + -0.16711808031685435, + 0.14671368643332283, + 1.2065089665083568, + -0.8169356709872361, + 0.3686733088729012, + -0.3933388123273607, + 0.028744822934817487, + 1.2784518626072987, + 0.19109906801990334, + 0.04643654815614881, + -1.3598561409799192, + 0.7462535660272207, + 0.6454841811410754, + 2.16325472330546, + -0.30777823495300083, + 0.21915032766393897, + 0.24938368371075526, + 1.5774532797634744, + -0.0952955323869521, + 0.27902152577033923, + 0.6078965097165392, + 0.1866091231563581, + -0.44643361455052827, + 0.19408999289830758, + 1.073631749859772, + -1.0265152994110602, + 0.132969674146876, + -0.7001208149391732, + 1.1950466289248425, + -1.5231869047837747, + -0.5589218472715883, + 0.37721187506452086, + 1.5655240292343404, + -0.0657502610729878, + -0.5551995266931984, + 1.8811570694405901, + -1.448013900416244, + -2.198805956620082, + 0.4400144500533324, + -0.5020542243526112, + -1.0212328171307132, + 0.7083564472993533, + 0.24380071377119883, + -0.5640786307367284, + -1.2803043986708944, + 0.8724573282801447, + 0.650201177958661, + -0.09917586377938291, + 1.8466369960476658, + -1.0700847663261526, + -1.5255251709247388, + -0.6919080698812444, + -0.045586016355497805, + 0.24333944932269183, + -0.24123605785632987, + 0.3520553965142968, + -1.251539424190444, + 1.4437646040732595, + -0.0821511783925688, + 1.1172958315881276, + 0.34272534637770413, + 0.4567532191537839, + 0.5697672802322039, + 0.44770856001731496, + 0.6427227598675439, + 1.3291525301324314, + 0.19652116970147013, + 0.7090037575885123, + -0.08973569428722672, + 1.4401172154494728, + -0.6763923020592697, + 1.8009404329108156, + -0.04015795064434341, + -1.4307751021180481, + 0.12810441491078928, + -0.6810516574748808, + 0.8406435489887241, + -0.6526239793023909, + -0.4461834332147797, + -1.889540730945531, + -0.4523063192490767, + -2.4238793266289567, + -1.5839028234857233, + 0.7604146561442974, + 0.7858001586508322, + 0.42545756178496474, + -0.966976143129213, + -0.047711356141979855, + -0.0036025390905684044, + -1.1583646891925428, + 1.5033983017671506, + 0.8773622905756714, + -0.22096417382966393, + 0.02688583899453078, + 0.20838280794755248, + -2.0417348684242906, + -0.24717738252059693, + -0.6819842479977986, + -1.0016200098949155, + -0.2811002928859549, + 1.7976865268495226, + 0.6408428612670098, + -0.5711789897827968, + 0.5725827813561586 + ], + "y": [ + 0.9563001398210165, + 0.8990295127326071, + 0.56367411633477, + -0.1541158912437135, + 0.691333973683165, + 0.4819273067449821, + -0.4852352955880883, + 0.9749591557098078, + 0.8889720573404594, + 0.9532482011546275, + 0.6776691182011314, + 0.9810359625397511, + 0.8584971659926595, + -0.15449500947798156, + -0.6471295089836953, + 0.7396922088156321, + 0.6397632439089089, + 0.7164857012727133, + 0.5890639039256742, + 0.07109919113984908, + -0.684061944089911, + 0.6413125885406901, + 1.1478349536558663, + 0.13623245887782875, + 0.7360901900107049, + 0.5623752445244916, + 0.5259620757814623, + 0.5921896601207891, + 1.2150276902595891, + 0.7556906707867606, + 0.9848865665657236, + -0.6099344588446286, + 1.174993192764655, + 0.0012786076179027717, + 0.6812702078645214, + -0.1910008257926794, + 0.9098452623143523, + -1.2369836069220241, + -0.331579835427364, + 0.26528407184059866, + 0.6682202776103048, + 0.892587956123454, + 0.42820782991812045, + 0.9160336256140162, + 0.026925933125577117, + 0.9416640968556031, + 1.0834477434550638, + 0.48273180961138795, + 0.6404718820434585, + -0.3867001707595241, + 1.0296654448326752, + 0.7441764747294912, + 0.24445726734033713, + 0.8888567068236917, + 0.3151691071704559, + 0.7473293569218145, + 0.8215458735933368, + 1.3342590679253483, + 0.9416682899545545, + 0.6756684272067461, + 1.1406613649720798, + 1.1542022872675948, + 1.2274315028835887, + -0.06830394804560314, + 0.22072363938532744, + -0.11105903351945545, + 0.6833410114350873, + 0.8632020978394257, + 0.8331844817491016, + 0.7823249404317661, + 1.0719789289749464, + -0.1549166532232853, + 0.8482976251433243, + -0.18799296041309432, + -2.1791516649248512, + 0.7193886937443557, + 1.108609822572437, + 1.0765022537972961, + 1.078706987938265, + -0.7022760236000811, + 1.2244175497108465, + 1.2572003893815236, + 0.2204784005969529, + 1.2254273540502418, + 0.38537199069623185, + 1.4465622579573445, + 0.07140239901804157, + 0.8794697849553703, + 0.6812085926956701, + 1.4460663459770196, + 0.8985192954145158, + 0.6543780700304187, + 0.9488953254888184, + 0.7304112459724537, + 0.7012264845546696, + -0.31950758952996927, + 1.3172985577938938, + 1.2857100440995097, + 1.1444745868801451, + 0.8236620032944608, + -0.2187434524843057, + 0.9268643715111278, + 1.01031396105705, + 0.626620201194203, + 0.6628589047687665, + 1.1433587829514091, + -1.1761540162971702, + 0.817258040250942, + 0.5389500243914918, + 0.8521898541149859, + -1.1666037080875928, + 1.0720087092556745, + 1.0557294599219649, + -1.6834066632626457, + 1.0549982661150032, + 1.019858793171351, + 1.030902087864726, + 0.40990942623226, + -0.13458493011177497, + 1.1042159495837627, + 0.22690374601883906, + 0.7489152707441404, + -0.10645352746960057, + -0.26024152149054913, + 0.9034247129184405, + -1.4151159275807998, + 0.32318350819548947, + 1.1034511953090602, + 0.7969447666301743, + 1.5867768978761951, + 0.09013444602853404, + 1.0868292941323938, + 0.7881374513285793, + 1.3514897114163125, + 0.33934337445757023, + -0.46195752723456285, + 1.0489722291240455, + 1.0482038115098697, + 0.40321159999213485, + 0.059988355479534405, + 1.0949835521338436, + 0.2178046902003904, + -0.5626780923410211, + 0.536549182376703, + 0.8737776928672263, + 0.7961869548749969, + 0.20100908724958622, + 0.3135177776980691, + 0.5895794961543963, + 1.0547387791614082, + 0.4285260438764187, + 1.0359284978141503, + 0.5675262770054896, + 1.0272655153619539, + 0.7995459594111727, + 0.44006471332582997, + -0.4361311962504941, + 0.8486924017798583, + 0.6753251506351932, + 1.26591038741436, + 0.6302206955415824, + -0.005293741715174605, + 0.6809660061722591, + 0.6096031986381849, + 0.206724354648266, + 0.9622231496366394, + 0.5772050056221016, + -0.407987770863417, + 0.7092966750953806, + 1.211101815241379, + 0.8630998490212882, + 0.4721688128096462, + 0.9637223613119166, + 0.8173473836291141, + 1.0863998918285072, + 0.1971836141539085, + 1.245471083884693, + -0.2343543146878968, + 0.9051925388912228, + -3.021893249632707, + 0.901896893662359, + 0.4769390146479713, + 0.530735308656066, + 0.7819116938876144, + 0.9060307527321028, + 1.2368669741121874, + 0.9378192827642735, + 1.3769183183565348, + 0.2584099356461058, + -0.6105556795633085, + 0.5150477565188947, + 1.0346701123139135, + 0.9251789173627163, + 0.721391561817607, + 1.3284462374564492, + 1.2931736260544318, + 0.2695498604930684, + 0.8514617419650712, + 0.6619124847370745, + 0.265233459354129, + 0.5844236946730171, + 0.7043349211688326, + 0.16003071404853308, + 0.24708028854800634, + 0.19018047263865126, + 0.6170701977626436, + 0.8844963590105799, + 1.1755456319294797, + 0.9889579337397474, + -6.0904525807500525, + 0.7540928721485662, + 0.617447464483649, + 0.1700859986338914, + 0.8952893796861678, + 1.0372402998463215, + 0.593436806337198, + 1.1085565472006909, + 0.8872226925267676, + 0.8889733337883141, + 0.5703883258506366, + -1.3546144819739214, + -0.9249784540868724, + 0.637125112358905, + -0.5092836924829768, + 1.3150064337625005, + -0.1035769700115079, + 0.7556593987319742, + 0.21913990780874038, + 0.9280149145373415, + 1.0440227788781469, + 0.9514614497408901, + 1.121545094533149, + 0.6906587580959118, + 1.2295908874608887, + -1.2648213369336845, + 0.49967360043236475, + -0.5228269636097231, + 1.194232661894962, + 0.35274364067297803, + 0.6556748715093209, + 0.8104259677888503, + 1.012133476746067, + 0.652338576688055, + -0.010980905338740854, + 0.45211336060591156, + 0.6259781005678526, + 0.5084922520985804, + 0.12855414995033726, + -0.2962317602001088, + 0.9802321918504715, + 0.35794610921816217, + 0.8635711176682073, + -0.9621083529291781, + 1.013077041454308, + -0.4845218707260268, + 0.8333006013753561, + -0.28244935194600185, + 0.7899506112593409, + 0.7701784174792903, + 0.7151342546316997, + 0.49055796509207816, + 1.28804053020927, + -4.142091654725679, + 0.8334726564064814, + 0.9036096400121076, + 0.45060955694377824, + -0.31526453433330515, + -0.6256143937849257, + 1.2715804323024988, + 1.0804252625074673, + -0.2264193324048076, + -0.1875888449183627, + 0.22866149444744277, + 1.2199718767665653, + 0.24371096941794157, + 1.1082161608113221, + 0.8373829580548566, + 0.7592456014091322, + 0.9221335684678982, + 0.4250366179476224, + 1.318212868859485, + 0.4057383124819651, + -0.08023039337461557, + 0.026801373445120902, + -1.151001280529317, + -0.6541081775037068, + 0.9224264481676674, + 0.8939483538945547, + 1.1381708222240827, + 0.7695447099345767, + 1.2368105592544372, + 0.49273303831981985, + 0.49829243993227923, + 0.9422689811247142, + 0.28000462741749343, + 0.5169703847090368, + 0.0515610320264841, + 0.8865444210578453, + 0.5464127341579301, + 0.6825084053374243, + 0.6030059424422021, + 0.7370045247594348, + 0.5081622899457074, + 0.8371022805002184, + 1.2161622638591272, + 1.1811096730838315, + 0.022423432463402726, + 0.7757396152686633, + 0.4387346343984566, + 0.3999946636711924, + 1.2928255651041636, + 0.6793245602557278, + 0.8028916422140373, + 0.5818466131588043, + 0.5341628939672147, + 0.6325151846279411, + 0.8737105476087352, + 0.9362292812304323, + 1.1129698397950074, + 1.3732006174489788, + 1.0210212650680033, + 1.320807734620895, + 0.4789856592469004, + -1.164990103194113, + 0.3230203187153826, + 0.03814108520431381, + 0.5102447951870595, + 0.7302623216406139, + 0.80755236430032, + 0.5655553937883895, + 1.332771770319427, + 0.894029524442537, + 1.1053503280568655, + 0.02009334442060995, + 0.4673162025076554, + 0.6775375562540251, + 1.2177506943734908, + 1.4154531571486249, + 0.5053482840674874, + 0.9967705380504039, + 0.8564501664225174, + 1.0359770054282649, + 0.8695500247437793, + 1.0874836611182257, + 0.8224547762176948, + 1.0117504789609697, + -0.24736193665003992, + 0.41943124068182697, + 0.9886293219606013, + 0.9721251799158015, + 0.8876563408230493, + -0.0389953664814513, + 1.1521075033968797, + 0.9664916143353004, + 1.4629612379490884, + 0.24454684390609577, + 0.5404048980154839, + 1.2727271801154694, + 1.2858986094105873, + 0.5407669624224263, + 0.5673877663248503, + -0.16637641335700692, + 1.0255843467381363, + 1.3720927657891322, + 0.4417114804551756, + 0.7672837737744502, + 0.7863351277791972, + 1.1487572086456468, + 0.6768135082539671, + 0.8372143639308265, + 1.2966914216938221, + 0.7881832822239443, + -0.29694689420451437, + 0.5862867286437865, + -1.3596353791589806, + 0.3943346214586967, + 0.6924704245000584, + 1.2531174073535283, + -1.594946825392661, + 0.5778797934384334, + 0.9329518548193081, + 0.9761810993294707, + -1.3653159328992048, + 0.9240083177683936, + 1.0732412099749309, + 1.4748698703444418, + 1.1376649245574466, + -1.378135333043043, + 0.6342281276272601, + 0.9572430640153451, + 0.4668067525658358, + 0.9177546058661825, + 0.5866617155746603, + -0.6281323420014395, + 0.3873806317844921, + 0.9368548754872297, + -0.9216880857065597, + -0.21119245958653998, + 0.8230862397889753, + 0.2364125048158307, + -0.3454677407367086, + 0.9213614801647525, + 0.9683868246169265, + 0.8112173887449838, + 1.0288245351805507, + 0.37373595920803826, + 0.21869355784201439, + 1.3408759054608452, + 1.3718770456888314, + 1.1762514908920725, + 0.7111689701343504, + 0.19411539313762916, + -0.050744990864847406, + -0.23813071716937895, + 0.7900352173658547, + 1.2440508626197344, + -0.04857026957020749, + 0.7472630098405544, + 0.654699281659755, + 0.530870304637542, + -0.8201511092481458, + -0.7209344948697729, + 1.283377231118632, + 0.8370957504897982, + 1.132391181727895, + -0.08671751054972798, + 0.7395185558463453, + 0.9455713161022101, + 0.48818751964288687, + -0.6372120196999087, + 0.13979363122767374, + -1.1185539367072774, + 1.0852033744437637, + 0.5564710223117348, + 0.12359734045819493, + 1.0593418322623762, + -0.37787079302075677, + -0.258646300398774, + -0.23649652182063807, + 0.86684935048427, + 0.8366005128838205, + 1.40800826871644, + -1.3253969447652194, + 1.0941362116828444, + -0.19205031304815345, + 0.548062759876486, + 1.3965824808212073, + 0.48963870657611963, + 0.8295596386290907, + 0.5961301439715276, + 0.9393757029308389, + 0.7898704824444307, + 0.4256900187748247, + 0.8135177494530543, + 0.20559883101196785, + 0.672370845633794, + 0.9118919749694807, + 0.8466392205266973, + 0.4267052934828295, + 0.6936152494383636, + -1.0830798173340992, + 1.2505849650951975, + 1.0646068374131412, + 1.4760969535101167, + 1.4469983739825047, + 1.0470789889837078, + 0.9823357035202829, + 0.7238639541714589, + 0.8545150517733529, + 0.8268619796714596, + 0.8261794591032117, + -1.8764098014838073, + -0.08870469116446, + -0.12541382261021283, + -0.37868101855866954, + 0.6310009501941112, + 0.8352006472854678, + 0.6479117136620882, + -2.8463370572701963, + 0.6137469010204342, + 0.9623837086721494, + 0.8854298361803321, + -0.26406183703020514, + 0.5380254622156477, + 0.2559491950952233, + 0.026439586508798296, + 0.9612358176452211, + 0.6479482930214875, + -0.2848070072719229, + 0.8510313006096251, + 1.1982495819765466, + 0.1780193646249062, + 1.136313468644075, + 0.42700094534693656, + 0.12491769536214181, + 1.2091169106590662, + 0.47894962883810877, + 0.9391567462517969, + 0.31365961795664, + -0.3164387050437199, + 0.6171957216661017, + -0.4661398035054569, + -0.11222907922036818, + 0.6392374924982285, + 0.17194018050468807, + 0.5152351252925174, + 0.8728488043574649, + 0.6715901493324248, + 1.031671222085576, + 0.4772201489135748, + 0.4241319372240784, + 1.1125960181496009, + 0.777399855636452, + 0.8382188688381014, + 0.4692746472018079, + 0.7653565646752813, + 0.8109288729115778, + 0.504839904747777, + 1.1744694571616545, + 0.9390571050207512, + -0.4299282683240033, + 1.0529630008374093, + 0.8258842689093742, + 0.8978568460609795, + 0.9387362538899433, + -0.8135903573135899, + -0.2441432898308884, + 1.2692760131104261, + 0.9279180145196091, + 0.607307397179099, + 0.9828634769589168, + 0.22482647082565865, + 1.1398274215823938, + 0.23375044948063373, + 0.5057853177207998, + 0.9540909489200962, + 0.6076059603576525, + 0.8629558563460054, + 0.5786905803618954, + 0.08974084332841947, + 0.7802049737921424, + 0.4341867241481321, + 0.7556836444426276, + -0.008044279543092614, + -2.3037847022647053, + 1.195032529087988, + 1.099918374013043, + 0.8538858907179705, + 0.9727472292873347, + 0.5304309412551205, + 1.1322124758005339, + 1.3203087924902661, + 0.7502140910618458, + 0.9929526348239843, + 0.6875320078952991, + 0.5626193114447151, + 0.8599842193022083, + 1.249153383537319, + 0.8671860581509376, + 1.3288689604148205, + 0.6791798639154116, + -1.0738318740293842, + 0.8020716161683996, + 0.7912716316719308, + 0.25799169169309355, + 1.1766555773527436, + -1.3106471512578914, + 0.5552158346464102, + -0.6673545211553265, + 0.3541686285290453, + 0.9652999025407496, + -0.4971794775816354, + 0.9370670037384968, + 0.8562321046175996, + 0.4059285443250036, + -0.8427808354386479, + 0.5102967163939187, + 0.7353056432675316, + 0.292079990232716, + 0.5501580994707236, + 0.6715080217865079, + 0.4792488588544135, + 0.43425235064552004, + -1.8911054714604973, + 1.157908060266615, + 0.7028970478353866, + 0.8587940457794563, + 0.40472917183945967, + 0.14316535949595766, + 0.48285328410021777, + 0.4243826124192296, + 1.0811794326857145, + 0.9496812323539475, + 1.6879141016127015, + 0.3069171080514046, + 0.9934556566145867, + 0.6174139844314697, + 1.1543557153925206, + 0.8192671042351165, + 1.159719520072322, + 1.085621221626294, + 0.537940011777561, + 0.903434870310913, + 0.06563847547904222, + 1.4723802702625428, + -0.07453965990164879, + 0.5335567443948328, + -0.016325363130876624, + -0.49397607734260335, + -0.20351641485852578, + 0.4231707849572679, + 0.8379110646709194, + 1.3807462731588114, + -0.0067226763791286, + -1.240276516369139, + 1.2151828177540924, + 0.9448244935527788, + 0.58166011113553, + 1.1994532504848616, + 1.402760145308721, + 0.8863304237872498, + 0.8015861288080641, + -0.739872820202809, + 0.1083945600408569, + -0.5939049568927177, + 1.1385312487605914, + 0.644944664274214, + 1.0893365271962434, + 0.5528784994837184, + 0.5390856276849869, + -0.09903461129268276, + -0.6463589752796155, + 1.578662663862807, + 0.7256313819243179, + 0.4376603856464, + -0.4053671149331022, + 0.5991026174011083, + 0.8397883459725874, + -0.2516714230138626, + 0.6954985703850953, + 1.3200551905289895, + 0.28268629740071005, + 1.2713291775993278, + 0.1578123740850481, + 1.3034348490843741, + 0.8697705112418097, + -2.307361727132489, + 1.2129367802017672, + 1.0322020081258416, + 0.266018526571854, + -0.42021911611331486, + 0.14293136146524787, + 0.9429742248335828, + 0.6850363645149453, + -2.866127731118459, + 0.43090872684107095, + 1.2451438469696305, + 0.8837117876222138, + 1.2738053595085224, + 1.0235628967395822, + 0.811733672325134, + 0.7572411855250314, + 0.9600865147597073, + 0.5867663753090118, + 0.5953567602072267, + 0.9085008015175964, + 0.7473934225623466, + -0.16837306931488838, + -2.7248382794865353, + 0.5578351873574814, + 0.34676917608291435, + -1.4813906715428489, + 1.288352294227808, + 1.0166165637381632, + -0.022131073735636164, + 0.9595674068564564, + 0.6170450272792545, + -0.6881862730608398, + 0.21206701837873299, + 0.2885856168491827, + 1.1690168843213433, + 0.08052721800365603, + 0.9917970065262716, + 0.8777863925298479, + 0.33408263271508754, + 1.3547397711665061, + 1.1156789421300028, + 1.2864928829988855, + 0.421817853732426, + 1.068139903399608, + 0.6160101361704124, + 0.4964544148950425, + 0.34467654171706297, + 1.3201101193952862, + 0.6487972595326825, + 1.0371344217970218, + 0.7358112138595834, + 0.1521128684213151, + 0.42865906336296256, + 0.5576500458961231, + 0.6076847748958079, + 0.7462985429415265, + 0.4819776612026949, + 0.14532557093238907, + -0.15281460650314593, + 0.7100047001564285, + 0.05331140016093805, + -0.5404926497902216, + -0.6614168591314491, + -0.18287768715806862, + 0.7571862642882445, + 0.8337085963264155, + 0.9441066809864522, + 0.9120510704332376, + 0.8521458607586005, + 0.12926164573043408, + 0.8188088059158538, + 0.9585527804039233, + 0.6085574624384116, + 1.661729219495263, + 0.6328923218837383, + -0.4370935969245155, + -0.261566434547124, + 0.9021861091862688, + 1.3686150398222336, + 1.2431866202211133, + 0.77430344372668, + 1.3109221875405095, + 0.6997392716509319, + 0.6373519820644944, + 0.7377398980310823, + 0.46594599307077655, + 0.992962404460414, + -0.36701844339792267, + 0.5918243045676179, + 0.525726735548286, + 1.1441841860299906, + 0.2054829995662244, + -0.25108916775827517, + 0.6538370002972034, + -0.8299551767062303, + 0.0176800134138429, + 0.5105187511896961, + 1.087353779086893, + 0.973100168568239, + 0.8148446921024002, + 0.6658281956226718, + 0.5820444859780889, + 0.5744255936506004, + -0.2097368871690417, + 0.7043344751696458, + -0.05734822918936766, + 1.0092103248051427, + 0.9957614714192338, + 0.4467885736638151, + -2.488029667346201, + 1.1305975322386166, + 0.9993273262088715, + 1.098856791970099, + 0.35878205767483706, + 0.9207187132563248, + 1.0361012576168327, + -2.64890706673106, + 1.0366390354146915, + 0.26174856989107553, + 1.4318883098241673, + 1.0925241167292188, + -0.8107368375176389, + 0.8554925690146152, + -1.1533783022752133, + 0.7848813930706093, + 1.2122925762206656, + 1.0455050790980622, + 0.5630296777124313, + 0.7654374775108019, + -0.21364895790060778, + 0.38513629646339576, + 0.886149397017606, + 1.3677694318409113, + 0.5847921878467996, + 0.9981205872690344, + 0.10264219380135753, + 1.0727371254830136, + 1.0755774142320398, + 0.5848574429554798, + -0.016043399481949105, + 0.2646280033031587, + 0.9662921589229478, + 0.9856005208902767, + -0.36681704186019903, + 1.0368581771069802, + 1.168916525092093, + 1.2669603604271096, + -0.27794837650267584, + -0.12794466692618478, + 0.6314049798017622, + 0.8989475351026339, + 1.1266369287160227, + 0.79335728899897, + 0.9385885862887411, + 0.414197010300434, + 1.233870375586191, + 1.1034517625983824, + 0.9065955077450587, + 0.8920345878502065, + 1.1979568799990377, + 1.4075679013968454, + 0.956298439284363, + 0.09665185259713738, + 0.7158484060376145, + 1.2095386323810629, + 1.2514170840452294, + 0.4073631439473189, + 1.2713933866833282, + 0.6008036326669455, + 0.3662872818144338, + 0.9305388295812436, + 0.8419555858452394, + 1.0693167912808779, + 0.3242827886004076, + 0.6715786677364215, + 0.45860077109701436, + -1.5794859076525891, + 0.9233643755635512, + 0.587627210427875, + -0.061211756798662975, + -0.4151959279844366, + 0.9842909749163393, + 1.74706776806905, + 0.794033914872184, + 0.052367859260479266, + 0.15657834636022194, + 1.3576628185327895, + 0.3865974151597562, + 0.5398653260634977, + 0.9717979751171804, + -0.1372995970776998, + 0.6915197995485314, + 1.1912527009076874, + 0.8072213312235883, + 0.9097420386813893, + 0.6200236501950437, + 0.7439209669665603, + 1.5764185342144459, + 0.41956825566119216, + 1.1887216351250016, + 0.7035185263910311, + -1.8310371496656286, + 1.1446244675079509, + 0.5121210709177894, + 1.0740009615949226, + 0.8368710277624276, + 0.9862380446119001, + 0.5990825628893295, + -0.1617395170166951, + 0.08612230665029008, + 0.7188694618861549, + 0.9851651336883385, + 0.43929964771835683, + 0.6498502293364057, + 0.8441525153614444, + -0.22701196303903393, + -0.40769225855074254, + -1.0464430630061532, + 0.8969616384496331, + 0.4922050862963001, + 0.6520807098485237, + 1.526141276237392, + 0.8341414512867047, + -1.1189061809947596, + 0.886926141174585, + 0.8232054990971224, + 0.29892163327538057, + 0.47043759215637837, + 1.1596932471125942, + -0.3206936675078027, + 0.8231155387401969, + 0.9339047912553697, + 1.2844441468470862, + 0.9161887690720951, + -2.1609239924323207, + 1.2148203742403636, + 1.202623995287409, + 0.6317919172442861, + 0.5931016040575645, + -0.7644003504062162, + 0.6879636575912578, + 0.8784532797120006, + 0.27870759574025983, + 0.8195757378966464, + 0.6369072101602864, + 0.7966317247281332, + 0.9106786291024548, + 0.3588920460560159, + -0.10703443045344851, + 1.0251253274956365, + 0.563178323813494, + 1.0502000005174228, + 0.4851932255318019, + 0.8437075208713256, + 0.9296195660142904, + 0.7806934981645739, + 1.0228141299814673, + 0.4543894516873306, + 1.2086731537247348, + 1.125433159483579, + 0.4115911673051178, + 0.9358174594959632, + 0.8346611280498597, + -1.1292457072601332, + 1.31904041334615, + 0.946014889798491, + 1.1789178454720606, + 0.29181746457932434, + 1.095657553634366, + 0.644349958709548, + 0.7028211385559339, + 0.8797565659385773, + 0.8369947510758173, + 1.5770508795675369, + 0.16369726588541234, + 0.4341413159604013, + 0.9416833585722975, + 0.5016687116308844, + 0.20942275474124195, + -0.42973861793440915, + 0.7741633752412149, + 1.104223707437928, + -0.17680183333032562, + 0.7796129797561964, + 0.8186598123049889, + -0.5119795264145526, + 0.143810423365486, + -1.6264708665255008, + 0.9187491394644596, + 0.7374246303882759, + 0.23377225719160855, + 0.4800954389039349, + 0.7262559731980465, + 1.0206567113603429, + 0.0806977848972732, + 0.8181865091532075, + 0.5396633947391862, + 1.024604119065316, + -0.47532423660184886, + 0.1665033654675423, + 0.17962980791096195, + 0.9782621538627065, + 0.5999574851995548, + 1.0175762880576382, + 0.24085360723333915, + 0.6207390690877848, + 0.28170635247004405, + 0.28728114262511806, + 0.9511392715027052, + 0.25201167033693916, + 0.7295716703997619, + 1.014646347061636, + 1.3676808949175694, + 0.9653710005187328, + 0.8767821170649297, + 0.6837074755847263, + 0.7919288977266905, + 0.784464398129858, + 0.6241638798071336, + -0.15314472866279072, + 0.2915500175207466, + -0.8127063536757947, + 0.9284607121028179, + 0.16418405211179987, + 0.9488511469153731, + 0.34347752359791794, + 0.7279368546115244, + 0.06796376927212044, + 1.2782321537858627, + -0.8523887041987139, + 0.934429392176205, + -1.6644615965248577, + -0.1543790453058138, + 0.5949757123174262, + 0.6904392304281637, + 0.8688509856416419, + 0.41991542013521355, + 1.0175956694482027, + 1.988724446526823, + -0.5292047980097969, + -0.06741209717746699, + 0.6589914191220594, + 0.8268788033659442, + 0.8404461856794662, + 0.9299041119046647, + -0.7870190030175035, + 1.2594055937119752, + 0.8529603369909182, + 0.9058376555374715, + 0.9445197775578706, + -0.9111467447174117, + 0.24200677983935082, + 0.5940176535754198, + 0.7044291340611268 + ] + }, + { + "line": { + "color": "red" + }, + "mode": "lines", + "name": "Average Effect Estimate", + "type": "scatter", + "x": [ + -1, + -0.9797979797979798, + -0.9595959595959596, + -0.9393939393939394, + -0.9191919191919192, + -0.898989898989899, + -0.8787878787878788, + -0.8585858585858586, + -0.8383838383838383, + -0.8181818181818181, + -0.797979797979798, + -0.7777777777777778, + -0.7575757575757576, + -0.7373737373737373, + -0.7171717171717171, + -0.696969696969697, + -0.6767676767676767, + -0.6565656565656566, + -0.6363636363636364, + -0.6161616161616161, + -0.5959595959595959, + -0.5757575757575757, + -0.5555555555555556, + -0.5353535353535352, + -0.5151515151515151, + -0.4949494949494949, + -0.4747474747474747, + -0.4545454545454545, + -0.43434343434343425, + -0.41414141414141414, + -0.3939393939393939, + -0.3737373737373737, + -0.3535353535353535, + -0.33333333333333326, + -0.31313131313131304, + -0.2929292929292928, + -0.2727272727272727, + -0.2525252525252525, + -0.23232323232323226, + -0.21212121212121204, + -0.19191919191919182, + -0.1717171717171716, + -0.1515151515151515, + -0.13131313131313127, + -0.11111111111111105, + -0.09090909090909083, + -0.07070707070707061, + -0.050505050505050386, + -0.030303030303030276, + -0.010101010101010055, + 0.010101010101010166, + 0.030303030303030498, + 0.05050505050505061, + 0.07070707070707072, + 0.09090909090909105, + 0.11111111111111116, + 0.1313131313131315, + 0.1515151515151516, + 0.1717171717171717, + 0.19191919191919204, + 0.21212121212121215, + 0.2323232323232325, + 0.2525252525252526, + 0.27272727272727293, + 0.29292929292929304, + 0.31313131313131315, + 0.3333333333333335, + 0.3535353535353536, + 0.3737373737373739, + 0.39393939393939403, + 0.41414141414141437, + 0.4343434343434345, + 0.4545454545454546, + 0.4747474747474749, + 0.49494949494949503, + 0.5151515151515154, + 0.5353535353535355, + 0.5555555555555556, + 0.5757575757575759, + 0.595959595959596, + 0.6161616161616164, + 0.6363636363636365, + 0.6565656565656568, + 0.6767676767676769, + 0.696969696969697, + 0.7171717171717173, + 0.7373737373737375, + 0.7575757575757578, + 0.7777777777777779, + 0.7979797979797982, + 0.8181818181818183, + 0.8383838383838385, + 0.8585858585858588, + 0.8787878787878789, + 0.8989898989898992, + 0.9191919191919193, + 0.9393939393939394, + 0.9595959595959598, + 0.9797979797979799, + 1 + ], + "y": [ + 0.4367976238149422, + 0.4561609649917214, + 0.4751264927978574, + 0.4936901823542203, + 0.51184823464303, + 0.5295971401053922, + 0.5469337403104693, + 0.5638552861136631, + 0.5803594906979721, + 0.5964445759341431, + 0.6121093106055425, + 0.6273530392227575, + 0.6421757003960873, + 0.6565778340316599, + 0.6705605769553822, + 0.68412564693098, + 0.697275315404997, + 0.7100123696630032, + 0.7223400653988381, + 0.7342620709663512, + 0.745782404788642, + 0.7569053675355977, + 0.7676354707440401, + 0.7779773635483441, + 0.7879357591196384, + 0.7975153622887607, + 0.8067207996643876, + 0.8155565533667443, + 0.8240268992925793, + 0.8321358506211525, + 0.8398871070746194, + 0.8472840102679841, + 0.8543295053296853, + 0.8610261088474871, + 0.8673758830967007, + 0.8733804164380697, + 0.8790408097282322, + 0.8843576685625982, + 0.8893311011641045, + 0.8939607217361136, + 0.8982456591085038, + 0.902184570517228, + 0.9057756603644793, + 0.909016703804793, + 0.9119050749883966, + 0.9144377797644615, + 0.9166114926021806, + 0.9184225974267839, + 0.9198672319917426, + 0.9209413353201871, + 0.9216406976516547, + 0.9219610122297139, + 0.9218979281676645, + 0.9214471035398655, + 0.9206042577721857, + 0.9193652223530776, + 0.9177259888628052, + 0.9156827533272175, + 0.913231955947226, + 0.9103703153371974, + 0.9070948565238465, + 0.9034029321089622, + 0.8992922361792469, + 0.894760810747891, + 0.8898070447269918, + 0.8844296656486232, + 0.8786277245659967, + 0.8724005747659139, + 0.8657478451017792, + 0.8586694089060278, + 0.8511653495572321, + 0.8432359238569496, + 0.8348815244133265, + 0.8261026422325681, + 0.8168998306872844, + 0.8072736719649349, + 0.7972247470035453, + 0.7867536097992585, + 0.7758607668252562, + 0.7645466621381565, + 0.752811668570225, + 0.7406560852177452, + 0.7280801412416995, + 0.7150840058007775, + 0.7016678037432, + 0.6878316364976345, + 0.6735756074299396, + 0.6588998507769586, + 0.643804563136837, + 0.6282900363929231, + 0.6123566908803254, + 0.596005107574928, + 0.5792360580972628, + 0.5620505313793321, + 0.5444497559408628, + 0.5264352168597711, + 0.5080086666948834, + 0.48917212982038816, + 0.46992789985229805, + 0.45027853007769914 + ] + } + ], + "layout": { + "legend": { + "x": 0.8, + "y": 0.2 + }, + "template": { + "data": { + "bar": [ + { + "error_x": { + "color": "#2a3f5f" + }, + "error_y": { + "color": "#2a3f5f" + }, + "marker": { + "line": { + "color": "#E5ECF6", + "width": 0.5 + }, + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "bar" + } + ], + "barpolar": [ + { + "marker": { + "line": { + "color": "#E5ECF6", + "width": 0.5 + }, + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "barpolar" + } + ], + "carpet": [ + { + "aaxis": { + "endlinecolor": "#2a3f5f", + "gridcolor": "white", + "linecolor": "white", + "minorgridcolor": "white", + "startlinecolor": "#2a3f5f" + }, + "baxis": { + "endlinecolor": "#2a3f5f", + "gridcolor": "white", + "linecolor": "white", + "minorgridcolor": "white", + "startlinecolor": "#2a3f5f" + }, + "type": "carpet" + } + ], + "choropleth": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "choropleth" + } + ], + "contour": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "contour" + } + ], + "contourcarpet": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "contourcarpet" + } + ], + "heatmap": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "heatmap" + } + ], + "heatmapgl": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "heatmapgl" + } + ], + "histogram": [ + { + "marker": { + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "histogram" + } + ], + "histogram2d": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "histogram2d" + } + ], + "histogram2dcontour": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "histogram2dcontour" + } + ], + "mesh3d": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "mesh3d" + } + ], + "parcoords": [ + { + "line": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "parcoords" + } + ], + "pie": [ + { + "automargin": true, + "type": "pie" + } + ], + "scatter": [ + { + "fillpattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + }, + "type": "scatter" + } + ], + "scatter3d": [ + { + "line": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatter3d" + } + ], + "scattercarpet": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattercarpet" + } + ], + "scattergeo": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattergeo" + } + ], + "scattergl": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattergl" + } + ], + "scattermapbox": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattermapbox" + } + ], + "scatterpolar": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterpolar" + } + ], + "scatterpolargl": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterpolargl" + } + ], + "scatterternary": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterternary" + } + ], + "surface": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "surface" + } + ], + "table": [ + { + "cells": { + "fill": { + "color": "#EBF0F8" + }, + "line": { + "color": "white" + } + }, + "header": { + "fill": { + "color": "#C8D4E3" + }, + "line": { + "color": "white" + } + }, + "type": "table" + } + ] + }, + "layout": { + "annotationdefaults": { + "arrowcolor": "#2a3f5f", + "arrowhead": 0, + "arrowwidth": 1 + }, + "autotypenumbers": "strict", + "coloraxis": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "colorscale": { + "diverging": [ + [ + 0, + "#8e0152" + ], + [ + 0.1, + "#c51b7d" + ], + [ + 0.2, + "#de77ae" + ], + [ + 0.3, + "#f1b6da" + ], + [ + 0.4, + "#fde0ef" + ], + [ + 0.5, + "#f7f7f7" + ], + [ + 0.6, + "#e6f5d0" + ], + [ + 0.7, + "#b8e186" + ], + [ + 0.8, + "#7fbc41" + ], + [ + 0.9, + "#4d9221" + ], + [ + 1, + "#276419" + ] + ], + "sequential": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "sequentialminus": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ] + }, + "colorway": [ + "#636efa", + "#EF553B", + "#00cc96", + "#ab63fa", + "#FFA15A", + "#19d3f3", + "#FF6692", + "#B6E880", + "#FF97FF", + "#FECB52" + ], + "font": { + "color": "#2a3f5f" + }, + "geo": { + "bgcolor": "white", + "lakecolor": "white", + "landcolor": "#E5ECF6", + "showlakes": true, + "showland": true, + "subunitcolor": "white" + }, + "hoverlabel": { + "align": "left" + }, + "hovermode": "closest", + "mapbox": { + "style": "light" + }, + "paper_bgcolor": "white", + "plot_bgcolor": "#E5ECF6", + "polar": { + "angularaxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + }, + "bgcolor": "#E5ECF6", + "radialaxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + } + }, + "scene": { + "xaxis": { + "backgroundcolor": "#E5ECF6", + "gridcolor": "white", + "gridwidth": 2, + "linecolor": "white", + "showbackground": true, + "ticks": "", + "zerolinecolor": "white" + }, + "yaxis": { + "backgroundcolor": "#E5ECF6", + "gridcolor": "white", + "gridwidth": 2, + "linecolor": "white", + "showbackground": true, + "ticks": "", + "zerolinecolor": "white" + }, + "zaxis": { + "backgroundcolor": "#E5ECF6", + "gridcolor": "white", + "gridwidth": 2, + "linecolor": "white", + "showbackground": true, + "ticks": "", + "zerolinecolor": "white" + } + }, + "shapedefaults": { + "line": { + "color": "#2a3f5f" + } + }, + "ternary": { + "aaxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + }, + "baxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + }, + "bgcolor": "#E5ECF6", + "caxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + } + }, + "title": { + "x": 0.05 + }, + "xaxis": { + "automargin": true, + "gridcolor": "white", + "linecolor": "white", + "ticks": "", + "title": { + "standoff": 15 + }, + "zerolinecolor": "white", + "zerolinewidth": 2 + }, + "yaxis": { + "automargin": true, + "gridcolor": "white", + "linecolor": "white", + "ticks": "", + "title": { + "standoff": 15 + }, + "zerolinecolor": "white", + "zerolinewidth": 2 + } + } + }, + "title": { + "text": "Locally Linear Kernel Regression of ITE on Score" + }, + "xaxis": { + "title": { + "text": "Score" + } + }, + "yaxis": { + "title": { + "text": "Effect" + } + } + } + } + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "ite = data_dict['oracle_values']['Y1'] - data_dict['oracle_values']['Y0']\n", + "score = data_dict['score']\n", + "\n", + "oracle_model = KernelReg(endog=ite, exog=score, reg_type='ll', var_type='c', ckertype='gaussian')\n", + "\n", + "score_grid = np.linspace(-1, 1, 100)\n", + "oracle_effects, _ = oracle_model.fit(score_grid)\n", + "\n", + "\n", + "scatter = go.Scatter(\n", + " x=score,\n", + " y=ite,\n", + " mode='markers',\n", + " name='ITE',\n", + " marker=dict(color='blue')\n", + ")\n", + "line = go.Scatter(\n", + " x=score_grid,\n", + " y=oracle_effects,\n", + " mode='lines',\n", + " name='Average Effect Estimate',\n", + " line=dict(color='red')\n", + ")\n", + "\n", + "\n", + "fig = go.Figure(data=[scatter, line])\n", + "fig.update_layout(\n", + " title='Locally Linear Kernel Regression of ITE on Score',\n", + " xaxis_title='Score',\n", + " yaxis_title='Effect',\n", + " legend=dict(x=0.8, y=0.2)\n", + ")\n", + "\n", + "print(f\"The oracle LATE is estimated as {oracle_model.fit([0])[0][0]}\")\n", + "\n", + "fig.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### RDD with Linear Adjustment\n", + "\n", + "The standard RDD estimator for the sharp design takes the form \n", + "\n", + "$$\\hat{\\theta}_{\\text{SRD}}(h) = \\sum_{i=1}^n w_i(h)(Y_i-X_i^T\\hat{\\gamma}_h)$$\n", + "\n", + "where $w_i(h)$ are local linear regression weights that depend on the data through the realizations of the running variable $S_i$ only and $h>0$ is a bandwidth. $\\hat{\\gamma}_h$ is a minimizer.\n", + "\n", + "The packages ``rdrobust`` implements this estimation." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Call: rdrobust\n", + "Number of Observations: 1000\n", + "Polynomial Order Est. (p): 1\n", + "Polynomial Order Bias (q): 2\n", + "Kernel: Triangular\n", + "Bandwidth Selection: mserd\n", + "Var-Cov Estimator: NN\n", + "\n", + " Left Right\n", + "------------------------------------------------\n", + "Number of Observations 490 510\n", + "Number of Unique Obs. 490 510\n", + "Number of Effective Obs. 244 263\n", + "Bandwidth Estimation 0.653 0.653\n", + "Bandwidth Bias 1.023 1.023\n", + "rho (h/b) 0.638 0.638\n", + "\n", + "Method Coef. S.E. t-stat P>|t| 95% CI \n", + "-------------------------------------------------------------------------\n", + "Conventional 2.798 3.98 0.703 4.821e-01 [-5.003, 10.598]\n", + "Robust - - 0.717 4.735e-01 [-5.806, 12.502]\n" + ] + }, + { + "data": { + "text/plain": [] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "rdrobust_linear = rdrobust(y=df['y'], x=df['score'], fuzzy=df['d'], covs=df[cov_names], c=0.0)\n", + "rdrobust_linear" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### RDD with flexible adjustment\n", + "\n", + "[Noack, Olma and Rothe (2024)](https://arxiv.org/abs/2107.07942) propose an estimator that reduces the variance of the above esimator, using a flexible adjustment of the outcome by ML. For more details, see our User Guide. The estimator here takes the form \n", + "\n", + "$$\\hat{\\theta}_{\\text{RDFlex}}(h) = \\sum_{i=1}^n w_i(h)M_i(\\eta),\\quad M_i(\\eta) = Y_i - \\eta(X_i),$$\n", + "\n", + "\n", + "with $\\eta(\\cdot)$ being potentially nonlinear adjustment functions.\n", + "\n", + "We initialize a `DoubleMLData` object using the usual package syntax.\n", + "\n", + "Note: `x_cols` refers to the covariates to be adjusted for, and `s_col` is the score." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "dml_data = dml.DoubleMLData(df, y_col='y', d_cols='d', x_cols=cov_names, s_col='score')" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Method Coef. S.E. t-stat P>|t| 95% CI\n", + "-------------------------------------------------------------------------\n", + "Conventional 3.475 2.231 1.558 1.193e-01 [-0.897, 7.847]\n", + "Robust - - 2.021 4.330e-02 [0.185, 12.112]\n" + ] + } + ], + "source": [ + "ml_g = LGBMRegressor(n_estimators=500, learning_rate=0.01, verbose=-1)\n", + "ml_m = LGBMClassifier(n_estimators=500, learning_rate=0.01, verbose=-1)\n", + "\n", + "rdflex_model = RDFlex(dml_data,\n", + " ml_g,\n", + " ml_m,\n", + " fuzzy=fuzzy,\n", + " n_folds=5,\n", + " n_rep=1)\n", + "rdflex_model.fit(n_iterations=2)\n", + "\n", + "print(rdflex_model)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Fuzzy RDD\n", + "\n", + "In the fuzzy design, the treatment assignment is still deterministic given the score ($T_i = \\mathbb{I}[S_i > c].$).\n", + "However, in the neighborhood of the cutoff, there is a probability of observations not picking up the treatment they were assignt. These \"defiers\" cause the probability jump of treatment at the cutoff to be smaller than 1.\n", + "\n", + "### Generate Data\n", + "\n", + "The function ``make_simple_rdd_data()`` with ``fuzzy = True`` generates basic data for the fuzzy case." + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
ydscorex0x1x2
02.1315331.00.496714-0.665035-0.7908640.272860
110.1042911.0-0.1382640.412951-0.9368280.872424
23.3376771.00.647689-0.8960570.0825930.418121
37.7671241.01.5230300.7419380.4281740.603456
44.2097401.0-0.234153-0.3211000.629650-0.839770
\n", + "
" + ], + "text/plain": [ + " y d score x0 x1 x2\n", + "0 2.131533 1.0 0.496714 -0.665035 -0.790864 0.272860\n", + "1 10.104291 1.0 -0.138264 0.412951 -0.936828 0.872424\n", + "2 3.337677 1.0 0.647689 -0.896057 0.082593 0.418121\n", + "3 7.767124 1.0 1.523030 0.741938 0.428174 0.603456\n", + "4 4.209740 1.0 -0.234153 -0.321100 0.629650 -0.839770" + ] + }, + "execution_count": 24, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "np.random.seed(42)\n", + "\n", + "fuzzy = True\n", + "data_dict = make_simple_rdd_data(n_obs=1000, fuzzy=fuzzy)\n", + "\n", + "cov_names = ['x' + str(i) for i in range(data_dict['X'].shape[1])]\n", + "df = pd.DataFrame(\n", + " np.column_stack((data_dict['Y'], data_dict['D'], data_dict['score'], data_dict['X'])),\n", + " columns=['y', 'd', 'score'] + cov_names,\n", + ")\n", + "df.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "C:\\Users\\BAQ7040\\AppData\\Roaming\\Python\\Python311\\site-packages\\plotly\\express\\_core.py:1979: FutureWarning:\n", + "\n", + "When grouping with a length-1 list-like, you will need to pass a length-1 tuple to get_group in a future version of pandas. Pass `(name,)` instead of `name` to silence this warning.\n", + "\n" + ] + }, + { + "data": { + "application/vnd.plotly.v1+json": { + "config": { + "plotlyServerURL": "https://plot.ly" + }, + "data": [ + { + "hovertemplate": "Treatment=True
Score=%{x}
Outcome=%{y}", + "legendgroup": "True", + "marker": { + "color": "#636efa", + "symbol": "circle" + }, + "mode": "markers", + "name": "True", + "orientation": "v", + "showlegend": true, + "type": "scatter", + "x": [ + 0.4967141530112327, + 0.6476885381006925, + 1.5230298564080254, + 1.5792128155073915, + 0.7674347291529088, + 0.5425600435859647, + 0.24196227156603412, + 0.3142473325952739, + 1.465648768921554, + 0.06752820468792384, + 0.11092258970986608, + 0.37569801834567196, + 1.8522781845089378, + 0.822544912103189, + 0.2088635950047554, + 0.19686123586912352, + 0.7384665799954104, + 0.1713682811899705, + 1.0571222262189157, + 0.3436182895684614, + 0.324083969394795, + 0.6116762888408679, + 1.030999522495951, + 0.9312801191161986, + 0.33126343140356396, + 0.9755451271223592, + 0.812525822394198, + 1.356240028570823, + 1.0035328978920242, + 0.36163602504763415, + 1.5380365664659692, + 1.5646436558140062, + 0.8219025043752238, + 0.08704706823817122, + 0.0917607765355023, + 0.3571125715117464, + 1.477894044741516, + 0.9154021177020741, + 0.32875110965968446, + 0.5132674331133561, + 0.09707754934804039, + 0.29612027706457605, + 0.26105527217988933, + 0.00511345664246089, + 0.4040508568145384, + 1.8861859012105302, + 0.17457781283183896, + 0.25755039072276437, + 0.06023020994102644, + 0.30154734233361247, + 1.1428228145150205, + 0.7519330326867741, + 0.7910319470430469, + 1.4027943109360992, + 0.5868570938002703, + 2.1904556258099785, + 0.09965136508764122, + 0.06856297480602733, + 0.4735924306351816, + 1.5499344050175394, + 0.8135172173696698, + 0.22745993460412942, + 1.307142754282428, + 0.1846338585323042, + 0.25988279424842353, + 0.7818228717773104, + 0.5219415656168976, + 0.29698467323318606, + 0.25049285034587654, + 0.3464482094969757, + 0.23225369716100355, + 0.29307247329868125, + 1.8657745111447566, + 0.4738329209117875, + 0.6565536086338297, + 0.787084603742452, + 1.158595579007404, + 0.9633761292443218, + 0.4127809269364983, + 0.82206015999449, + 1.8967929826539474, + 0.3411519748166439, + 0.27669079933001905, + 0.8271832490360238, + 0.01300189187790702, + 1.4535340771573169, + 2.720169166589619, + 0.6256673477650062, + 0.4824724152431853, + 0.714000494092092, + 0.47323762457354485, + 0.8563987943234723, + 0.21409374413020396, + 0.3853173797288368, + 0.1537251059455279, + 0.058208718445999896, + 0.5607845263682344, + 1.083051243175277, + 1.053802052034903, + 0.5150352672086598, + 0.5137859509122088, + 0.5150476863060479, + 3.852731490654721, + 1.135565640180599, + 0.9540017634932023, + 0.651391251305798, + 0.7589692204932674, + 0.08187413938632256, + 2.3146585666735087, + 0.6862601903745135, + 1.088950596967366, + 0.06428001909546277, + 0.6795977489346758, + 0.21645858958197486, + 0.045571839903813784, + 2.1439440893253257, + 0.6339190223180112, + 0.18645431476942764, + 0.852433334796224, + 0.5049872789804571, + 0.8657551941701215, + 1.7654542402810969, + 0.40498171096095553, + 0.9178619470547761, + 2.1221561970126332, + 1.0324652605511468, + 1.2669111491866227, + 0.44381942814622843, + 0.7746340534293368, + 1.6324113039316352, + 0.13074057728609134, + 1.4412732890661155, + 1.1631637521549596, + 0.46210347426327075, + 0.19905969557347003, + 0.06980208499001891, + 0.11351734525124804, + 0.6621306745210467, + 1.586016816145352, + 2.1330333746562666, + 0.5883172064845765, + 0.28099186773503265, + 0.8496020970210246, + 0.8995998754332507, + 0.30729952087660933, + 0.8128621188389601, + 0.6296288419236122, + 0.7472936051232618, + 0.6103702654334648, + 0.117327383308782, + 1.277664895788425, + 0.5470973811700379, + 1.09877685198719, + 0.8254163489880298, + 0.8135096360006385, + 1.305478807154329, + 0.02100384163275905, + 0.6819529712949639, + 0.3241663524884421, + 0.09699596499271819, + 0.5951570254369136, + 2.0923872756854602, + 1.1581108735000678, + 0.7916626939629359, + 0.6241198170521551, + 0.6283455092642799, + 0.07580455819372633, + 0.9751197334177512, + 0.41293145427562433, + 0.2436872114919123, + 0.24496657110872277, + 0.2320499373576363, + 0.3109075655980046, + 1.475356216949552, + 0.8576596232020194, + 0.3227185603380895, + 0.5193465142411723, + 1.5327389130025777, + 0.40171172209894146, + 0.6901439917111125, + 0.22409248181041677, + 0.01259240078179486, + 0.024510174258942714, + 0.49799829124544975, + 1.4511436077950417, + 0.9592708260852069, + 2.1531824575115563, + 0.8723206367206782, + 0.18334200573835174, + 2.1898029332176723, + 0.15039378647620763, + 0.34175597577715944, + 0.9504238381860503, + 0.4919191715065057, + 1.8314587658543537, + 1.179440120721287, + 1.3538723741654128, + 0.005243699718183166, + 0.046980593764742055, + 0.6228499323474987, + 0.12029563171189886, + 0.514438834058749, + 0.7116148780888898, + 1.277676821898509, + 0.33231401197959165, + 1.551151975522523, + 0.11567463429285867, + 1.1792971840638264, + 0.06751848141010895, + 2.060747924881987, + 1.7553408424432044, + 0.9715709509543554, + 0.6453759495851475, + 1.3686315575323487, + 0.6860514599984393, + 1.0584244868495878, + 0.7175422557959623, + 1.502357052096028, + 0.07409478041977519, + 1.6286155455712918, + 0.3840654489393073, + 0.6696725488300385, + 0.36659824609684827, + 0.9551423205012383, + 0.5040465155178444, + 0.03526355197172861, + 0.213979910734222, + 0.6141667000434252, + 0.7575077100473051, + 1.3668742674445247, + 1.6449677135012837, + 0.5765569630557664, + 3.0788808084552377, + 1.1195749114345768, + 0.2034636358672231, + 1.6871416350725648, + 0.8816397569494505, + 1.4799441388900259, + 0.0773683076476183, + 1.5231240772696573, + 0.5389100436846587, + 0.9261775475316414, + 1.9094166404701305, + 0.5629692366905709, + 0.04852162794482699, + 0.2704568257798388, + 0.755391225825756, + 0.5009171876243808, + 0.09933230542922587, + 0.751387123371789, + 0.543360192379935, + 0.5705986685931593, + 0.048084946661381994, + 0.25972250172148187, + 0.6385924587773739, + 0.047398671316414016, + 1.0062928092144405, + 0.8356921120651418, + 0.5298041779152828, + 1.4415686206579004, + 0.57707212718054, + 0.37114587337130883, + 0.08658978747289992, + 1.1677820616598074, + 0.2544208433012131, + 0.3376026620752022, + 0.39445214237829684, + 0.2897748568964129, + 2.075400798645439, + 0.8711247034316923, + 1.2012139221639448, + 0.0184183791895517, + 1.6764373122752827, + 0.32692737376416264, + 0.8294055811834892, + 0.23561455810856594, + 0.7708651938869668, + 1.143754043206929, + 0.3384964074944141, + 0.6327818661062848, + 2.270692857804396, + 0.18186625505849516, + 0.8303358165442456, + 0.07156623721939247, + 0.47897982574639186, + 0.3336621052869483, + 1.0375399442578992, + 0.3773004930448522, + 0.7569886166453519, + 0.8696059201056602, + 1.355637858804951, + 0.41343490322370086, + 1.876795812558066, + 1.496044311489183, + 0.6543656563540577, + 0.2799686263198203, + 2.4457519796168263, + 0.1292211819752275, + 0.10939479460489289, + 0.725766623898692, + 0.4810092317367132, + 0.22388402427913137, + 0.4714683571359957, + 1.3454200461549777, + 1.593186626639397, + 1.0941915184709485, + 1.5295503194606137, + 0.8231705839619146, + 0.07331796718840389, + 1.669021525289393, + 0.6962063648134184, + 1.8489560949453452, + 1.1265650295477574, + 2.5733598032498604, + 0.05921843401448826, + 0.013929291912946203, + 0.19808476076785494, + 0.10643022769189683, + 1.5039929885826886, + 1.0915068519224618, + 1.246085192497629, + 1.7522704434236227, + 0.9356783931474612, + 1.2715550949941588, + 0.7216720640432351, + 0.48937456122791806, + 0.7129984301723881, + 0.7109599682034915, + 0.44426331148603976, + 1.159329803364248, + 0.6159356069442637, + 0.5931012579683838, + 0.326133022242118, + 0.924027019206901, + 1.0490092258368893, + 0.6060099513456396, + 1.7547941819843647, + 1.6964563682900382, + 0.2110174672026184, + 1.1033018820165215, + 0.11422764866203965, + 0.1503017614618776, + 0.3078017688920592, + 0.743264094022715, + 0.17086543812794186, + 0.01843393306539316, + 0.19584525509768155, + 0.40825275571447184, + 1.0291556373256436, + 0.472597482413043, + 0.25602973431387566, + 0.9826909839455139, + 1.6654744444625766, + 1.0143700650181304, + 0.026091050210833786, + 0.517659020469123, + 0.18676676447707832, + 2.632382064837391, + 0.4933179008808892, + 0.1848361236948739, + 0.7003098794089914, + 0.12200981464536144, + 2.5600845382687947, + 1.1492733262856758, + 1.77080063563551, + 1.8124485579969287, + 0.7077519354554754, + 0.632407739055521, + 0.9725544496267299, + 0.6218099622171964, + 0.620672097550678, + 0.17770100093325383, + 0.3801978510059632, + 0.5597904479310398, + 1.0807807255546218, + 0.8339221545489041, + 0.4591800792284367, + 0.42961821913258585, + 0.20768768716311115, + 0.27157883719537346, + 1.0531528533329035, + 0.6815006973726244, + 0.028318376130461172, + 0.02975613949574519, + 0.9382838059759977, + 0.09612077694098337, + 0.22213377163371284, + 1.2557561255735208, + 0.19655477651157463, + 1.0318445394686349, + 0.26705026586925884, + 0.889630795623437, + 0.08228398927542419, + 1.0654803750653512, + 1.40934744018558, + 1.453384477117701, + 1.5795721457307124, + 0.23421473253652075, + 1.5505004928140769, + 0.9843223984765838, + 0.3824097461840506, + 0.1664522082130561, + 0.4924512640081491, + 0.2891686439078181, + 2.4553001399108942, + 1.1890165311075518, + 1.4205042479898549, + 0.4714155563864041, + 0.6329318177555108, + 0.2029230208512997, + 1.5475052013300616, + 1.7958776730955217, + 0.28586539072490497, + 0.334456789987025, + 0.6585442726728304, + 2.0102045387663496, + 1.7945578635177877, + 0.2237879516388985, + 1.188393273448084, + 2.5269324258736217, + 1.044160877069072, + 0.6818914896263114, + 1.8467073257360336, + 0.5839281853259639, + 0.5906548306923093, + 1.1087035805829077, + 0.820482181197364, + 0.5072740311072977, + 1.066674689589154, + 1.1692955904456728, + 1.3821589910375272, + 0.6487098875896427, + 0.14671368643332283, + 1.2065089665083568, + 0.3686733088729012, + 0.028744822934817487, + 1.2784518626072987, + 0.19109906801990334, + 0.04643654815614881, + 0.7462535660272207, + 2.16325472330546, + 0.21915032766393897, + 0.24938368371075526, + 1.5774532797634744, + 0.27902152577033923, + 0.6078965097165392, + 0.1866091231563581, + 0.19408999289830758, + 1.073631749859772, + 0.132969674146876, + 1.1950466289248425, + 0.37721187506452086, + 1.5655240292343404, + 1.8811570694405901, + 0.4400144500533324, + 0.7083564472993533, + 0.24380071377119883, + 0.8724573282801447, + 0.650201177958661, + 1.8466369960476658, + 0.24333944932269183, + 0.3520553965142968, + 1.4437646040732595, + 1.1172958315881276, + 0.4567532191537839, + 0.5697672802322039, + 0.44770856001731496, + 0.6427227598675439, + 1.3291525301324314, + 0.19652116970147013, + 0.7090037575885123, + 1.4401172154494728, + 0.12810441491078928, + 0.8406435489887241, + 0.7604146561442974, + 0.7858001586508322, + 0.42545756178496474, + 1.5033983017671506, + 0.20838280794755248, + 1.7976865268495226, + 0.6408428612670098, + 0.5725827813561586 + ], + "xaxis": "x", + "y": [ + 2.1315329707498756, + 3.3376770604434096, + 7.767124195272413, + 0.7481591385679691, + 4.1128433169824365, + 9.491430242004125, + 19.22182141446181, + 11.557796064985189, + 4.936439468036899, + 3.333810324078476, + 4.441113900423861, + 0.6455892358611679, + 0.49610928527468745, + 2.4006011335875828, + 5.163316458119373, + 8.391790673613986, + 2.4564095455635835, + 7.319450585831383, + 2.4707465154292434, + 10.402939953767364, + 12.446147009792307, + 8.882718432316555, + 0.857904007273836, + 2.447186683872495, + 7.018174078288615, + 0.9357156158889749, + 0.16920539181221195, + 0.6185619513651668, + 4.562255000224275, + 2.7184291960342915, + 6.108978259340933, + 7.401531100522695, + 7.840952968279986, + 0.6953135686971497, + 2.436535977334167, + 2.743388211356075, + 8.301152100586544, + 0.6183924355825982, + 9.695049328101154, + 3.6601487948925118, + 2.6058994457584688, + 11.690108377884076, + 1.9344216148461812, + 11.855325061722992, + 1.6514489549231508, + 9.361676779831594, + 2.9379692479846318, + 1.9046269186816902, + 10.370143028347302, + 4.948184205680325, + 1.2880687838570863, + 8.26102961975762, + 0.45539124774730894, + 15.70558111975564, + 3.9263253615199267, + 10.44991370265823, + 9.879740840545962, + 3.355173393466349, + 3.8910293090041606, + -0.07290139915820362, + 4.095558006274662, + 12.15394583676655, + 0.6937345905224344, + 11.67560310448758, + 4.010683176834139, + 1.0746839428581927, + 7.100881196152617, + 2.9841599788421855, + 3.8923436288171525, + 1.1508329887233149, + 11.383218174775342, + 1.4822430277021466, + 1.1766678151414163, + 0.5223850194716981, + 10.641029747336491, + 10.629678264549034, + 1.5506860258251056, + 1.6172716862858332, + 3.3084111889169994, + 3.8225384869477117, + 3.2181525178476242, + 10.805669683789443, + 1.3964934007804224, + 3.2800128692883628, + 3.1846391000756857, + 10.695429298642578, + 2.949958256339423, + 7.540022705566691, + 1.1527314494379268, + 11.551630376432174, + 8.3458031736762, + 4.984611047058473, + 5.767512050794933, + 7.774453798507568, + 11.482890588252625, + 3.8175035271584896, + 4.6490582097789, + 5.257826041964947, + 8.129020265816388, + 6.922582683560283, + 1.1653790943806284, + 4.165502646998374, + -1.8956593067123448, + 2.093985760729416, + 1.697114967540403, + 6.252821237159777, + 3.984922545466563, + 18.49063350079053, + 0.07521768037949655, + 4.266382856770973, + 3.038629780857546, + 7.590612944393139, + 2.2215644054189174, + 4.508484870146033, + 3.376999774476586, + -0.21115656764338744, + 5.9333496168305055, + 4.052521960469138, + 0.8250147782077821, + 8.499434814511643, + 10.26899685904756, + 3.8126959290713813, + 6.635898714469415, + 1.6067198965643417, + 10.253468884792, + 1.4395963925845616, + 3.372127918876701, + 2.613768873063521, + 14.20294480605421, + 2.3822255468743685, + 4.089857223659319, + 9.251431469744308, + 6.312500447045307, + 9.311059176415537, + 11.114319085950685, + 3.1863095083950803, + 3.2897871368232043, + 7.504518978570107, + 1.0559006941062314, + 2.2450940978353717, + 2.26843289183069, + 1.7707473664381386, + 4.559847930572106, + 12.086912144333144, + 5.701325415891191, + 6.849392435651532, + 1.4451798332463686, + 3.378382187645317, + 10.499967443850583, + 13.451913885465364, + 4.6519681588390585, + 2.4453863318307465, + 3.17518004565509, + 10.660132568416012, + 6.012996884384393, + 3.666740148539145, + 12.253347417655641, + 5.856761811694221, + 7.826404734778256, + 0.83522967339717, + 3.1478380983232426, + 1.0301256344165093, + 9.812055248429134, + 2.1631727023884055, + 0.7012947549049051, + 2.2807440727810087, + 2.8777095496338707, + 3.5396243352582575, + 5.078411778327921, + 7.644037683454063, + 4.214157582480626, + 3.227813526987917, + 1.8950854683377898, + 8.273768587290384, + 7.042883019888062, + 6.279430040654341, + 2.8576360333014215, + 9.286549565264568, + 1.3859158480677314, + 2.3275920490961854, + 5.767573515014574, + 3.7506312572570675, + 10.212869818117555, + 2.0697294814897242, + 1.441404312485799, + 9.864553840551586, + 0.36125477879677126, + 6.437503714512308, + 13.433645420156413, + 11.558320613040664, + 9.346558165443854, + 1.1488593990287084, + 15.336113654335783, + 8.742170519056472, + 6.481454238265168, + 3.182703497253395, + 4.393459525076071, + 8.781178798807002, + 4.928918555552588, + 5.072259981144448, + 2.1755560735466304, + 3.1373996095846595, + 9.993369457421977, + 5.028053326716646, + 5.055439186487435, + 1.8034782530713143, + 1.5961170573645533, + 3.56840838135132, + 16.285666127796514, + 0.13279900178749257, + 3.0736395780402708, + 0.15201500920458605, + 9.924536594732846, + 5.339198033172685, + 1.4954878511372058, + 5.772096833019086, + 2.7108024218677156, + 0.7287727343342003, + 3.687378622941323, + 3.346178117658042, + 4.218066681557937, + 3.758993624607027, + 11.20175638993969, + 0.3381790137322365, + 7.528369810863078, + 4.204034610650169, + 3.3432442539973195, + 9.71074983031172, + 4.557018092529859, + 8.857878161767035, + 10.312343392753021, + 1.5378009481349695, + 0.41576963106511766, + 17.67219702866147, + 3.3602581922121884, + 2.606247664100731, + 8.900380424673967, + 1.714476689271548, + 3.7984664567673025, + 0.9493116253535325, + 15.97536241219612, + 10.747751324261445, + 7.429029407672949, + 11.461948489000513, + 7.6017247723226085, + 2.6221905275316195, + 15.561566983734414, + 3.2472739807087194, + 1.4424887305932574, + 7.567256309752906, + 4.98937736257439, + 2.9304105594386973, + 1.5440083928142925, + 4.910497743060022, + 3.5533164633405154, + 4.787410781944382, + 4.041051760850429, + 6.049063673908385, + 3.5380672836712668, + 17.3501756288875, + 4.414451845562086, + 1.0668413861439257, + 0.9016493835817596, + 7.966632540366974, + 7.485218190712658, + 3.2916061223331776, + 3.1942601281344674, + 7.334674184175711, + 7.608729224468053, + 4.790858808540129, + 5.694034084347684, + 8.99644827443137, + 1.0259593417054744, + 0.903881514393115, + 3.4682813300473905, + 8.903317816428128, + 2.825454795082282, + 0.7180558258955793, + 10.451390235445258, + 2.333681002415545, + -0.5612011685691527, + 0.9529046956183496, + 1.2806207733069654, + 10.707794186867956, + 0.9973423297502046, + 13.12212737619498, + 9.23479312102998, + 5.270786789765304, + 11.843685565471757, + 6.12995661035467, + 3.2507894624967104, + 2.225507657701971, + 1.9311208435599505, + 1.6751235864821505, + 9.409456739377488, + 7.762737823232642, + -0.37720636798744966, + 7.476265254210922, + 5.627234572872154, + 3.6405360758007754, + 2.643080378516415, + 1.5128381297378348, + 2.199991641756983, + 7.003384050152647, + 1.909785634098101, + 0.3634373369124242, + 7.623795045571737, + 9.052018101176614, + 2.8663517202569726, + 1.5597488142143623, + 2.5826115596699974, + 3.738647173883102, + 1.3278337233353543, + 2.867946078811882, + 2.5503144297881106, + 4.431706524679094, + 4.081029353260243, + 5.433622799801779, + 3.269758397089347, + 0.3242531342459827, + 0.9090846593811345, + 0.890293978639035, + 2.450408765726328, + 6.856331384339364, + 8.52619462926133, + 1.947913278028056, + 6.450414778728382, + 3.798103152703199, + 8.139719937627595, + 1.4359646648590099, + 5.207482267025496, + 2.3951108901876825, + 6.799779922419049, + 10.136664129270939, + 2.6768491835032, + 2.3874300185476756, + 2.038573705341423, + 5.004488160490057, + 5.715150198716844, + 10.280410257625999, + 12.86283064800677, + 3.5746511488610855, + 2.8656980416874878, + 2.599544256017886, + 6.409149893354449, + 14.443109269806254, + 3.326674209951898, + 10.989663463088544, + 1.8105097926902487, + 14.741330533081028, + 15.08675973075185, + 5.1631116750875305, + 9.343661006938557, + 14.126360366511257, + 11.484363268268915, + 8.94184778379353, + 0.9604537983261285, + 2.1002647215789483, + 2.478117428845026, + 7.843235818802062, + 14.742011015515583, + 4.200182925056385, + 1.8547623673745726, + 8.268738146118627, + 0.17075516241577054, + -0.8970479734796357, + 9.982459249510216, + 3.122639019004143, + 5.208129305459214, + 3.9995262966163194, + 1.0384176311229965, + 8.090803240651615, + 2.720588981637568, + 12.810847900217274, + 3.2207719681897062, + 1.9527694504544508, + 6.975683242729285, + 5.962908178484416, + 2.031201552091179, + 3.296266063714319, + 2.8497814258160656, + 3.5992640315712263, + 6.028692328076521, + 2.1798547277503113, + 15.946078372524447, + 11.270067835171865, + 9.886737882436176, + 10.069873531748522, + 3.419671289176756, + 8.120498029715673, + 3.276912806764646, + 5.150771578281058, + 11.536778020411017, + 1.1283312841804798, + 5.2922772679270125, + 6.618234052355605, + 9.995383628078763, + 19.79728717826931, + 8.221699603028048, + 1.756730298878706, + 1.9973513226644182, + 3.9146292154471363, + 6.655009309637468, + 7.306798402879964, + 6.636471794024103, + 1.2105875042335548, + 5.977174263502021, + 3.335659958519535, + 4.9740231500169205, + 5.696409647756136, + 12.304050151594982, + 12.479961038493842, + 5.267925637149455, + 8.205193667618506, + 6.64127892567596, + 2.584589230653057, + 1.4859153087462587, + 3.094530550283568, + 0.8210502191076455, + -1.6565034675323356, + 3.4066291519265084, + 2.1271109392217773, + 11.528410984296546, + 11.104263573155796, + 2.2723724206920943, + 4.902928411074227, + 2.32253510026496, + 9.505170913193153, + 1.676351819404714, + 5.913072392765526, + 4.240607888229912, + 3.549793526789535, + 5.190377999146584, + 3.0969532739309678, + 0.3993222635384932, + 3.4469460988229064, + -0.12939358371016055, + 4.275655223374612, + 2.0051290473754992, + 5.675153024575338, + 5.9090892410023175, + 1.5297744205662447, + 11.434182971375352, + 20.61617591266843, + 0.9834804292692843, + 0.2894674597174777, + 4.629916875604893, + 5.166479641650803, + 9.456054689668147, + 6.707682575146893, + 4.311981700299243, + 2.727290679463529, + 1.346888081763368, + 2.091256797952634, + 2.649932550296708, + 6.72998362612404, + 1.9431963436581852, + 1.9958889934089596, + 9.265758554728484, + 1.1918107314354887, + 10.799943755267028, + 5.368437067503507, + 6.050692810470485, + 0.7575948792915393, + 1.9941981378277107, + 10.241776461541852, + 15.16722724171395, + 3.679959347327524, + 0.9821083549665657, + 1.865779046900708, + 2.0294581789518995, + 5.685763930151271, + 2.072247638121533, + 1.2025334601292297, + 7.65936297015509, + 4.512297107524395, + 1.3890972245536044, + 10.881249015037312, + 5.162651574559774, + 4.170255155954141, + 2.992416291482686, + 6.144238251062534 + ], + "yaxis": "y" + }, + { + "hovertemplate": "Treatment=False
Score=%{x}
Outcome=%{y}", + "legendgroup": "False", + "marker": { + "color": "#EF553B", + "symbol": "circle" + }, + "mode": "markers", + "name": "False", + "orientation": "v", + "showlegend": true, + "type": "scatter", + "x": [ + -0.46572975357025687, + -0.2916937497932768, + -0.013497224737933921, + -1.2208436499710222, + -1.3281860488984305, + -0.4606387709597875, + -0.18565897666381712, + -1.1962066240806708, + -0.6451197546051243, + -0.21967188783751193, + -0.39210815313215763, + -1.4153707420504142, + -0.3427145165267695, + -0.9093874547947389, + -0.7832532923362371, + -0.3220615162056756, + -0.9746816702273214, + -0.7537361643574896, + -0.0771017094141042, + -0.8571575564162826, + -0.4465149520670211, + -1.245738778711988, + -0.883857436201133, + -1.377669367957091, + -0.23681860674000887, + -0.48536354782910346, + -1.6127158711896517, + -2.025142586657607, + -1.2002964070557762, + -0.6533292325737119, + -0.7076694656187807, + -0.20812225035727522, + -0.6929095952606542, + -1.006017381499702, + -1.2141886127877322, + -0.8972543714858315, + -0.32138584165299344, + -0.8222203955664315, + -0.4710383056183228, + -1.4480843414973241, + -0.01901620790268883, + -1.0025293646378088, + -0.40122047188583626, + -0.7673475628880495, + -0.8397218421807761, + -0.5993926454440222, + -0.525755021680761, + -0.759132661553698, + -0.5769036556624031, + -0.898414671348358, + -0.26940683444455776, + -0.05554769889661878, + -1.3044695005048532, + -1.0592135218889516, + -0.5302576183724408, + -0.553649305347182, + -0.11232804969082982, + -0.22096959953322298, + -1.4222537095976742, + -0.48712538376469605, + -0.5923939242388692, + -0.23894804686640975, + -0.977555244798551, + -0.06607979864731657, + -0.6518361078021592, + -1.129706854657618, + -2.211135309007885, + -1.4785862457798415, + -0.8560838259088672, + -1.7787202489042786, + -0.5112156764311852, + -0.9896048202585809, + -1.0121043752601675, + -1.2899608997410539, + -1.295078772063616, + -2.6968866429415717, + -0.23093453020867796, + -0.26888869055483056, + -0.5468589412403921, + -0.5245202662797737, + -0.24032539815813503, + -0.3609661658190799, + -1.5566291735239037, + -0.36361221221385587, + -1.7101683926566256, + -1.348185422105713, + -0.7257438131534656, + -0.6115178029919482, + -0.9758732529773327, + -0.949398888831943, + -0.7031764251258874, + -0.0349884904969617, + -0.7271371758248686, + -0.07443342910004629, + -1.2767485758203094, + -0.36283856043965906, + -0.4455025214007718, + -0.03468488738678118, + -0.5309969550018176, + -0.5554771191602547, + -0.5707462937494763, + -0.8323555731042287, + -0.5522230442809712, + -0.1769472274940494, + -0.7982972445384537, + -0.7309300399419191, + -0.8169356709872361, + -0.30777823495300083, + -0.5589218472715883, + -0.5020542243526112, + -0.6919080698812444, + -0.045586016355497805, + -0.4461834332147797, + -0.4523063192490767, + -2.4238793266289567, + -1.5839028234857233, + -1.1583646891925428, + -0.24717738252059693, + -0.6819842479977986 + ], + "xaxis": "x", + "y": [ + 1.3615999257157252, + 0.32421530102408114, + -0.3756937038823863, + 3.334706672185873, + 0.570099828388501, + 1.3246973368078483, + 3.0690128883734977, + 1.220890735050157, + -0.041662233621488354, + 0.9684966647131934, + 0.6857247750865538, + 1.6607787445225182, + 0.7714890721589855, + -0.006609620796110771, + 0.6625735024620792, + 0.7463603174480453, + 0.8335507847427969, + 1.5827457716718185, + 2.418656872597653, + -0.22801583443500123, + 2.1185425201955312, + 0.28249884985599855, + 2.235344242009358, + -0.13193646878975818, + -0.1274133661618491, + 0.9583421724350449, + 0.546634435940819, + 1.632786665388183, + 0.5612829495120453, + 0.13325704694822132, + -0.21329937211077177, + 1.6902482968094241, + 1.2902250784191982, + 1.215945542264764, + 1.044504848259474, + -0.0703719303093876, + 0.23300679275301617, + -0.748889486019636, + 1.4413389190670947, + 0.3677371066021673, + 1.676371082302052, + -0.17415559470725486, + 0.6958426043425507, + 3.5346530386737682, + -0.3080686703368427, + 0.3060480529833499, + -0.17788449644844853, + 0.4243087140516217, + 0.5544139842534694, + 0.9965106495802344, + 0.30199321209423885, + 1.7835146960952513, + 0.7403374643098577, + 1.5427172005378376, + 0.7966171611510633, + 1.4974960434659323, + -0.35527474203586934, + 2.1573391244783724, + 0.7185732716727131, + 1.5555096433975422, + 2.2534676479705995, + 0.4492691537460317, + -0.1750217850882944, + 2.730645874519063, + 1.8150218524624373, + 1.0839979397106765, + 0.7084748568910306, + 1.6513302029244321, + 1.26745207583228, + 0.8628111749286197, + 0.3402026026708754, + 1.6258882297944637, + 0.495144846412771, + 1.3330355409939436, + 1.1826515112373168, + 0.4150673293475587, + -0.08821422135718901, + 0.7930212904195799, + 2.3583883381335013, + 0.5469201714336109, + 1.7549849484925293, + 0.047415237960372, + 1.4198868709995598, + 1.7532998335704464, + 0.5926653452903705, + 1.38330117482117, + 2.229467488522225, + 3.023173842484077, + 0.2780816245255471, + 0.6868657958466227, + 0.4413806794008475, + 0.31951244046391913, + 1.970102291048323, + 1.4495819348609282, + 0.014319226529760462, + 0.14499195704924878, + 1.07883838903741, + 0.48371926719553804, + 0.8651378855151438, + 1.4087472909536356, + 0.5492932131051853, + 0.4051122026484606, + 0.3340987638606818, + 0.21273411527508415, + 0.9934776995019708, + 1.1743639449794019, + 1.0127147372030256, + 1.308100584997736, + 1.0106740903175286, + 0.29831162343818174, + 0.6580208387866686, + 0.960475599896778, + 0.5248166371161477, + 1.3193694568688028, + 1.1313459223367046, + 0.9128511545086413, + 1.3801082802587534, + 0.3652147054957546, + -0.10979372598736035 + ], + "yaxis": "y" + } + ], + "layout": { + "legend": { + "title": { + "text": "Treatment" + }, + "tracegroupgap": 0 + }, + "template": { + "data": { + "bar": [ + { + "error_x": { + "color": "#2a3f5f" + }, + "error_y": { + "color": "#2a3f5f" + }, + "marker": { + "line": { + "color": "#E5ECF6", + "width": 0.5 + }, + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "bar" + } + ], + "barpolar": [ + { + "marker": { + "line": { + "color": "#E5ECF6", + "width": 0.5 + }, + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "barpolar" + } + ], + "carpet": [ + { + "aaxis": { + "endlinecolor": "#2a3f5f", + "gridcolor": "white", + "linecolor": "white", + "minorgridcolor": "white", + "startlinecolor": "#2a3f5f" + }, + "baxis": { + "endlinecolor": "#2a3f5f", + "gridcolor": "white", + "linecolor": "white", + "minorgridcolor": "white", + "startlinecolor": "#2a3f5f" + }, + "type": "carpet" + } + ], + "choropleth": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "choropleth" + } + ], + "contour": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "contour" + } + ], + "contourcarpet": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "contourcarpet" + } + ], + "heatmap": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "heatmap" + } + ], + "heatmapgl": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "heatmapgl" + } + ], + "histogram": [ + { + "marker": { + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "histogram" + } + ], + "histogram2d": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "histogram2d" + } + ], + "histogram2dcontour": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "histogram2dcontour" + } + ], + "mesh3d": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "mesh3d" + } + ], + "parcoords": [ + { + "line": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "parcoords" + } + ], + "pie": [ + { + "automargin": true, + "type": "pie" + } + ], + "scatter": [ + { + "fillpattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + }, + "type": "scatter" + } + ], + "scatter3d": [ + { + "line": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatter3d" + } + ], + "scattercarpet": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattercarpet" + } + ], + "scattergeo": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattergeo" + } + ], + "scattergl": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattergl" + } + ], + "scattermapbox": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattermapbox" + } + ], + "scatterpolar": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterpolar" + } + ], + "scatterpolargl": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterpolargl" + } + ], + "scatterternary": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterternary" + } + ], + "surface": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "surface" + } + ], + "table": [ + { + "cells": { + "fill": { + "color": "#EBF0F8" + }, + "line": { + "color": "white" + } + }, + "header": { + "fill": { + "color": "#C8D4E3" + }, + "line": { + "color": "white" + } + }, + "type": "table" + } + ] + }, + "layout": { + "annotationdefaults": { + "arrowcolor": "#2a3f5f", + "arrowhead": 0, + "arrowwidth": 1 + }, + "autotypenumbers": "strict", + "coloraxis": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "colorscale": { + "diverging": [ + [ + 0, + "#8e0152" + ], + [ + 0.1, + "#c51b7d" + ], + [ + 0.2, + "#de77ae" + ], + [ + 0.3, + "#f1b6da" + ], + [ + 0.4, + "#fde0ef" + ], + [ + 0.5, + "#f7f7f7" + ], + [ + 0.6, + "#e6f5d0" + ], + [ + 0.7, + "#b8e186" + ], + [ + 0.8, + "#7fbc41" + ], + [ + 0.9, + "#4d9221" + ], + [ + 1, + "#276419" + ] + ], + "sequential": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "sequentialminus": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ] + }, + "colorway": [ + "#636efa", + "#EF553B", + "#00cc96", + "#ab63fa", + "#FFA15A", + "#19d3f3", + "#FF6692", + "#B6E880", + "#FF97FF", + "#FECB52" + ], + "font": { + "color": "#2a3f5f" + }, + "geo": { + "bgcolor": "white", + "lakecolor": "white", + "landcolor": "#E5ECF6", + "showlakes": true, + "showland": true, + "subunitcolor": "white" + }, + "hoverlabel": { + "align": "left" + }, + "hovermode": "closest", + "mapbox": { + "style": "light" + }, + "paper_bgcolor": "white", + "plot_bgcolor": "#E5ECF6", + "polar": { + "angularaxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + }, + "bgcolor": "#E5ECF6", + "radialaxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + } + }, + "scene": { + "xaxis": { + "backgroundcolor": "#E5ECF6", + "gridcolor": "white", + "gridwidth": 2, + "linecolor": "white", + "showbackground": true, + "ticks": "", + "zerolinecolor": "white" + }, + "yaxis": { + "backgroundcolor": "#E5ECF6", + "gridcolor": "white", + "gridwidth": 2, + "linecolor": "white", + "showbackground": true, + "ticks": "", + "zerolinecolor": "white" + }, + "zaxis": { + "backgroundcolor": "#E5ECF6", + "gridcolor": "white", + "gridwidth": 2, + "linecolor": "white", + "showbackground": true, + "ticks": "", + "zerolinecolor": "white" + } + }, + "shapedefaults": { + "line": { + "color": "#2a3f5f" + } + }, + "ternary": { + "aaxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + }, + "baxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + }, + "bgcolor": "#E5ECF6", + "caxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + } + }, + "title": { + "x": 0.05 + }, + "xaxis": { + "automargin": true, + "gridcolor": "white", + "linecolor": "white", + "ticks": "", + "title": { + "standoff": 15 + }, + "zerolinecolor": "white", + "zerolinewidth": 2 + }, + "yaxis": { + "automargin": true, + "gridcolor": "white", + "linecolor": "white", + "ticks": "", + "title": { + "standoff": 15 + }, + "zerolinecolor": "white", + "zerolinewidth": 2 + } + } + }, + "title": { + "text": "Scatter Plot of Outcome vs. Score by Treatment Status" + }, + "xaxis": { + "anchor": "y", + "domain": [ + 0, + 1 + ], + "title": { + "text": "Score" + } + }, + "yaxis": { + "anchor": "x", + "domain": [ + 0, + 1 + ], + "title": { + "text": "Outcome" + } + } + } + } + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "fig = px.scatter(\n", + " x=df['score'],\n", + " y=df['y'],\n", + " color=df['d'].astype(bool),\n", + " labels={\n", + " \"x\": \"Score\", \n", + " \"y\": \"Outcome\",\n", + " \"color\": \"Treatment\"\n", + " },\n", + " title=\"Scatter Plot of Outcome vs. Score by Treatment Status\"\n", + ")\n", + "\n", + "fig.update_layout(\n", + " xaxis_title=\"Score\",\n", + " yaxis_title=\"Outcome\"\n", + ")\n", + "fig.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Oracle Values and Comparisons\n", + "\n", + "The generated oracle values for the potential outcomes can be used in a kernel regression to get an oracle estimator at the cutoff. \n", + "\n", + "Since in the fuzzy design, we calculate the treatment effect on the treated, we drop defiers for the oracle computation." + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The oracle LATE is estimated as 0.9087280080883967\n" + ] + }, + { + "data": { + "application/vnd.plotly.v1+json": { + "config": { + "plotlyServerURL": "https://plot.ly" + }, + "data": [ + { + "marker": { + "color": "blue" + }, + "mode": "markers", + "name": "ITE", + "type": "scatter", + "x": [ + 0.4967141530112327, + 0.6476885381006925, + 1.5230298564080254, + 1.5792128155073915, + 0.7674347291529088, + 0.5425600435859647, + -0.46572975357025687, + 0.24196227156603412, + 0.3142473325952739, + 1.465648768921554, + 0.06752820468792384, + 0.11092258970986608, + 0.37569801834567196, + -0.2916937497932768, + 1.8522781845089378, + -0.013497224737933921, + 0.822544912103189, + -1.2208436499710222, + 0.2088635950047554, + -1.3281860488984305, + 0.19686123586912352, + 0.7384665799954104, + 0.1713682811899705, + -0.4606387709597875, + 1.0571222262189157, + 0.3436182895684614, + 0.324083969394795, + 0.6116762888408679, + 1.030999522495951, + 0.9312801191161986, + 0.33126343140356396, + 0.9755451271223592, + -0.18565897666381712, + -1.1962066240806708, + 0.812525822394198, + 1.356240028570823, + 1.0035328978920242, + 0.36163602504763415, + -0.6451197546051243, + 1.5380365664659692, + 1.5646436558140062, + 0.8219025043752238, + 0.08704706823817122, + 0.0917607765355023, + -0.21967188783751193, + 0.3571125715117464, + 1.477894044741516, + 0.9154021177020741, + 0.32875110965968446, + 0.5132674331133561, + 0.09707754934804039, + -0.39210815313215763, + 0.29612027706457605, + 0.26105527217988933, + 0.00511345664246089, + -1.4153707420504142, + -0.3427145165267695, + 0.4040508568145384, + 1.8861859012105302, + 0.17457781283183896, + 0.25755039072276437, + 0.06023020994102644, + 0.30154734233361247, + 1.1428228145150205, + 0.7519330326867741, + 0.7910319470430469, + -0.9093874547947389, + 1.4027943109360992, + 0.5868570938002703, + 2.1904556258099785, + 0.09965136508764122, + 0.06856297480602733, + 0.4735924306351816, + 1.5499344050175394, + -0.7832532923362371, + -0.3220615162056756, + 0.8135172173696698, + 0.22745993460412942, + 1.307142754282428, + 0.1846338585323042, + 0.25988279424842353, + 0.7818228717773104, + 0.5219415656168976, + 0.29698467323318606, + 0.25049285034587654, + 0.3464482094969757, + 0.23225369716100355, + 0.29307247329868125, + 1.8657745111447566, + 0.4738329209117875, + 0.6565536086338297, + -0.9746816702273214, + 0.787084603742452, + 1.158595579007404, + 0.9633761292443218, + 0.4127809269364983, + 0.82206015999449, + 1.8967929826539474, + -0.7537361643574896, + -0.0771017094141042, + 0.3411519748166439, + 0.27669079933001905, + 0.8271832490360238, + 0.01300189187790702, + 1.4535340771573169, + 2.720169166589619, + 0.6256673477650062, + -0.8571575564162826, + 0.4824724152431853, + 0.714000494092092, + 0.47323762457354485, + -0.4465149520670211, + 0.8563987943234723, + 0.21409374413020396, + -1.245738778711988, + 0.3853173797288368, + -0.883857436201133, + 0.1537251059455279, + 0.058208718445999896, + 0.5607845263682344, + 1.083051243175277, + 1.053802052034903, + -1.377669367957091, + 0.5150352672086598, + 0.5137859509122088, + 0.5150476863060479, + 3.852731490654721, + 1.135565640180599, + 0.9540017634932023, + 0.651391251305798, + 0.7589692204932674, + -0.23681860674000887, + -0.48536354782910346, + 0.08187413938632256, + 2.3146585666735087, + 0.6862601903745135, + -1.6127158711896517, + 1.088950596967366, + 0.06428001909546277, + 0.6795977489346758, + 0.21645858958197486, + 0.045571839903813784, + 2.1439440893253257, + 0.6339190223180112, + -2.025142586657607, + 0.18645431476942764, + 0.852433334796224, + 0.5049872789804571, + 0.8657551941701215, + -1.2002964070557762, + -0.6533292325737119, + 1.7654542402810969, + 0.40498171096095553, + 0.9178619470547761, + 2.1221561970126332, + 1.0324652605511468, + 1.2669111491866227, + -0.7076694656187807, + 0.44381942814622843, + 0.7746340534293368, + 1.6324113039316352, + 0.13074057728609134, + 1.4412732890661155, + 1.1631637521549596, + 0.46210347426327075, + 0.19905969557347003, + 0.06980208499001891, + 0.11351734525124804, + 0.6621306745210467, + 1.586016816145352, + 2.1330333746562666, + 0.5883172064845765, + 0.28099186773503265, + -0.20812225035727522, + 0.8496020970210246, + -0.6929095952606542, + 0.8995998754332507, + 0.30729952087660933, + 0.8128621188389601, + 0.6296288419236122, + 0.7472936051232618, + 0.6103702654334648, + 0.117327383308782, + 1.277664895788425, + 0.5470973811700379, + 1.09877685198719, + 0.8254163489880298, + 0.8135096360006385, + 1.305478807154329, + 0.02100384163275905, + 0.6819529712949639, + 0.3241663524884421, + 0.09699596499271819, + 0.5951570254369136, + 2.0923872756854602, + -1.006017381499702, + -1.2141886127877322, + 1.1581108735000678, + 0.7916626939629359, + 0.6241198170521551, + 0.6283455092642799, + -0.8972543714858315, + 0.07580455819372633, + 0.9751197334177512, + -0.32138584165299344, + 0.41293145427562433, + -0.8222203955664315, + 0.2436872114919123, + 0.24496657110872277, + -0.4710383056183228, + 0.2320499373576363, + -1.4480843414973241, + 0.3109075655980046, + 1.475356216949552, + 0.8576596232020194, + -0.01901620790268883, + -1.0025293646378088, + 0.3227185603380895, + 0.5193465142411723, + 1.5327389130025777, + 0.40171172209894146, + 0.6901439917111125, + -0.40122047188583626, + 0.22409248181041677, + 0.01259240078179486, + 0.024510174258942714, + 0.49799829124544975, + 1.4511436077950417, + 0.9592708260852069, + 2.1531824575115563, + -0.7673475628880495, + 0.8723206367206782, + 0.18334200573835174, + 2.1898029332176723, + -0.8397218421807761, + -0.5993926454440222, + -0.525755021680761, + -0.759132661553698, + 0.15039378647620763, + 0.34175597577715944, + 0.9504238381860503, + -0.5769036556624031, + -0.898414671348358, + 0.4919191715065057, + 1.8314587658543537, + 1.179440120721287, + 1.3538723741654128, + 0.005243699718183166, + 0.046980593764742055, + 0.6228499323474987, + 0.12029563171189886, + 0.514438834058749, + 0.7116148780888898, + 1.277676821898509, + 0.33231401197959165, + 1.551151975522523, + 0.11567463429285867, + 1.1792971840638264, + 0.06751848141010895, + 2.060747924881987, + 1.7553408424432044, + 0.9715709509543554, + 0.6453759495851475, + 1.3686315575323487, + 0.6860514599984393, + 1.0584244868495878, + -0.26940683444455776, + 0.7175422557959623, + 1.502357052096028, + 0.07409478041977519, + 1.6286155455712918, + -0.05554769889661878, + 0.3840654489393073, + -1.3044695005048532, + 0.6696725488300385, + 0.36659824609684827, + -1.0592135218889516, + 0.9551423205012383, + 0.5040465155178444, + -0.5302576183724408, + -0.553649305347182, + 0.03526355197172861, + 0.213979910734222, + -0.11232804969082982, + -0.22096959953322298, + 0.6141667000434252, + 0.7575077100473051, + 1.3668742674445247, + 1.6449677135012837, + 0.5765569630557664, + 3.0788808084552377, + 1.1195749114345768, + 0.2034636358672231, + -1.4222537095976742, + 1.6871416350725648, + 0.8816397569494505, + 1.4799441388900259, + 0.0773683076476183, + 1.5231240772696573, + 0.5389100436846587, + 0.9261775475316414, + 1.9094166404701305, + 0.5629692366905709, + -0.48712538376469605, + -0.5923939242388692, + 0.04852162794482699, + 0.2704568257798388, + -0.23894804686640975, + 0.755391225825756, + 0.5009171876243808, + -0.977555244798551, + 0.09933230542922587, + 0.751387123371789, + 0.543360192379935, + 0.5705986685931593, + 0.048084946661381994, + 0.25972250172148187, + 0.6385924587773739, + -0.06607979864731657, + -0.6518361078021592, + 0.047398671316414016, + 1.0062928092144405, + 0.8356921120651418, + -1.129706854657618, + 0.5298041779152828, + 1.4415686206579004, + 0.57707212718054, + 0.37114587337130883, + 0.08658978747289992, + 1.1677820616598074, + 0.2544208433012131, + 0.3376026620752022, + 0.39445214237829684, + 0.2897748568964129, + 2.075400798645439, + 0.8711247034316923, + 1.2012139221639448, + 0.0184183791895517, + 1.6764373122752827, + 0.32692737376416264, + 0.8294055811834892, + -2.211135309007885, + 0.23561455810856594, + 0.7708651938869668, + -1.4785862457798415, + 1.143754043206929, + 0.3384964074944141, + 0.6327818661062848, + 2.270692857804396, + 0.18186625505849516, + 0.8303358165442456, + -0.8560838259088672, + 0.07156623721939247, + 0.47897982574639186, + 0.3336621052869483, + 1.0375399442578992, + 0.3773004930448522, + 0.7569886166453519, + 0.8696059201056602, + 1.355637858804951, + 0.41343490322370086, + 1.876795812558066, + -1.7787202489042786, + 1.496044311489183, + 0.6543656563540577, + 0.2799686263198203, + 2.4457519796168263, + 0.1292211819752275, + 0.10939479460489289, + 0.725766623898692, + 0.4810092317367132, + 0.22388402427913137, + 0.4714683571359957, + 1.3454200461549777, + 1.593186626639397, + -0.5112156764311852, + -0.9896048202585809, + 1.0941915184709485, + 1.5295503194606137, + -1.0121043752601675, + 0.8231705839619146, + 0.07331796718840389, + -1.2899608997410539, + -1.295078772063616, + 1.669021525289393, + -2.6968866429415717, + -0.23093453020867796, + 0.6962063648134184, + 1.8489560949453452, + 1.1265650295477574, + -0.26888869055483056, + 2.5733598032498604, + 0.05921843401448826, + 0.013929291912946203, + 0.19808476076785494, + -0.5468589412403921, + 0.10643022769189683, + 1.5039929885826886, + 1.0915068519224618, + 1.246085192497629, + 1.7522704434236227, + 0.9356783931474612, + 1.2715550949941588, + 0.7216720640432351, + -0.5245202662797737, + 0.48937456122791806, + 0.7129984301723881, + -0.24032539815813503, + 0.7109599682034915, + 0.44426331148603976, + -0.3609661658190799, + 1.159329803364248, + 0.6159356069442637, + 0.5931012579683838, + 0.326133022242118, + 0.924027019206901, + 1.0490092258368893, + -1.5566291735239037, + 0.6060099513456396, + 1.7547941819843647, + 1.6964563682900382, + 0.2110174672026184, + 1.1033018820165215, + 0.11422764866203965, + 0.1503017614618776, + -0.36361221221385587, + 0.3078017688920592, + -1.7101683926566256, + -1.348185422105713, + 0.743264094022715, + 0.17086543812794186, + 0.01843393306539316, + 0.19584525509768155, + 0.40825275571447184, + 1.0291556373256436, + 0.472597482413043, + 0.25602973431387566, + 0.9826909839455139, + 1.6654744444625766, + 1.0143700650181304, + 0.026091050210833786, + 0.517659020469123, + -0.7257438131534656, + 0.18676676447707832, + -0.6115178029919482, + -0.9758732529773327, + -0.949398888831943, + 2.632382064837391, + 0.4933179008808892, + 0.1848361236948739, + 0.7003098794089914, + 0.12200981464536144, + 2.5600845382687947, + 1.1492733262856758, + -0.7031764251258874, + -0.0349884904969617, + 1.77080063563551, + 1.8124485579969287, + 0.7077519354554754, + 0.632407739055521, + 0.9725544496267299, + 0.6218099622171964, + -0.7271371758248686, + -0.07443342910004629, + 0.620672097550678, + 0.17770100093325383, + 0.3801978510059632, + 0.5597904479310398, + 1.0807807255546218, + 0.8339221545489041, + 0.4591800792284367, + 0.42961821913258585, + 0.20768768716311115, + 0.27157883719537346, + -1.2767485758203094, + 1.0531528533329035, + 0.6815006973726244, + 0.028318376130461172, + 0.02975613949574519, + 0.9382838059759977, + 0.09612077694098337, + 0.22213377163371284, + 1.2557561255735208, + 0.19655477651157463, + 1.0318445394686349, + 0.26705026586925884, + 0.889630795623437, + 0.08228398927542419, + 1.0654803750653512, + 1.40934744018558, + -0.36283856043965906, + -0.4455025214007718, + 1.453384477117701, + 1.5795721457307124, + -0.03468488738678118, + 0.23421473253652075, + 1.5505004928140769, + 0.9843223984765838, + 0.3824097461840506, + 0.1664522082130561, + 0.4924512640081491, + 0.2891686439078181, + 2.4553001399108942, + -0.5309969550018176, + -0.5554771191602547, + 1.1890165311075518, + 1.4205042479898549, + -0.5707462937494763, + -0.8323555731042287, + 0.4714155563864041, + -0.5522230442809712, + 0.6329318177555108, + 0.2029230208512997, + 1.5475052013300616, + 1.7958776730955217, + 0.28586539072490497, + 0.334456789987025, + 0.6585442726728304, + 2.0102045387663496, + -0.1769472274940494, + -0.7982972445384537, + -0.7309300399419191, + 1.7945578635177877, + 0.2237879516388985, + 1.188393273448084, + 2.5269324258736217, + 1.044160877069072, + 0.6818914896263114, + 1.8467073257360336, + 0.5839281853259639, + 0.5906548306923093, + 1.1087035805829077, + 0.820482181197364, + 0.5072740311072977, + 1.066674689589154, + 1.1692955904456728, + 1.3821589910375272, + 0.6487098875896427, + 0.14671368643332283, + 1.2065089665083568, + -0.8169356709872361, + 0.3686733088729012, + 0.028744822934817487, + 1.2784518626072987, + 0.19109906801990334, + 0.04643654815614881, + 0.7462535660272207, + 2.16325472330546, + -0.30777823495300083, + 0.21915032766393897, + 0.24938368371075526, + 1.5774532797634744, + 0.27902152577033923, + 0.6078965097165392, + 0.1866091231563581, + 0.19408999289830758, + 1.073631749859772, + 0.132969674146876, + 1.1950466289248425, + -0.5589218472715883, + 0.37721187506452086, + 1.5655240292343404, + 1.8811570694405901, + 0.4400144500533324, + -0.5020542243526112, + 0.7083564472993533, + 0.24380071377119883, + 0.8724573282801447, + 0.650201177958661, + 1.8466369960476658, + -0.6919080698812444, + -0.045586016355497805, + 0.24333944932269183, + 0.3520553965142968, + 1.4437646040732595, + 1.1172958315881276, + 0.4567532191537839, + 0.5697672802322039, + 0.44770856001731496, + 0.6427227598675439, + 1.3291525301324314, + 0.19652116970147013, + 0.7090037575885123, + 1.4401172154494728, + 0.12810441491078928, + 0.8406435489887241, + -0.4461834332147797, + -0.4523063192490767, + -2.4238793266289567, + -1.5839028234857233, + 0.7604146561442974, + 0.7858001586508322, + 0.42545756178496474, + -1.1583646891925428, + 1.5033983017671506, + 0.20838280794755248, + -0.24717738252059693, + -0.6819842479977986, + 1.7976865268495226, + 0.6408428612670098, + 0.5725827813561586 + ], + "y": [ + 0.9563001398210165, + 0.56367411633477, + -0.1541158912437135, + -0.4852352955880883, + 0.9749591557098078, + 0.9532482011546275, + 0.9810359625397511, + 0.8584971659926595, + 0.7164857012727133, + -0.684061944089911, + 1.1478349536558663, + 0.5623752445244916, + 0.5921896601207891, + 0.7556906707867606, + -0.6099344588446286, + 1.174993192764655, + 0.6812702078645214, + -0.1910008257926794, + 0.9098452623143523, + -0.331579835427364, + 0.26528407184059866, + 0.6682202776103048, + 0.892587956123454, + 1.0834477434550638, + 0.48273180961138795, + 0.6404718820434585, + 1.0296654448326752, + 0.8888567068236917, + 0.3151691071704559, + 0.7473293569218145, + 0.9416682899545545, + 0.6756684272067461, + 1.1542022872675948, + -0.06830394804560314, + 0.22072363938532744, + -0.11105903351945545, + 0.8632020978394257, + 0.8331844817491016, + 0.7823249404317661, + -0.1549166532232853, + -0.18799296041309432, + 0.7193886937443557, + 1.108609822572437, + 1.078706987938265, + 1.2244175497108465, + 1.2572003893815236, + 0.2204784005969529, + 0.07140239901804157, + 0.8794697849553703, + 1.4460663459770196, + 0.8985192954145158, + 0.7012264845546696, + 1.3172985577938938, + 1.2857100440995097, + 1.1444745868801451, + -0.2187434524843057, + 1.01031396105705, + 1.1433587829514091, + -1.1761540162971702, + 0.817258040250942, + 0.5389500243914918, + 1.0557294599219649, + 1.019858793171351, + -0.13458493011177497, + 1.1042159495837627, + 0.22690374601883906, + 0.7489152707441404, + -0.10645352746960057, + 0.9034247129184405, + -1.4151159275807998, + 0.7969447666301743, + 1.0868292941323938, + 1.3514897114163125, + -0.46195752723456285, + 1.0489722291240455, + 1.0482038115098697, + 0.40321159999213485, + 1.0949835521338436, + 0.2178046902003904, + 0.536549182376703, + 0.8737776928672263, + 0.7961869548749969, + 0.5895794961543963, + 1.0547387791614082, + 0.4285260438764187, + 1.0359284978141503, + 1.0272655153619539, + 0.7995459594111727, + -0.4361311962504941, + 0.8486924017798583, + 1.26591038741436, + 0.6302206955415824, + -0.005293741715174605, + 0.6809660061722591, + 0.206724354648266, + 0.9622231496366394, + 0.5772050056221016, + -0.407987770863417, + 1.211101815241379, + 0.9637223613119166, + 0.8173473836291141, + 1.0863998918285072, + 0.1971836141539085, + 1.245471083884693, + -0.2343543146878968, + -3.021893249632707, + 0.901896893662359, + 0.4769390146479713, + 0.7819116938876144, + 1.2368669741121874, + 0.9378192827642735, + 0.5150477565188947, + 1.0346701123139135, + 0.9251789173627163, + 0.721391561817607, + 1.2931736260544318, + 0.2695498604930684, + 0.8514617419650712, + 0.6619124847370745, + 0.7043349211688326, + 0.16003071404853308, + 0.24708028854800634, + 0.19018047263865126, + 0.8844963590105799, + 1.1755456319294797, + 0.9889579337397474, + -6.0904525807500525, + 0.617447464483649, + 0.1700859986338914, + 0.8952893796861678, + 0.593436806337198, + 0.8872226925267676, + 0.8889733337883141, + 0.5703883258506366, + -1.3546144819739214, + 0.637125112358905, + -0.5092836924829768, + -0.1035769700115079, + 0.7556593987319742, + 1.0440227788781469, + 1.121545094533149, + 0.6906587580959118, + -1.2648213369336845, + 0.49967360043236475, + -0.5228269636097231, + 1.194232661894962, + 0.6556748715093209, + 0.652338576688055, + -0.010980905338740854, + 0.45211336060591156, + 0.12855414995033726, + -0.2962317602001088, + 0.9802321918504715, + 0.8635711176682073, + -0.9621083529291781, + 1.013077041454308, + -0.28244935194600185, + 0.7899506112593409, + 0.7701784174792903, + 0.7151342546316997, + -0.31526453433330515, + 1.0804252625074673, + -0.2264193324048076, + 0.22866149444744277, + 1.1082161608113221, + 0.8373829580548566, + 0.9221335684678982, + 1.318212868859485, + 0.4057383124819651, + -0.08023039337461557, + -1.151001280529317, + 0.8939483538945547, + 1.1381708222240827, + 1.2368105592544372, + 0.9422689811247142, + 0.5169703847090368, + 0.0515610320264841, + 0.8865444210578453, + 0.5464127341579301, + 0.6825084053374243, + 0.5081622899457074, + 0.8371022805002184, + 1.1811096730838315, + 0.022423432463402726, + 0.4387346343984566, + 0.6793245602557278, + 0.8028916422140373, + 0.5818466131588043, + 0.5341628939672147, + 0.6325151846279411, + 0.8737105476087352, + 1.1129698397950074, + 1.0210212650680033, + 1.320807734620895, + -1.164990103194113, + 0.3230203187153826, + 0.03814108520431381, + 0.5102447951870595, + 0.7302623216406139, + 0.80755236430032, + 0.5655553937883895, + 0.894029524442537, + 1.1053503280568655, + 0.4673162025076554, + 1.4154531571486249, + 0.5053482840674874, + 0.8564501664225174, + 1.0359770054282649, + 0.8695500247437793, + 0.8224547762176948, + 1.0117504789609697, + -0.24736193665003992, + 0.8876563408230493, + -0.0389953664814513, + 1.1521075033968797, + 1.4629612379490884, + 0.24454684390609577, + 1.2858986094105873, + 0.5673877663248503, + -0.16637641335700692, + 1.3720927657891322, + 0.4417114804551756, + 0.7672837737744502, + 0.7863351277791972, + 1.1487572086456468, + 1.2966914216938221, + 0.7881832822239443, + -0.29694689420451437, + 0.5862867286437865, + -1.3596353791589806, + 0.3943346214586967, + 0.6924704245000584, + 1.2531174073535283, + -1.594946825392661, + 0.9329518548193081, + 0.9761810993294707, + 0.9240083177683936, + 1.0732412099749309, + 1.4748698703444418, + 1.1376649245574466, + 0.6342281276272601, + 0.9572430640153451, + 0.4668067525658358, + 0.9177546058661825, + -0.6281323420014395, + 0.3873806317844921, + -0.21119245958653998, + 0.9683868246169265, + 0.8112173887449838, + 0.37373595920803826, + 1.3718770456888314, + 1.1762514908920725, + 0.7111689701343504, + -0.23813071716937895, + 0.7900352173658547, + -0.04857026957020749, + 0.7472630098405544, + 0.654699281659755, + 0.530870304637542, + -0.8201511092481458, + -0.7209344948697729, + 0.8370957504897982, + 1.132391181727895, + -0.08671751054972798, + 0.9455713161022101, + 0.48818751964288687, + 1.0852033744437637, + 0.5564710223117348, + 0.12359734045819493, + 1.0593418322623762, + -0.37787079302075677, + 0.86684935048427, + 0.8366005128838205, + -0.19205031304815345, + 0.548062759876486, + 1.3965824808212073, + 0.5961301439715276, + 0.7898704824444307, + 0.8135177494530543, + 0.20559883101196785, + 0.4267052934828295, + 1.2505849650951975, + 1.4760969535101167, + 1.4469983739825047, + 1.0470789889837078, + 0.9823357035202829, + 0.7238639541714589, + -0.12541382261021283, + -0.37868101855866954, + 0.8352006472854678, + -2.8463370572701963, + 0.6137469010204342, + 0.5380254622156477, + 0.026439586508798296, + -0.2848070072719229, + 0.8510313006096251, + 0.1780193646249062, + 1.136313468644075, + 0.12491769536214181, + 1.2091169106590662, + 0.6171957216661017, + -0.4661398035054569, + 0.6392374924982285, + 0.5152351252925174, + 0.8728488043574649, + 1.031671222085576, + 0.4241319372240784, + 0.777399855636452, + 0.7653565646752813, + 0.8109288729115778, + 0.504839904747777, + 1.1744694571616545, + 0.9390571050207512, + 1.0529630008374093, + 0.8978568460609795, + 1.2692760131104261, + 0.9279180145196091, + 0.9828634769589168, + 1.1398274215823938, + 0.5057853177207998, + 0.9540909489200962, + 0.5786905803618954, + 0.7802049737921424, + 0.4341867241481321, + 0.7556836444426276, + -0.008044279543092614, + 1.099918374013043, + 0.9727472292873347, + 1.1322124758005339, + 0.7502140910618458, + 0.9929526348239843, + 0.6875320078952991, + 0.8671860581509376, + 0.6791798639154116, + -1.0738318740293842, + 0.8020716161683996, + 0.25799169169309355, + 0.9652999025407496, + -0.4971794775816354, + 0.9370670037384968, + 0.4059285443250036, + -0.8427808354386479, + 0.5102967163939187, + 0.7353056432675316, + 0.292079990232716, + 0.5501580994707236, + 0.6715080217865079, + 0.43425235064552004, + -1.8911054714604973, + 1.157908060266615, + 0.14316535949595766, + 0.48285328410021777, + 0.4243826124192296, + 0.9496812323539475, + 1.6879141016127015, + 0.3069171080514046, + 1.159719520072322, + 1.085621221626294, + 0.903434870310913, + 0.06563847547904222, + 1.4723802702625428, + -0.07453965990164879, + -0.49397607734260335, + -0.20351641485852578, + 0.4231707849572679, + 1.3807462731588114, + -1.240276516369139, + 1.2151828177540924, + 0.9448244935527788, + 0.58166011113553, + 1.1994532504848616, + 1.402760145308721, + 0.8015861288080641, + 0.1083945600408569, + -0.5939049568927177, + 1.1385312487605914, + 0.644944664274214, + 0.5390856276849869, + -0.6463589752796155, + 0.4376603856464, + 0.5991026174011083, + 0.8397883459725874, + -0.2516714230138626, + 0.6954985703850953, + 0.28268629740071005, + -2.307361727132489, + 1.0322020081258416, + 0.266018526571854, + -0.42021911611331486, + 0.14293136146524787, + 0.9429742248335828, + -2.866127731118459, + 0.43090872684107095, + 1.2451438469696305, + 1.2738053595085224, + 0.7572411855250314, + 0.9085008015175964, + -0.16837306931488838, + 0.5578351873574814, + 0.34676917608291435, + -0.6881862730608398, + 0.21206701837873299, + 0.2885856168491827, + 1.1690168843213433, + 0.9917970065262716, + 0.8777863925298479, + 1.3547397711665061, + 1.1156789421300028, + 0.421817853732426, + 1.068139903399608, + 0.6160101361704124, + 0.4964544148950425, + 1.3201101193952862, + 0.6487972595326825, + 0.7358112138595834, + 0.42865906336296256, + 0.7462985429415265, + -0.15281460650314593, + 0.7100047001564285, + -0.5404926497902216, + -0.18287768715806862, + 0.7571862642882445, + 0.12926164573043408, + 0.8188088059158538, + 0.9585527804039233, + 0.6085574624384116, + 0.6328923218837383, + -0.4370935969245155, + -0.261566434547124, + 0.9021861091862688, + 1.3686150398222336, + 0.77430344372668, + 0.7377398980310823, + 0.992962404460414, + 0.5918243045676179, + 0.525726735548286, + 1.1441841860299906, + 0.2054829995662244, + -0.25108916775827517, + 0.6538370002972034, + 1.087353779086893, + 0.973100168568239, + 0.8148446921024002, + 0.6658281956226718, + 0.5744255936506004, + 1.0092103248051427, + 0.4467885736638151, + -2.488029667346201, + 1.1305975322386166, + 0.9993273262088715, + 0.35878205767483706, + 1.0361012576168327, + -2.64890706673106, + 0.26174856989107553, + 1.4318883098241673, + 1.0925241167292188, + -0.8107368375176389, + -1.1533783022752133, + 0.7848813930706093, + 1.0455050790980622, + 0.5630296777124313, + 0.7654374775108019, + 0.38513629646339576, + 1.3677694318409113, + 0.5847921878467996, + 0.9981205872690344, + 1.0727371254830136, + 0.5848574429554798, + -0.016043399481949105, + 0.2646280033031587, + 0.9662921589229478, + 1.0368581771069802, + 1.168916525092093, + 1.2669603604271096, + -0.27794837650267584, + 0.6314049798017622, + 1.1266369287160227, + 0.79335728899897, + 0.9385885862887411, + 0.414197010300434, + 1.1034517625983824, + 1.4075679013968454, + 0.09665185259713738, + 1.2713933866833282, + 0.6008036326669455, + 0.9305388295812436, + 0.8419555858452394, + 1.0693167912808779, + 0.3242827886004076, + 0.45860077109701436, + 0.9233643755635512, + 0.587627210427875, + -0.061211756798662975, + -0.4151959279844366, + 0.5398653260634977, + 0.9717979751171804, + -0.1372995970776998, + 1.1912527009076874, + 1.5764185342144459, + 0.41956825566119216, + 1.1887216351250016, + 0.7035185263910311, + -1.8310371496656286, + 0.5121210709177894, + 0.8368710277624276, + 0.5990825628893295, + -0.1617395170166951, + 0.08612230665029008, + 0.7188694618861549, + 0.9851651336883385, + 0.43929964771835683, + 0.6498502293364057, + 0.8441525153614444, + -0.40769225855074254, + -1.0464430630061532, + 0.6520807098485237, + 1.526141276237392, + 0.8341414512867047, + -1.1189061809947596, + 0.886926141174585, + 0.8232054990971224, + 0.47043759215637837, + -0.3206936675078027, + 0.9339047912553697, + 0.9161887690720951, + -2.1609239924323207, + 0.6317919172442861, + 0.5931016040575645, + -0.7644003504062162, + 0.6879636575912578, + 0.27870759574025983, + 0.8195757378966464, + 0.6369072101602864, + 0.7966317247281332, + 0.9106786291024548, + 0.3588920460560159, + -0.10703443045344851, + 1.0251253274956365, + 1.0502000005174228, + 0.4851932255318019, + 0.8437075208713256, + 0.9296195660142904, + 1.0228141299814673, + 0.4543894516873306, + 1.2086731537247348, + 1.125433159483579, + 0.9358174594959632, + -1.1292457072601332, + 1.31904041334615, + 0.946014889798491, + 1.1789178454720606, + 0.29181746457932434, + 0.644349958709548, + 0.7028211385559339, + 0.8797565659385773, + 1.5770508795675369, + 0.16369726588541234, + 0.9416833585722975, + 0.20942275474124195, + 0.7741633752412149, + 1.104223707437928, + -0.17680183333032562, + -0.5119795264145526, + 0.9187491394644596, + 0.7374246303882759, + 0.4800954389039349, + 0.7262559731980465, + 0.8181865091532075, + 0.5396633947391862, + -0.47532423660184886, + 0.9782621538627065, + 0.5999574851995548, + 1.0175762880576382, + 0.6207390690877848, + 0.28728114262511806, + 0.25201167033693916, + 1.014646347061636, + 1.3676808949175694, + 0.9653710005187328, + 0.8767821170649297, + 0.6837074755847263, + 0.7919288977266905, + 0.784464398129858, + -0.15314472866279072, + 0.9488511469153731, + 0.7279368546115244, + 1.2782321537858627, + 0.934429392176205, + -1.6644615965248577, + -0.1543790453058138, + 0.5949757123174262, + 0.6904392304281637, + 0.8688509856416419, + -0.5292047980097969, + -0.06741209717746699, + 0.9299041119046647, + 1.2594055937119752, + 0.8529603369909182, + -0.9111467447174117, + 0.24200677983935082, + 0.7044291340611268 + ] + }, + { + "line": { + "color": "red" + }, + "mode": "lines", + "name": "Average Effect Estimate", + "type": "scatter", + "x": [ + -1, + -0.9797979797979798, + -0.9595959595959596, + -0.9393939393939394, + -0.9191919191919192, + -0.898989898989899, + -0.8787878787878788, + -0.8585858585858586, + -0.8383838383838383, + -0.8181818181818181, + -0.797979797979798, + -0.7777777777777778, + -0.7575757575757576, + -0.7373737373737373, + -0.7171717171717171, + -0.696969696969697, + -0.6767676767676767, + -0.6565656565656566, + -0.6363636363636364, + -0.6161616161616161, + -0.5959595959595959, + -0.5757575757575757, + -0.5555555555555556, + -0.5353535353535352, + -0.5151515151515151, + -0.4949494949494949, + -0.4747474747474747, + -0.4545454545454545, + -0.43434343434343425, + -0.41414141414141414, + -0.3939393939393939, + -0.3737373737373737, + -0.3535353535353535, + -0.33333333333333326, + -0.31313131313131304, + -0.2929292929292928, + -0.2727272727272727, + -0.2525252525252525, + -0.23232323232323226, + -0.21212121212121204, + -0.19191919191919182, + -0.1717171717171716, + -0.1515151515151515, + -0.13131313131313127, + -0.11111111111111105, + -0.09090909090909083, + -0.07070707070707061, + -0.050505050505050386, + -0.030303030303030276, + -0.010101010101010055, + 0.010101010101010166, + 0.030303030303030498, + 0.05050505050505061, + 0.07070707070707072, + 0.09090909090909105, + 0.11111111111111116, + 0.1313131313131315, + 0.1515151515151516, + 0.1717171717171717, + 0.19191919191919204, + 0.21212121212121215, + 0.2323232323232325, + 0.2525252525252526, + 0.27272727272727293, + 0.29292929292929304, + 0.31313131313131315, + 0.3333333333333335, + 0.3535353535353536, + 0.3737373737373739, + 0.39393939393939403, + 0.41414141414141437, + 0.4343434343434345, + 0.4545454545454546, + 0.4747474747474749, + 0.49494949494949503, + 0.5151515151515154, + 0.5353535353535355, + 0.5555555555555556, + 0.5757575757575759, + 0.595959595959596, + 0.6161616161616164, + 0.6363636363636365, + 0.6565656565656568, + 0.6767676767676769, + 0.696969696969697, + 0.7171717171717173, + 0.7373737373737375, + 0.7575757575757578, + 0.7777777777777779, + 0.7979797979797982, + 0.8181818181818183, + 0.8383838383838385, + 0.8585858585858588, + 0.8787878787878789, + 0.8989898989898992, + 0.9191919191919193, + 0.9393939393939394, + 0.9595959595959598, + 0.9797979797979799, + 1 + ], + "y": [ + 0.4146135659480194, + 0.43183999953506297, + 0.44873313587293795, + 0.46529582031500805, + 0.4815311994405609, + 0.49744267731294384, + 0.5130338716186418, + 0.5283085700445329, + 0.5432706871701727, + 0.5579242220749304, + 0.5722732167880488, + 0.5863217156451277, + 0.6000737255583131, + 0.6135331771607767, + 0.6267038867496892, + 0.6395895189261416, + 0.6521935498158709, + 0.6645192307510381, + 0.6765695523007661, + 0.6883472085563256, + 0.6998545616054654, + 0.7110936061689092, + 0.7220659344198483, + 0.7327727010637071, + 0.7432145888194539, + 0.7533917745143877, + 0.7633038960801019, + 0.772950020816786, + 0.7823286153740556, + 0.791437517976994, + 0.800273913503281, + 0.8088343120881626, + 0.817114531995241, + 0.8251096875388393, + 0.8328141828741906, + 0.8402217124807976, + 0.8473252691480929, + 0.8541171602273652, + 0.8605890328365611, + 0.8667319085928793, + 0.8725362283006876, + 0.8779919068396554, + 0.8830883982818141, + 0.8878147710205349, + 0.8921597924248734, + 0.8961120222472901, + 0.8996599137210285, + 0.9027919209969528, + 0.9054966113006203, + 0.9077627799519513, + 0.9095795661948431, + 0.9109365676441488, + 0.9118239510827995, + 0.9122325573396685, + 0.9121539980534535, + 0.9115807422795954, + 0.9105061911227122, + 0.9089247388686711, + 0.9068318194372105, + 0.9042239373639538, + 0.9010986829334873, + 0.8974547315054748, + 0.8932918274860597, + 0.888610753780354, + 0.8834132879039636, + 0.8777021462201569, + 0.8714809179955335, + 0.8647539911257813, + 0.8575264714723587, + 0.8498040977727087, + 0.841593154045315, + 0.8329003813139498, + 0.82373289033152, + 0.8140980768033322, + 0.8040035404026006, + 0.7934570086481527, + 0.782466266485187, + 0.7710390921832351, + 0.7591831999485428, + 0.7469061894468714, + 0.7342155022515247, + 0.7211183850732384, + 0.7076218594951315, + 0.6937326978275089, + 0.6794574046136038, + 0.6648022032569367, + 0.6497730272020931, + 0.6343755150810946, + 0.618615009234737, + 0.6024965570297082, + 0.5860249144154868, + 0.5692045511975362, + 0.5520396575428543, + 0.5345341512785668, + 0.5166916855920632, + 0.4985156567906399, + 0.4800092118284397, + 0.4611752553575035, + 0.4420164561071319, + 0.42253525244080065 + ] + } + ], + "layout": { + "legend": { + "x": 0.8, + "y": 0.2 + }, + "template": { + "data": { + "bar": [ + { + "error_x": { + "color": "#2a3f5f" + }, + "error_y": { + "color": "#2a3f5f" + }, + "marker": { + "line": { + "color": "#E5ECF6", + "width": 0.5 + }, + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "bar" + } + ], + "barpolar": [ + { + "marker": { + "line": { + "color": "#E5ECF6", + "width": 0.5 + }, + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "barpolar" + } + ], + "carpet": [ + { + "aaxis": { + "endlinecolor": "#2a3f5f", + "gridcolor": "white", + "linecolor": "white", + "minorgridcolor": "white", + "startlinecolor": "#2a3f5f" + }, + "baxis": { + "endlinecolor": "#2a3f5f", + "gridcolor": "white", + "linecolor": "white", + "minorgridcolor": "white", + "startlinecolor": "#2a3f5f" + }, + "type": "carpet" + } + ], + "choropleth": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "choropleth" + } + ], + "contour": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "contour" + } + ], + "contourcarpet": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "contourcarpet" + } + ], + "heatmap": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "heatmap" + } + ], + "heatmapgl": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "heatmapgl" + } + ], + "histogram": [ + { + "marker": { + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "histogram" + } + ], + "histogram2d": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "histogram2d" + } + ], + "histogram2dcontour": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "histogram2dcontour" + } + ], + "mesh3d": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "mesh3d" + } + ], + "parcoords": [ + { + "line": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "parcoords" + } + ], + "pie": [ + { + "automargin": true, + "type": "pie" + } + ], + "scatter": [ + { + "fillpattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + }, + "type": "scatter" + } + ], + "scatter3d": [ + { + "line": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatter3d" + } + ], + "scattercarpet": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattercarpet" + } + ], + "scattergeo": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattergeo" + } + ], + "scattergl": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattergl" + } + ], + "scattermapbox": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattermapbox" + } + ], + "scatterpolar": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterpolar" + } + ], + "scatterpolargl": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterpolargl" + } + ], + "scatterternary": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterternary" + } + ], + "surface": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "surface" + } + ], + "table": [ + { + "cells": { + "fill": { + "color": "#EBF0F8" + }, + "line": { + "color": "white" + } + }, + "header": { + "fill": { + "color": "#C8D4E3" + }, + "line": { + "color": "white" + } + }, + "type": "table" + } + ] + }, + "layout": { + "annotationdefaults": { + "arrowcolor": "#2a3f5f", + "arrowhead": 0, + "arrowwidth": 1 + }, + "autotypenumbers": "strict", + "coloraxis": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "colorscale": { + "diverging": [ + [ + 0, + "#8e0152" + ], + [ + 0.1, + "#c51b7d" + ], + [ + 0.2, + "#de77ae" + ], + [ + 0.3, + "#f1b6da" + ], + [ + 0.4, + "#fde0ef" + ], + [ + 0.5, + "#f7f7f7" + ], + [ + 0.6, + "#e6f5d0" + ], + [ + 0.7, + "#b8e186" + ], + [ + 0.8, + "#7fbc41" + ], + [ + 0.9, + "#4d9221" + ], + [ + 1, + "#276419" + ] + ], + "sequential": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "sequentialminus": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ] + }, + "colorway": [ + "#636efa", + "#EF553B", + "#00cc96", + "#ab63fa", + "#FFA15A", + "#19d3f3", + "#FF6692", + "#B6E880", + "#FF97FF", + "#FECB52" + ], + "font": { + "color": "#2a3f5f" + }, + "geo": { + "bgcolor": "white", + "lakecolor": "white", + "landcolor": "#E5ECF6", + "showlakes": true, + "showland": true, + "subunitcolor": "white" + }, + "hoverlabel": { + "align": "left" + }, + "hovermode": "closest", + "mapbox": { + "style": "light" + }, + "paper_bgcolor": "white", + "plot_bgcolor": "#E5ECF6", + "polar": { + "angularaxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + }, + "bgcolor": "#E5ECF6", + "radialaxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + } + }, + "scene": { + "xaxis": { + "backgroundcolor": "#E5ECF6", + "gridcolor": "white", + "gridwidth": 2, + "linecolor": "white", + "showbackground": true, + "ticks": "", + "zerolinecolor": "white" + }, + "yaxis": { + "backgroundcolor": "#E5ECF6", + "gridcolor": "white", + "gridwidth": 2, + "linecolor": "white", + "showbackground": true, + "ticks": "", + "zerolinecolor": "white" + }, + "zaxis": { + "backgroundcolor": "#E5ECF6", + "gridcolor": "white", + "gridwidth": 2, + "linecolor": "white", + "showbackground": true, + "ticks": "", + "zerolinecolor": "white" + } + }, + "shapedefaults": { + "line": { + "color": "#2a3f5f" + } + }, + "ternary": { + "aaxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + }, + "baxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + }, + "bgcolor": "#E5ECF6", + "caxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + } + }, + "title": { + "x": 0.05 + }, + "xaxis": { + "automargin": true, + "gridcolor": "white", + "linecolor": "white", + "ticks": "", + "title": { + "standoff": 15 + }, + "zerolinecolor": "white", + "zerolinewidth": 2 + }, + "yaxis": { + "automargin": true, + "gridcolor": "white", + "linecolor": "white", + "ticks": "", + "title": { + "standoff": 15 + }, + "zerolinecolor": "white", + "zerolinewidth": 2 + } + } + }, + "title": { + "text": "Locally Linear Kernel Regression of ITE on Score" + }, + "xaxis": { + "title": { + "text": "Score" + } + }, + "yaxis": { + "title": { + "text": "Effect" + } + } + } + } + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "complier_mask = ((data_dict[\"score\"] < 0) & (data_dict[\"D\"] == False)) | ((data_dict[\"score\"] > 0) & (data_dict[\"D\"] == True))\n", + "ite = data_dict['oracle_values']['Y1'][complier_mask] - data_dict['oracle_values']['Y0'][complier_mask]\n", + "score = data_dict['score'][complier_mask]\n", + "\n", + "oracle_model = KernelReg(endog=ite, exog=score, reg_type='ll', var_type='c', ckertype='gaussian')\n", + "\n", + "score_grid = np.linspace(-1, 1, 100)\n", + "oracle_effects, _ = oracle_model.fit(score_grid)\n", + "\n", + "\n", + "scatter = go.Scatter(\n", + " x=score,\n", + " y=ite,\n", + " mode='markers',\n", + " name='ITE',\n", + " marker=dict(color='blue')\n", + ")\n", + "line = go.Scatter(\n", + " x=score_grid,\n", + " y=oracle_effects,\n", + " mode='lines',\n", + " name='Average Effect Estimate',\n", + " line=dict(color='red')\n", + ")\n", + "\n", + "\n", + "fig = go.Figure(data=[scatter, line])\n", + "fig.update_layout(\n", + " title='Locally Linear Kernel Regression of ITE on Score',\n", + " xaxis_title='Score',\n", + " yaxis_title='Effect',\n", + " legend=dict(x=0.8, y=0.2)\n", + ")\n", + "\n", + "print(f\"The oracle LATE is estimated as {oracle_model.fit([0])[0][0]}\")\n", + "\n", + "fig.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### RDD with Linear Adjustment\n", + "\n", + "The standard RDD estimator for the fuzzy design takes the form \n", + "\n", + "$$\\hat{\\theta}_{\\text{FRD}}(h) = \\frac{\\hat{\\theta}_{\\text{SRD}}(h)}{\\hat{\\theta}_{\\text{D}}(h)} = \\frac{\\sum_{i=1}^n w_i(h)(Y_i-X_i^T\\hat{\\gamma}_{Y, h})}{\\sum_{i=1}^n w_i(h)(D_i-X_i^T\\hat{\\gamma}_{D, h})}$$\n", + "\n", + "The packages ``rdrobust`` implements this estimation." + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Call: rdrobust\n", + "Number of Observations: 1000\n", + "Polynomial Order Est. (p): 1\n", + "Polynomial Order Bias (q): 2\n", + "Kernel: Triangular\n", + "Bandwidth Selection: mserd\n", + "Var-Cov Estimator: NN\n", + "\n", + " Left Right\n", + "------------------------------------------------\n", + "Number of Observations 490 510\n", + "Number of Unique Obs. 490 510\n", + "Number of Effective Obs. 244 263\n", + "Bandwidth Estimation 0.653 0.653\n", + "Bandwidth Bias 1.023 1.023\n", + "rho (h/b) 0.638 0.638\n", + "\n", + "Method Coef. S.E. t-stat P>|t| 95% CI \n", + "-------------------------------------------------------------------------\n", + "Conventional 2.798 3.98 0.703 4.821e-01 [-5.003, 10.598]\n", + "Robust - - 0.717 4.735e-01 [-5.806, 12.502]\n" + ] + }, + { + "data": { + "text/plain": [] + }, + "execution_count": 30, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "rdrobust_linear = rdrobust(y=df['y'], x=df['score'], fuzzy=df['d'], covs=df[cov_names], c=0.0)\n", + "rdrobust_linear" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### RDD with flexible adjustment\n", + "\n", + "[Noack, Olma and Rothe (2024)](https://arxiv.org/abs/2107.07942) propose an estimator that reduces the variance of the above esimator, using a flexible adjustment of the outcome by ML. For more details, see our User Guide. The estimator here takes the form \n", + "\n", + "$$\\hat{\\theta}_{\\text{RDFlex, FRD}}(h) = \\frac{\\sum_{i=1}^n w_i(h)(Y_i - \\hat{\\eta}_Y(X_i))}{\\sum_{i=1}^n w_i(h)(D_i - \\hat{eta}_D(X_i))},$$\n", + "\n", + "\n", + "with $\\eta_Y(\\cdot), \\eta_D(\\cdot)$ being potentially nonlinear adjustment functions.\n", + "\n", + "We initialize a `DoubleMLData` object using the usual package syntax.\n", + "\n", + "Note: `x_cols` refers to the covariates to be adjusted for, and `s_col` is the score." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "dml_data = dml.DoubleMLData(df, y_col='y', d_cols='d', x_cols=cov_names, s_col='score')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Method Coef. S.E. t-stat P>|t| 95% CI\n", + "-------------------------------------------------------------------------\n", + "Conventional 3.475 2.231 1.558 1.193e-01 [-0.897, 7.847]\n", + "Robust - - 2.021 4.330e-02 [0.185, 12.112]\n" + ] + } + ], + "source": [ + "ml_g = LGBMRegressor(n_estimators=500, learning_rate=0.01, verbose=-1)\n", + "ml_m = LGBMClassifier(n_estimators=500, learning_rate=0.01, verbose=-1)\n", + "\n", + "rdflex_model = RDFlex(dml_data,\n", + " ml_g,\n", + " ml_m,\n", + " fuzzy=fuzzy,\n", + " n_folds=5,\n", + " n_rep=1)\n", + "rdflex_model.fit(n_iterations=2)\n", + "\n", + "print(rdflex_model)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Global and Local Learners\n", + "\n", + "All learners have to support the `sample_weight` in their `fit` method." + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [], + "source": [ + "from doubleml.utils import GlobalRegressor, GlobalClassifier" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [], + "source": [ + "reg_estimators = [\n", + " ('lr local', LinearRegression()),\n", + " ('rf local', RandomForestRegressor()),\n", + " ('lr global', GlobalRegressor(base_estimator=LinearRegression())),\n", + " ('rf global', GlobalRegressor(base_estimator=RandomForestRegressor()))\n", + "]\n", + "\n", + "class_estimators = [\n", + " ('lr local', LogisticRegression()),\n", + " ('rf local', RandomForestClassifier()),\n", + " ('lr global', GlobalClassifier(base_estimator=LogisticRegression())),\n", + " ('rf global', GlobalClassifier(base_estimator=RandomForestClassifier()))\n", + "]\n", + "\n", + "ml_g = StackingRegressor(\n", + " estimators=reg_estimators,\n", + " final_estimator=RandomForestRegressor(n_estimators=10,\n", + " random_state=42)\n", + ")\n", + "\n", + "ml_m = StackingClassifier(\n", + " estimators=class_estimators,\n", + " final_estimator=RandomForestClassifier(n_estimators=10,\n", + " random_state=42)\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Method Coef. S.E. t-stat P>|t| 95% CI\n", + "-------------------------------------------------------------------------\n", + "Conventional 1.154 1.046 1.103 2.699e-01 [-0.896, 3.205]\n", + "Robust - - 1.333 1.825e-01 [-1.000, 5.251]\n" + ] + } + ], + "source": [ + "rdflex_model = RDFlex(dml_data,\n", + " ml_g,\n", + " ml_m,\n", + " fuzzy=fuzzy,\n", + " n_folds=5,\n", + " n_rep=1)\n", + "rdflex_model.fit(n_iterations=2)\n", + "\n", + "print(rdflex_model)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "dml_rdd", + "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.11.5" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} From 085690cc5948bcebe6bdf24d4533945f5a6e6b70 Mon Sep 17 00:00:00 2001 From: OliverSchacht <65898638+OliverSchacht@users.noreply.github.com> Date: Wed, 9 Oct 2024 12:11:35 +0200 Subject: [PATCH 25/71] completly rework everything --- doc/examples/py_double_ml_meets_flaml.ipynb | 775 ++++++++++++-------- 1 file changed, 465 insertions(+), 310 deletions(-) diff --git a/doc/examples/py_double_ml_meets_flaml.ipynb b/doc/examples/py_double_ml_meets_flaml.ipynb index d511bb90..8da7c95d 100644 --- a/doc/examples/py_double_ml_meets_flaml.ipynb +++ b/doc/examples/py_double_ml_meets_flaml.ipynb @@ -4,9 +4,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "# DoubleML meets FLAML: Comparing AutoML tuning\n", + "# DoubleML meets FLAML - How to tune learners automatically within `DoubleML`\n", "\n", - "In this notebook we are going to explore how to tune learners with [AUTOML](https://github.com/microsoft/FLAML) in [DoubleML](https://docs.doubleml.org/stable/index.html) framework." + "In this notebook we are going to explore how to tune learners with AutoML on the example of [FLAML](https://github.com/microsoft/FLAML) in [DoubleML](https://docs.doubleml.org/stable/index.html) framework." ] }, { @@ -20,7 +20,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "We created synthetic data using the [make_plr_CCDDHNR2018](https://docs.doubleml.org/stable/api/generated/doubleml.datasets.make_plr_CCDDHNR2018.html) function, which generates data for a potential outcomes framework with 1000 observations and 50 features. The data generated will have 50 covariates variables, 1 treatment variable and 1 outcome variable." + "We create synthetic data using the [``make_plr_CCDDHNR2018()``](https://docs.doubleml.org/stable/api/generated/doubleml.datasets.make_plr_CCDDHNR2018.html) process, with $1000$ observations of $50$ covariates as well as $1$ treatment variable and an outcome. We calibrate the process such that hyperparameter tuning becomes more important." ] }, { @@ -75,123 +75,123 @@ " \n", " \n", " 0\n", - " -0.368031\n", - " -1.689853\n", - " -0.526414\n", - " -0.643074\n", - " -0.157774\n", - " -0.144487\n", - " 0.362700\n", - " 0.466783\n", - " -0.092726\n", - " 0.895316\n", + " 1.065368\n", + " 1.162593\n", + " 1.089964\n", + " 0.824657\n", + " 0.157733\n", + " -1.228404\n", + " -0.675775\n", + " -0.223928\n", + " 0.166238\n", + " 0.124480\n", " ...\n", - " 1.040265\n", - " 0.594805\n", - " -0.084448\n", - " 0.451681\n", - " -0.455551\n", - " -0.014698\n", - " 0.319293\n", - " -0.069872\n", - " 0.094012\n", - " -0.493958\n", + " -2.021823\n", + " -1.662975\n", + " -2.100385\n", + " -1.225670\n", + " -1.223158\n", + " 0.397536\n", + " -0.450031\n", + " 0.511257\n", + " 0.845534\n", + " -0.784792\n", " \n", " \n", " 1\n", - " 1.714814\n", - " 2.091893\n", - " 1.611906\n", - " 1.601585\n", - " 0.263206\n", - " -0.925554\n", - " -0.809992\n", - " 0.557693\n", - " 0.511080\n", - " 0.099212\n", + " 0.214458\n", + " 1.699616\n", + " 3.222882\n", + " 3.550242\n", + " 2.692460\n", + " 1.821970\n", + " 1.223617\n", + " -0.100154\n", + " -0.234431\n", + " 0.375844\n", " ...\n", - " 0.220281\n", - " -0.187899\n", - " -0.327932\n", - " -0.349030\n", - " -0.363309\n", - " 0.866551\n", - " 0.515476\n", - " 0.814062\n", - " 1.766736\n", - " 2.408963\n", + " -0.695711\n", + " -0.819507\n", + " -1.465424\n", + " -0.341472\n", + " -0.023537\n", + " 0.436016\n", + " -0.503374\n", + " -1.342632\n", + " 1.987307\n", + " 0.835035\n", " \n", " \n", " 2\n", - " -1.291187\n", - " -1.829907\n", - " -1.836269\n", - " -1.083209\n", - " -1.370531\n", - " -1.381615\n", - " -1.934436\n", - " -0.988396\n", - " -0.200813\n", - " -0.017348\n", + " 0.725820\n", + " -0.310145\n", + " -0.586921\n", + " -0.879058\n", + " 0.239267\n", + " 0.638461\n", + " 0.131024\n", + " 0.459436\n", + " -1.140081\n", + " -0.583692\n", " ...\n", - " 0.747955\n", - " 1.158486\n", - " 0.757950\n", - " 0.308727\n", - " 0.204232\n", - " 0.297127\n", - " -0.150408\n", - " -0.329756\n", - " -1.346593\n", - " -2.295508\n", + " -0.002388\n", + " 0.716801\n", + " 0.075942\n", + " 1.439958\n", + " 0.674747\n", + " -0.268343\n", + " 0.682122\n", + " 0.978303\n", + " 0.154890\n", + " -0.168089\n", " \n", " \n", " 3\n", - " -0.618230\n", - " -0.521589\n", - " 0.343459\n", - " 0.260298\n", - " -0.878743\n", - " -0.762960\n", - " -1.250186\n", - " 0.306366\n", - " 0.083006\n", - " -0.440434\n", + " 0.265744\n", + " 0.479655\n", + " 0.013313\n", + " 1.417736\n", + " 0.908767\n", + " 1.786090\n", + " 0.996892\n", + " -0.026822\n", + " -0.867201\n", + " 0.433753\n", " ...\n", - " -0.178278\n", - " -0.812761\n", - " -0.538006\n", - " -0.151514\n", - " -0.609313\n", - " -0.478738\n", - " -0.447635\n", - " -0.857543\n", - " 0.418773\n", - " -0.772577\n", + " -0.482616\n", + " -0.172628\n", + " -0.309539\n", + " -0.609522\n", + " -0.830263\n", + " -0.883953\n", + " -1.249986\n", + " -2.688641\n", + " 1.254035\n", + " 0.161288\n", " \n", " \n", " 4\n", - " -1.686006\n", - " -0.737666\n", - " -0.847629\n", - " -0.597370\n", - " 0.126047\n", - " 1.149483\n", - " 0.733414\n", - " 1.083345\n", - " 0.496245\n", - " 0.683059\n", + " 1.581827\n", + " 0.926901\n", + " 2.302382\n", + " 0.803112\n", + " -0.152896\n", + " -0.389164\n", + " -0.569590\n", + " -0.124306\n", + " 0.055439\n", + " -0.383531\n", " ...\n", - " -1.640443\n", - " -0.887162\n", - " 0.111251\n", - " 0.363222\n", - " -0.164374\n", - " -0.304590\n", - " -0.486097\n", - " -1.294510\n", - " -1.016705\n", - " -1.333984\n", + " 0.048220\n", + " -0.698751\n", + " -0.754678\n", + " -0.689600\n", + " 0.726658\n", + " 0.780068\n", + " 1.475517\n", + " 0.777718\n", + " 1.773769\n", + " 1.786563\n", " \n", " \n", "\n", @@ -200,25 +200,25 @@ ], "text/plain": [ " X1 X2 X3 X4 X5 X6 X7 \\\n", - "0 -0.368031 -1.689853 -0.526414 -0.643074 -0.157774 -0.144487 0.362700 \n", - "1 1.714814 2.091893 1.611906 1.601585 0.263206 -0.925554 -0.809992 \n", - "2 -1.291187 -1.829907 -1.836269 -1.083209 -1.370531 -1.381615 -1.934436 \n", - "3 -0.618230 -0.521589 0.343459 0.260298 -0.878743 -0.762960 -1.250186 \n", - "4 -1.686006 -0.737666 -0.847629 -0.597370 0.126047 1.149483 0.733414 \n", + "0 1.065368 1.162593 1.089964 0.824657 0.157733 -1.228404 -0.675775 \n", + "1 0.214458 1.699616 3.222882 3.550242 2.692460 1.821970 1.223617 \n", + "2 0.725820 -0.310145 -0.586921 -0.879058 0.239267 0.638461 0.131024 \n", + "3 0.265744 0.479655 0.013313 1.417736 0.908767 1.786090 0.996892 \n", + "4 1.581827 0.926901 2.302382 0.803112 -0.152896 -0.389164 -0.569590 \n", "\n", " X8 X9 X10 ... X43 X44 X45 X46 \\\n", - "0 0.466783 -0.092726 0.895316 ... 1.040265 0.594805 -0.084448 0.451681 \n", - "1 0.557693 0.511080 0.099212 ... 0.220281 -0.187899 -0.327932 -0.349030 \n", - "2 -0.988396 -0.200813 -0.017348 ... 0.747955 1.158486 0.757950 0.308727 \n", - "3 0.306366 0.083006 -0.440434 ... -0.178278 -0.812761 -0.538006 -0.151514 \n", - "4 1.083345 0.496245 0.683059 ... -1.640443 -0.887162 0.111251 0.363222 \n", + "0 -0.223928 0.166238 0.124480 ... -2.021823 -1.662975 -2.100385 -1.225670 \n", + "1 -0.100154 -0.234431 0.375844 ... -0.695711 -0.819507 -1.465424 -0.341472 \n", + "2 0.459436 -1.140081 -0.583692 ... -0.002388 0.716801 0.075942 1.439958 \n", + "3 -0.026822 -0.867201 0.433753 ... -0.482616 -0.172628 -0.309539 -0.609522 \n", + "4 -0.124306 0.055439 -0.383531 ... 0.048220 -0.698751 -0.754678 -0.689600 \n", "\n", " X47 X48 X49 X50 y d \n", - "0 -0.455551 -0.014698 0.319293 -0.069872 0.094012 -0.493958 \n", - "1 -0.363309 0.866551 0.515476 0.814062 1.766736 2.408963 \n", - "2 0.204232 0.297127 -0.150408 -0.329756 -1.346593 -2.295508 \n", - "3 -0.609313 -0.478738 -0.447635 -0.857543 0.418773 -0.772577 \n", - "4 -0.164374 -0.304590 -0.486097 -1.294510 -1.016705 -1.333984 \n", + "0 -1.223158 0.397536 -0.450031 0.511257 0.845534 -0.784792 \n", + "1 -0.023537 0.436016 -0.503374 -1.342632 1.987307 0.835035 \n", + "2 0.674747 -0.268343 0.682122 0.978303 0.154890 -0.168089 \n", + "3 -0.830263 -0.883953 -1.249986 -2.688641 1.254035 0.161288 \n", + "4 0.726658 0.780068 1.475517 0.777718 1.773769 1.786563 \n", "\n", "[5 rows x 52 columns]" ] @@ -230,14 +230,16 @@ ], "source": [ "import pandas as pd\n", + "import numpy as np\n", "import matplotlib.pyplot as plt\n", "\n", "from doubleml.datasets import make_plr_CCDDHNR2018\n", "import doubleml as dml\n", "from flaml import AutoML\n", + "from xgboost import XGBRegressor\n", "\n", "# Generate synthetic data\n", - "data = make_plr_CCDDHNR2018(alpha=0.5, n_obs=1000, dim_x=50, return_type=\"DataFrame\")\n", + "data = make_plr_CCDDHNR2018(alpha=0.5, n_obs=1000, dim_x=50, return_type=\"DataFrame\", a0=0, a1=1, s1=0.25, s2=0.25)\n", "data.head()" ] }, @@ -245,22 +247,17 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## Manual Tuning with FLAML" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "In this section, we manually tune two [XGBoost](https://xgboost.readthedocs.io/en/stable/) models using FLAML for a [partially linear regression](https://docs.doubleml.org/stable/guide/models.html#partially-linear-regression-model-plr) setup. This means, we implement the tuning with `FLAML` for the nuisance estimation manually. Once the tuning has been completed, we pass the learners to `DoubleML`.\n", + "## Tuning on the full Sample\n", + "\n", + "In this section, we manually tune two [XGBoost](https://xgboost.readthedocs.io/en/stable/) models using FLAML for a [Partially Linear Regression Model](https://docs.doubleml.org/stable/guide/models.html#partially-linear-regression-model-plr). In the PLR (using the default score) we have to estimate a nuisance $\\eta$ consisting of\n", "\n", - "### Step 1: Initialize and Train the AutoML Models:\n", + "$$\\eta := \\{m_0(x), \\ell_0(x)\\} = \\{\\mathbb{E}[D|X], \\mathbb{E}[Y|X]\\}.$$\n", "\n", - "We use FLAML to automatically tune two separate [XGBoost](https://xgboost.readthedocs.io/en/stable/) models:\n", + "We initialize two `FLAML` AutoML objects and fit them accordingly. Once the tuning has been completed, we pass the learners to `DoubleML`.\n", "\n", - "• Outcome Model ($ml_\\ell$): This model predicts the outcome variable y. We configured the FLAML AutoML with a time budget of 120 seconds, using XGBoost as the estimator and rmse as the performance metric.\n", + "#### Step 1: Initialize and Train the AutoML Models:\n", "\n", - "• Treatment Model (ml_m): This model predicts the treatment variable d. Similarly, we set the time budget to 120 seconds, used XGBoost, and optimized for rmse." + "*Note: This cell will optimize the nuisance models for 4 minutes in total.*" ] }, { @@ -294,13 +291,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Step 2: Evaluate the Tuned Models \n", + "#### Step 2: Evaluate the Tuned Models \n", "\n", - "We can evaluate the loss as reported by `FLAML`. For more details, we refer to the [FLAML documentation](https://microsoft.github.io/FLAML/docs/Getting-Started)\n", - "\n", - "• `rmse_oos_ml_m` represents the out-of-sample RMSE for the treatment model.\n", - "\n", - "• `rmse_oos_ml_l` represents the out-of-sample RMSE for the outcome model." + "`FLAML` reports the best loss during training as `best_loss` attribute. For more details, we refer to the [FLAML documentation](https://microsoft.github.io/FLAML/docs/Getting-Started)." ] }, { @@ -312,116 +305,102 @@ "name": "stdout", "output_type": "stream", "text": [ - "rmse_oos_ml_m: 0.9842067721235772\n", - "rmse_oos_ml_m: 1.1424416317208945\n" + "Best RMSE during tuning (ml_m): 1.0078540263583833\n", + "Best RMSE during tuning (ml_l): 1.1155142425200442\n" ] } ], "source": [ - "# Check for Overfitting: Compare in-sample (train), out-of-sample (test) MSE\n", - "# ml_m\n", "rmse_oos_ml_m = automl_m.best_loss\n", "rmse_oos_ml_l = automl_l.best_loss\n", - "print(\"rmse_oos_ml_m:\",rmse_oos_ml_m)\n", - "print(\"rmse_oos_ml_l:\",rmse_oos_ml_l)\n" + "print(\"Best RMSE during tuning (ml_m):\",rmse_oos_ml_m)\n", + "print(\"Best RMSE during tuning (ml_l):\",rmse_oos_ml_l)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### Step 3: Create and Fit DoubleML Model\n", + "#### Step 3: Create and Fit DoubleML Model\n", "\n", - "We create a [DoubleMLData](https://docs.doubleml.org/stable/guide/data_backend.html) object with the dataset, specifying $y$ as the outcome variable and $d$ as the treatment variable. We then initialize a `DoubleMLPLR` model using the tuned `FLAML` models for both the treatment and outcome components. " + "We create a `DoubleMLData` object with the dataset, specifying $y$ as the outcome variable and $d$ as the treatment variable. We then initialize a `DoubleMLPLR` model using the tuned `FLAML` estimators for both the treatment and outcome components. `DoubleML` will use copies with identical configurations on each fold." ] }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 4, "metadata": {}, "outputs": [ { - "ename": "ValueError", - "evalue": "Apply fit() before confint().", - "output_type": "error", - "traceback": [ - "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[1;31mValueError\u001b[0m Traceback (most recent call last)", - "Cell \u001b[1;32mIn[11], line 11\u001b[0m\n\u001b[0;32m 8\u001b[0m \u001b[38;5;66;03m# Fit the DoubleMLPLR model\u001b[39;00m\n\u001b[0;32m 9\u001b[0m obj_dml_plr_manual_tuned\u001b[38;5;241m.\u001b[39mfit()\n\u001b[1;32m---> 11\u001b[0m manual_tuned_summary \u001b[38;5;241m=\u001b[39m obj_dml_plr_manual_tuned\u001b[38;5;241m.\u001b[39msummary\n\u001b[0;32m 12\u001b[0m \u001b[38;5;28mprint\u001b[39m(manual_tuned_summary)\n", - "File \u001b[1;32mc:\\users\\bachp\\documents\\promotion\\dissundpapers\\software\\doubleml\\doubleml-for-py\\doubleml\\double_ml.py:431\u001b[0m, in \u001b[0;36mDoubleML.summary\u001b[1;34m(self)\u001b[0m\n\u001b[0;32m 425\u001b[0m summary_stats \u001b[38;5;241m=\u001b[39m np\u001b[38;5;241m.\u001b[39mtranspose(np\u001b[38;5;241m.\u001b[39mvstack(\n\u001b[0;32m 426\u001b[0m [\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mcoef, \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mse,\n\u001b[0;32m 427\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mt_stat, \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mpval]))\n\u001b[0;32m 428\u001b[0m df_summary \u001b[38;5;241m=\u001b[39m pd\u001b[38;5;241m.\u001b[39mDataFrame(summary_stats,\n\u001b[0;32m 429\u001b[0m columns\u001b[38;5;241m=\u001b[39mcol_names,\n\u001b[0;32m 430\u001b[0m index\u001b[38;5;241m=\u001b[39m\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_dml_data\u001b[38;5;241m.\u001b[39md_cols)\n\u001b[1;32m--> 431\u001b[0m ci \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mconfint()\n\u001b[0;32m 432\u001b[0m df_summary \u001b[38;5;241m=\u001b[39m df_summary\u001b[38;5;241m.\u001b[39mjoin(ci)\n\u001b[0;32m 433\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m df_summary\n", - "File \u001b[1;32mc:\\users\\bachp\\documents\\promotion\\dissundpapers\\software\\doubleml\\doubleml-for-py\\doubleml\\double_ml.py:618\u001b[0m, in \u001b[0;36mDoubleML.confint\u001b[1;34m(self, joint, level)\u001b[0m\n\u001b[0;32m 598\u001b[0m \u001b[38;5;250m\u001b[39m\u001b[38;5;124;03m\"\"\"\u001b[39;00m\n\u001b[0;32m 599\u001b[0m \u001b[38;5;124;03mConfidence intervals for DoubleML models.\u001b[39;00m\n\u001b[0;32m 600\u001b[0m \n\u001b[1;32m (...)\u001b[0m\n\u001b[0;32m 614\u001b[0m \u001b[38;5;124;03m A data frame with the confidence interval(s).\u001b[39;00m\n\u001b[0;32m 615\u001b[0m \u001b[38;5;124;03m\"\"\"\u001b[39;00m\n\u001b[0;32m 617\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mframework \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[1;32m--> 618\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mValueError\u001b[39;00m(\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mApply fit() before confint().\u001b[39m\u001b[38;5;124m'\u001b[39m)\n\u001b[0;32m 620\u001b[0m df_ci \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mframework\u001b[38;5;241m.\u001b[39mconfint(joint\u001b[38;5;241m=\u001b[39mjoint, level\u001b[38;5;241m=\u001b[39mlevel)\n\u001b[0;32m 621\u001b[0m df_ci\u001b[38;5;241m.\u001b[39mset_index(pd\u001b[38;5;241m.\u001b[39mIndex(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_dml_data\u001b[38;5;241m.\u001b[39md_cols), inplace\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mTrue\u001b[39;00m)\n", - "\u001b[1;31mValueError\u001b[0m: Apply fit() before confint()." + "name": "stdout", + "output_type": "stream", + "text": [ + " coef std err t P>|t| 2.5 % 97.5 %\n", + "d 0.498286 0.032738 15.220407 2.589147e-52 0.434121 0.562452\n" ] } ], "source": [ - "# Create DoubleMLData object with the evaluation set\n", "obj_dml_data = dml.DoubleMLData(data, \"y\", \"d\")\n", "\n", - "# Initialize DoubleMLPLR with the trained models from flaml\n", - "obj_dml_plr_manual_tuned = dml.DoubleMLPLR(obj_dml_data, ml_m=automl_m.model.estimator,\n", + "obj_dml_plr_fullsample = dml.DoubleMLPLR(obj_dml_data, ml_m=automl_m.model.estimator,\n", " ml_l=automl_l.model.estimator)\n", "\n", - "# Fit the DoubleMLPLR model\n", - "obj_dml_plr_manual_tuned.fit(store_predictions=True)\n", - "\n", - "manual_tuned_summary = obj_dml_plr_manual_tuned.summary\n", - "print(manual_tuned_summary)" + "print(obj_dml_plr_fullsample.fit().summary)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "We can also use the `DoubleML`'s built-in learner evaluation, which is based on the cross-fitting procedure." + "`DoubleML`'s built-in learner evaluation reports the out-of-sample error during cross-fitting. We can compare this measure to the best loss during training from above." ] }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 19, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "RMLSE evaluated by DoubleML (ml_l): [1.13809748]\n", - "RMSE evaluated by DoubleML (ml_m): [1.00242534]\n" + "RMSE evaluated by DoubleML (ml_m): 1.0156853566737638\n", + "RMSE evaluated by DoubleML (ml_l): 1.1309844442144665\n" ] } ], "source": [ - "# Evaluate learners using evaluate_learners() (MSE for all nuisance components)\n", - "rmse_dml_ml_l = obj_dml_plr_manual_tuned.evaluate_learners()['ml_l'][0]\n", - "rmse_dml_ml_m = obj_dml_plr_manual_tuned.evaluate_learners()['ml_m'][0]\n", + "rmse_dml_ml_l_fullsample = obj_dml_plr_fullsample.evaluate_learners()['ml_l'][0][0]\n", + "rmse_dml_ml_m_fullsample = obj_dml_plr_fullsample.evaluate_learners()['ml_m'][0][0]\n", "\n", - "# Print results\n", - "print(\"RMSE evaluated by DoubleML (ml_m):\", rmse_dml_ml_m)\n", - "print(\"RMSE evaluated by DoubleML (ml_l):\", rmse_dml_ml_l)\n" + "print(\"RMSE evaluated by DoubleML (ml_m):\", rmse_dml_ml_m_fullsample)\n", + "print(\"RMSE evaluated by DoubleML (ml_l):\", rmse_dml_ml_l_fullsample)\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "## Comparison of Model Tuning Approaches" + "The best RMSE during automated tuning and the out-of-sample error in nuisance prediction are similar, which hints that there is no overfitting. We don't expect large amounts of overfitting, since FLAML uses cross-validation internally and reports the best loss on a hold-out sample." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "Instead of externally tuning the `FLAML` learners, it is also possible to tune the AutoML learners internally. To do so, we have to define custom classes for integrating `FLAML` with `DoubleML`. The tuning will be automatically be started when calling `DoubleML`'s `fit()` method. This approach does not make it necessary to manually specify the learning tasks.\n", + "## Tuning on the Folds\n", "\n", + "Instead of externally tuning the `FLAML` learners, it is also possible to tune the AutoML learners internally. We have to define custom classes for integrating `FLAML` to `DoubleML`. The tuning will be automatically be started when calling `DoubleML`'s `fit()` method. Training will occure $K$ times, so each fold will have an individualized optimal set of hyperparameters.\n", "\n", - "### Step 1: Designing Custom FLAML Models for Double Machine Learning\n", + "#### Step 1: Custom API for FLAML Models within `DoubleML`\n", "\n", - "In this section, we define custom classes for integrating FLAML (Fast Lightweight AutoML) with Double Machine Learning (DML). These classes are designed to facilitate automated machine learning model tuning for both regression and classification tasks.\n" + "The following API is designed to facilitate automated machine learning model tuning for both regression and classification tasks. In this example however, we will only need the Regressor API as the treatment is continous." ] }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 6, "metadata": {}, "outputs": [], "source": [ @@ -491,158 +470,342 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Step 2: Using Custom FLAML Models when calling `DoubleML`'s `fit()` Method\n", + "#### Step 2: Using the API when calling `DoubleML`'s `.fit()` Method\n", "\n", - "We integrate the custom `FLAML`-based models `FlamlRegressorDoubleML` into the Double Machine Learning (DML) framework. The steps involve defining the `FLAML` regressors, setting up the `DoubleMLPLR` object, and fitting the model." + "We initialize a `FlamlRegressorDoubleML` and hand it without fitting into the DoubleML object. When calling `.fit()` on the DoubleML object, copies of the API object will be created on the folds and a seperate set of hyperparameters is created. Since we fit $K$ times, we reduce the computation time accordingly to ensure comparibility to the full sample case." ] }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 7, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " coef std err t P>|t| 2.5 % 97.5 %\n", + "d 0.502016 0.033265 15.091263 1.848688e-51 0.436817 0.567215\n" + ] + } + ], "source": [ "# Define the FlamlRegressorDoubleML\n", - "ml_l = FlamlRegressorDoubleML(time=120, estimator_list=['xgboost'], metric='rmse')\n", - "ml_m = FlamlRegressorDoubleML(time=120, estimator_list=['xgboost'], metric='rmse')\n", + "ml_l = FlamlRegressorDoubleML(time=24, estimator_list=['xgboost'], metric='rmse')\n", + "ml_m = FlamlRegressorDoubleML(time=24, estimator_list=['xgboost'], metric='rmse')\n", "\n", "# Create DoubleMLPLR object using the new regressors\n", - "dml_plr_obj_api_tuned = dml.DoubleMLPLR(obj_dml_data, ml_m, ml_l)\n", + "dml_plr_obj_onfolds = dml.DoubleMLPLR(obj_dml_data, ml_m, ml_l)\n", "\n", "# Fit the DoubleMLPLR model\n", - "dml_plr_obj_api_tuned.fit(store_predictions=True)\n", - "\n", - "#Retrieve the summary for API Tuned Models\n", - "api_tuned_summary = dml_plr_obj_api_tuned.summary\n", - "\n", - "# Print the summary\n", - "print(dml_plr_obj_api_tuned.summary)" + "print(dml_plr_obj_onfolds.fit(store_models=True).summary)" ] }, { - "cell_type": "markdown", + "cell_type": "code", + "execution_count": 9, "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Best RMSE during tuning (ml_m): 1.0068101213851626\n", + "Best RMSE during tuning (ml_l): 1.1151610541568202\n", + "RMSE evaluated by DoubleML (ml_m): 1.0084871742256079\n", + "RMSE evaluated by DoubleML (ml_l): 1.1272404618426184\n" + ] + } + ], "source": [ - "## Comparison to Dummy Models and Untuned AutoML Learners\n", - "\n", + "rmse_oos_onfolds_ml_l = np.mean([dml_plr_obj_onfolds.models[\"ml_l\"][\"d\"][0][i].auto_ml.best_loss for i in range(5)])\n", + "rmse_oos_onfolds_ml_m = np.mean([dml_plr_obj_onfolds.models[\"ml_m\"][\"d\"][0][i].auto_ml.best_loss for i in range(5)])\n", + "print(\"Best RMSE during tuning (ml_m):\",rmse_oos_onfolds_ml_m)\n", + "print(\"Best RMSE during tuning (ml_l):\",rmse_oos_onfolds_ml_l)\n", "\n", - "### Dummy Learners\n", + "rmse_dml_ml_l_onfolds = dml_plr_obj_onfolds.evaluate_learners()['ml_l'][0][0]\n", + "rmse_dml_ml_m_onfolds = dml_plr_obj_onfolds.evaluate_learners()['ml_m'][0][0]\n", "\n", - "As a comparison, we can use dummy `sklearn`'s `DummyRegressor` learners\n", - "\n", - "• `ml_l_dummy`: A dummy regressor for the outcome model, which predicts the mean value of the outcome.\n", - "\n", - "• `ml_m_dummy`: A dummy regressor for the treatment model, also predicting the mean value.\n", - "\n", - "These dummy models are used to create a `DoubleMLPLR` object, which was then fit to the data. We retrieve and stored the summary of this model to compare with other methods." + "print(\"RMSE evaluated by DoubleML (ml_m):\", rmse_dml_ml_m_onfolds)\n", + "print(\"RMSE evaluated by DoubleML (ml_l):\", rmse_dml_ml_l_onfolds)" ] }, { - "cell_type": "code", - "execution_count": 44, + "cell_type": "markdown", "metadata": {}, - "outputs": [], "source": [ - "from sklearn.dummy import DummyRegressor\n", - "\n", - "# Initialize and fit dummy models\n", - "ml_l_dummy = DummyRegressor(strategy='mean')\n", - "ml_m_dummy = DummyRegressor(strategy='mean')\n", - "\n", - "# Create DoubleMLPLR object using dummy regressors\n", - "dml_plr_obj_dummy = dml.DoubleMLPLR(obj_dml_data, ml_m_dummy, ml_l_dummy)\n", - "dml_plr_obj_dummy.fit(store_predictions=True)\n", - "\n", - "# Retrieve the summary for dummy models\n", - "dummy_summary = dml_plr_obj_dummy.summary" + "Similar to the above case, we see no hints for overfitting." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### AutoML Untuned Models\n", + "### Comparison to AutoML with less Computation time and Untuned XGBoost Learners\n", + "\n", + "#### AutoML with less Computation time\n", "\n", - "We set up AutoML models with minimal tuning for both the outcome and treatment variables. This process allows us to compare the performance of untuned models against those that have been manually or API-tuned." + "As a baseline, we can compare the learners above that have been tuned using two minutes of training time each with ones that only use ten seconds.\n", + "\n", + "*Note: In practical settings, it is advisable to use even more than two minutes. This is just for the purpose of illustration.*" ] }, { "cell_type": "code", - "execution_count": 45, + "execution_count": 10, "metadata": {}, "outputs": [], "source": [ - "# AutoML Untuned\n", - "automl_untuned_l = AutoML()\n", - "settings = {\n", - " \"time_budget\": 0.01,\n", - " \"metric\": 'mse',\n", + "# Initialize AutoML for outcome model similar to above, but use a smaller time budget.\n", + "automl_l_lesstime = AutoML()\n", + "settings_l = {\n", + " \"time_budget\": 10,\n", + " \"metric\": 'rmse',\n", " \"estimator_list\": ['xgboost'],\n", " \"task\": 'regression',\n", "}\n", + "automl_l_lesstime.fit(X_train=data.drop(columns=[\"y\", \"d\"]).values, y_train=data[\"y\"].values, verbose=2, **settings_l)\n", "\n", - "automl_untuned_l.fit(X_train=data.drop(columns=[\"y\", \"d\"]).values, y_train=data[\"y\"].values, verbose=0, **settings)\n", - "\n", - "automl_untuned_m = AutoML()\n", - "settings = {\n", - " \"time_budget\": 0.01,\n", - " \"metric\": 'mse',\n", + "# Initialize AutoML for treatment model similar to above, but use a smaller time budget.\n", + "automl_m_lesstime = AutoML()\n", + "settings_m = {\n", + " \"time_budget\": 10,\n", + " \"metric\": 'rmse',\n", " \"estimator_list\": ['xgboost'],\n", " \"task\": 'regression',\n", "}\n", + "automl_m_lesstime.fit(X_train=data.drop(columns=[\"y\", \"d\"]).values, y_train=data[\"d\"].values, verbose=2, **settings_m)" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " coef std err t P>|t| 2.5 % 97.5 %\n", + "d 0.436394 0.031007 14.073929 5.493102e-45 0.375621 0.497168\n" + ] + } + ], + "source": [ + "obj_dml_plr_lesstime = dml.DoubleMLPLR(obj_dml_data, ml_m=automl_m_lesstime.model.estimator,\n", + " ml_l=automl_l_lesstime.model.estimator)\n", "\n", - "automl_untuned_m.fit(X_train=data.drop(columns=[\"y\", \"d\"]).values, y_train=data[\"d\"].values, verbose=0, **settings)" + "print(obj_dml_plr_lesstime.fit().summary)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "##### DoubleMLPLR with Untuned AutoML Models\n", - "\n", - "Here, we create a `DoubleMLPLR` object using the untuned AutoML models for the outcome and treatment regressions. We then fit the `DoubleMLPLR` model and retrieve the summary of the results. This section allows us to evaluate the performance of the untuned AutoML models in the context of DoubleML." + "We can check the performance again." ] }, { "cell_type": "code", - "execution_count": 46, + "execution_count": 33, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Best RMSE during tuning (ml_m): 0.9158080176561963\n", + "Best RMSE during tuning (ml_l): 1.2197237644227434\n", + "RMSE evaluated by DoubleML (ml_m): 1.0739130271918385\n", + "RMSE evaluated by DoubleML (ml_l): 1.1362430723104844\n" + ] + } + ], "source": [ - "# Create DoubleMLPLR object using AutoML models\n", - "dml_plr_obj_untuned_automl = dml.DoubleMLPLR(obj_dml_data, automl_untuned_l.model.estimator, automl_untuned_m.model.estimator)\n", - "untuned_automl_summary = dml_plr_obj_untuned_automl.fit(store_predictions=True).summary" + "rmse_dml_ml_l_lesstime = obj_dml_plr_lesstime.evaluate_learners()['ml_l'][0][0]\n", + "rmse_dml_ml_m_lesstime = obj_dml_plr_lesstime.evaluate_learners()['ml_m'][0][0]\n", + "\n", + "\n", + "print(\"Best RMSE during tuning (ml_m):\", automl_m_lesstime.best_loss)\n", + "print(\"Best RMSE during tuning (ml_l):\", automl_l_lesstime.best_loss)\n", + "print(\"RMSE evaluated by DoubleML (ml_m):\", rmse_dml_ml_m_lesstime)\n", + "print(\"RMSE evaluated by DoubleML (ml_l):\", rmse_dml_ml_l_lesstime)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "## Summary\n", + "We see a more severe difference in oos RMSE between AutoML and DML estimations. This could hint that the learner underfits, i.e. training time was not sufficient." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Untuned (default parameter) XGBoost\n", "\n", - "We combine the summaries from various models: manually tuned FLAML models, API-tuned FLAML models, untuned AutoML models, and dummy models." + "As another baseline, we set up DoubleML with an XGBoost learner that has not been tuned at all, i.e. using the default set of hyperparameters." ] }, { "cell_type": "code", - "execution_count": 47, + "execution_count": 12, "metadata": {}, "outputs": [], "source": [ - "# Combine summaries for comparison\n", - "summary = pd.concat([manual_tuned_summary ,api_tuned_summary, untuned_automl_summary, dummy_summary],\n", - " keys=['FLAML Manual Tuned', 'FLAML API Tuned', 'AutoML Untuned', 'Dummy'])\n", - "summary.index.names = ['Model Type', 'Metric']\n", + "xgb_untuned_m, xgb_untuned_l = XGBRegressor(), XGBRegressor()" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " coef std err t P>|t| 2.5 % 97.5 %\n", + "d 0.431253 0.03258 13.236884 5.373218e-40 0.367398 0.495108\n" + ] + } + ], + "source": [ + "# Create DoubleMLPLR object using AutoML models\n", + "dml_plr_obj_untuned = dml.DoubleMLPLR(obj_dml_data, xgb_untuned_l, xgb_untuned_m)\n", + "print(dml_plr_obj_untuned.fit().summary)\n", "\n", - "# Print the summary\n", - "print(summary)" + "rmse_dml_ml_l_untuned = dml_plr_obj_untuned.evaluate_learners()['ml_l'][0][0]\n", + "rmse_dml_ml_m_untuned = dml_plr_obj_untuned.evaluate_learners()['ml_m'][0][0]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "# Plots" + "### Comparison and summary\n", + "\n", + "We combine the summaries from various models: full-sample and on-the-folds tuned AutoML, untuned XGB, and dummy models." + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
coefstd errtP>|t|2.5 %97.5 %
Model TypeMetric
Full Sampled0.4982860.03273815.2204072.589147e-520.4341210.562452
On the foldsd0.5020160.03326515.0912631.848688e-510.4368170.567215
Defaultd0.4312530.03258013.2368845.373218e-400.3673980.495108
Less timed0.4363940.03100714.0739295.493102e-450.3756210.497168
\n", + "
" + ], + "text/plain": [ + " coef std err t P>|t| 2.5 % \\\n", + "Model Type Metric \n", + "Full Sample d 0.498286 0.032738 15.220407 2.589147e-52 0.434121 \n", + "On the folds d 0.502016 0.033265 15.091263 1.848688e-51 0.436817 \n", + "Default d 0.431253 0.032580 13.236884 5.373218e-40 0.367398 \n", + "Less time d 0.436394 0.031007 14.073929 5.493102e-45 0.375621 \n", + "\n", + " 97.5 % \n", + "Model Type Metric \n", + "Full Sample d 0.562452 \n", + "On the folds d 0.567215 \n", + "Default d 0.495108 \n", + "Less time d 0.497168 " + ] + }, + "execution_count": 24, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "summary = pd.concat([obj_dml_plr_fullsample.summary, dml_plr_obj_onfolds.summary, dml_plr_obj_untuned.summary, obj_dml_plr_lesstime.summary],\n", + " keys=['Full Sample', 'On the folds', 'Default', 'Less time'])\n", + "summary.index.names = ['Model Type', 'Metric']\n", + "\n", + "summary" ] }, { @@ -651,28 +814,26 @@ "source": [ "##### Plot Coefficients and 95% Confidence Intervals\n", "\n", - "This section generates a plot comparing the coefficients and 95% confidence intervals for each model type. The plot helps visualize the differences in the estimated coefficients and their uncertainties." + "This section generates a plot comparing the coefficients and 95% confidence intervals for each model type." ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 25, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAA90AAAJOCAYAAACqS2TfAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/TGe4hAAAACXBIWXMAAA9hAAAPYQGoP6dpAACVj0lEQVR4nOzdeVxU1f/H8fewDiKLiICouZv7EiZfLXdcslxKc19TNMtKSUtb3AvLIi011NTMFk3TNC1SUcsStTTLPTW3FHBlEQUE7u8Pf4xOgIIxIfp6Ph7zkDn33Hs/d5i58p5777kmwzAMAQAAAACAfGdX0AUAAAAAAHC3InQDAAAAAGAjhG4AAAAAAGyE0A0AAAAAgI0QugEAAAAAsBFCNwAAAAAANkLoBgAAAADARgjdAAAAAADYCKEbAAAAAAAbIXQDwB3EZDJp/PjxBV3Gv7Zo0SJVrVpVjo6O8vT0LOhybiqnWqdOnaoKFSrI3t5edevWlSSVK1dO/fv3z9Pyjx07JpPJpI8//jjfar7bNGvWTM2aNSvoMu4aaWlpeumll1SmTBnZ2dmpU6dOknK/fxk/frxMJpNti0S+4ncG3NkI3QDuKEeOHNGQIUNUoUIFmc1mubu766GHHtL06dN15cqVgi4PuXDgwAH1799fFStW1Ny5czVnzpxbzrNr1y717t1bZcqUkbOzs7y8vBQUFKQFCxYoPT39P6917dq1eumll/TQQw9pwYIFevPNN21WQ36ZNWvWXR/sr169qgkTJqhChQpydnZWhQoVNHnyZKWlpVn127Rpk0wmU7aPrVu3WvWdPXu2ypcvLy8vL/Xp00cJCQlW0zMyMlSvXr08vweSk5P13nvvKTAwUB4eHjKbzapSpYqGDRumP//88/ZegFyaP3++pk6dqi5dumjhwoUaMWKETdd3p8oMoufOncvzvKdPn9b48eO1a9eu/C8MwD3HoaALAIBMa9as0ZNPPilnZ2f17dtXNWvWVGpqqn766SeNGjVKe/fuzVWAK8yuXLkiB4fCvWvetGmTMjIyNH36dFWqVOmW/T/66CM9/fTT8vX1VZ8+fVS5cmUlJiYqMjJSAwcOVHR0tF555ZX/tNYNGzbIzs5O8+bNk5OTk6X94MGDsrPL2/fVZcuW1ZUrV+To6JhvdWdn1qxZ8vb2zvOR+MKkd+/eWrp0qZ566inVr19fW7du1euvv64TJ05ku294/vnn9eCDD1q13fh7/umnnzR06FA9//zzqlChgkJDQzVq1CjNnj3b0mfu3LmKj4/Xiy++mOs6z507p7Zt22rHjh167LHH1LNnTxUtWlQHDx7U4sWLNWfOHKWmpt7GK5A7GzZsUKlSpfTee+9Ztd8N+5f/yunTpzVhwgSVK1fOcqYLANwu9rwA7ghHjx5V9+7dVbZsWW3YsEElS5a0THv22Wd1+PBhrVmzpgArtJ2MjAylpqbKbDbLbDYXdDn/2pkzZyQpV6eVb926VU8//bQaNmyob7/9Vm5ubpZpw4cP16+//qo9e/bYqtQcaz1z5oxcXFysArckOTs753kdJpPprvi9FrRffvlFX375pV5//XVNnDhRkvT000/L29tbYWFhGjZsmGrXrm01T+PGjdWlS5ccl7l69Wo1a9ZM06ZNkyS5u7trzJgxltAdFxen1157TbNnz87T775///767bfftGzZMnXu3Nlq2qRJk/Tqq6/melm348yZM9l+/ngfFrykpCS5uroWdBkA/mOcXg7gjvD222/r0qVLmjdvnlXgzlSpUiW98MILludpaWmaNGmSKlasKGdnZ5UrV06vvPKKUlJSrOYrV66cHnvsMW3atEn169eXi4uLatWqpU2bNkmSli9frlq1aslsNisgIEC//fab1fz9+/dX0aJF9ddff6lNmzZydXWVv7+/Jk6cKMMwrPq+8847atSokYoXLy4XFxcFBARo2bJlWbbFZDJp2LBh+uyzz1SjRg05OzsrIiLCMu3Gay4TExM1fPhwlStXTs7OzvLx8VGrVq20c+dOq2UuXbpUAQEBcnFxkbe3t3r37q1Tp05luy2nTp1Sp06dVLRoUZUoUUIjR47M9Sncs2bNstTs7++vZ599VnFxcVav97hx4yRJJUqUuOU1pBMmTJDJZNJnn31mFbgz1a9f3+rIbVJSkl588UXLaej333+/3nnnnSy/C0n69NNPLa+Jl5eXunfvrpMnT96yVpPJpAULFigpKclySnLmadvZXdMdFxenESNGWH5HpUuXVt++fS2ntOZ0TfeBAwfUpUsXeXl5yWw2q379+lq1apVVn48//lgmk0k///yzQkJCVKJECbm6uurxxx/X2bNnrbZl7969+uGHHyw1Z14jnXlKduXKlWU2m1W8eHE9/PDDWrduXY6/F0m6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ln6ffvqpZs6cqbZt22rs2LEymUz6/PPPVa9ePVWrVq0AtwCALezcuVPVq1e3DFq0evVq9ejRQyNHjrTsB2JjYzVgwAANGTJEZrNZP//8s7Zu3arExET16NFD999/fwFvBYA7QeZZucnJyZZ9ypYtW1SrVi1t3rxZs2bNUnp6ul555RU1btzYErz37t2rtm3bauTIkXdk8CZ03wNuPKU8LS1Nf/zxh6ZNm6YFCxbI3t5eR48e1YcffqhVq1YpODhYL774oqRr12B+/fXXCgoK0tChQxnwCLiHRUZGqm/fvlq+fLkCAwMt7T179lRiYqK++eYbq/5Dhw7Vb7/9pq1bt/7XpQL4Dw0bNky7d+/WypUr5enpqePHj+vJJ59Uz549NXz4cCUlJalq1apydnaWi4uLhgwZouDgYMv1lwDwT3///bceeeQRffvtt9q6dat69+6tdevWqUmTJlq9erVmzJghk8lkFbz79euns2fP6ssvv5SXl1dBb0IWjF5+D8gM3JMnT1bz5s31yiuv6Ny5c5bTNcqXL6+hQ4eqY8eOmj9/viZMmCBJGjt2rHr06KGlS5dqwYIFjFYO3MMSExN15coVBQYGasWKFerWrZskqUKFCjp58qSOHDlidQ/u5s2bKyEhQefPny+okgHY2JYtW/TVV19p0qRJ8vT0VFpamtzd3dW7d291795dMTExqlOnjjp06KC9e/fKbDZr1qxZCgsLU2pqakGXD+AOVaxYMfn5+SkwMFDdu3fX3Llz1aRJE0nSY489pmHDhskwDL355pv66aef5OTkpIULF2rRokV3ZOCWCN13tYyMDMvP06dP1/Tp09WwYUM5OTkpIiJCb7zxhmV6ZvB++OGHdeDAAV29elWSNGrUKL3wwgsaMGAA13ID97CWLVuqRo0aKl++vJ588kk9+uijkqSXX35ZcXFxevrpp3X48GHLl3M//PCDSpQocUee4gUgfyQkJOjq1auqXbu2vvjiC/Xv319FihRRt27d5Ofnp3feeUcPPPCAQkND5ezsrP/97386f/68oqKidOnSpYIuH8AdytXVVU8//bRiYmLk5eWl//3vf5KuD+KaGbzt7e310ksvKSoqSk5OTipZsmRBln1TnF5+D4iKitLu3bvl7++vxx57TLGxsZo/f77eeustvfzyyxozZoylb3R0tPz8/GQymXT16lXLYEkA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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ - "# Check the structure of the summary DataFrames\n", - "print(\"Manual Tuned Summary:\")\n", - "print(manual_tuned_summary.head())\n", - "\n", - "print(\"API Tuned Summary:\")\n", - "print(api_tuned_summary.head())\n", - "\n", - "print(\"Untuned Summary:\")\n", - "print(untuned_automl_summary.head())\n", - "\n", - "print(\"Dummy Summary:\")\n", - "print(dummy_summary.head())\n", - "\n", "# Extract model labels and coefficient values\n", "model_labels = summary.index.get_level_values('Model Type')\n", "coef_values = summary['coef'].values\n", @@ -705,65 +866,59 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 32, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "image/png": "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ffs2AMDMzAxmZmbFt3BERETvEU1zdkxMDEJCQhAVFYXGjRtL+djExAQWFhYA3lxeHhMTgx07dqBcuXJSGwsLC5iYmBTzEhIREWmPTl8nFh8fj1atWin0DwkJQXR0NEJDQ5GSkoL4+HhpmLLr552cnJCSkgIAcHZ2xo0bNxTaTJ48GVOmTFErroyMDFhYWODx48e8X4yIiIpVSc1BmuZsX19fHD58WGV7QPU9catWrUJoaKhacZXU9UVERO8/TXJQiXmPd0nCJE5ERLrCHKQZri8iItIVTXJQ3m/5JiIiIiIiIqJCYeFNREREREREpEUsvImIiIiIiIi0iIU3ERERERERkRax8CYiIiIiIiLSIp2+x5uIiIiIiEo+5/Gxug6hVEuZ5a/rEEjHeMabiIiIiIiISItYeBMRERERERFpEQtvIiIiIiIiIi1i4U1ERERERESkRSy8iYiIiIiIiLSITzUnIp3iU1ILh09JJSIiIir5eMabiIiIiIiISItYeBMRERERERFpEQtvIiIiIiIiIi1i4U1ERERERESkRSy8iYiIiIiIiLSIhTcRERERERGRFrHwJiIiIiIiItIiFt5EREREREREWsTCm4iIiIiIiEiLWHgTERERERERaRELbyIiIiIiIiItYuFNREREREREpEUsvImIiIiIiIi0iIU3ERERERERkRax8CYiIiIiIiLSIhbeRERERERERFrEwpuIiIiIiIhIi1h4ExEREREREWkRC28iIiIiIiIiLWLhTURERERERKRFLLyJiIiIiIiItIiFNxEREREREZEW6bTwPnLkCAICAmBvbw+ZTIbt27fn2T4tLQ3BwcFwc3ODnp4eRowYobTd5s2b4e7uDmNjY9SuXRu7du0q+uCJiIg+IJrm7K1bt6Jt27awtraGubk5vL29sXfvXoV2ixcvhrOzM4yNjdG4cWOcOnVKS0tARESkOzotvJ8+fQpPT08sXrxYrfZZWVmwtrbGxIkT4enpqbTN8ePHERQUhH79+uHPP/9EYGAgAgMDceHChaIMnYiI6IOiac4+cuQI2rZti127diExMRGtWrVCQEAA/vzzT6nNxo0bMWrUKEyePBlnz56Fp6cn/Pz8cOfOHW0tBhERkU7IhBBC10EAgEwmw7Zt2xAYGKhWe19fX9StWxcLFiyQ69+jRw88ffoUv//+u9SvSZMmqFu3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lE7XyMgIRkZG2g2eiIiI5Hz77bfo3bs3+vfvD+BNzn769CkGDBiACRMmQE9P8fwAczYREZVGpeqMt7e3Nw4cOCDXLy4uDt7e3lL3s2fPFBK1vr4+cnJyiiVGIiIiUo+qnA2ArwElIqL3ik7PeGdmZuLatWtSd3JyMpKSklC+fHk4OjoiPDwct27dwpo1awAAgwYNwqJFizB27Fj07dsXBw8exKZNmxAbGytNIyAgANOnT4ejoyNq1qyJP//8E/PmzUPfvn2LffmIiIjeF5rmbABISkqSxr179y6SkpJgaGiIGjVqAHiTs+fNmwcvLy80btwY165dw7fffouAgACpACciInof6LTwPnPmDFq1aiV1jxo1CgAQEhKC6OhopKWl4ebNm9JwFxcXxMbGYuTIkYiKikKVKlXw008/Sa8SA4CFCxfi22+/xZdffok7d+7A3t4eAwcOxKRJk4pvwYiIiN4zmuZsAPDy8pL+n5iYiJiYGDg5OSElJQUAMHHiRMhkMkycOBG3bt2CtbW19AM6ERHR+0QmeC2XgoyMDFhYWODx48cwNzfXdThE7zXn8bH5NyKVUmb56zoEKmLMQZrh+iIqHszXhcN8/X7SJAeVqnu8iYiIiIiIiEobFt5EREREREREWsTCm4iIiIiIiEiLWHgTERERERERaRELbyIiIiIiIiItYuFNREREREREpEUsvImIiIiIiIi0qIyuAyAiopKD72ktOL6jlYiIiFThGW8iIiIiIiIiLWLhTURERERERKRFLLyJiIiIiIiItIiFNxEREREREZEWsfAmIiIiIiIi0iIW3kRERERERERaxMKbiIiIiIiISItYeBMRERERERFpEQtvIiIiIiIiIi1i4U1ERERERESkRSy8iYiIiIiIiLSIhTcRERERERGRFrHwJiIiIiIiItIiFt5EREREREREWsTCm4iIiIiIiEiLNCq879y5k+fw169f49SpU4UKiIiIiAqPOZuIiKjk0KjwtrOzk0vktWvXRmpqqtR9//59eHt7F110REREVCDM2URERCWHRoW3EEKuOyUlBa9evcqzDRERERU/5mwiIqKSo8jv8ZbJZEU9SSIiItIC5mwiIqLiwYerEREREREREWlRGU0ay2QyPHnyBMbGxhBCQCaTITMzExkZGQAg/UtERES6xZxNRERUcmhUeAsh4ObmJtft5eUl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Ngz169cHABw9elShXadOnYomOiIiIioQ5mwiIqKSQ+Onqty8eRPTpk1TOVzX7wQlIiKiN5iziYiISgaNCu+cnJx82zx79qzAwRAREVHRYM4mIiIqOQr8VPN3ZWVlYd68eahatWpRTZKIiIi0gDmbiIioeGlUeGdlZSE8PBwNGjRA06ZNsX37dgDAypUr4eLigvnz52PkyJHaiJOIiIg0wJxNRERUcmh0qfmkSZOwbNkytGnTBsePH0e3bt0QFhaGEydOYN68eejWrRv09fW1FSsRERGpiTmbiIio5NCo8N68eTPWrFmDTp064cKFC6hTpw5ev36Nc+fOQSaTaStGIiIi0hBzNhERUcmh0aXm//33n/RKklq1asHIyAgjR45kAiciIiphmLOJiIhKDo0K7+zsbBgaGkrdZcqUgZmZWZEHRURERIXDnE1ERFRyaHSpuRACoaGhMDIyAgC8ePECgwYNgqmpqVy7rVu3Fl2EREREpDHmbCIiopJDo8I7JCRErvvzzz8v0mCIiIioaDBnExERlRwaFd6rVq3SVhxERERUhJiziYiISg6N7vEmIiIiIiIiIs2w8CYiIiIiIiLSIhbeRERERERERFrEwpuIiIiIiIhIi1h4ExEREREREWkRC28iIiIiIiIiLWLhTURERERERKRFLLyJiIiIiIiItIiFNxEREREREZEWsfAmIiIiIiIi0iIW3kRERERERERaxMKbiIiIiIiISItYeBMRERERERFpEQtvIiIiIiIiIi1i4U1ERERERESkRSy8iYiIiIiIiLSIhTcRERERERGRFrHwJiIiIiIiItIiFt5EREREREREWqTTwvvIkSMICAiAvb09ZDIZtm/fnu848fHxqFevHoyMjFCtWjVER0erbDtr1izIZDKMGDGiyGImIiL6EGmas9PS0hAcHAw3Nzfo6enlm4s3bNgAmUyGwMDAIouZiIiopNBp4f306VN4enpi8eLFarVPTk6Gv78/WrVqhaSkJIwYMQL9+/fH3r17FdqePn0ay5YtQ506dYo6bCIiog+Opjk7KysL1tbWmDhxIjw9PfNsm5KSgtGjR6NFixZFESoREVGJU0aXM+/QoQM6dOigdvulS5fCxcUFkZGRAAAPDw8cPXoU8+fPh5+fn9QuMzMTvXr1wooVK/Ddd9/lO92srCxkZWVJ3RkZGRosBRER0ftP05zt7OyMqKgoAMDKlStVtsvOzkavXr0QERGBP/74A48ePcpzuszZRERUGpWqe7wTEhLQpk0buX5+fn5ISEiQ6zdkyBD4+/srtFVl5syZsLCwkD4ODg5FFjMRERGpNnXqVFSqVAn9+vVTqz1zNhERlUalqvC+ffs2bGxs5PrZ2NggIyMDz58/B/DmHrGzZ89i5syZak83PDwcjx8/lj6pqalFGjcREREpOnr0KH7++WesWLFC7XGYs4mIqDTS6aXmRS01NRXDhw9HXFwcjI2N1R7PyMgIRkZGWoyMiIiI3vbkyRP07t0bK1asQMWKFdUejzmbiIhKo1JVeNva2iI9PV2uX3p6OszNzWFiYoLExETcuXMH9erVk4ZnZ2fjyJEjWLRoEbKysqCvr1/cYRMREdE7rl+/jpSUFAQEBEj9cnJyAABlypTBlStX4OrqqqvwiIiIilSpKry9vb2xa9cuuX5xcXHw9vYGAHz88cf466+/5IaHhYXB3d0d48aNY9FNRERUQri7uyvk7IkTJ+LJkyeIiorivdtERPRe0WnhnZmZiWvXrkndycnJSEpKQvny5eHo6Ijw8HDcunULa9asAQAMGjQIixYtwtixY9G3b18cPHgQmzZtQmxsLACgXLlyqFWrltw8TE1NUaFCBYX+REREpD5NczYAJCUlSePevXsXSUlJMDQ0RI0aNWBsbKyQmy0tLQGAOZuIiN47Oi28z5w5g1atWkndo0aNAgCEhIQgOjoaaWlpuHnzpjTcxcUFsbGxGDlyJKKiolClShX89NNPcq8SIyIioqKnac4GAC8vL+n/iYmJiImJgZOTE1JSUoolZiIiopJCp4W3r68vhBAqh0dHRysd588//1R7HvHx8QWIjIiIiN5WkJydV3t1p0FERPQ+KFWvEyMiIiIiIiIqbUrVw9WIiIiIiIg+dM7jY3UdQqmWMsu/2OfJM95EREREREREWsTCm4iIiIiIiEiLWHgTERERERERaRELbyIiIiIiIiItYuFNREREREREpEUsvImIiIiIiIi0iIU3ERERERERkRax8CYiIiIiIiLSIhbeRERERERERFrEwpuIiIiIiIhIi1h4ExEREREREWlRGV0HQERERFRSOI+P1XUIpVrKLH9dh0BEVCLxjDcRERERERGRFrHwJiIiIiIiItIiFt5EREREREREWsTCm4iIiIiIiEiLWHgTERERERERaRELbyIiIiIiIiItYuFNREREREREpEV8jzcRERERlUh8r3rB8Z3qRCULz3gTERERERERaRELbyIiIiIiIiItYuFNREREREREpEUsvImIiIiIiIi0iIU3ERERERERkRax8CYiIiIiIiLSIhbeRERERERERFrEwpuIiIiIiIhIi1h4ExEREREREWkRC28iIiIiIiIiLWLhTURERERERKRFLLyJiIiIiIiItEinhfeRI0cQEBAAe3t7yGQybN++Pd9x4uPjUa9ePRgZGaFatWqIjo6WGz5z5kw0bNgQ5cqVQ6VKlRAYGIgrV65oZwGIiIg+EJrm7LS0NAQHB8PNzQ16enoYMWKEQpsVK1agRYsWsLKygpWVFdq0aYNTp05pZwGIiIh0SKeF99OnT+Hp6YnFixer1T45ORn+/v5o1aoVkpKSMGLECPTv3x979+6V2hw+fBhDhgzBiRMnEBcXh1evXqFdu3Z4+vSpthaDiIjovadpzs7KyoK1tTUmTpwIT09PpW3i4+MRFBSEQ4cOISEhAQ4ODmjXrh1u3bpVlKETERHpXBldzrxDhw7o0KGD2u2XLl0KFxcXREZGAgA8PDxw9OhRzJ8/H35+fgCAPXv2yI0THR2NSpUqITExES1btlQ63aysLGRlZUndGRkZmi4KERHRe03TnO3s7IyoqCgAwMqVK5W2WbdunVz3Tz/9hF9//RUHDhxAnz59lI7DnE1ERKVRqbrHOyEhAW3atJHr5+fnh4SEBJXjPH78GABQvnx5lW1mzpwJCwsL6ePg4FA0ARMREZHanj17hlevXjFnExHRe6dUFd63b9+GjY2NXD8bGxtkZGTg+fPnCu1zcnIwYsQINGvWDLVq1VI53fDwcDx+/Fj6pKamFnnsRERElLdx48bB3t5e4Uf2tzFnExFRaaTTS821bciQIbhw4QKOHj2aZzsjIyMYGRkVU1RERET0rlmzZmHDhg2Ij4+HsbGxynbM2UREVBqVqsLb1tYW6enpcv3S09Nhbm4OExMTuf5fffUVfv/9dxw5cgRVqlQpzjCJiIhIA3PnzsWsWbOwf/9+1KlTR9fhEBERFblSdam5t7c3Dhw4INcvLi4O3t7eUrcQAl999RW2bduGgwcPwsXFpbjDJCIiIjV9//33mDZtGvbs2YMGDRroOhwiIiKt0OkZ78zMTFy7dk3qTk5ORlJSEsqXLw9HR0eEh4fj1q1bWLNmDQBg0KBBWLRoEcaOHYu+ffvi4MGD2LRpE2JjY6VpDBkyBDExMdixYwfKlSuH27dvAwAsLCwUzooTERGRejTN2QCQlJQkjXv37l0kJSXB0NAQNWrUAADMnj0bkyZNQkxMDJydnaWcbWZmBjMzs+JbOCIiIi3TaeF95swZtGrVSuoeNWoUACAkJATR0dFIS0vDzZs3peEuLi6IjY3FyJEjERUVhSpVquCnn36SXiUGAD/++CMAwNfXV25eq1atQmhoqPYWhoiI6D2mac4GAC8vL+n/iYmJiImJgZOTE1JSUgC8ydkvX75E165d5cabPHkypkyZop0FISIi0gGdFt6+vr4QQqgcHh0drXScP//8U+U4eU2PiIiICqYgOTu/nJxbgBMREb3vStU93kRERERERESlDQtvIiIiIiIiIi0qVa8TK62cx8fm34hUSpnlr+sQiIiIiIiICoxnvImIiIiIiIi0iIU3ERERERERkRax8CYiIiIiIiLSIhbeRERERERERFrEwpuIiIiIiIhIi1h4ExEREREREWkRC28iIiIiIiIiLWLhTURERERERKRFLLyJiIiIiIiItIiFNxEREREREZEWsfAmIiIiIiIi0iIW3kRERERERERaxMKbiIiIiIiISItYeBMRERERERFpEQtvIiIiIiIiIi1i4U1ERERERESkRWV0HQBRcXMeH6vrEEq1lFn+ug6BiIiIiKhU4RlvIiIiIiIiIi1i4U1ERERERESkRSy8iYiIiIiIiLSIhTcRERERERGRFrHwJiIiIiIiItIiFt5EREREREREWsTCm4iIiIiIiEiLWHgTERERERERaRELbyIiIiIiIiItYuFNREREREREpEUsvImIiIiIiIi0iIU3ERERERERkRax8CYiIiIiIiLSIhbeRERERERERFqk08L7yJEjCAgIgL29PWQyGbZv357vOPHx8ahXrx6MjIxQrVo1REdHK7RZvHgxnJ2dYWxsjMaNG+PUqVNFHzwREdEHRNOcnZaWhuDgYLi5uUFPTw8jRoxQ2m7z5s1wd3eHsbExateujV27dhV98ERERDqm08L76dOn8PT0xOLFi9Vqn5ycDH9/f7Rq1QpJSUkYMWIE+vfvj71790ptNm7ciFGjRmHy5Mk4e/YsPD094efnhzt37mhr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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ - "def print_scores(dml_obj):\n", - " summary_df = dml_obj.summary\n", - " print(\"Summary DataFrame columns:\", summary_df.columns)\n", - " print(\"Summary DataFrame index:\", summary_df.index)\n", - " \n", - " scores = summary_df.loc['d']\n", - " return scores\n", - "\n", - "# Calculate and store scores for comparison\n", - "scores = {\n", - " \"FLAML Manual Tuned\": obj_dml_plr_manual_tuned.summary.loc['d'],\n", - " \"FLAML API Tuned\": dml_plr_obj_api_tuned.summary.loc['d'],\n", - " \"AutoML Untuned\": dml_plr_obj_untuned_automl.summary.loc['d'],\n", - " \"Dummy\": dml_plr_obj_dummy.summary.loc['d']\n", - "}\n", + "fig, axs = plt.subplots(1,2,figsize=(10,4))\n", + "axs = axs.flatten()\n", "\n", - "# Convert the scores dictionary to a DataFrame for plotting\n", - "scores_df = pd.DataFrame(scores).T\n", + "axs[0].bar(x = ['Full Sample', 'On the folds', 'Default', 'Less time'],\n", + " height=[rmse_dml_ml_m_fullsample, rmse_dml_ml_m_onfolds, rmse_dml_ml_m_untuned, rmse_dml_ml_m_lesstime])\n", "\n", - "# Plot MSE for l_of_X and m_of_X separately\n", - "scores_df['coef'].plot(kind=\"bar\", title=\"MSE for l_of_X\")\n", - "plt.ylabel('RMSE')\n", - "plt.xticks(rotation=45)\n", - "plt.tight_layout()\n", - "plt.show()\n", + "axs[1].bar(x = ['Full Sample', 'On the folds', 'Default', 'Less time'],\n", + " height=[rmse_dml_ml_l_fullsample, rmse_dml_ml_l_onfolds, rmse_dml_ml_l_untuned, rmse_dml_ml_l_lesstime])\n", "\n", - "scores_df['std err'].plot(kind=\"bar\", title=\"MSE for m_of_X\")\n", - "plt.ylabel('RMSE')\n", - "plt.xticks(rotation=45)\n", - "plt.tight_layout()\n", - "plt.show()" + "axs[0].set_xlabel(\"Tuning Method\")\n", + "axs[0].set_ylim((1,1.12))\n", + "axs[0].set_ylabel(\"RMSE\")\n", + "axs[0].set_title(\"OOS RMSE for Different Tuning Methods (ml_m)\")\n", + "\n", + "axs[1].set_xlabel(\"Tuning Method\")\n", + "axs[1].set_ylim((1.1,1.22))\n", + "axs[1].set_ylabel(\"RMSE\")\n", + "axs[1].set_title(\"OOS RMSE for Different Tuning Methods (ml_l)\")\n", + "\n", + "fig.suptitle(\"Out of Sample RMSE in Nuisance Estimation by Tuning Method\")\n", + "fig.tight_layout()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### Observations\n", - "\n", - "- **Coefficient Values**: The coefficients for the `FLAML Manual Tuned` and `FLAML API Tuned` models are quite similar, with the API-tuned model having a slightly higher coefficient. Both are lower compared to the `AutoML Untuned` and `Dummy` models.\n", - "- **Untuned AutoML Models**: The `AutoML Untuned` models yield a higher coefficient compared to the manually tuned FLAML models, indicating that the automated process of model tuning in AutoML may have overestimated the effect. The `Dummy` model has the highest coefficient, suggesting it could be overfitting or has a higher baseline value.\n", - "\n", - "### Conclusion\n", + "## Conclusion\n", "\n", - "- The **FLAML Manual Tuned** and **FLAML API Tuned** models provide similar results with coefficients close to 0.5, suggesting robust performance within their tuned configurations.\n", - "- The **AutoML Untuned** models offer higher coefficient values, indicating that even though they are untuned, they still provide a noticeable increase in coefficient compared to the tuned FLAML models.\n", - "- The **Dummy** model, having the highest coefficient, shows the largest discrepancy. This reflects the fact, that the learner is not actually learning any meaningful relationship between the features and the outcome/treatment variable. \n", + "This notebook highlights that tuning plays an important role and can be easily done using FLAML AutoML. In our [recent study](https://arxiv.org/abs/2402.04674) we provide more evidence for tuning with AutoML, especially that the full sample case in all investigated cases performed similarly to the full sample case and thus tuning time and complexity can be saved by tuning externally.\n", "\n", - "Overall, the manually tuned FLAML models and the API-tuned FLAML models show good alignment with the expectations, while the untuned and dummy models present larger coefficients which may suggest the need for further tuning or validation." + "See also our fully automated API for tuning DoubleML objects using AutoML, calles [``AutoDoubleML``](https://github.com/OliverSchacht/AutoDoubleML) which can be installed from Github for python." ] } ], "metadata": { "kernelspec": { - "display_name": "base", + "display_name": "flaml", "language": "python", "name": "python3" }, @@ -777,7 +932,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.11.5" + "version": "3.12.4" } }, "nbformat": 4, From 0369a9ef65e5570db1c6bfdd8f8d2ed2d49012cb Mon Sep 17 00:00:00 2001 From: PhilippBach Date: Mon, 14 Oct 2024 10:45:28 +0200 Subject: [PATCH 26/71] install libcurl --- .github/workflows/test_build_docu_dev.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/test_build_docu_dev.yml b/.github/workflows/test_build_docu_dev.yml index 443e1f83..f4ba8fcc 100644 --- a/.github/workflows/test_build_docu_dev.yml +++ b/.github/workflows/test_build_docu_dev.yml @@ -62,6 +62,9 @@ jobs: - name: Install R uses: r-lib/actions/setup-r@v2 + - name: Install libcurl + run: sudo apt-get install -y libcurl4-openssl-dev + - name: Query R version run: | writeLines(sprintf("R-%i.%i", getRversion()$major, getRversion()$minor), ".github/R-version") From 8a5893c9994d149bc8bc328c7f3103380a997222 Mon Sep 17 00:00:00 2001 From: PhilippBach Date: Tue, 15 Oct 2024 10:04:50 +0200 Subject: [PATCH 27/71] fix link to irm models --- doc/examples/py_double_ml_apo.ipynb | 6 +++--- doc/examples/py_double_ml_cate.ipynb | 2 +- doc/examples/py_double_ml_gate.ipynb | 4 ++-- doc/examples/py_double_ml_gate_sensitivity.ipynb | 2 +- doc/examples/py_double_ml_policy_tree.ipynb | 2 +- doc/examples/py_double_ml_sensitivity_booking.ipynb | 2 +- 6 files changed, 9 insertions(+), 9 deletions(-) diff --git a/doc/examples/py_double_ml_apo.ipynb b/doc/examples/py_double_ml_apo.ipynb index fc378910..6dddaae3 100644 --- a/doc/examples/py_double_ml_apo.ipynb +++ b/doc/examples/py_double_ml_apo.ipynb @@ -6,7 +6,7 @@ "source": [ "# Python: Average Potential Outcome (APO) Models\n", "\n", - "In this example, we illustrate how the [DoubleML](https://docs.doubleml.org/stable/index.html) package can be used to estimate average potential outcomes (APOs) in an interactive regression model (see [DoubleMLIRM](https://docs.doubleml.org/stable/guide/models.html#interactive-regression-model-irm)).\n", + "In this example, we illustrate how the [DoubleML](https://docs.doubleml.org/stable/index.html) package can be used to estimate average potential outcomes (APOs) in an interactive regression model (see [DoubleMLIRM](https://docs.doubleml.org/stable/guide/models.html#interactive-regression-models-irm)).\n", "\n", "The goal is to estimate the average potential outcome\n", "\n", @@ -172,8 +172,8 @@ "source": [ "## Single Average Potential Outcome Models (APO)\n", "\n", - "Further, we have to specify machine learning algorithms. As in the [DoubleMLIRM](https://docs.doubleml.org/stable/guide/models.html#interactive-regression-model-irm) model, we have to set ``ml_m`` as a classifier and ``ml_g`` as a regressor (since the outcome is continuous). As in the \n", - "[DoubleMLIRM](https://docs.doubleml.org/stable/guide/models.html#interactive-regression-model-irm) model, the classifier ``ml_m`` is used to estimate the conditional probability of receiving treatment level $d$ given the covariates $X$\n", + "Further, we have to specify machine learning algorithms. As in the [DoubleMLIRM](https://docs.doubleml.org/stable/guide/models.html#interactive-regression-models-irm) model, we have to set ``ml_m`` as a classifier and ``ml_g`` as a regressor (since the outcome is continuous). As in the \n", + "[DoubleMLIRM](https://docs.doubleml.org/stable/guide/models.html#interactive-regression-models-irm) model, the classifier ``ml_m`` is used to estimate the conditional probability of receiving treatment level $d$ given the covariates $X$\n", "\n", "$$m_{0,d}(X) = \\mathbb{E}[1\\{D=d\\}|X]$$\n", "\n", diff --git a/doc/examples/py_double_ml_cate.ipynb b/doc/examples/py_double_ml_cate.ipynb index 3b5afd81..62b7966b 100644 --- a/doc/examples/py_double_ml_cate.ipynb +++ b/doc/examples/py_double_ml_cate.ipynb @@ -9,7 +9,7 @@ "source": [ "# Python: Conditional Average Treatment Effects (CATEs) for IRM models\n", "\n", - "In this simple example, we illustrate how the [DoubleML](https://docs.doubleml.org/stable/index.html) package can be used to estimate conditional average treatment effects with B-splines for one or two-dimensional effects in the [DoubleMLIRM](https://docs.doubleml.org/stable/guide/models.html#interactive-regression-model-irm) model." + "In this simple example, we illustrate how the [DoubleML](https://docs.doubleml.org/stable/index.html) package can be used to estimate conditional average treatment effects with B-splines for one or two-dimensional effects in the [DoubleMLIRM](https://docs.doubleml.org/stable/guide/models.html#interactive-regression-models-irm) model." ] }, { diff --git a/doc/examples/py_double_ml_gate.ipynb b/doc/examples/py_double_ml_gate.ipynb index 2d6c23c5..382a6476 100644 --- a/doc/examples/py_double_ml_gate.ipynb +++ b/doc/examples/py_double_ml_gate.ipynb @@ -9,7 +9,7 @@ "source": [ "# Python: Group Average Treatment Effects (GATEs) for IRM models\n", "\n", - "In this simple example, we illustrate how the [DoubleML](https://docs.doubleml.org/stable/index.html) package can be used to estimate group average treatment effects in the [DoubleMLIRM](https://docs.doubleml.org/stable/guide/models.html#interactive-regression-model-irm) model." + "In this simple example, we illustrate how the [DoubleML](https://docs.doubleml.org/stable/index.html) package can be used to estimate group average treatment effects in the [DoubleMLIRM](https://docs.doubleml.org/stable/guide/models.html#interactive-regression-models-irm) model." ] }, { @@ -167,7 +167,7 @@ "metadata": {}, "source": [ "## Interactive Regression Model (IRM)\n", - "The first step is to fit a [DoubleML IRM Model](https://docs.doubleml.org/stable/guide/models.html#interactive-regression-model-irm) to the data." + "The first step is to fit a [DoubleML IRM Model](https://docs.doubleml.org/stable/guide/models.html#interactive-regression-models-irm) to the data." ] }, { diff --git a/doc/examples/py_double_ml_gate_sensitivity.ipynb b/doc/examples/py_double_ml_gate_sensitivity.ipynb index 20ecb705..7810ad26 100644 --- a/doc/examples/py_double_ml_gate_sensitivity.ipynb +++ b/doc/examples/py_double_ml_gate_sensitivity.ipynb @@ -6,7 +6,7 @@ "source": [ "# Python: GATE Sensitivity Analysis\n", "\n", - "In this simple example, we illustrate how the [DoubleML](https://docs.doubleml.org/stable/index.html) package can be used to perfrom a sensitivity analysis for group average treatment effects in the [DoubleMLIRM](https://docs.doubleml.org/stable/guide/models.html#interactive-regression-model-irm) model.\n" + "In this simple example, we illustrate how the [DoubleML](https://docs.doubleml.org/stable/index.html) package can be used to perfrom a sensitivity analysis for group average treatment effects in the [DoubleMLIRM](https://docs.doubleml.org/stable/guide/models.html#interactive-regression-models-irm) model.\n" ] }, { diff --git a/doc/examples/py_double_ml_policy_tree.ipynb b/doc/examples/py_double_ml_policy_tree.ipynb index 0a4109bc..3c981f97 100644 --- a/doc/examples/py_double_ml_policy_tree.ipynb +++ b/doc/examples/py_double_ml_policy_tree.ipynb @@ -173,7 +173,7 @@ "metadata": {}, "source": [ "## Interactive Regression Model (IRM)\n", - "The first step is to fit a [DoubleML IRM Model](https://docs.doubleml.org/stable/guide/models.html#interactive-regression-model-irm) to the data." + "The first step is to fit a [DoubleML IRM Model](https://docs.doubleml.org/stable/guide/models.html#interactive-regression-models-irm) to the data." ] }, { diff --git a/doc/examples/py_double_ml_sensitivity_booking.ipynb b/doc/examples/py_double_ml_sensitivity_booking.ipynb index ce41354c..fe8677ad 100644 --- a/doc/examples/py_double_ml_sensitivity_booking.ipynb +++ b/doc/examples/py_double_ml_sensitivity_booking.ipynb @@ -85,7 +85,7 @@ "\n", "### 1. Formulation of Causal Model & Identification Assumptions\n", "\n", - "In the use case, we focused on a nonparametric model for the treatment effect, also called [Interactive Regression Model (IRM)](https://docs.doubleml.org/stable/guide/models.html#interactive-regression-model-irm). Under the assumptions of consistency, overlap and unconfoundedness, this model can be used to identify the Average Treatment Effect (ATE) and the Average Treatment Effect on the Treated (ATT). The identification strategy was based on a DAG.\n", + "In the use case, we focused on a nonparametric model for the treatment effect, also called [Interactive Regression Model (IRM)](https://docs.doubleml.org/stable/guide/models.html#interactive-regression-models-irm). Under the assumptions of consistency, overlap and unconfoundedness, this model can be used to identify the Average Treatment Effect (ATE) and the Average Treatment Effect on the Treated (ATT). The identification strategy was based on a DAG.\n", "\n", "![DAG underlying to the causal analysis.](figures/dag_usecase_revised.png)\n", "\n", From 3a9afbb6d4cba5059ec66e314db526eac7c2283a Mon Sep 17 00:00:00 2001 From: PhilippBach Date: Tue, 15 Oct 2024 12:52:31 +0200 Subject: [PATCH 28/71] use workflow from main branch --- .github/workflows/test_build_docu_dev.yml | 52 +++++++++++++------ .../workflows/test_build_docu_released.yml | 31 ++++++++--- 2 files changed, 60 insertions(+), 23 deletions(-) diff --git a/.github/workflows/test_build_docu_dev.yml b/.github/workflows/test_build_docu_dev.yml index f4ba8fcc..01b58c10 100644 --- a/.github/workflows/test_build_docu_dev.yml +++ b/.github/workflows/test_build_docu_dev.yml @@ -1,3 +1,5 @@ +# Workflow based on https://github.com/actions/starter-workflows/blob/main/ci/python-package.yml + name: Test Docu Build (with dev pkgs) on: @@ -21,8 +23,10 @@ on: schedule: - cron: "0 9 * * 1,3,5" + jobs: build: + runs-on: ubuntu-latest env: GITHUB_PAT: ${{ secrets.GITHUB_TOKEN }} @@ -46,39 +50,55 @@ jobs: path: doubleml-for-py ref: ${{ github.event.inputs.doubleml-py-branch }} - - name: Install dependencies - run: | - sudo apt-get update - sudo apt-get install -y libicu-dev libcurl4-openssl-dev libssl-dev - - name: Install graphviz - run: sudo apt-get install -y graphviz + run: sudo apt-get install graphviz - name: Install python uses: actions/setup-python@v5 with: python-version: '3.12' - + - name: Install dependencies and the python package + run: | + python -m pip install --upgrade pip + pip install -r requirements.txt + pip uninstall -y DoubleML + cd doubleml-for-py + pip install -e . + + - name: Add R repository + run: | + sudo apt install dirmngr gnupg apt-transport-https ca-certificates software-properties-common + sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys E298A3A825C0D65DFD57CBB651716619E084DAB9 + sudo add-apt-repository 'deb https://cloud.r-project.org/bin/linux/ubuntu focal-cran40/' - name: Install R - uses: r-lib/actions/setup-r@v2 + run: | + sudo apt-get update + sudo apt-get install r-base + sudo apt-get install r-base-dev + sudo apt-get install -y zlib1g-dev libicu-dev pandoc make libcurl4-openssl-dev libssl-dev - - name: Install libcurl - run: sudo apt-get install -y libcurl4-openssl-dev + - name: Get user library folder + run: | + mkdir ${GITHUB_WORKSPACE}/tmp_r_libs_user + echo R_LIBS_USER=${GITHUB_WORKSPACE}/tmp_r_libs_user >> $GITHUB_ENV - name: Query R version run: | writeLines(sprintf("R-%i.%i", getRversion()$major, getRversion()$minor), ".github/R-version") shell: Rscript {0} - - name: Install pandoc - uses: r-lib/actions/setup-pandoc@v2 + - name: Cache R packages + uses: actions/cache@v4 + with: + path: ${{ env.R_LIBS_USER }} + key: doubleml-test-build-dev-${{ hashFiles('.github/R-version') }} - name: Install R kernel for Jupyter and the R package DoubleML (dev) if: ${{ github.event_name != 'workflow_dispatch' }} run: | install.packages('remotes') remotes::install_github('DoubleML/doubleml-for-r', dependencies = TRUE) - install.packages(c('knitr', 'ggplot2', 'IRkernel', 'xgboost', 'hdm', 'reshape2', 'gridExtra', "igraph", "mlr3filters", "mlr3measures", "did")) + install.packages(c('ggplot2', 'IRkernel', 'xgboost', 'hdm', 'reshape2', 'gridExtra', "igraph", "mlr3filters", "mlr3measures", "did")) IRkernel::installspec() shell: Rscript {0} @@ -87,10 +107,10 @@ jobs: run: | install.packages('remotes') remotes::install_github('DoubleML/doubleml-for-r@${{ github.event.inputs.doubleml-r-branch }}', dependencies = TRUE) - install.packages(c('knitr', 'ggplot2', 'IRkernel', 'xgboost', 'hdm', 'reshape2', 'gridExtra', "igraph", "mlr3filters", "mlr3measures", "did")) + install.packages(c('ggplot2', 'IRkernel', 'xgboost', 'hdm', 'reshape2', 'gridExtra', "igraph", "mlr3filters", "mlr3measures", "did")) IRkernel::installspec() shell: Rscript {0} - + - name: Build docu with sphinx run: | make -C doc html # build docu @@ -103,4 +123,4 @@ jobs: uses: actions/upload-artifact@v4 with: name: build_html - path: doc/_build/html/ \ No newline at end of file + path: doc/_build/html/ diff --git a/.github/workflows/test_build_docu_released.yml b/.github/workflows/test_build_docu_released.yml index 9b464671..772aba94 100644 --- a/.github/workflows/test_build_docu_released.yml +++ b/.github/workflows/test_build_docu_released.yml @@ -36,22 +36,39 @@ jobs: python -m pip install --upgrade pip pip install -r requirements.txt + - name: Add R repository + run: | + sudo apt install dirmngr gnupg apt-transport-https ca-certificates software-properties-common + sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys E298A3A825C0D65DFD57CBB651716619E084DAB9 + sudo add-apt-repository 'deb https://cloud.r-project.org/bin/linux/ubuntu focal-cran40/' - name: Install R - uses: r-lib/actions/setup-r@v2 - + run: | + sudo apt-get update + sudo apt-get install r-base + sudo apt-get install r-base-dev + sudo apt-get install -y zlib1g-dev libicu-dev pandoc make libcurl4-openssl-dev libssl-dev + + - name: Get user library folder + run: | + mkdir ${GITHUB_WORKSPACE}/tmp_r_libs_user + echo R_LIBS_USER=${GITHUB_WORKSPACE}/tmp_r_libs_user >> $GITHUB_ENV + - name: Query R version run: | writeLines(sprintf("R-%i.%i", getRversion()$major, getRversion()$minor), ".github/R-version") shell: Rscript {0} - - - name: Install pandoc - uses: r-lib/actions/setup-pandoc@v2 - - name: Install R kernel for Jupyter and the R package DoubleML (CRAN release) + - name: Cache R packages + uses: actions/cache@v4 + with: + path: ${{ env.R_LIBS_USER }} + key: doubleml-test-build-stable-${{ hashFiles('.github/R-version') }} + + - name: Install R kernel for Jupyter and the R package DoubleML (dev) run: | install.packages('remotes') remotes::install_cran('DoubleML', dependencies = TRUE) - install.packages(c('knitr', 'ggplot2', 'IRkernel', 'xgboost', 'hdm', 'reshape2', 'gridExtra', "igraph", "mlr3filters", "mlr3measures", "did")) + install.packages(c('ggplot2', 'IRkernel', 'xgboost', 'hdm', 'reshape2', 'gridExtra', "igraph", "mlr3filters", "mlr3measures", "did")) IRkernel::installspec() shell: Rscript {0} From 99f8b34d0fc999139e4e98b479029544832087a4 Mon Sep 17 00:00:00 2001 From: PhilippBach Date: Tue, 15 Oct 2024 12:53:54 +0200 Subject: [PATCH 29/71] use workflow for stable deploy based on main branch --- .github/workflows/deploy_docu_stable.yml | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/.github/workflows/deploy_docu_stable.yml b/.github/workflows/deploy_docu_stable.yml index e5b4992b..831b968c 100644 --- a/.github/workflows/deploy_docu_stable.yml +++ b/.github/workflows/deploy_docu_stable.yml @@ -5,6 +5,7 @@ name: Deploy Docu (stable) on: workflow_dispatch: + jobs: build: @@ -26,14 +27,34 @@ jobs: python -m pip install --upgrade pip pip install -r requirements.txt + - name: Add R repository + run: | + sudo apt install dirmngr gnupg apt-transport-https ca-certificates software-properties-common + sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys E298A3A825C0D65DFD57CBB651716619E084DAB9 + sudo add-apt-repository 'deb https://cloud.r-project.org/bin/linux/ubuntu focal-cran40/' - name: Install R - uses: r-lib/actions/setup-r@v2 + run: | + sudo apt-get update + sudo apt-get install r-base + sudo apt-get install r-base-dev + sudo apt-get install -y zlib1g-dev libicu-dev pandoc make libcurl4-openssl-dev libssl-dev + + - name: Get user library folder + run: | + mkdir ${GITHUB_WORKSPACE}/tmp_r_libs_user + echo R_LIBS_USER=${GITHUB_WORKSPACE}/tmp_r_libs_user >> $GITHUB_ENV - name: Query R version run: | writeLines(sprintf("R-%i.%i", getRversion()$major, getRversion()$minor), ".github/R-version") shell: Rscript {0} + - name: Cache R packages + uses: actions/cache@v4 + with: + path: ${{ env.R_LIBS_USER }} + key: doubleml-user-guide-stable-${{ hashFiles('.github/R-version') }} + - name: Install R kernel for Jupyter and the R package DoubleML (dev) run: | install.packages('remotes') From 30d3b1aff02ac5f9f6e6022eb948f3becaeed922 Mon Sep 17 00:00:00 2001 From: Oliver Schacht Date: Mon, 21 Oct 2024 15:53:02 +0200 Subject: [PATCH 30/71] proofread --- doc/examples/py_double_ml_meets_flaml.ipynb | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/doc/examples/py_double_ml_meets_flaml.ipynb b/doc/examples/py_double_ml_meets_flaml.ipynb index 8da7c95d..ac2f2083 100644 --- a/doc/examples/py_double_ml_meets_flaml.ipynb +++ b/doc/examples/py_double_ml_meets_flaml.ipynb @@ -6,7 +6,11 @@ "source": [ "# DoubleML meets FLAML - How to tune learners automatically within `DoubleML`\n", "\n", - "In this notebook we are going to explore how to tune learners with AutoML on the example of [FLAML](https://github.com/microsoft/FLAML) in [DoubleML](https://docs.doubleml.org/stable/index.html) framework." + "Recent advances in automated machine learning make it easier to tune hyperparameters of ML estimators automatically. These optimized learners can be used for the estimation part within DoubleML. In this notebook we are going to explore how to tune learners with AutoML for the DoubleML framework.\n", + "\n", + "This notebook will use [`FLAML`](https://github.com/microsoft/FLAML), but there are also many other AutoML frameworks. Particularly useful for DoubleML are packages that provide some way to export the model in `sklearn`-style.\n", + "\n", + "Examples are: [`TPOT`](https://epistasislab.github.io/tpot/), [`autosklearn`](https://automl.github.io/auto-sklearn/master/), [`H20`](https://docs.h2o.ai/h2o/latest-stable/h2o-docs/automl.html) or [`Gama`](https://openml-labs.github.io/gama/master/)." ] }, { @@ -547,7 +551,7 @@ "\n", "As a baseline, we can compare the learners above that have been tuned using two minutes of training time each with ones that only use ten seconds.\n", "\n", - "*Note: In practical settings, it is advisable to use even more than two minutes. This is just for the purpose of illustration.*" + "Note: These tuning times are examples. For this setting, we found 10s to be insuffienct and 120s to be sufficient. In general, necessary tuning time can depend on data complexity, data set size, computational power of the machine used, etc.. For more info on how to use ``FLAML`` properly please refer to [the documentation](https://microsoft.github.io/FLAML/docs/Getting-Started/) and [the paper](https://arxiv.org/pdf/1911.04706)." ] }, { @@ -861,7 +865,7 @@ "source": [ "##### Compare Metrics for Nuisance Estimation\n", "\n", - "In this section, we compare metrics for different models and plot a bar chart to visualize the differences in their performance. We also save the comparison results to a file for future reference." + "In this section, we compare metrics for different models and plot a bar chart to visualize the differences in their performance." ] }, { @@ -912,7 +916,7 @@ "\n", "This notebook highlights that tuning plays an important role and can be easily done using FLAML AutoML. In our [recent study](https://arxiv.org/abs/2402.04674) we provide more evidence for tuning with AutoML, especially that the full sample case in all investigated cases performed similarly to the full sample case and thus tuning time and complexity can be saved by tuning externally.\n", "\n", - "See also our fully automated API for tuning DoubleML objects using AutoML, calles [``AutoDoubleML``](https://github.com/OliverSchacht/AutoDoubleML) which can be installed from Github for python." + "See also our fully automated API for tuning DoubleML objects using AutoML, called [``AutoDoubleML``](https://github.com/OliverSchacht/AutoDoubleML) which can be installed from Github for python." ] } ], From 8f86242735219ac0453d7c9538bcfbb9e7e356b2 Mon Sep 17 00:00:00 2001 From: Oliver Schacht Date: Tue, 22 Oct 2024 10:23:58 +0200 Subject: [PATCH 31/71] Update py_double_ml_rdflex.ipynb --- doc/examples/py_double_ml_rdflex.ipynb | 11188 ++++++++++++----------- 1 file changed, 6041 insertions(+), 5147 deletions(-) diff --git a/doc/examples/py_double_ml_rdflex.ipynb b/doc/examples/py_double_ml_rdflex.ipynb index c84f2b20..cfa2554b 100644 --- a/doc/examples/py_double_ml_rdflex.ipynb +++ b/doc/examples/py_double_ml_rdflex.ipynb @@ -24,12 +24,9 @@ "\n", "import plotly.express as px\n", "import plotly.graph_objs as go\n", - "from plotly.subplots import make_subplots\n", "from statsmodels.nonparametric.kernel_regression import KernelReg\n", "\n", "from lightgbm import LGBMRegressor, LGBMClassifier\n", - "from sklearn.ensemble import RandomForestRegressor, RandomForestClassifier\n", - "from sklearn.linear_model import LinearRegression, LogisticRegression\n", "\n", "from rdrobust import rdrobust\n", "\n", @@ -53,7 +50,7 @@ }, { "cell_type": "code", - "execution_count": 17, + "execution_count": 2, "metadata": {}, "outputs": [ { @@ -88,69 +85,69 @@ " \n", " \n", " 0\n", - " 2.131533\n", - " 1.0\n", - " 0.496714\n", - " -0.665035\n", - " -0.790864\n", - " 0.272860\n", + " 1.524407\n", + " 0.0\n", + " -1.085631\n", + " 0.484418\n", + " -0.639093\n", + " -0.556110\n", " \n", " \n", " 1\n", - " 9.205261\n", - " 0.0\n", - " -0.138264\n", - " 0.412951\n", - " -0.936828\n", - " 0.872424\n", + " 11.843350\n", + " 1.0\n", + " 0.997345\n", + " 0.399618\n", + " 0.589009\n", + " 0.906710\n", " \n", " \n", " 2\n", - " 3.337677\n", + " 1.278325\n", " 1.0\n", - " 0.647689\n", - " -0.896057\n", - " 0.082593\n", - " 0.418121\n", + " 0.282978\n", + " -0.382700\n", + " 0.097267\n", + " -0.706374\n", " \n", " \n", " 3\n", - " 7.767124\n", - " 1.0\n", - " 1.523030\n", - " 0.741938\n", - " 0.428174\n", - " 0.603456\n", + " -0.316781\n", + " 0.0\n", + " -1.506295\n", + " -0.126210\n", + " -0.477759\n", + " -0.302400\n", " \n", " \n", " 4\n", - " 3.518407\n", + " 5.924320\n", " 0.0\n", - " -0.234153\n", - " -0.321100\n", - " 0.629650\n", - " -0.839770\n", + " -0.578600\n", + " 0.606731\n", + " 0.606459\n", + " 0.409011\n", " \n", " \n", "\n", "" ], "text/plain": [ - " y d score x0 x1 x2\n", - "0 2.131533 1.0 0.496714 -0.665035 -0.790864 0.272860\n", - "1 9.205261 0.0 -0.138264 0.412951 -0.936828 0.872424\n", - "2 3.337677 1.0 0.647689 -0.896057 0.082593 0.418121\n", - "3 7.767124 1.0 1.523030 0.741938 0.428174 0.603456\n", - "4 3.518407 0.0 -0.234153 -0.321100 0.629650 -0.839770" + " y d score x0 x1 x2\n", + "0 1.524407 0.0 -1.085631 0.484418 -0.639093 -0.556110\n", + "1 11.843350 1.0 0.997345 0.399618 0.589009 0.906710\n", + "2 1.278325 1.0 0.282978 -0.382700 0.097267 -0.706374\n", + "3 -0.316781 0.0 -1.506295 -0.126210 -0.477759 -0.302400\n", + "4 5.924320 0.0 -0.578600 0.606731 0.606459 0.409011" ] }, - "execution_count": 17, + "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "np.random.seed(42)\n", + "np.random.seed(123)\n", "\n", "fuzzy = False\n", "data_dict = make_simple_rdd_data(n_obs=1000, fuzzy=fuzzy)\n", @@ -165,17 +162,14 @@ }, { "cell_type": "code", - "execution_count": 18, + "execution_count": 3, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ - "C:\\Users\\BAQ7040\\AppData\\Roaming\\Python\\Python311\\site-packages\\plotly\\express\\_core.py:1979: FutureWarning:\n", - "\n", - "When grouping with a length-1 list-like, you will need to pass a length-1 tuple to get_group in a future version of pandas. Pass `(name,)` instead of `name` to silence this warning.\n", - "\n" + "C:\\Users\\BAQ7040\\AppData\\Roaming\\Python\\Python311\\site-packages\\plotly\\express\\_core.py:1979: FutureWarning: When grouping with a length-1 list-like, you will need to pass a length-1 tuple to get_group in a future version of pandas. Pass `(name,)` instead of `name` to silence this warning.\n" ] }, { @@ -185,11 +179,1070 @@ "plotlyServerURL": "https://plot.ly" }, "data": [ + { + "hovertemplate": "Treatment=False
Score=%{x}
Outcome=%{y}", + "legendgroup": "False", + "marker": { + "color": "#636efa", + "symbol": "circle" + }, + "mode": "markers", + "name": "False", + "orientation": "v", + "showlegend": true, + "type": "scatter", + "x": [ + -1.0856306033005612, + -1.506294713918092, + -0.5786002519685364, + -2.426679243393074, + -0.42891262885617726, + -0.8667404022651017, + -0.6788861516220543, + -0.09470896893689112, + -0.638901996684651, + -0.44398195964606546, + -0.43435127561851733, + -0.9358338684023914, + -1.2538806677490124, + -0.6377515024534103, + -1.428680700225969, + -0.1400687201886661, + -0.8617548958596855, + -0.2556193705305969, + -2.7985891054607244, + -1.771533104509847, + -0.6998772345979173, + -0.1736356827902158, + -0.8795363430090519, + -0.8053665180656158, + -1.7276694941206072, + -0.390899793755101, + -0.01183049447881976, + -1.2940853231612488, + -1.0387882102049535, + -0.7980627352410625, + -0.7727087142471915, + -1.326265459940456, + -0.2330920609844135, + -1.198301144700787, + -0.8311549842432792, + -1.0972030464830342, + -2.1231003500424417, + -0.4033660381021075, + -0.12602958531301514, + -0.8375167228250533, + -1.6059627607174027, + -0.6888689838469215, + -0.31475814671745994, + -1.0859024011268665, + -0.732461986720457, + -1.2125231310951696, + -1.2673520490102275, + -0.3350107619330159, + -1.0845679120057665, + -1.3634715446185843, + -0.3791764345725522, + -1.977887931520449, + -0.024625981431480627, + -1.8619757107917871, + -1.6054097440159647, + -0.42767959812380435, + -0.7352169561000764, + -1.3709484700946077, + -0.3324752753514139, + -2.025045762997471, + -0.27578601386617546, + -0.5521080714881078, + -0.2702323920091581, + -0.5639239315264725, + -0.9973214687759007, + -1.100043112620697, + -0.7564372093991233, + -0.5489550961957409, + -0.35400011275017335, + -0.8234314059856659, + -0.21208012227562573, + -0.23966878147771076, + -1.4118888760712274, + -1.8768686558738945, + -1.0196550709218393, + -0.5306745597736241, + -0.1431759743261871, + -0.19396387055266243, + -0.8984229406095902, + -1.0950264574269175, + -0.2743965735223526, + -1.0489916773184873, + -0.07512058797383152, + -0.7408137732923984, + -0.6112253403048249, + -0.39161981071960156, + -0.3589359262422613, + -0.5486421281861983, + -2.5570546040678583, + -0.5489204133222201, + -0.9780577060842837, + -0.3548244580948187, + -0.02996800704754226, + -0.12611777323099171, + -3.2310550079193123, + -0.26929348975075423, + -0.110850721053007, + -0.3412617162065858, + -0.21794626210294177, + -0.5981053313408254, + -0.006307250913872172, + -0.2066623031975665, + -0.08652228638213517, + -0.9153070699439787, + -0.09520253925800948, + -0.27487754656593466, + -1.4160822525219303, + -0.6691026262334455, + -0.7612942447601239, + -1.255668685662482, + -0.5519368756960736, + -0.24520334168519506, + -0.361639931865213, + -1.4187259140354525, + -0.8654322715151541, + -1.3746879710222193, + -1.237353212687854, + -1.6004405330562717, + -0.24681577694107554, + -0.4341665202515911, + -0.19434272672763503, + -0.19911238275725224, + -0.9743078496209195, + -0.3189569890995958, + -2.152493444412304, + -1.465116222054951, + -0.6824509341999805, + -1.692052415377956, + -0.0805832220429508, + -0.0061299610455789804, + -0.15924520925326485, + -0.12144867540402206, + -0.5835367167076569, + -0.3537543337813492, + -1.2133847809476472, + -1.3264877850539407, + -0.6087108032644418, + -1.3206025797896521, + -0.6696185998697584, + -1.4202129989485122, + -0.8664952037596095, + -0.6668075087965194, + -1.2511898734731952, + -1.1843273385116637, + -1.5181079752636586, + -0.46118741313672207, + -0.35490883174008503, + -0.6825381542033059, + -1.653697838967641, + -1.3290788291721605, + -1.0747665931188752, + -0.8776135866276552, + -1.923715729697126, + -0.8289888337610103, + -0.6591513106966477, + -0.14401334748029268, + -0.7043421471287583, + -0.12643756370963435, + -1.004967153382104, + -0.13044468898462372, + -0.24865585038497331, + -0.6696471476435246, + -0.013603885675351006, + -0.8176682995787476, + -1.34635756073724, + -0.37574991098192634, + -1.37972497865875, + -0.4266897699938011, + -1.7554018445508066, + -0.3486075147385099, + -0.19261498579409048, + -0.14536354315421035, + -0.5187038515389994, + -0.06239854858230655, + -0.10291061426267058, + -0.28262838440702354, + -1.5692561273944634, + -0.5103428738061208, + -0.4477714253522432, + -0.3566630610733439, + -1.8951755930793188, + -0.03368923154093914, + -1.040162880979482, + -0.32385978378534624, + -0.18829685849366687, + -0.9000085698091608, + -0.9310020038747236, + -1.2227369597487854, + -0.3933108517811569, + -0.957581838756634, + -1.8884923803868152, + -1.1283305481817938, + -0.40141442845701475, + -0.41375688138006245, + -0.9868038892903219, + -0.9677443956994779, + -2.25153498598787, + -0.5889705464706788, + -1.2122689628960637, + -0.4791229453143527, + -1.1186956011455729, + -1.007508801235176, + -1.30578586634164, + -0.882828987722037, + -0.3460900338631944, + -0.77258373237244, + -0.6947982151055028, + -0.09868469680951346, + -0.21498304496389087, + -1.7737713532563517, + -0.4075125923914689, + -0.2915067125653651, + -0.16842643163047274, + -0.5299140986336766, + -0.49097228256584685, + -1.3091653143025817, + -0.008660466741585568, + -1.7510703491923696, + -0.6658569670193876, + -0.2243127859709009, + -1.7089917765492033, + -0.09875980586671322, + -0.5299888642145143, + -2.443075785879315, + -1.3803513236542992, + -0.6885485324635544, + -1.084768771253082, + -0.45642595614359244, + -0.7451472218585933, + -0.5866159508522137, + -1.1472371412402353, + -1.0818191232906198, + -1.639396967540776, + -0.5508932051171423, + -0.39862392473390046, + -1.2568338125336815, + -1.2625437427838198, + -1.4029890877228395, + -0.6376921388132418, + -0.32651764661872357, + -0.03932933464491537, + -1.8703974787472009, + -0.5987317666784293, + -0.17159600525671556, + -0.5818502098168723, + -0.6595600882722964, + -2.4384605640450236, + -1.3071781883042857, + -0.96325368587879, + -0.24762137869361706, + -2.631438036808334, + -0.5709580868574299, + -1.5034583992493944, + -0.23235739649273984, + -0.8249920538471605, + -0.25684536102444716, + -1.0502189902580903, + -0.026922590568272415, + -0.14205072712918293, + -0.2654456248957732, + -0.9902746893194819, + -0.5344472080416974, + -1.701496094747692, + -0.23856501820360618, + -0.13280117451197487, + -0.4058433751113569, + -1.088508555488929, + -2.1222988830425917, + -0.726114027517346, + -0.5903249179528643, + -0.3479643379349264, + -0.4483916384609412, + -1.1316409267511525, + -1.4178944880296693, + -0.0018746917257705736, + -1.1150399534194404, + -1.4506831416048005, + -0.4725305920249986, + -0.3311282982824718, + -2.7881128830850024, + -1.5872064267876305, + -0.12368873285569916, + -0.06962309872009259, + -0.09565274449329955, + -0.12174149525709202, + -1.7628977344010746, + -0.6827647198373713, + -0.07052341796234977, + -0.10667449055824228, + -1.472977609111576, + -0.9850235826980721, + -0.2335039931301, + -0.3244872415189078, + -0.1670002743571596, + -0.7586284233600243, + -1.2000432779850234, + -0.7920919505289836, + -1.660475070762957, + -0.630618391430576, + -1.3943751127131896, + -1.273570236812244, + -0.7881655588876596, + -0.3722717313582859, + -1.0836776793595817, + -1.147525408677207, + -0.4156193761557507, + -0.4733549700707904, + -0.6023399830262286, + -0.3797303275801356, + -0.23441491191787137, + -0.27217646568739323, + -1.1601296615335286, + -0.7598350885926631, + -0.6543810858204931, + -0.14929094174744556, + -0.6754694337864318, + -0.2958290679056386, + -2.0523984049766058, + -1.5774487938270054, + -0.9065895221643572, + -2.1049284295789623, + -0.9200931084896136, + -0.624024850239865, + -0.025060144581597745, + -0.7362639342696717, + -0.7174858373072273, + -0.9725563235674656, + -0.4396722054259928, + -1.1742703028253445, + -0.40215973507251773, + -0.15635972722929936, + -0.15860520695849933, + -2.1870859306382227, + -1.2717469495300868, + -0.6798278923997879, + -0.6050126560729895, + -0.008902825012302579, + -0.1697438177991287, + -0.23431872455876748, + -1.4819584561028547, + -0.416345285299776, + -1.6044364005126521, + -0.3077743221445603, + -0.7391422743557824, + -0.8532015157805608, + -1.576232847396656, + -0.12756216200993092, + -0.027458376689570886, + -0.09809158279359968, + -1.5305128973556241, + -0.823285164614491, + -0.9484986261940769, + -0.2510374552120426, + -0.4971601466888655, + -1.1165648342354797, + -0.5492535887280628, + -0.5978550805922049, + -0.15832713704922016, + -0.20997373588419468, + -0.8203755201347369, + -0.6226634888808933, + -1.1429520395415, + -0.3834163111157828, + -0.23090405152817356, + -0.39615592240969827, + -0.03832121774315163, + -2.424836325455249, + -0.5522529496849271, + -0.06079410601164124, + -0.5280405508818312, + -0.13868294527484562, + -0.28424709842062984, + -0.04304177578064844, + -0.052801482653846724, + -0.15420531148588265, + -0.16787722654627948, + -0.7324488811117759, + -0.553404328801565, + -0.6832259429997894, + -1.842031838405077, + -0.11951878043007562, + -0.7542021627241914, + -1.2617700117470425, + -1.4072685633957673, + -1.5610305114373637, + -1.9255868907643525, + -2.7944722983075785, + -1.03910438326439, + -2.1694079584120365, + -0.035605484609829575, + -2.2364173503246474, + -1.0942734191759897, + -1.6207519803198573, + -0.24559766594877117, + -1.605180795787059, + -0.34825811883938024, + -0.19723636840428496, + -2.0420964154954233, + -1.3992338686095869, + -0.6615506465805062, + -0.9297116344424167, + -0.6925831159713568, + -0.05746612700083015, + -1.1584159108657917, + -1.3600076771230591, + -1.0570557773396025, + -0.010032652757383347, + -0.8456444283952297, + -1.3744968791031125, + -0.5470656450174095, + -0.00007552661061545873, + -0.12116680328820885, + -2.008585468370626, + -0.9206465426133663, + -1.3198915593599103, + -0.5142403907110707, + -0.2202924653000638, + -1.4155187704342762, + -0.14840538755987095, + -0.5496980692087847, + -0.18790393877677286, + -1.2019366808669738, + -0.47078555770734065, + -1.807621277242572, + -0.3140743742422747, + -1.1789369540334256, + -1.1821528913270605, + -1.224529092816291, + -0.48236531510849157, + -0.42107850540501407, + -1.166471320616305, + -0.01739122223019718, + -0.22942662894379623, + -0.4496676016629738, + -0.8817485267318087, + -0.39736349181039743, + -0.4230277451533124, + -0.5406883373725029, + -0.6920526017208553, + -0.053609460071342124, + -0.4340047382986483, + -1.667689228147901, + -1.1092309432496061, + -0.37555811897157276, + -1.7309894498221519, + -1.2971000196666516, + -0.39230919212908744, + -1.8306663621778045, + -0.17958850097910234, + -0.16343583065616263, + -0.09416555192061088, + -0.3461671480021981, + -1.0926353245067322, + -0.824500574753621, + -0.5023312882696742, + -0.4756477679064388, + -0.9719368370854505, + -1.57052860106121, + -1.793888920926237, + -0.2649864518459969, + -0.893195947036793, + -1.9421495432511602, + -1.106385905965437, + -0.21005641264581787, + -0.25275030069976034, + -0.2920041627702413, + -0.11693174014674963, + -0.10239107510368999, + -2.272617710954302, + -0.6426098414665713, + -0.008256514667853591, + -0.7993391541971328, + -0.6647792521753807, + -0.355613128296959, + -0.8015717808024205, + -0.5130506104434005, + -0.5393901194785343, + -0.7083224844135482, + -0.31425058651942994, + -1.4127794859965894, + -0.9800066473024811, + -0.18459917717285057, + -2.2361688420171104, + -0.35802010256334205, + -0.22803453828591722, + -0.32776424472118837, + -3.167055328652906, + -0.7139889980252292, + -1.1123642708371866, + -1.2541835105849213, + -0.7757700204102219, + -0.4216841007751528, + -0.6929227963724369, + -0.7782717264630926, + -2.050217677383097, + -0.6692056054644492, + -1.8638842993007476, + -1.229969061679773, + -0.3242353482405271, + -0.3097511440161062, + -1.18692538652941, + -0.34120606462067304, + -0.48977978041340897, + -1.5684400468313575, + -0.0480141917504573, + -1.1125293102447653, + -0.0647449514862398, + -0.04901169879446085, + -0.27265446153778367, + -0.4250761037008216, + -1.7752428411035694, + -1.1846574927726896, + -1.7865268526790055, + -0.15239449801642782, + -0.45356917618752884, + -1.3180438234754557, + -1.9317689789009886, + -0.41964074161010806, + -0.9093270165599429, + -1.1114304477623544 + ], + "xaxis": "x", + "y": [ + 1.5244070471861801, + -0.31678118504862285, + 5.924320317513941, + 2.5586433621344287, + 2.229455841045986, + 4.433971913220769, + 8.799700781144356, + 1.6735609545008325, + 2.6618037998684847, + 9.19267162407246, + 0.17380416320172518, + 9.796681357211401, + 2.3367111400091165, + 5.215275910742927, + 1.3080828143354875, + -0.20832335618328393, + 10.837402228513511, + 10.478426531295108, + 10.22231166785175, + 12.68339600928729, + 13.025537381085183, + 4.726037455368125, + -0.0732744724994475, + 4.749223502380172, + 8.454695881930622, + 0.5944712348499963, + 9.201908118694321, + 1.4985565830786498, + 13.454260189739914, + 4.341387628228041, + 1.7438348200899918, + 2.187100058042091, + 0.9779343707033779, + 5.123973488555185, + 8.444715038803736, + 9.27782623331036, + 3.8995852138381784, + 5.618104460019201, + 0.6163195640210587, + 0.6774462488809804, + 11.708445117312142, + 2.5891972165718284, + 1.879015292269977, + 9.375534954599209, + 1.8631407351858267, + 1.6076193292544028, + 3.8611181508851247, + 9.112336133802208, + 11.893361029191375, + 5.0333340276319865, + 0.8676647900980246, + 12.938723276999415, + 0.768994686295613, + 7.5959159871854975, + 10.194485229673715, + 0.33678018995101044, + 3.490476146394804, + 2.3183039056247936, + 4.304487179715327, + 4.2060030651793925, + 14.190346380925867, + 5.24762456381118, + 3.943248238689776, + 12.4015231457878, + 1.3554951203061163, + 10.069314603452488, + 10.58869704385167, + 10.649801717806227, + 4.4057492861709155, + 2.8749559536658644, + 5.304697452015327, + 4.472005236393971, + 4.634176199065418, + 1.5959869965901976, + 1.8155122736662486, + 0.7157671632142655, + 6.153516332387489, + 2.044323426955679, + 10.859499127651866, + 11.221560703421837, + 6.674333624988483, + 0.39906508106906446, + 2.3193275168504055, + 1.1524518131864228, + 7.2436924700533165, + 5.660378601383776, + 2.3206617612256824, + 3.5118579843107414, + 6.1168364739580205, + 0.3724246372064531, + 10.401289245452013, + 0.5744161370408288, + 8.022040625590511, + 2.658308420508858, + 2.1630845557681204, + 4.627833006053132, + 15.083909174487218, + 2.4402716205583537, + 1.3927666921295252, + 6.70222770125296, + 2.945945517202425, + 3.757069352545498, + 2.4172909364793997, + 12.753696009711952, + 10.66957192762991, + 8.39703369545653, + 2.498173455086823, + 2.435477632002068, + 0.572382126937402, + -0.2095010700207834, + -0.35458180821177915, + 7.219602518084525, + 0.2501582433458264, + 1.600512158076611, + 2.0156924193324417, + 6.158947200621, + -0.19849002504343233, + 5.9779519359889495, + 1.7241156814359933, + 0.21312151676970173, + 2.460276868932239, + 9.9634592479967, + 1.7112337432023264, + 7.003961028975444, + 0.9792581216199745, + 1.8492668222191442, + 2.233715430947482, + 1.5031179125886165, + 0.4516931708605087, + 6.20427024751976, + 1.4646256135934175, + 6.728011063164948, + 6.038321590590256, + 4.58246472086729, + 4.89598154253402, + 4.5503770432878365, + 1.495720130417968, + 9.553624891272666, + -0.08834719251766043, + 3.8050447589759027, + 1.5435796711523087, + 5.287196053243566, + 6.064325546209897, + 9.213131674664723, + 4.6077052656066435, + -0.35032290478506345, + 4.303009521999736, + 2.0946868631148203, + 9.991329340305318, + 1.6224576593146407, + 7.402526711734267, + -0.330318646932235, + 11.50198647907616, + 0.6946054682674779, + 0.4274952485480176, + 6.284206648858571, + -0.3718021899085236, + 15.996765996879489, + 0.76795705675522, + 13.117732675166229, + 5.98894065843449, + 2.6171572109923087, + -0.051380129917119245, + 2.5517531681311225, + 9.808951832149885, + 6.545641334516951, + 0.00019238296903394125, + 10.169662711091535, + 2.320419598495393, + 5.904963874171132, + 5.654077155257171, + 1.0384203812665476, + 0.5528843485225815, + 8.278033159687189, + 2.302600136586625, + 3.368746369903085, + 0.7213097232153658, + 10.124853214837623, + 3.9485900013110644, + 3.2132331398666176, + 4.291439141455488, + 3.4845400495992087, + 5.130452928302084, + 4.6271898885555665, + 3.335101629841685, + 1.0751781605841555, + 5.750396207728897, + 1.9232309742916913, + 2.4273351665206997, + 1.819310025715235, + 9.149591684667675, + 0.6557321997529058, + 6.0201255521588255, + 1.886899123944232, + 2.439391549508245, + 1.821395128230099, + 5.008342548314249, + 1.3049989240584543, + 0.6853918612604932, + 1.5300794814058394, + 7.0872566714240275, + 3.1038096281505165, + 0.768478221199121, + 1.0420330054864895, + 4.004482124807154, + 1.9507320429764672, + 11.60822187968217, + 0.19664168718806863, + 4.2443039453489755, + 7.584237184305228, + 9.443257147013668, + 0.662697160585665, + 3.6055844810303803, + 3.3834607025203667, + 9.99973384018478, + 5.151859506093366, + 1.8953114457453264, + 4.603236731727707, + 0.8545376393774061, + 5.047112096915351, + 4.823835669614105, + 5.2885470696000745, + 2.0865015849328206, + 2.4794086694880066, + 1.2039298158936174, + 2.2791357033099158, + 1.1766041832708973, + 0.946520090964468, + 4.541604026913312, + 3.2684629335264836, + 3.0779513528438804, + 0.12116471069568498, + 2.197059179832511, + 6.153522887925882, + 4.531217612356018, + 10.535802241907119, + 2.5661013955296403, + 12.498083700534197, + 2.623447905153395, + 3.1632432597670777, + 2.5921290543216386, + 3.417596029302696, + 8.274685878881048, + 1.5118142504881733, + 1.8073453819417131, + 2.2768286350169813, + 6.932206338459843, + 8.241750558286878, + 3.689947131449205, + 14.992349220066943, + 13.177711449950907, + 17.936031552825437, + 4.657895351251875, + -0.05505596162205857, + 2.0479342794758377, + 2.846250916315972, + 8.6765414326678, + 0.6080637912558369, + 4.432038542722425, + 0.7185314825734941, + 11.004554528224643, + 0.6645976926435648, + 2.7599173123312473, + 1.2136024553919431, + 13.895307536681994, + 0.20859591326729957, + 1.272450859796333, + 0.26206427308430585, + 10.797103347901205, + 0.06897890999090553, + 0.7109837460966167, + 4.0071438480003065, + 13.245054104274741, + 4.660369229720908, + 2.3982681319940573, + 3.118829526886263, + 1.2035318483914472, + 6.189097469024672, + 5.806851675016352, + 5.2053531060827805, + 10.232947843756873, + 8.906224609095952, + 0.1276830357114953, + 9.433870152004602, + 0.0028312379988869735, + 6.834063902600166, + 13.94490294713098, + 0.41283318030129335, + 4.188578889810815, + 0.4484398809285373, + 9.92021124628591, + 9.032480454286583, + 1.8323232289353775, + 17.493865464122017, + 1.5308794813025202, + 1.0676775201624182, + 14.185031479430377, + 1.5485075389203493, + 5.937933814039849, + 9.654257076842434, + 1.864792455949144, + 3.0016539477665676, + 8.568880005120032, + 2.114526882656712, + 5.2115514198742305, + 4.0090237000950815, + 3.998785869864167, + 11.513858941838201, + -0.05802102360120709, + 1.3877640416014811, + -0.4814385014377364, + 3.500684568953761, + 1.4899510273764827, + 2.247073712982378, + 1.567744831828642, + 0.22807993818531466, + 10.393723775682087, + 5.842660499292155, + 1.206703703834176, + 1.5565990366652183, + 1.2162230054416696, + 2.148866819952457, + 4.04586698043334, + 1.5716794098709914, + 5.86449472789805, + 10.110465625146873, + 1.2430483978183664, + 8.719742977808671, + 16.344699854425947, + 3.4918322268341613, + 0.8524078243007223, + 0.048231310769335456, + 0.8741495580941971, + 6.354970785483929, + 7.575743567419406, + 5.8484782363298295, + 3.753893094849748, + 2.8399361856732432, + 11.186413229440477, + 11.672251271389886, + 14.303204145124884, + 10.941493091988898, + 0.8545262278373883, + 1.4668880693783932, + 4.9194224196221565, + 1.4623407342359085, + 4.360280099546943, + 3.443397847844641, + 3.840572140275994, + 5.951896387115502, + 7.456016067948249, + 3.8207093172927613, + 0.5034225128990067, + 0.8150618381066009, + 0.30586900725658567, + 0.2722616210367304, + 0.6621446380484735, + 7.389029047186425, + 0.09501286101944884, + 1.1494906207543638, + 2.646775428482537, + 5.9259671458628365, + 0.6465922711442541, + 2.523794575481865, + 8.15532226521328, + 0.17989295898067234, + 4.823409503994681, + 6.115192761454895, + 3.810685983205399, + 2.402304431024967, + 1.701127121532548, + 8.913644891259347, + 5.341321136009601, + 1.6992052254274577, + 1.3802658335845173, + 1.321077116711181, + 3.4778958483315905, + 0.45106887260893425, + -0.29877850826601193, + 2.814576224571102, + 1.061470699070461, + 1.5560591193234292, + 0.009002727420105161, + -0.5728632466381287, + 1.4488941039869414, + 2.680103057576405, + 8.087660681859163, + 7.924096604576609, + 1.8830621438909143, + 7.330046940749516, + 1.3052051888704335, + 20.239407858743434, + 5.458202861874518, + 3.566518117425007, + 2.2755470859864575, + 12.710228264839888, + -0.02031091425673931, + 3.2010455466919776, + 12.748612239522714, + 1.7172106711308466, + 6.223889820398672, + -0.10834187887947563, + 6.414424700317907, + 9.485581690297234, + 0.20692746040285404, + 5.612009569446481, + -0.7968636854144878, + 11.212858292512838, + 3.8754718429087074, + 1.6355803374837654, + 1.0702481066826948, + 2.2238251355718823, + 9.664440199572164, + 6.678822705320481, + 5.6130816025802766, + 4.213900521246352, + 1.0315610455288375, + 9.07810266559977, + 1.6016841184574746, + 3.6771313021760634, + 2.7210499996428643, + 8.491045007856302, + 5.084167080074604, + 2.7027096168449347, + 8.244254695152835, + 1.9306473159601143, + 11.863769083579493, + 1.7703401551327915, + 1.6497084333348082, + 0.8362048794944831, + 5.874666811023051, + 3.538351087917226, + 1.1192408993876222, + 18.70093797194956, + 1.0365836778048962, + 4.615518699199752, + 9.416180112127925, + 2.2235781879856678, + 7.535568347995813, + 5.718870488934903, + 9.511238582862612, + 5.4793437671264975, + 0.9090308679390406, + 7.522390598242492, + 11.353252699415938, + 6.355338535434804, + 1.3166995303064548, + 6.814046134066176, + 1.1825360716592745, + 0.8055867554557106, + 0.30429045710780633, + 3.350184907820748, + 1.004400398183057, + 2.4578737976090324, + 0.2834045471778131, + 4.218514400485709, + 1.9430246141702063, + 1.64813868078584, + 0.47174643285034557, + 15.206963957774773, + 2.192695980222657, + 2.4118119178354767, + 2.0138351483016677, + 9.003466454195726, + 1.0112053026388435, + 7.732918790830611, + -0.4379989034027618, + 5.1519561783691925, + 8.474071310474365, + 1.3035440640784772, + -0.11072696712528579, + 4.378655268005002, + 3.5675108310755226, + 16.602631284075027, + 8.947393471939215, + 0.7819048381828108, + 3.5075319114594974, + 8.449360709078297, + 0.5804901799302381, + 2.208064305095736, + -0.08195129248483209, + 2.2709638107831265, + 3.336917837775417, + -0.1257618390648644, + 6.357216896021258, + 0.1556198040786207, + 10.594700657726156, + 10.876605493956605, + 1.4714823530783638, + 6.789552642997241, + 4.549333989095359, + 10.657111202235658, + 1.7292433063064971, + 0.5034197235493725, + 4.165853227731777, + 0.4815625417868352, + 11.040440544211428, + 6.814102237909044, + 10.568537722677682, + -0.09712993539328726, + 2.417293005058559, + 5.636952165005905, + 2.2897033617438236, + 1.0235939146661586, + 0.5756335735430999, + 1.3599892566979137, + 3.4808597665179164, + 8.355708081608233, + 3.8408289357547876, + 4.003987884400956, + 10.277828605350983, + 1.3479295458259453, + 10.797775589833455, + 6.542299074199517, + 0.012465241501093904, + 0.4063876051827512, + 3.8836053230647347, + 5.1638582727533615, + 4.044971139437629, + 0.0404292392599387 + ], + "yaxis": "y" + }, { "hovertemplate": "Treatment=True
Score=%{x}
Outcome=%{y}", "legendgroup": "True", "marker": { - "color": "#636efa", + "color": "#EF553B", "symbol": "circle" }, "mode": "markers", @@ -198,4943 +1251,3884 @@ "showlegend": true, "type": "scatter", "x": [ - 0.4967141530112327, - 0.6476885381006925, - 1.5230298564080254, - 1.5792128155073915, - 0.7674347291529088, - 0.5425600435859647, - 0.24196227156603412, - 0.3142473325952739, - 1.465648768921554, - 0.06752820468792384, - 0.11092258970986608, - 0.37569801834567196, - 1.8522781845089378, - 0.822544912103189, - 0.2088635950047554, - 0.19686123586912352, - 0.7384665799954104, - 0.1713682811899705, - 1.0571222262189157, - 0.3436182895684614, - 0.324083969394795, - 0.6116762888408679, - 1.030999522495951, - 0.9312801191161986, - 0.33126343140356396, - 0.9755451271223592, - 0.812525822394198, - 1.356240028570823, - 1.0035328978920242, - 0.36163602504763415, - 0.36139560550841393, - 1.5380365664659692, - 1.5646436558140062, - 0.8219025043752238, - 0.08704706823817122, - 0.0917607765355023, - 0.3571125715117464, - 1.477894044741516, - 0.9154021177020741, - 0.32875110965968446, - 0.5132674331133561, - 0.09707754934804039, - 0.9686449905328892, - 0.29612027706457605, - 0.26105527217988933, - 0.00511345664246089, - 0.4040508568145384, - 1.8861859012105302, - 0.17457781283183896, - 0.25755039072276437, - 0.06023020994102644, - 2.463242112485286, - 0.30154734233361247, - 1.1428228145150205, - 0.7519330326867741, - 0.7910319470430469, - 1.4027943109360992, - 0.5868570938002703, - 2.1904556258099785, - 0.09965136508764122, - 0.06856297480602733, - 0.4735924306351816, - 1.5499344050175394, - 0.8135172173696698, - 0.22745993460412942, - 1.307142754282428, - 0.1846338585323042, - 0.25988279424842353, - 0.7818228717773104, - 0.5219415656168976, - 0.29698467323318606, - 0.25049285034587654, - 0.3464482094969757, - 0.23225369716100355, - 0.29307247329868125, - 1.8657745111447566, - 0.4738329209117875, - 0.6565536086338297, - 0.787084603742452, - 1.158595579007404, - 0.9633761292443218, - 0.4127809269364983, - 0.82206015999449, - 1.8967929826539474, - 0.3411519748166439, - 0.27669079933001905, - 0.8271832490360238, - 0.01300189187790702, - 1.4535340771573169, - 2.720169166589619, - 0.6256673477650062, - 0.4824724152431853, - 0.714000494092092, - 0.47323762457354485, - 0.8563987943234723, - 0.21409374413020396, - 0.173180925851182, - 0.3853173797288368, - 0.1537251059455279, - 0.058208718445999896, - 0.3577873603482833, - 0.5607845263682344, - 1.083051243175277, - 1.053802052034903, - 0.5150352672086598, - 0.5137859509122088, - 0.5150476863060479, - 3.852731490654721, - 0.570890510693167, - 1.135565640180599, - 0.9540017634932023, - 0.651391251305798, - 0.7589692204932674, - 0.08187413938632256, - 2.3146585666735087, - 0.6862601903745135, - 1.088950596967366, - 0.06428001909546277, - 0.6795977489346758, - 0.21645858958197486, - 0.045571839903813784, - 2.1439440893253257, - 0.6339190223180112, - 0.18645431476942764, - 0.852433334796224, - 0.5049872789804571, - 0.8657551941701215, - 1.7654542402810969, - 0.40498171096095553, - 0.9178619470547761, - 2.1221561970126332, - 1.0324652605511468, - 1.2669111491866227, - 0.44381942814622843, - 0.7746340534293368, - 1.6324113039316352, - 0.13074057728609134, - 1.4412732890661155, - 1.1631637521549596, - 0.010233061019587049, - 0.46210347426327075, - 0.19905969557347003, - 0.06980208499001891, - 0.11351734525124804, - 0.6621306745210467, - 1.586016816145352, - 2.1330333746562666, - 0.5883172064845765, - 0.28099186773503265, - 0.8496020970210246, - 0.35701548596504734, - 0.8995998754332507, - 0.30729952087660933, - 0.8128621188389601, - 0.6296288419236122, - 0.7472936051232618, - 0.6103702654334648, - 0.117327383308782, - 1.277664895788425, - 0.5470973811700379, - 1.09877685198719, - 0.8254163489880298, - 0.8135096360006385, - 1.305478807154329, - 0.02100384163275905, - 0.6819529712949639, - 0.3241663524884421, - 0.09699596499271819, - 0.5951570254369136, - 2.0923872756854602, - 1.1581108735000678, - 0.7916626939629359, - 0.6241198170521551, - 0.6283455092642799, - 0.07580455819372633, - 0.9751197334177512, - 0.41293145427562433, - 0.2436872114919123, - 0.24496657110872277, - 0.2320499373576363, - 0.3109075655980046, - 1.475356216949552, - 0.8576596232020194, - 0.3227185603380895, - 0.5193465142411723, - 1.5327389130025777, - 0.40171172209894146, - 0.6901439917111125, - 0.22409248181041677, - 0.01259240078179486, - 0.09767609854883172, - 0.024510174258942714, - 0.49799829124544975, - 1.4511436077950417, - 0.9592708260852069, - 2.1531824575115563, - 0.8723206367206782, - 0.18334200573835174, - 2.1898029332176723, - 0.15039378647620763, - 0.34175597577715944, - 1.8761708392158862, - 0.9504238381860503, - 0.4919191715065057, - 1.8314587658543537, - 1.179440120721287, - 1.3538723741654128, - 1.2378163119734618, - 0.005243699718183166, - 0.046980593764742055, - 0.6228499323474987, - 0.12029563171189886, - 0.514438834058749, - 0.7116148780888898, - 1.277676821898509, - 0.33231401197959165, - 1.551151975522523, - 0.11567463429285867, - 1.1792971840638264, - 0.06751848141010895, - 2.060747924881987, - 1.7553408424432044, - 0.9715709509543554, - 0.6453759495851475, - 1.3686315575323487, - 0.6860514599984393, - 1.0584244868495878, - 0.7175422557959623, - 1.502357052096028, - 0.07409478041977519, - 1.6286155455712918, - 0.3840654489393073, - 0.6696725488300385, - 0.36659824609684827, - 0.9551423205012383, - 0.5040465155178444, - 1.9647251329163893, - 0.03526355197172861, - 0.213979910734222, - 0.6141667000434252, - 0.7575077100473051, - 1.3668742674445247, - 1.6449677135012837, - 0.5765569630557664, - 0.3112501545435361, - 3.0788808084552377, - 1.1195749114345768, - 0.2034636358672231, - 1.6871416350725648, - 0.8816397569494505, - 1.4799441388900259, - 0.0773683076476183, - 1.5231240772696573, - 0.5389100436846587, - 0.9261775475316414, - 1.9094166404701305, - 0.5629692366905709, - 0.04852162794482699, - 0.2704568257798388, - 0.755391225825756, - 0.5009171876243808, - 0.09933230542922587, - 0.751387123371789, - 0.543360192379935, - 0.5705986685931593, - 0.048084946661381994, - 0.25972250172148187, - 0.6385924587773739, - 0.047398671316414016, - 1.0062928092144405, - 0.8356921120651418, - 0.5298041779152828, - 1.4415686206579004, - 0.57707212718054, - 0.37114587337130883, - 0.08658978747289992, - 1.1677820616598074, - 0.2544208433012131, - 0.3376026620752022, - 0.39445214237829684, - 0.2897748568964129, - 2.075400798645439, - 0.8711247034316923, - 1.2012139221639448, - 0.0184183791895517, - 1.6764373122752827, - 0.32692737376416264, - 0.8294055811834892, - 0.23561455810856594, - 0.7708651938869668, - 1.143754043206929, - 0.3384964074944141, - 0.6327818661062848, - 2.270692857804396, - 0.18186625505849516, - 0.24822058630033608, - 0.8303358165442456, - 0.07156623721939247, - 0.47897982574639186, - 0.3336621052869483, - 1.0375399442578992, - 0.3773004930448522, - 0.7569886166453519, - 0.8696059201056602, - 1.355637858804951, - 0.41343490322370086, - 1.876795812558066, - 1.496044311489183, - 0.6543656563540577, - 0.2799686263198203, - 2.4457519796168263, - 0.1292211819752275, - 0.10939479460489289, - 0.725766623898692, - 0.4810092317367132, - 0.22388402427913137, - 0.4714683571359957, - 1.8820244964750337, - 1.3454200461549777, - 1.593186626639397, - 0.055724912288694604, - 1.0941915184709485, - 1.5295503194606137, - 0.8231705839619146, - 0.07331796718840389, - 1.669021525289393, - 0.6962063648134184, - 1.8489560949453452, - 1.1265650295477574, - 2.5733598032498604, - 0.05921843401448826, - 0.013929291912946203, - 0.19808476076785494, - 0.10643022769189683, - 1.5039929885826886, - 1.0915068519224618, - 1.246085192497629, - 1.7522704434236227, - 0.9356783931474612, - 1.2715550949941588, - 0.7216720640432351, - 0.48937456122791806, - 0.7129984301723881, - 0.7109599682034915, - 0.44426331148603976, - 1.159329803364248, - 0.6159356069442637, - 0.5931012579683838, - 0.326133022242118, - 0.924027019206901, - 1.0490092258368893, - 0.6060099513456396, - 1.7547941819843647, - 1.6964563682900382, - 0.2110174672026184, - 0.39913611435207086, - 1.1033018820165215, - 0.11422764866203965, - 0.1503017614618776, - 0.3078017688920592, - 0.743264094022715, - 0.17086543812794186, - 0.01843393306539316, - 0.34758170536167105, - 0.19584525509768155, - 0.40825275571447184, - 1.0291556373256436, - 0.472597482413043, - 0.25602973431387566, - 0.9826909839455139, - 1.6654744444625766, - 1.0143700650181304, - 0.026091050210833786, - 0.517659020469123, - 0.18676676447707832, - 1.0536417966078395, - 2.632382064837391, - 0.4933179008808892, - 0.1848361236948739, - 0.7003098794089914, - 0.12200981464536144, - 2.5600845382687947, - 1.1492733262856758, - 1.77080063563551, - 1.8124485579969287, - 0.7077519354554754, - 0.632407739055521, - 0.9725544496267299, - 0.6218099622171964, - 0.620672097550678, - 0.17770100093325383, - 0.3801978510059632, - 0.6105857452838231, - 0.5597904479310398, - 1.0807807255546218, - 0.8339221545489041, - 0.4591800792284367, - 0.42961821913258585, - 0.20768768716311115, - 0.27157883719537346, - 1.0531528533329035, - 0.6815006973726244, - 0.028318376130461172, - 0.02975613949574519, - 0.9382838059759977, - 0.09612077694098337, - 0.22213377163371284, - 1.2557561255735208, - 1.4469778843537329, - 0.19655477651157463, - 1.0318445394686349, - 0.26705026586925884, - 0.889630795623437, - 0.08228398927542419, - 1.0654803750653512, - 1.40934744018558, - 2.2988981236192503, - 1.453384477117701, - 1.5795721457307124, - 0.23421473253652075, - 1.5505004928140769, - 0.9843223984765838, - 0.6748194921666038, - 0.3824097461840506, - 0.1664522082130561, - 0.4924512640081491, - 0.2891686439078181, - 2.4553001399108942, - 1.1890165311075518, - 1.4205042479898549, - 0.4714155563864041, - 0.6329318177555108, - 0.2029230208512997, - 1.5475052013300616, - 1.7958776730955217, - 0.28586539072490497, - 0.334456789987025, - 0.6585442726728304, - 2.0102045387663496, - 1.7945578635177877, - 0.2237879516388985, - 1.188393273448084, - 2.5269324258736217, - 1.044160877069072, - 0.6818914896263114, - 1.8467073257360336, - 0.5839281853259639, - 0.5906548306923093, - 1.1087035805829077, - 0.820482181197364, - 0.5072740311072977, - 1.066674689589154, - 1.1692955904456728, - 1.3821589910375272, - 0.6487098875896427, - 0.14671368643332283, - 1.2065089665083568, - 0.3686733088729012, - 0.028744822934817487, - 1.2784518626072987, - 0.19109906801990334, - 0.04643654815614881, - 0.7462535660272207, - 0.6454841811410754, - 2.16325472330546, - 0.21915032766393897, - 0.24938368371075526, - 1.5774532797634744, - 0.27902152577033923, - 0.6078965097165392, - 0.1866091231563581, - 0.19408999289830758, - 1.073631749859772, - 0.132969674146876, - 1.1950466289248425, - 0.37721187506452086, - 1.5655240292343404, - 1.8811570694405901, - 0.4400144500533324, - 0.7083564472993533, - 0.24380071377119883, - 0.8724573282801447, - 0.650201177958661, - 1.8466369960476658, - 0.24333944932269183, - 0.3520553965142968, - 1.4437646040732595, - 1.1172958315881276, - 0.34272534637770413, - 0.4567532191537839, - 0.5697672802322039, - 0.44770856001731496, - 0.6427227598675439, - 1.3291525301324314, - 0.19652116970147013, - 0.7090037575885123, - 1.4401172154494728, - 1.8009404329108156, - 0.12810441491078928, - 0.8406435489887241, - 0.7604146561442974, - 0.7858001586508322, - 0.42545756178496474, - 1.5033983017671506, - 0.8773622905756714, - 0.02688583899453078, - 0.20838280794755248, - 1.7976865268495226, - 0.6408428612670098, - 0.5725827813561586 - ], - "xaxis": "x", - "y": [ - 2.1315329707498756, - 3.3376770604434096, - 7.767124195272413, - 0.7481591385679691, - 4.1128433169824365, - 9.491430242004125, - 19.22182141446181, - 11.557796064985189, - 4.936439468036899, - 3.333810324078476, - 4.441113900423861, - 0.6455892358611679, - 0.49610928527468745, - 2.4006011335875828, - 5.163316458119373, - 8.391790673613986, - 2.4564095455635835, - 7.319450585831383, - 2.4707465154292434, - 10.402939953767364, - 12.446147009792307, - 8.882718432316555, - 0.857904007273836, - 2.447186683872495, - 7.018174078288615, - 0.9357156158889749, - 0.16920539181221195, - 0.6185619513651668, - 4.562255000224275, - 2.7184291960342915, - 1.7681742811982453, - 6.108978259340933, - 7.401531100522695, - 7.840952968279986, - 0.6953135686971497, - 2.436535977334167, - 2.743388211356075, - 8.301152100586544, - 0.6183924355825982, - 9.695049328101154, - 3.6601487948925118, - 2.6058994457584688, - 1.0246028681435824, - 11.690108377884076, - 1.9344216148461812, - 11.855325061722992, - 1.6514489549231508, - 9.361676779831594, - 2.9379692479846318, - 1.9046269186816902, - 10.370143028347302, - -1.3901783421862923, - 4.948184205680325, - 1.2880687838570863, - 8.26102961975762, - 0.45539124774730894, - 15.70558111975564, - 3.9263253615199267, - 10.44991370265823, - 9.879740840545962, - 3.355173393466349, - 3.8910293090041606, - -0.07290139915820362, - 4.095558006274662, - 12.15394583676655, - 0.6937345905224344, - 11.67560310448758, - 4.010683176834139, - 1.0746839428581927, - 7.100881196152617, - 2.9841599788421855, - 3.8923436288171525, - 1.1508329887233149, - 11.383218174775342, - 1.4822430277021466, - 1.1766678151414163, - 0.5223850194716981, - 10.641029747336491, - 10.629678264549034, - 1.5506860258251056, - 1.6172716862858332, - 3.3084111889169994, - 3.8225384869477117, - 3.2181525178476242, - 10.805669683789443, - 1.3964934007804224, - 3.2800128692883628, - 3.1846391000756857, - 10.695429298642578, - 2.949958256339423, - 7.540022705566691, - 1.1527314494379268, - 11.551630376432174, - 8.3458031736762, - 4.984611047058473, - 5.767512050794933, - 2.101664189937632, - 7.774453798507568, - 11.482890588252625, - 3.8175035271584896, - 1.3122601053818665, - 4.6490582097789, - 5.257826041964947, - 8.129020265816388, - 6.922582683560283, - 1.1653790943806284, - 4.165502646998374, - -1.8956593067123448, - 1.9624725455037058, - 2.093985760729416, - 1.697114967540403, - 6.252821237159777, - 3.984922545466563, - 18.49063350079053, - 0.07521768037949655, - 4.266382856770973, - 3.038629780857546, - 7.590612944393139, - 2.2215644054189174, - 4.508484870146033, - 3.376999774476586, - -0.21115656764338744, - 5.9333496168305055, - 4.052521960469138, - 0.8250147782077821, - 8.499434814511643, - 10.26899685904756, - 3.8126959290713813, - 6.635898714469415, - 1.6067198965643417, - 10.253468884792, - 1.4395963925845616, - 3.372127918876701, - 2.613768873063521, - 14.20294480605421, - 2.3822255468743685, - 4.089857223659319, - 9.251431469744308, - 6.312500447045307, - 1.4577170243517266, - 9.311059176415537, - 11.114319085950685, - 3.1863095083950803, - 3.2897871368232043, - 7.504518978570107, - 1.0559006941062314, - 2.2450940978353717, - 2.26843289183069, - 1.7707473664381386, - 4.559847930572106, - 1.6015579142205745, - 12.086912144333144, - 5.701325415891191, - 6.849392435651532, - 1.4451798332463686, - 3.378382187645317, - 10.499967443850583, - 13.451913885465364, - 4.6519681588390585, - 2.4453863318307465, - 3.17518004565509, - 10.660132568416012, - 6.012996884384393, - 3.666740148539145, - 12.253347417655641, - 5.856761811694221, - 7.826404734778256, - 0.83522967339717, - 3.1478380983232426, - 1.0301256344165093, - 9.812055248429134, - 2.1631727023884055, - 0.7012947549049051, - 2.2807440727810087, - 2.8777095496338707, - 3.5396243352582575, - 5.078411778327921, - 7.644037683454063, - 4.214157582480626, - 3.227813526987917, - 1.8950854683377898, - 8.273768587290384, - 7.042883019888062, - 6.279430040654341, - 2.8576360333014215, - 9.286549565264568, - 1.3859158480677314, - 2.3275920490961854, - 5.767573515014574, - 3.7506312572570675, - 1.320713395894615, - 10.212869818117555, - 2.0697294814897242, - 1.441404312485799, - 9.864553840551586, - 0.36125477879677126, - 6.437503714512308, - 13.433645420156413, - 11.558320613040664, - 9.346558165443854, - 1.1488593990287084, - -0.7561679491099725, - 15.336113654335783, - 8.742170519056472, - 6.481454238265168, - 3.182703497253395, - 4.393459525076071, - 0.16748120721465015, - 8.781178798807002, - 4.928918555552588, - 5.072259981144448, - 2.1755560735466304, - 3.1373996095846595, - 9.993369457421977, - 5.028053326716646, - 5.055439186487435, - 1.8034782530713143, - 1.5961170573645533, - 3.56840838135132, - 16.285666127796514, - 0.13279900178749257, - 3.0736395780402708, - 0.15201500920458605, - 9.924536594732846, - 5.339198033172685, - 1.4954878511372058, - 5.772096833019086, - 2.7108024218677156, - 0.7287727343342003, - 3.687378622941323, - 3.346178117658042, - 4.218066681557937, - 3.758993624607027, - 11.20175638993969, - 0.3381790137322365, - 7.528369810863078, - 0.9306497421556346, - 4.204034610650169, - 3.3432442539973195, - 9.71074983031172, - 4.557018092529859, - 8.857878161767035, - 10.312343392753021, - 1.5378009481349695, - 0.6218758239390858, - 0.41576963106511766, - 17.67219702866147, - 3.3602581922121884, - 2.606247664100731, - 8.900380424673967, - 1.714476689271548, - 3.7984664567673025, - 0.9493116253535325, - 15.97536241219612, - 10.747751324261445, - 7.429029407672949, - 11.461948489000513, - 7.6017247723226085, - 2.6221905275316195, - 15.561566983734414, - 3.2472739807087194, - 1.4424887305932574, - 7.567256309752906, - 4.98937736257439, - 2.9304105594386973, - 1.5440083928142925, - 4.910497743060022, - 3.5533164633405154, - 4.787410781944382, - 4.041051760850429, - 6.049063673908385, - 3.5380672836712668, - 17.3501756288875, - 4.414451845562086, - 1.0668413861439257, - 0.9016493835817596, - 7.966632540366974, - 7.485218190712658, - 3.2916061223331776, - 3.1942601281344674, - 7.334674184175711, - 7.608729224468053, - 4.790858808540129, - 5.694034084347684, - 8.99644827443137, - 1.0259593417054744, - 0.903881514393115, - 3.4682813300473905, - 8.903317816428128, - 2.825454795082282, - 0.7180558258955793, - 10.451390235445258, - 2.333681002415545, - -0.5612011685691527, - 0.9529046956183496, - 0.655027521025904, - 1.2806207733069654, - 10.707794186867956, - 0.9973423297502046, - 13.12212737619498, - 9.23479312102998, - 5.270786789765304, - 11.843685565471757, - 6.12995661035467, - 3.2507894624967104, - 2.225507657701971, - 1.9311208435599505, - 1.6751235864821505, - 9.409456739377488, - 7.762737823232642, - -0.37720636798744966, - 7.476265254210922, - 5.627234572872154, - 3.6405360758007754, - 2.643080378516415, - 1.5128381297378348, - 2.199991641756983, - 0.5071285036084491, - 7.003384050152647, - 1.909785634098101, - 1.1403594522327065, - 0.3634373369124242, - 7.623795045571737, - 9.052018101176614, - 2.8663517202569726, - 1.5597488142143623, - 2.5826115596699974, - 3.738647173883102, - 1.3278337233353543, - 2.867946078811882, - 2.5503144297881106, - 4.431706524679094, - 4.081029353260243, - 5.433622799801779, - 3.269758397089347, - 0.3242531342459827, - 0.9090846593811345, - 0.890293978639035, - 2.450408765726328, - 6.856331384339364, - 8.52619462926133, - 1.947913278028056, - 6.450414778728382, - 3.798103152703199, - 8.139719937627595, - 1.4359646648590099, - 5.207482267025496, - 2.3951108901876825, - 6.799779922419049, - 10.136664129270939, - 2.6768491835032, - 2.3874300185476756, - 2.038573705341423, - 5.004488160490057, - 5.715150198716844, - 1.039748285389097, - 10.280410257625999, - 12.86283064800677, - 3.5746511488610855, - 2.8656980416874878, - 2.599544256017886, - 6.409149893354449, - 14.443109269806254, - 1.0405251052260949, - 3.326674209951898, - 10.989663463088544, - 1.8105097926902487, - 14.741330533081028, - 15.08675973075185, - 5.1631116750875305, - 9.343661006938557, - 14.126360366511257, - 11.484363268268915, - 8.94184778379353, - 0.9604537983261285, - 0.8361869555188473, - 2.1002647215789483, - 2.478117428845026, - 7.843235818802062, - 14.742011015515583, - 4.200182925056385, - 1.8547623673745726, - 8.268738146118627, - 0.17075516241577054, - -0.8970479734796357, - 9.982459249510216, - 3.122639019004143, - 5.208129305459214, - 3.9995262966163194, - 1.0384176311229965, - 8.090803240651615, - 2.720588981637568, - 1.2655670677957835, - 12.810847900217274, - 3.2207719681897062, - 1.9527694504544508, - 6.975683242729285, - 5.962908178484416, - 2.031201552091179, - 3.296266063714319, - 2.8497814258160656, - 3.5992640315712263, - 6.028692328076521, - 2.1798547277503113, - 15.946078372524447, - 11.270067835171865, - 9.886737882436176, - 10.069873531748522, - 0.4350976808393294, - 3.419671289176756, - 8.120498029715673, - 3.276912806764646, - 5.150771578281058, - 11.536778020411017, - 1.1283312841804798, - 5.2922772679270125, - -1.148029602795451, - 6.618234052355605, - 9.995383628078763, - 19.79728717826931, - 8.221699603028048, - 1.756730298878706, - 0.39346236105816546, - 1.9973513226644182, - 3.9146292154471363, - 6.655009309637468, - 7.306798402879964, - 6.636471794024103, - 1.2105875042335548, - 5.977174263502021, - 3.335659958519535, - 4.9740231500169205, - 5.696409647756136, - 12.304050151594982, - 12.479961038493842, - 5.267925637149455, - 8.205193667618506, - 6.64127892567596, - 2.584589230653057, - 1.4859153087462587, - 3.094530550283568, - 0.8210502191076455, - -1.6565034675323356, - 3.4066291519265084, - 2.1271109392217773, - 11.528410984296546, - 11.104263573155796, - 2.2723724206920943, - 4.902928411074227, - 2.32253510026496, - 9.505170913193153, - 1.676351819404714, - 5.913072392765526, - 4.240607888229912, - 3.549793526789535, - 5.190377999146584, - 3.0969532739309678, - 0.3993222635384932, - 3.4469460988229064, - -0.12939358371016055, - 4.275655223374612, - 2.0051290473754992, - 5.675153024575338, - 1.3168115685827253, - 5.9090892410023175, - 1.5297744205662447, - 11.434182971375352, - 20.61617591266843, - 0.9834804292692843, - 0.2894674597174777, - 4.629916875604893, - 5.166479641650803, - 9.456054689668147, - 6.707682575146893, - 4.311981700299243, - 2.727290679463529, - 1.346888081763368, - 2.091256797952634, - 2.649932550296708, - 6.72998362612404, - 1.9431963436581852, - 1.9958889934089596, - 9.265758554728484, - 1.1918107314354887, - 10.799943755267028, - 5.368437067503507, - 6.050692810470485, - 0.7575948792915393, - 0.6414350611769419, - 1.9941981378277107, - 10.241776461541852, - 15.16722724171395, - 3.679959347327524, - 0.9821083549665657, - 1.865779046900708, - 2.0294581789518995, - 5.685763930151271, - -0.21122174624071013, - 2.072247638121533, - 1.2025334601292297, - 7.65936297015509, - 4.512297107524395, - 1.3890972245536044, - 10.881249015037312, - 0.19665229532292433, - 1.2976555696566456, - 5.162651574559774, - 4.170255155954141, - 2.992416291482686, - 6.144238251062534 - ], - "yaxis": "y" - }, - { - "hovertemplate": "Treatment=False
Score=%{x}
Outcome=%{y}", - "legendgroup": "False", - "marker": { - "color": "#EF553B", - "symbol": "circle" - }, - "mode": "markers", - "name": "False", - "orientation": "v", - "showlegend": true, - "type": "scatter", - "x": [ - -0.13826430117118466, - -0.23415337472333597, - -0.23413695694918055, - -0.4694743859349521, - -0.46341769281246226, - -0.46572975357025687, - -1.913280244657798, - -1.7249178325130328, - -0.5622875292409727, - -1.0128311203344238, - -0.9080240755212109, - -1.4123037013352915, - -0.22577630048653566, - -1.4247481862134568, - -0.5443827245251827, - -1.1509935774223028, - -0.600638689918805, - -0.2916937497932768, - -0.6017066122293969, - -0.013497224737933921, - -1.0577109289559004, - -1.2208436499710222, - -1.9596701238797756, - -1.3281860488984305, - -0.11564828238824053, - -0.3011036955892888, - -1.4785219903674274, - -0.7198442083947086, - -0.4606387709597875, - -1.763040155362734, - -0.38508228041631654, - -0.6769220003059587, - -0.8392175232226385, - -0.3092123758512146, - -0.47917423784528995, - -0.18565897666381712, - -1.1063349740060282, - -1.1962066240806708, - -0.07201012158033385, - -0.6451197546051243, - -0.03582603910995154, - -2.6197451040897444, - -0.29900735046586746, - -1.9875689146008928, - -0.21967188783751193, - -0.5182702182736474, - -0.8084936028931876, - -0.5017570435845365, - -0.5297602037670388, - -0.7020530938773524, - -0.3276621465977682, - -0.39210815313215763, - -1.4635149481321186, - -0.23458713337514692, - -1.4153707420504142, - -0.42064532276535904, - -0.3427145165267695, - -0.8022772692216189, - -0.16128571166600914, - -0.07444591576616721, - -1.9187712152990415, - -0.026513875449216878, - -0.19236096478112252, - -0.03471176970524331, - -1.168678037619532, - -0.9093874547947389, - -1.4018510627922809, - -0.9905363251306883, - -0.5662977296027719, - -0.5034756541161992, - -1.5506634310661327, - -1.0623037137261049, - -0.9194242342338032, - -0.7832532923362371, - -0.3220615162056756, - -1.2308643164339552, - -1.6074832345612275, - -1.236950710878082, - -1.3204566130842763, - -0.6800247215784908, - -0.7143514180263678, - -1.1913034972026486, - -0.9746816702273214, - -0.8206823183517105, - -0.2453881160028705, - -0.7537361643574896, - -0.8895144296255233, - -0.8158102849654383, - -0.0771017094141042, - -0.2646568332379561, - -0.8571575564162826, - -1.0708924980611123, - -0.2234627853258509, - -0.07282891265687277, - -0.846793718068405, - -1.5148472246858646, - -0.4465149520670211, - -1.245738778711988, - -0.883857436201133, - -1.142970297830623, - -1.377669367957091, - -0.9378250399151228, - -0.3152692446403456, - -0.7728252145375718, - -0.23681860674000887, - -0.48536354782910346, - -1.867265192591748, - -1.6127158711896517, - -0.47193186578943347, - -1.0777447779293061, - -0.7153037092599682, - -0.7303666317171367, - -0.6516003476058171, - -2.025142586657607, - -0.661786464768388, - -0.7925207384327007, - -0.11473644146689901, - -1.2002964070557762, - -0.3345012358409484, - -0.4749453111609562, - -0.6533292325737119, - -1.2608839543350452, - -1.5193699659540134, - -0.48423407286625136, - -0.7076694656187807, - -0.926930471578083, - -0.05952535606180008, - -3.2412673400690726, - -1.0243876413342898, - -0.2525681513931603, - -1.2477831819648495, - -1.4301413779606327, - -0.44004448669698376, - -1.4358621511794394, - -0.9815086510479509, - -0.6002168771587947, - -0.3853135968617602, - -1.237815498826849, - -1.9520877995225019, - -0.15178509503558332, - -0.6226995198205938, - -0.20812225035727522, - -0.4930009346588328, - -0.5893647569442115, - -0.6929095952606542, - -0.8289950109220723, - -0.5601810401969696, - -0.020901593964148132, - -0.5915713888358299, - -0.20219265243389406, - -0.2176812032272203, - -0.31026675659345604, - -0.13014305436768459, - -0.8182206832334725, - -1.006017381499702, - -1.2141886127877322, - -0.012246772846914623, - -0.8972543714858315, - -0.6771617115121117, - -0.14705738150213865, - -0.8254971967925115, - -0.32138584165299344, - -0.5637245528039747, - -0.8222203955664315, - -0.5069431753711298, - -0.4710383056183228, - -1.4480843414973241, - -1.4074637743765552, - -0.718444221252436, - -0.21344715171184725, - -0.1599385299634271, - -0.01901620790268883, - -1.0025293646378088, - -0.01851313599238993, - -0.2886586389201383, - -0.827230943552323, - -0.1087601484568576, - -0.40122047188583626, - -0.7730097838554665, - -0.7673475628880495, - -0.8082982853551515, - -0.8397218421807761, - -0.5993926454440222, - -2.123895724309807, - -0.525755021680761, - -0.759132661553698, - -0.5769036556624031, - -0.898414671348358, - -1.3202332070206422, - -0.4691756521047048, - -1.7131345290908775, - -0.11453984525261789, - -1.594427658794367, - -0.5993750229537729, - -0.45006547147924364, - -1.0676204293825944, - -0.1423794850212935, - -1.1246420918378692, - -1.5341141707356223, - -0.7484865365565536, - -0.2489641484790735, - -0.9649234605801045, - -1.7587394864231143, - -1.183258512665775, - -2.0392321777601006, - -0.26940683444455776, - -1.3801014582148914, - -1.7033824393551547, - -0.05554769889661878, - -0.03269474809409311, - -2.0674421000398766, - -0.08912003951278841, - -1.3044695005048532, - -0.9398797863273552, - -0.5138669173366935, - -1.0592135218889516, - -0.06267909727317188, - -0.9857260463355437, - -0.5302576183724408, - -0.7928728322623442, - -0.10703035995455783, - -1.035242322419374, - -0.553649305347182, - -1.1978778925888485, - -0.6997255079925856, - -0.11232804969082982, - -0.22096959953322298, - -0.5305011476105275, - -0.57581824064468, - -0.275051697151644, - -2.301921164735585, - -1.5151910621985523, - -0.24903603955637832, - -0.12791759148076653, - -0.9555404406004258, - -1.6064463202575725, - -0.7563507452843033, - -1.4222537095976742, - -0.6465728842425266, - -1.081548003614395, - -0.007972641316617372, - -0.8612842013282637, - -1.0372461543264564, - -0.1903386780836082, - -0.8756182533847572, - -1.382799730964336, - -1.3985675738191412, - -0.6506425691218269, - -0.48712538376469605, - -0.5923939242388692, - -0.863990769679816, - -0.8309501164110378, - -0.05023810944913695, - -0.23894804686640975, - -0.9075636620415979, - -0.5767713305683327, - -0.977555244798551, - -1.6694052811213718, - -0.6626237589458467, - -0.7632591565425169, - -1.804882100664519, - -1.6275424378831627, - -0.9043166251044086, - -1.6615200622689599, - -0.06607979864731657, - -1.2110161997624567, - -0.6518361078021592, - -0.8604133652839524, - -0.38455554422982535, - -0.5768918695231487, - -1.129706854657618, - -2.4716445001272893, - -0.7968952554704768, - -0.2030453860429927, - -0.6039851867158206, - -0.15567723539207948, - -0.4118769661224674, - -0.48760622407249354, - -0.4325581878196209, - -0.42098448082026296, - -0.32602353216784113, - -0.4080753730215514, - -2.038124535177854, - -1.008086310917404, - -1.8707919210258557, - -0.35151348404130867, - -0.21910052880886424, - -2.211135309007885, - -1.4785862457798415, - -0.4152879139008013, - -0.4593608995402441, - -0.8498443694647918, - -0.8560838259088672, - -0.4776574467651167, - -0.510016398854747, - -0.26987493529337125, - -0.9787637157823074, - -0.4442932600761116, - -0.9221653241776254, - -0.773789199103573, - -1.244654703311417, - -1.7787202489042786, - -0.05558467091045507, - -1.1254890472983765, - -0.7904744554453119, - -0.5112156764311852, - -0.9896048202585809, - -0.12578692009964815, - -1.6924646297148194, - -0.15800789857898942, - -0.42688106994742003, - -1.0121043752601675, - -1.6548566718657693, - -1.2899608997410539, - -1.295078772063616, - -0.3357846992901282, - -0.2595913513636048, - -1.5031429531181062, - -0.24574306408594432, - -0.2727235697476705, - -2.6968866429415717, - -0.05429486651781221, - -0.23093453020867796, - -0.26888869055483056, - -1.1065259087416703, - -0.024125087110003277, - -0.14436041192394247, - -0.5736620068802363, - -0.5468589412403921, - -0.03275327021599839, - -0.543424771133765, - -0.7128457826771644, - -0.2549772174208553, - -2.650969808393012, - -2.0733902324081495, - -0.34268759408034877, - -0.37144086599579146, - -1.4075116947178212, - -0.7778166875908753, - -1.1105758454658288, - -1.1290517712172292, - -0.5245202662797737, - -1.2221278088919454, - -0.24032539815813503, - -0.3748208075495975, - -0.3609661658190799, - -1.0810633275998973, - -0.3095464393139903, - -1.251113576385303, - -0.18490213644298903, - -0.5227230205190395, - -0.7043436905427592, - -1.4084612963635597, - -1.5566291735239037, - -1.280429352496283, - -2.081929407883722, - -0.09671311187039239, - -0.5449190868089497, - -0.037634702424848364, - -0.36361221221385587, - -0.056945623721067457, - -1.7101683926566256, - -1.348185422105713, - -0.18398333635267913, - -0.5397596803093615, - -0.7783047254023127, - -0.978372777615032, - -1.7025836042378404, - -1.8408742313316453, - -1.2795769667357015, - -0.6248185776956788, - -0.7257438131534656, - -0.7553829323533225, - -0.6115178029919482, - -1.4066610968482223, - -0.9232332461109043, - -1.3516846056163336, - -0.9758732529773327, - -0.949398888831943, - -0.8583577801812136, - -0.5756378262377739, - -0.09605989972464987, - -0.7031764251258874, - -0.0349884904969617, - -0.6269670577877674, - -0.5624667758942676, - -1.5702247198904564, - -0.7271371758248686, - -0.24751863555150475, - -0.07443342910004629, - -1.3353443587101013, - -0.07016571145864703, - -1.6609609335159914, - -1.2767485758203094, - -1.0810565404082624, - -0.03955515385665504, - -0.5160447282173739, - -0.4622752887050425, - -0.4344962274323156, - -0.30917212346863937, - -0.4787486216634773, - -0.8946073022195039, - -0.18687164416135904, - -0.4397310582741749, - -1.485560373036972, - -0.5172884501003722, - -0.36283856043965906, - -0.4455025214007718, - -0.5228600271532683, - -0.42018681709585726, - -0.2817846088605072, - -1.344450511034277, - -0.9186519464841982, - -1.0041407667520679, - -0.7677975651041284, - -0.03468488738678118, - -0.998354040738791, - -0.21398884422550896, - -0.04946370965243295, - -1.1227220215622986, - -0.637739984251316, - -0.5309969550018176, - -0.6231405264247644, - -0.5554771191602547, - -0.6373871273065177, - -0.5707462937494763, - -0.8323555731042287, - -0.5522230442809712, - -1.515744114997232, - -0.6127886904843862, - -0.38770155993598415, - -0.1769472274940494, - -0.7982972445384537, - -1.3793192280145272, - -0.7309300399419191, - -0.033126972873797095, - -0.5176112990361714, - -0.016422896072752075, - -0.5308687729203206, - -0.48943944251822213, - -0.35929209078705954, - -0.16711808031685435, - -0.8169356709872361, - -0.3933388123273607, - -1.3598561409799192, - -0.30777823495300083, - -0.0952955323869521, - -0.44643361455052827, - -1.0265152994110602, - -0.7001208149391732, - -1.5231869047837747, - -0.5589218472715883, - -0.0657502610729878, - -0.5551995266931984, - -1.448013900416244, - -2.198805956620082, - -0.5020542243526112, - -1.0212328171307132, - -0.5640786307367284, - -1.2803043986708944, - -0.09917586377938291, - -1.0700847663261526, - -1.5255251709247388, - -0.6919080698812444, - -0.045586016355497805, - -0.24123605785632987, - -1.251539424190444, - -0.0821511783925688, - -0.08973569428722672, - -0.6763923020592697, - -0.04015795064434341, - -1.4307751021180481, - -0.6810516574748808, - -0.6526239793023909, - -0.4461834332147797, - -1.889540730945531, - -0.4523063192490767, - -2.4238793266289567, - -1.5839028234857233, - -0.966976143129213, - -0.047711356141979855, - -0.0036025390905684044, - -1.1583646891925428, - -0.22096417382966393, - -2.0417348684242906, - -0.24717738252059693, - -0.6819842479977986, - -1.0016200098949155, - -0.2811002928859549, - -0.5711789897827968 - ], - "xaxis": "x", - "y": [ - 9.205261167861494, - 3.5184065183554654, - 8.343772418394707, - 4.464359928290405, - 3.0563356901690937, - 1.3615999257157252, - 1.275484453655825, - 2.6192232516105034, - 5.508615118087808, - 1.2974507376626918, - 4.231042791423715, - 5.745691769143536, - 5.791927411501191, - 7.2764971558169735, - 8.553632580183374, - 3.9378426976965675, - 8.199955176155413, - 0.32421530102408114, - 10.760961439253784, - -0.3756937038823863, - 3.220751662359263, - 3.334706672185873, - 7.652028280004303, - 0.570099828388501, - 11.178100918657426, - 17.577963722847965, - 4.965644999539916, - 0.5260475386522028, - 1.3246973368078483, - 4.366552517818616, - 1.5803732778973196, - 6.045007101847658, - 19.841873087271434, - 6.219066218451047, - 6.899657800072792, - 3.0690128883734977, - 1.3571340694495375, - 1.220890735050157, - 1.466151622331343, - -0.041662233621488354, - 9.292177980501732, - 7.819235981426694, - 2.4336654798581576, - 0.4999137411478758, - 0.9684966647131934, - 2.472908937722393, - 9.395205090196505, - 7.525120877423831, - 1.814283177282542, - 5.265552107670654, - 2.634285722780752, - 0.6857247750865538, - 0.4814140629812199, - 2.0121051299449233, - 1.6607787445225182, - 4.801892044287716, - 0.7714890721589855, - 3.914003116473506, - 4.732745605375674, - 8.573327677044313, - 1.0613880990948823, - 1.4750690469473215, - 16.028319137451795, - 2.8462956310008214, - 6.337591704532634, - -0.006609620796110771, - 10.425350071741804, - 3.248776603440306, - 0.509611157736492, - 6.832394966677228, - 6.495467078404538, - -0.07022134498284481, - 16.243685127647602, - 0.6625735024620792, - 0.7463603174480453, - 11.196866612579644, - 2.0169090465539217, - 5.179729244323186, - -0.13429457413312706, - 10.610045682292958, - 4.439542882257554, - 7.137309461378128, - 0.8335507847427969, - 6.024734808571596, - 8.979401573714242, - 1.5827457716718185, - 0.44854501422764126, - 3.4141425243162944, - 2.418656872597653, - 9.355346181966821, - -0.22801583443500123, - 7.148120221068655, - 5.037321626889873, - 4.51015694873306, - 3.2533077263019416, - 16.472807922377893, - 2.1185425201955312, - 0.28249884985599855, - 2.235344242009358, - 1.7616437066712936, - -0.13193646878975818, - 14.36980542339821, - 1.7097672565267146, - 1.9962390272005057, - -0.1274133661618491, - 0.9583421724350449, - 2.934556665303445, - 0.546634435940819, - 2.7278585156702317, - 7.975695004725944, - 2.2851327466695572, - 0.8798219104562294, - 9.055257820249373, - 1.632786665388183, - 8.045259080002769, - 6.689314508159182, - 8.983150902137096, - 0.5612829495120453, - 8.621860640243085, - 0.6395472451635591, - 0.13325704694822132, - 2.0886736749365316, - 1.9866926991319431, - 2.6409821642077214, - -0.21329937211077177, - 9.117985970126508, - 4.266720323161483, - 6.706209120978575, - 1.3476798217617605, - 4.850930229706136, - 7.806813783350091, - 3.4441543687983946, - 6.015587228176673, - 9.568736500811594, - 8.19540990353838, - 4.749973486124939, - 6.385691318934307, - 2.8870414255519705, - 4.639340533885447, - 0.9683893591917982, - 12.155656484773532, - 1.6902482968094241, - 1.8826910916625972, - 3.9872789005039797, - 1.2902250784191982, - 4.443514838306929, - 9.25927512619368, - 7.059705933899023, - 4.638685908468305, - 1.8895662975831067, - -0.2141565782299317, - 3.9623480650763834, - 7.602725574878751, - 5.51040538242031, - 1.215945542264764, - 1.044504848259474, - 7.867782998930899, - -0.0703719303093876, - 3.301337146926469, - 0.27229617798147704, - 6.907335238456296, - 0.23300679275301617, - 10.808384435732538, - -0.748889486019636, - 12.487226614059734, - 1.4413389190670947, - 0.3677371066021673, - 0.05400502330475726, - 3.220529601687432, - 7.622794626232032, - 6.660837867194528, - 1.676371082302052, - -0.17415559470725486, - 2.137907140932381, - 1.0370638897318107, - 0.6387474496875047, - 5.468940494641348, - 0.6958426043425507, - 1.023950254805143, - 3.5346530386737682, - 7.526379014346223, - -0.3080686703368427, - 0.3060480529833499, - 5.049116074819689, - -0.17788449644844853, - 0.4243087140516217, - 0.5544139842534694, - 0.9965106495802344, - 7.208381129260889, - 11.590991196395581, - 9.142794082750973, - 1.7394467462751488, - 13.532627338553407, - 4.796276938760826, - 9.574425138514147, - 8.286560554883701, - 1.9168947134586773, - 13.942925628113782, - 3.073073722958033, - 5.469656318904619, - 1.6373440657340201, - 9.26273659063607, - 0.9653704413023574, - 1.746480557810436, - 7.158132850851906, - 0.30199321209423885, - 2.207030476745607, - 5.440442243216736, - 1.7835146960952513, - 6.778930035367241, - 5.600792229195962, - 9.515211195892674, - 0.7403374643098577, - 10.22578122338326, - 2.4085351033707734, - 1.5427172005378376, - 7.7498730580456545, - 3.280057546174133, - 0.7966171611510633, - 5.293983034780157, - 0.4445708004409658, - 1.7180764355744944, - 1.4974960434659323, - 4.980134489868571, - 1.3705996753797212, - -0.35527474203586934, - 2.1573391244783724, - 8.994471348178633, - 6.127915849491979, - 1.9415389043070181, - 2.347124964057026, - 1.8007694602409698, - 4.544343820727818, - 17.331870363849152, - 0.3890622280681236, - 0.8044463166495925, - 3.3210835536504475, - 0.7185732716727131, - 5.436502046754177, - 7.073489752611379, - -0.4124078224850031, - 1.4495905513086877, - 11.643928998964993, - 17.265972624874806, - 10.45840660191556, - 0.35212072255527066, - 15.024342388943767, - 1.3711224054245343, - 1.5555096433975422, - 2.2534676479705995, - 3.577187202649305, - 3.4141865282867174, - 1.9315724989153988, - 0.4492691537460317, - 16.851236325020317, - 1.7870500427686278, - -0.1750217850882944, - 3.093797379274558, - 7.229884513267392, - 4.756447771940901, - 12.471952693684115, - 2.5207108925346464, - 8.830092833559139, - 4.028920366475544, - 2.730645874519063, - 4.4453806604352, - 1.8150218524624373, - 9.464645051580337, - -0.373306080983991, - 9.109592608109214, - 1.0839979397106765, - 2.674236081505276, - 1.3784293677165596, - 8.793405776619437, - 3.77014099714957, - 10.164064671743102, - 8.534601855376973, - 6.163629791925399, - 7.1125366239181265, - 2.6497585563592208, - 9.201284174893983, - 2.4463465251695036, - 5.24450960577456, - 4.095499907239252, - 3.2626326934197207, - 4.244573599726972, - 1.1597527508370036, - 0.7084748568910306, - 1.6513302029244321, - 8.498633136222933, - 9.349355119348747, - 8.913136159539166, - 1.26745207583228, - 2.0317784562969896, - 4.819644567143215, - 2.115041283457362, - 1.7567772393216012, - 7.156595132244517, - 2.386590645346442, - 6.3339489837076135, - 1.7902211592515593, - 0.8628111749286197, - 9.035895189896735, - 3.6192222941564447, - 10.571583258650847, - 0.3402026026708754, - 1.6258882297944637, - 8.262480251513505, - 2.700732676511482, - 6.991284847499139, - 11.336572062474719, - 0.495144846412771, - 4.1565354744392735, - 1.3330355409939436, - 1.1826515112373168, - 3.089591474506063, - 2.3604454554809156, - 5.06957069815973, - 0.6130765911259505, - 1.2451572616129578, - 0.4150673293475587, - 8.205156395720202, - -0.08821422135718901, - 0.7930212904195799, - 1.2010314220637681, - 1.5968383766951206, - 6.3738770308670105, - 3.4141622218931533, - 2.3583883381335013, - 8.195169818929745, - 3.314680047902673, - 6.577379579117012, - 9.943220349728056, - 10.733077576837497, - 2.337412822748274, - 2.69651401188904, - 2.430472275531548, - 4.915919777161315, - 3.180999396156557, - 6.2260058712591935, - 5.813480859395392, - 0.5469201714336109, - -0.2608315968616289, - 1.7549849484925293, - 3.4221102344351504, - 0.047415237960372, - 3.71758286104229, - 1.2225579309378536, - 2.2604362759250156, - 15.174823796160155, - 6.454838423607447, - 11.655592936123629, - 16.3687592355027, - 1.4198868709995598, - 2.3147871266320865, - 4.218673850139978, - 10.114529223355724, - 2.740783864165119, - 12.527491175779446, - 1.7532998335704464, - 6.755692150223804, - 0.5926653452903705, - 1.38330117482117, - 3.084299682941338, - 0.14045888230649933, - 6.624124537864187, - 1.100328975527514, - 8.834908102687907, - 2.0203421266125656, - 0.23347822558403747, - 0.5614926544300746, - 2.229467488522225, - 1.6570109294609565, - 3.023173842484077, - 4.6270098814533895, - 0.7168094826671146, - 3.2657760363728063, - 0.2780816245255471, - 0.6868657958466227, - 3.3837529959167005, - 1.5437761842794295, - 1.5203403033652958, - 0.4413806794008475, - 0.31951244046391913, - 0.5409647572511408, - 8.429142859234034, - 4.444943897228863, - 1.970102291048323, - 6.925752553479282, - 1.4495819348609282, - 5.414750380231556, - 1.233248454530705, - 1.583462026280745, - 0.014319226529760462, - 4.5944605282506235, - 7.294017366060366, - 0.57512800929278, - 5.9647764048727865, - 9.862301956640493, - 2.3872039668415406, - 0.7014811332010542, - 6.122489375472544, - 1.6044720073493286, - 8.545381354326118, - 5.318230383995225, - -0.047041941809236876, - 0.14499195704924878, - 1.07883838903741, - 5.682870940287144, - 1.0193275234345083, - 6.294760102564424, - 0.7538698631089537, - 10.085615584570917, - 3.0023392827900777, - 1.4448581209117852, - 0.48371926719553804, - 2.203702758867613, - 0.7417320557311575, - 5.6448130082468175, - 2.206723543699168, - 1.115658492002276, - 0.8651378855151438, - 9.637150246527856, - 1.4087472909536356, - 7.900513824461623, - 0.5492932131051853, - 0.4051122026484606, - 0.3340987638606818, - 1.2975125695253478, - 1.8607753186096982, - 1.066167396612305, - 0.21273411527508415, - 0.9934776995019708, - 18.92186593210092, - 1.1743639449794019, - 10.587484473893419, - 11.090230371813842, - 7.263972631185062, - 6.606040917780645, - 0.7963834016735832, - 2.427061719641658, - 10.238818709579919, - 1.0127147372030256, - 2.917642065113388, - 5.15437291580514, - 1.308100584997736, - 4.885155577261686, - 10.555639347132589, - 9.500919286565116, - 9.983161984941434, - 1.8634204175298956, - 1.0106740903175286, - 2.5228552504341675, - 4.599854571275722, - 6.231683935347874, - 3.1360582775965264, - 0.29831162343818174, - 9.050658052038136, - 0.624766514540844, - 6.34584914162904, - 8.631515840603019, - 1.3212499109220306, - 3.1329255055282603, - 0.6580208387866686, - 0.960475599896778, - 2.1517078419737126, - 0.8714315032170394, - 7.893812408918852, - 3.6921634370259677, - 2.136328451280092, - 4.103715872136765, - 8.498939223845133, - 2.128540196994499, - 4.6554283025235055, - 0.5248166371161477, - 8.613067196213908, - 1.3193694568688028, - 1.1313459223367046, - 0.9128511545086413, - 1.8068929379498802, - 7.051545857825981, - 7.902010708053001, - 1.3801082802587534, - 5.037738243947991, - 15.484959110064866, - 0.3652147054957546, - -0.10979372598736035, - 0.32349144430865795, - 2.1368048236068207, - 1.197826663231203 - ], - "yaxis": "y" - } - ], - "layout": { - "legend": { - "title": { - "text": "Treatment" - }, - "tracegroupgap": 0 - }, - "template": { - "data": { - "bar": [ - { - "error_x": { - "color": "#2a3f5f" - }, - "error_y": { - "color": "#2a3f5f" - }, - "marker": { - "line": { - "color": "#E5ECF6", - "width": 0.5 - }, - "pattern": { - "fillmode": "overlay", - "size": 10, - "solidity": 0.2 - } - }, - "type": "bar" - } - ], - "barpolar": [ - { - "marker": { - "line": { - "color": "#E5ECF6", - "width": 0.5 - }, - "pattern": { - "fillmode": "overlay", - "size": 10, - "solidity": 0.2 - } - }, - "type": "barpolar" - } - ], - "carpet": [ - { - "aaxis": { - "endlinecolor": "#2a3f5f", - "gridcolor": "white", - "linecolor": "white", - "minorgridcolor": "white", - "startlinecolor": "#2a3f5f" - }, - "baxis": { - "endlinecolor": "#2a3f5f", - "gridcolor": "white", - "linecolor": "white", - "minorgridcolor": "white", - "startlinecolor": "#2a3f5f" - }, - "type": "carpet" - } - ], - "choropleth": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "type": "choropleth" - } - ], - "contour": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "colorscale": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ], - "type": "contour" - } - ], - "contourcarpet": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "type": "contourcarpet" - } - ], - "heatmap": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "colorscale": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ], - "type": "heatmap" - } - ], - "heatmapgl": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "colorscale": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ], - "type": "heatmapgl" - } - ], - "histogram": [ - { - "marker": { - "pattern": { - "fillmode": "overlay", - "size": 10, - "solidity": 0.2 - } - }, - "type": "histogram" - } - ], - "histogram2d": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "colorscale": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ], - "type": "histogram2d" - } - ], - "histogram2dcontour": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "colorscale": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ], - "type": "histogram2dcontour" - } - ], - "mesh3d": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "type": "mesh3d" - } - ], - "parcoords": [ - { - "line": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "parcoords" - } - ], - "pie": [ - { - "automargin": true, - "type": "pie" - } - ], - "scatter": [ - { - "fillpattern": { - "fillmode": "overlay", - "size": 10, - "solidity": 0.2 - }, - "type": "scatter" - } - ], - "scatter3d": [ - { - "line": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scatter3d" - } - ], - "scattercarpet": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scattercarpet" - } - ], - "scattergeo": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scattergeo" - } - ], - "scattergl": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scattergl" - } - ], - "scattermapbox": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scattermapbox" - } - ], - "scatterpolar": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scatterpolar" - } - ], - "scatterpolargl": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scatterpolargl" - } - ], - "scatterternary": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scatterternary" - } - ], - "surface": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "colorscale": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ], - "type": "surface" - } - ], - "table": [ - { - "cells": { - "fill": { - "color": "#EBF0F8" - }, - "line": { - "color": "white" - } - }, - "header": { - "fill": { - "color": "#C8D4E3" - }, - "line": { - "color": "white" - } - }, - "type": "table" - } - ] - }, - "layout": { - "annotationdefaults": { - "arrowcolor": "#2a3f5f", - "arrowhead": 0, - "arrowwidth": 1 - }, - "autotypenumbers": "strict", - "coloraxis": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "colorscale": { - "diverging": [ - [ - 0, - "#8e0152" - ], - [ - 0.1, - "#c51b7d" - ], - [ - 0.2, - "#de77ae" - ], - [ - 0.3, - "#f1b6da" - ], - [ - 0.4, - "#fde0ef" - ], - [ - 0.5, - "#f7f7f7" - ], - [ - 0.6, - "#e6f5d0" - ], - [ - 0.7, - "#b8e186" - ], - [ - 0.8, - "#7fbc41" - ], - [ - 0.9, - "#4d9221" - ], - [ - 1, - "#276419" - ] - ], - "sequential": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ], - "sequentialminus": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ] - }, - "colorway": [ - "#636efa", - "#EF553B", - "#00cc96", - "#ab63fa", - "#FFA15A", - "#19d3f3", - "#FF6692", - "#B6E880", - "#FF97FF", - "#FECB52" - ], - "font": { - "color": "#2a3f5f" - }, - "geo": { - "bgcolor": "white", - "lakecolor": "white", - "landcolor": "#E5ECF6", - "showlakes": true, - "showland": true, - "subunitcolor": "white" - }, - "hoverlabel": { - "align": "left" - }, - "hovermode": "closest", - "mapbox": { - "style": "light" - }, - "paper_bgcolor": "white", - "plot_bgcolor": "#E5ECF6", - "polar": { - "angularaxis": { - "gridcolor": "white", - "linecolor": "white", - "ticks": "" - }, - "bgcolor": "#E5ECF6", - "radialaxis": { - "gridcolor": "white", - "linecolor": "white", - "ticks": "" - } - }, - "scene": { - "xaxis": { - "backgroundcolor": "#E5ECF6", - "gridcolor": "white", - "gridwidth": 2, - "linecolor": "white", - "showbackground": true, - "ticks": "", - "zerolinecolor": "white" - }, - "yaxis": { - "backgroundcolor": "#E5ECF6", - "gridcolor": "white", - "gridwidth": 2, - "linecolor": "white", - "showbackground": true, - "ticks": "", - "zerolinecolor": "white" - }, - "zaxis": { - "backgroundcolor": "#E5ECF6", - "gridcolor": "white", - "gridwidth": 2, - "linecolor": "white", - "showbackground": true, - "ticks": "", - "zerolinecolor": "white" - } - }, - "shapedefaults": { - "line": { - "color": "#2a3f5f" - } - }, - "ternary": { - "aaxis": { - "gridcolor": "white", - "linecolor": "white", - "ticks": "" - }, - "baxis": { - "gridcolor": "white", - "linecolor": "white", - "ticks": "" - }, - "bgcolor": "#E5ECF6", - "caxis": { - "gridcolor": "white", - "linecolor": "white", - "ticks": "" - } - }, - "title": { - "x": 0.05 - }, - "xaxis": { - "automargin": true, - "gridcolor": "white", - "linecolor": "white", - "ticks": "", - "title": { - "standoff": 15 - }, - "zerolinecolor": "white", - "zerolinewidth": 2 - }, - "yaxis": { - "automargin": true, - "gridcolor": "white", - "linecolor": "white", - "ticks": "", - "title": { - "standoff": 15 - }, - "zerolinecolor": "white", - "zerolinewidth": 2 - } - } - }, - "title": { - "text": "Scatter Plot of Outcome vs. Score by Treatment Status" - }, - "xaxis": { - "anchor": "y", - "domain": [ - 0, - 1 - ], - "title": { - "text": "Score" - } - }, - "yaxis": { - "anchor": "x", - "domain": [ - 0, - 1 - ], - "title": { - "text": "Outcome" - } - } - } - } - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "fig = px.scatter(\n", - " x=df['score'],\n", - " y=df['y'],\n", - " color=df['d'].astype(bool),\n", - " labels={\n", - " \"x\": \"Score\", \n", - " \"y\": \"Outcome\",\n", - " \"color\": \"Treatment\"\n", - " },\n", - " title=\"Scatter Plot of Outcome vs. Score by Treatment Status\"\n", - ")\n", - "\n", - "fig.update_layout(\n", - " xaxis_title=\"Score\",\n", - " yaxis_title=\"Outcome\"\n", - ")\n", - "fig.show()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Oracle Values and Comparisons\n", - "\n", - "The generated oracle values for the potential outcomes can be used in a kernel regression to get an oracle estimator at the cutoff. " - ] - }, - { - "cell_type": "code", - "execution_count": 23, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "The oracle LATE is estimated as 0.9213381266257252\n" - ] - }, - { - "data": { - "application/vnd.plotly.v1+json": { - "config": { - "plotlyServerURL": "https://plot.ly" - }, - "data": [ - { - "marker": { - "color": "blue" - }, - "mode": "markers", - "name": "ITE", - "type": "scatter", - "x": [ - 0.4967141530112327, - -0.13826430117118466, - 0.6476885381006925, - 1.5230298564080254, - -0.23415337472333597, - -0.23413695694918055, - 1.5792128155073915, - 0.7674347291529088, - -0.4694743859349521, - 0.5425600435859647, - -0.46341769281246226, - -0.46572975357025687, - 0.24196227156603412, - -1.913280244657798, - -1.7249178325130328, - -0.5622875292409727, - -1.0128311203344238, - 0.3142473325952739, - -0.9080240755212109, - -1.4123037013352915, - 1.465648768921554, - -0.22577630048653566, - 0.06752820468792384, - -1.4247481862134568, - -0.5443827245251827, - 0.11092258970986608, - -1.1509935774223028, - 0.37569801834567196, - -0.600638689918805, - -0.2916937497932768, - -0.6017066122293969, - 1.8522781845089378, - -0.013497224737933921, - -1.0577109289559004, - 0.822544912103189, - -1.2208436499710222, - 0.2088635950047554, - -1.9596701238797756, - -1.3281860488984305, - 0.19686123586912352, - 0.7384665799954104, - 0.1713682811899705, - -0.11564828238824053, - -0.3011036955892888, - -1.4785219903674274, - -0.7198442083947086, - -0.4606387709597875, - 1.0571222262189157, - 0.3436182895684614, - -1.763040155362734, - 0.324083969394795, - -0.38508228041631654, - -0.6769220003059587, - 0.6116762888408679, - 1.030999522495951, - 0.9312801191161986, - -0.8392175232226385, - -0.3092123758512146, - 0.33126343140356396, - 0.9755451271223592, - -0.47917423784528995, - -0.18565897666381712, - -1.1063349740060282, - -1.1962066240806708, - 0.812525822394198, - 1.356240028570823, - -0.07201012158033385, - 1.0035328978920242, - 0.36163602504763415, - -0.6451197546051243, - 0.36139560550841393, - 1.5380365664659692, - -0.03582603910995154, - 1.5646436558140062, - -2.6197451040897444, - 0.8219025043752238, - 0.08704706823817122, - -0.29900735046586746, - 0.0917607765355023, - -1.9875689146008928, - -0.21967188783751193, - 0.3571125715117464, - 1.477894044741516, - -0.5182702182736474, - -0.8084936028931876, - -0.5017570435845365, - 0.9154021177020741, - 0.32875110965968446, - -0.5297602037670388, - 0.5132674331133561, - 0.09707754934804039, - 0.9686449905328892, - -0.7020530938773524, - -0.3276621465977682, - -0.39210815313215763, - -1.4635149481321186, - 0.29612027706457605, - 0.26105527217988933, - 0.00511345664246089, - -0.23458713337514692, - -1.4153707420504142, - -0.42064532276535904, - -0.3427145165267695, - -0.8022772692216189, - -0.16128571166600914, - 0.4040508568145384, - 1.8861859012105302, - 0.17457781283183896, - 0.25755039072276437, - -0.07444591576616721, - -1.9187712152990415, - -0.026513875449216878, - 0.06023020994102644, - 2.463242112485286, - -0.19236096478112252, - 0.30154734233361247, - -0.03471176970524331, - -1.168678037619532, - 1.1428228145150205, - 0.7519330326867741, - 0.7910319470430469, - -0.9093874547947389, - 1.4027943109360992, - -1.4018510627922809, - 0.5868570938002703, - 2.1904556258099785, - -0.9905363251306883, - -0.5662977296027719, - 0.09965136508764122, - -0.5034756541161992, - -1.5506634310661327, - 0.06856297480602733, - -1.0623037137261049, - 0.4735924306351816, - -0.9194242342338032, - 1.5499344050175394, - -0.7832532923362371, - -0.3220615162056756, - 0.8135172173696698, - -1.2308643164339552, - 0.22745993460412942, - 1.307142754282428, - -1.6074832345612275, - 0.1846338585323042, - 0.25988279424842353, - 0.7818228717773104, - -1.236950710878082, - -1.3204566130842763, - 0.5219415656168976, - 0.29698467323318606, - 0.25049285034587654, - 0.3464482094969757, - -0.6800247215784908, - 0.23225369716100355, - 0.29307247329868125, - -0.7143514180263678, - 1.8657745111447566, - 0.4738329209117875, - -1.1913034972026486, - 0.6565536086338297, - -0.9746816702273214, - 0.787084603742452, - 1.158595579007404, - -0.8206823183517105, - 0.9633761292443218, - 0.4127809269364983, - 0.82206015999449, - 1.8967929826539474, - -0.2453881160028705, - -0.7537361643574896, - -0.8895144296255233, - -0.8158102849654383, - -0.0771017094141042, - 0.3411519748166439, - 0.27669079933001905, - 0.8271832490360238, - 0.01300189187790702, - 1.4535340771573169, - -0.2646568332379561, - 2.720169166589619, - 0.6256673477650062, - -0.8571575564162826, - -1.0708924980611123, - 0.4824724152431853, - -0.2234627853258509, - 0.714000494092092, - 0.47323762457354485, - -0.07282891265687277, - -0.846793718068405, - -1.5148472246858646, - -0.4465149520670211, - 0.8563987943234723, - 0.21409374413020396, - -1.245738778711988, - 0.173180925851182, - 0.3853173797288368, - -0.883857436201133, - 0.1537251059455279, - 0.058208718445999896, - -1.142970297830623, - 0.3577873603482833, - 0.5607845263682344, - 1.083051243175277, - 1.053802052034903, - -1.377669367957091, - -0.9378250399151228, - 0.5150352672086598, - 0.5137859509122088, - 0.5150476863060479, - 3.852731490654721, - 0.570890510693167, - 1.135565640180599, - 0.9540017634932023, - 0.651391251305798, - -0.3152692446403456, - 0.7589692204932674, - -0.7728252145375718, - -0.23681860674000887, - -0.48536354782910346, - 0.08187413938632256, - 2.3146585666735087, - -1.867265192591748, - 0.6862601903745135, - -1.6127158711896517, - -0.47193186578943347, - 1.088950596967366, - 0.06428001909546277, - -1.0777447779293061, - -0.7153037092599682, - 0.6795977489346758, - -0.7303666317171367, - 0.21645858958197486, - 0.045571839903813784, - -0.6516003476058171, - 2.1439440893253257, - 0.6339190223180112, - -2.025142586657607, - 0.18645431476942764, - -0.661786464768388, - 0.852433334796224, - -0.7925207384327007, - -0.11473644146689901, - 0.5049872789804571, - 0.8657551941701215, - -1.2002964070557762, - -0.3345012358409484, - -0.4749453111609562, - -0.6533292325737119, - 1.7654542402810969, - 0.40498171096095553, - -1.2608839543350452, - 0.9178619470547761, - 2.1221561970126332, - 1.0324652605511468, - -1.5193699659540134, - -0.48423407286625136, - 1.2669111491866227, - -0.7076694656187807, - 0.44381942814622843, - 0.7746340534293368, - -0.926930471578083, - -0.05952535606180008, - -3.2412673400690726, - -1.0243876413342898, - -0.2525681513931603, - -1.2477831819648495, - 1.6324113039316352, - -1.4301413779606327, - -0.44004448669698376, - 0.13074057728609134, - 1.4412732890661155, - -1.4358621511794394, - 1.1631637521549596, - 0.010233061019587049, - -0.9815086510479509, - 0.46210347426327075, - 0.19905969557347003, - -0.6002168771587947, - 0.06980208499001891, - -0.3853135968617602, - 0.11351734525124804, - 0.6621306745210467, - 1.586016816145352, - -1.237815498826849, - 2.1330333746562666, - -1.9520877995225019, - -0.15178509503558332, - 0.5883172064845765, - 0.28099186773503265, - -0.6226995198205938, - -0.20812225035727522, - -0.4930009346588328, - -0.5893647569442115, - 0.8496020970210246, - 0.35701548596504734, - -0.6929095952606542, - 0.8995998754332507, - 0.30729952087660933, - 0.8128621188389601, - 0.6296288419236122, - -0.8289950109220723, - -0.5601810401969696, - 0.7472936051232618, - 0.6103702654334648, - -0.020901593964148132, - 0.117327383308782, - 1.277664895788425, - -0.5915713888358299, - 0.5470973811700379, - -0.20219265243389406, - -0.2176812032272203, - 1.09877685198719, - 0.8254163489880298, - 0.8135096360006385, - 1.305478807154329, - 0.02100384163275905, - 0.6819529712949639, - -0.31026675659345604, - 0.3241663524884421, - -0.13014305436768459, - 0.09699596499271819, - 0.5951570254369136, - -0.8182206832334725, - 2.0923872756854602, - -1.006017381499702, - -1.2141886127877322, - 1.1581108735000678, - 0.7916626939629359, - 0.6241198170521551, - 0.6283455092642799, - -0.012246772846914623, - -0.8972543714858315, - 0.07580455819372633, - -0.6771617115121117, - 0.9751197334177512, - -0.14705738150213865, - -0.8254971967925115, - -0.32138584165299344, - 0.41293145427562433, - -0.5637245528039747, - -0.8222203955664315, - 0.2436872114919123, - 0.24496657110872277, - -0.5069431753711298, - -0.4710383056183228, - 0.2320499373576363, - -1.4480843414973241, - -1.4074637743765552, - -0.718444221252436, - -0.21344715171184725, - 0.3109075655980046, - 1.475356216949552, - 0.8576596232020194, - -0.1599385299634271, - -0.01901620790268883, - -1.0025293646378088, - -0.01851313599238993, - -0.2886586389201383, - 0.3227185603380895, - -0.827230943552323, - 0.5193465142411723, - 1.5327389130025777, - -0.1087601484568576, - 0.40171172209894146, - 0.6901439917111125, - -0.40122047188583626, - 0.22409248181041677, - 0.01259240078179486, - 0.09767609854883172, - -0.7730097838554665, - 0.024510174258942714, - 0.49799829124544975, - 1.4511436077950417, - 0.9592708260852069, - 2.1531824575115563, - -0.7673475628880495, - 0.8723206367206782, - 0.18334200573835174, - 2.1898029332176723, - -0.8082982853551515, - -0.8397218421807761, - -0.5993926454440222, - -2.123895724309807, - -0.525755021680761, - -0.759132661553698, - 0.15039378647620763, - 0.34175597577715944, - 1.8761708392158862, - 0.9504238381860503, - -0.5769036556624031, - -0.898414671348358, - 0.4919191715065057, - -1.3202332070206422, - 1.8314587658543537, - 1.179440120721287, - -0.4691756521047048, - -1.7131345290908775, - 1.3538723741654128, - -0.11453984525261789, - 1.2378163119734618, - -1.594427658794367, - -0.5993750229537729, - 0.005243699718183166, - 0.046980593764742055, - -0.45006547147924364, - 0.6228499323474987, - -1.0676204293825944, - -0.1423794850212935, - 0.12029563171189886, - 0.514438834058749, - 0.7116148780888898, - -1.1246420918378692, - -1.5341141707356223, - 1.277676821898509, - 0.33231401197959165, - -0.7484865365565536, - 1.551151975522523, - 0.11567463429285867, - 1.1792971840638264, - 0.06751848141010895, - 2.060747924881987, - 1.7553408424432044, - -0.2489641484790735, - 0.9715709509543554, - 0.6453759495851475, - 1.3686315575323487, - -0.9649234605801045, - 0.6860514599984393, - 1.0584244868495878, - -1.7587394864231143, - -1.183258512665775, - -2.0392321777601006, - -0.26940683444455776, - 0.7175422557959623, - 1.502357052096028, - 0.07409478041977519, - 1.6286155455712918, - -1.3801014582148914, - -1.7033824393551547, - -0.05554769889661878, - 0.3840654489393073, - -0.03269474809409311, - -2.0674421000398766, - -0.08912003951278841, - -1.3044695005048532, - 0.6696725488300385, - 0.36659824609684827, - -0.9398797863273552, - -0.5138669173366935, - -1.0592135218889516, - -0.06267909727317188, - 0.9551423205012383, - -0.9857260463355437, - 0.5040465155178444, - -0.5302576183724408, - -0.7928728322623442, - -0.10703035995455783, - -1.035242322419374, - -0.553649305347182, - -1.1978778925888485, - 1.9647251329163893, - 0.03526355197172861, - -0.6997255079925856, - 0.213979910734222, - -0.11232804969082982, - -0.22096959953322298, - 0.6141667000434252, - 0.7575077100473051, - -0.5305011476105275, - -0.57581824064468, - -0.275051697151644, - -2.301921164735585, - -1.5151910621985523, - 1.3668742674445247, - 1.6449677135012837, - -0.24903603955637832, - 0.5765569630557664, - 0.3112501545435361, - 3.0788808084552377, - 1.1195749114345768, - -0.12791759148076653, - -0.9555404406004258, - -1.6064463202575725, - 0.2034636358672231, - -0.7563507452843033, - -1.4222537095976742, - -0.6465728842425266, - -1.081548003614395, - 1.6871416350725648, - 0.8816397569494505, - -0.007972641316617372, - 1.4799441388900259, - 0.0773683076476183, - -0.8612842013282637, - 1.5231240772696573, - 0.5389100436846587, - -1.0372461543264564, - -0.1903386780836082, - -0.8756182533847572, - -1.382799730964336, - 0.9261775475316414, - 1.9094166404701305, - -1.3985675738191412, - 0.5629692366905709, - -0.6506425691218269, - -0.48712538376469605, - -0.5923939242388692, - -0.863990769679816, - 0.04852162794482699, - -0.8309501164110378, - 0.2704568257798388, - -0.05023810944913695, - -0.23894804686640975, - -0.9075636620415979, - -0.5767713305683327, - 0.755391225825756, - 0.5009171876243808, - -0.977555244798551, - 0.09933230542922587, - 0.751387123371789, - -1.6694052811213718, - 0.543360192379935, - -0.6626237589458467, - 0.5705986685931593, - -0.7632591565425169, - -1.804882100664519, - -1.6275424378831627, - 0.048084946661381994, - 0.25972250172148187, - -0.9043166251044086, - 0.6385924587773739, - -1.6615200622689599, - -0.06607979864731657, - -1.2110161997624567, - -0.6518361078021592, - 0.047398671316414016, - -0.8604133652839524, - -0.38455554422982535, - 1.0062928092144405, - -0.5768918695231487, - 0.8356921120651418, - -1.129706854657618, - 0.5298041779152828, - 1.4415686206579004, - -2.4716445001272893, - -0.7968952554704768, - 0.57707212718054, - -0.2030453860429927, - 0.37114587337130883, - -0.6039851867158206, - 0.08658978747289992, - -0.15567723539207948, - 1.1677820616598074, - 0.2544208433012131, - 0.3376026620752022, - -0.4118769661224674, - -0.48760622407249354, - -0.4325581878196209, - 0.39445214237829684, - -0.42098448082026296, - 0.2897748568964129, - 2.075400798645439, - 0.8711247034316923, - -0.32602353216784113, - 1.2012139221639448, - -0.4080753730215514, - -2.038124535177854, - -1.008086310917404, - -1.8707919210258557, - -0.35151348404130867, - 0.0184183791895517, - 1.6764373122752827, - 0.32692737376416264, - -0.21910052880886424, - 0.8294055811834892, - -2.211135309007885, - 0.23561455810856594, - 0.7708651938869668, - -1.4785862457798415, - 1.143754043206929, - 0.3384964074944141, - -0.4152879139008013, - 0.6327818661062848, - 2.270692857804396, - 0.18186625505849516, - 0.24822058630033608, - -0.4593608995402441, - -0.8498443694647918, - 0.8303358165442456, - -0.8560838259088672, - 0.07156623721939247, - -0.4776574467651167, - 0.47897982574639186, - 0.3336621052869483, - 1.0375399442578992, - -0.510016398854747, - -0.26987493529337125, - -0.9787637157823074, - -0.4442932600761116, - 0.3773004930448522, - 0.7569886166453519, - -0.9221653241776254, - 0.8696059201056602, - 1.355637858804951, - 0.41343490322370086, - 1.876795812558066, - -0.773789199103573, - -1.244654703311417, - -1.7787202489042786, - 1.496044311489183, - 0.6543656563540577, - -0.05558467091045507, - 0.2799686263198203, - -1.1254890472983765, - 2.4457519796168263, - 0.1292211819752275, - 0.10939479460489289, - 0.725766623898692, - 0.4810092317367132, - 0.22388402427913137, - -0.7904744554453119, - 0.4714683571359957, - 1.8820244964750337, - 1.3454200461549777, - 1.593186626639397, - -0.5112156764311852, - -0.9896048202585809, - -0.12578692009964815, - 0.055724912288694604, - 1.0941915184709485, - -1.6924646297148194, - 1.5295503194606137, - -0.15800789857898942, - -0.42688106994742003, - -1.0121043752601675, - -1.6548566718657693, - 0.8231705839619146, - 0.07331796718840389, - -1.2899608997410539, - -1.295078772063616, - -0.3357846992901282, - 1.669021525289393, - -0.2595913513636048, - -1.5031429531181062, - -0.24574306408594432, - -0.2727235697476705, - -2.6968866429415717, - -0.05429486651781221, - -0.23093453020867796, - 0.6962063648134184, - 1.8489560949453452, - 1.1265650295477574, - -0.26888869055483056, - -1.1065259087416703, - 2.5733598032498604, - 0.05921843401448826, - 0.013929291912946203, - -0.024125087110003277, - 0.19808476076785494, - -0.14436041192394247, - -0.5736620068802363, - -0.5468589412403921, - -0.03275327021599839, - -0.543424771133765, - -0.7128457826771644, - 0.10643022769189683, - -0.2549772174208553, - 1.5039929885826886, - -2.650969808393012, - 1.0915068519224618, - 1.246085192497629, - -2.0733902324081495, - -0.34268759408034877, - -0.37144086599579146, - -1.4075116947178212, - -0.7778166875908753, - -1.1105758454658288, - 1.7522704434236227, - 0.9356783931474612, - 1.2715550949941588, - 0.7216720640432351, - -1.1290517712172292, - -0.5245202662797737, - 0.48937456122791806, - -1.2221278088919454, - 0.7129984301723881, - -0.24032539815813503, - -0.3748208075495975, - 0.7109599682034915, - 0.44426331148603976, - -0.3609661658190799, - 1.159329803364248, - -1.0810633275998973, - 0.6159356069442637, - 0.5931012579683838, - -0.3095464393139903, - 0.326133022242118, - -1.251113576385303, - 0.924027019206901, - -0.18490213644298903, - -0.5227230205190395, - 1.0490092258368893, - -0.7043436905427592, - -1.4084612963635597, - -1.5566291735239037, - 0.6060099513456396, - -1.280429352496283, - 1.7547941819843647, - -2.081929407883722, - 1.6964563682900382, - 0.2110174672026184, - -0.09671311187039239, - -0.5449190868089497, - 0.39913611435207086, - -0.037634702424848364, - 1.1033018820165215, - 0.11422764866203965, - 0.1503017614618776, - -0.36361221221385587, - -0.056945623721067457, - 0.3078017688920592, - -1.7101683926566256, - -1.348185422105713, - 0.743264094022715, - 0.17086543812794186, - -0.18398333635267913, - 0.01843393306539316, - 0.34758170536167105, - -0.5397596803093615, - -0.7783047254023127, - 0.19584525509768155, - -0.978372777615032, - 0.40825275571447184, - -1.7025836042378404, - 1.0291556373256436, - 0.472597482413043, - 0.25602973431387566, - 0.9826909839455139, - 1.6654744444625766, - 1.0143700650181304, - -1.8408742313316453, - -1.2795769667357015, - -0.6248185776956788, - 0.026091050210833786, - 0.517659020469123, - -0.7257438131534656, - 0.18676676447707832, - -0.7553829323533225, - -0.6115178029919482, - -1.4066610968482223, - -0.9232332461109043, - -1.3516846056163336, - -0.9758732529773327, - 1.0536417966078395, - -0.949398888831943, - 2.632382064837391, - 0.4933179008808892, - 0.1848361236948739, - -0.8583577801812136, - 0.7003098794089914, - -0.5756378262377739, - 0.12200981464536144, - 2.5600845382687947, - -0.09605989972464987, - 1.1492733262856758, - -0.7031764251258874, - -0.0349884904969617, - 1.77080063563551, - -0.6269670577877674, - 1.8124485579969287, - 0.7077519354554754, - -0.5624667758942676, - 0.632407739055521, - 0.9725544496267299, - 0.6218099622171964, - -1.5702247198904564, - -0.7271371758248686, - -0.24751863555150475, - -0.07443342910004629, - 0.620672097550678, - 0.17770100093325383, - -1.3353443587101013, - 0.3801978510059632, - 0.6105857452838231, - 0.5597904479310398, - 1.0807807255546218, - 0.8339221545489041, - 0.4591800792284367, - -0.07016571145864703, - -1.6609609335159914, - 0.42961821913258585, - 0.20768768716311115, - 0.27157883719537346, - -1.2767485758203094, - -1.0810565404082624, - 1.0531528533329035, - -0.03955515385665504, - 0.6815006973726244, - 0.028318376130461172, - 0.02975613949574519, - 0.9382838059759977, - -0.5160447282173739, - 0.09612077694098337, - -0.4622752887050425, - -0.4344962274323156, - -0.30917212346863937, - 0.22213377163371284, - -0.4787486216634773, - 1.2557561255735208, - -0.8946073022195039, - -0.18687164416135904, - -0.4397310582741749, - 1.4469778843537329, - 0.19655477651157463, - 1.0318445394686349, - -1.485560373036972, - 0.26705026586925884, - 0.889630795623437, - 0.08228398927542419, - 1.0654803750653512, - -0.5172884501003722, - 1.40934744018558, - 2.2988981236192503, - -0.36283856043965906, - -0.4455025214007718, - 1.453384477117701, - 1.5795721457307124, - -0.5228600271532683, - -0.42018681709585726, - -0.2817846088605072, - -1.344450511034277, - -0.9186519464841982, - -1.0041407667520679, - -0.7677975651041284, - -0.03468488738678118, - 0.23421473253652075, - 1.5505004928140769, - -0.998354040738791, - 0.9843223984765838, - -0.21398884422550896, - -0.04946370965243295, - 0.6748194921666038, - -1.1227220215622986, - 0.3824097461840506, - 0.1664522082130561, - 0.4924512640081491, - 0.2891686439078181, - 2.4553001399108942, - -0.637739984251316, - -0.5309969550018176, - -0.6231405264247644, - -0.5554771191602547, - -0.6373871273065177, - 1.1890165311075518, - 1.4205042479898549, - -0.5707462937494763, - -0.8323555731042287, - 0.4714155563864041, - -0.5522230442809712, - 0.6329318177555108, - 0.2029230208512997, - -1.515744114997232, - 1.5475052013300616, - 1.7958776730955217, - -0.6127886904843862, - -0.38770155993598415, - 0.28586539072490497, - 0.334456789987025, - 0.6585442726728304, - 2.0102045387663496, - -0.1769472274940494, - -0.7982972445384537, - -1.3793192280145272, - -0.7309300399419191, - -0.033126972873797095, - 1.7945578635177877, - -0.5176112990361714, - 0.2237879516388985, - -0.016422896072752075, - 1.188393273448084, - 2.5269324258736217, - -0.5308687729203206, - -0.48943944251822213, - 1.044160877069072, - 0.6818914896263114, - 1.8467073257360336, - 0.5839281853259639, - -0.35929209078705954, - 0.5906548306923093, - 1.1087035805829077, - 0.820482181197364, - 0.5072740311072977, - 1.066674689589154, - 1.1692955904456728, - 1.3821589910375272, - 0.6487098875896427, - -0.16711808031685435, - 0.14671368643332283, - 1.2065089665083568, - -0.8169356709872361, - 0.3686733088729012, - -0.3933388123273607, - 0.028744822934817487, - 1.2784518626072987, - 0.19109906801990334, - 0.04643654815614881, - -1.3598561409799192, - 0.7462535660272207, - 0.6454841811410754, - 2.16325472330546, - -0.30777823495300083, - 0.21915032766393897, - 0.24938368371075526, - 1.5774532797634744, - -0.0952955323869521, - 0.27902152577033923, - 0.6078965097165392, - 0.1866091231563581, - -0.44643361455052827, - 0.19408999289830758, - 1.073631749859772, - -1.0265152994110602, - 0.132969674146876, - -0.7001208149391732, - 1.1950466289248425, - -1.5231869047837747, - -0.5589218472715883, - 0.37721187506452086, - 1.5655240292343404, - -0.0657502610729878, - -0.5551995266931984, - 1.8811570694405901, - -1.448013900416244, - -2.198805956620082, - 0.4400144500533324, - -0.5020542243526112, - -1.0212328171307132, - 0.7083564472993533, - 0.24380071377119883, - -0.5640786307367284, - -1.2803043986708944, - 0.8724573282801447, - 0.650201177958661, - -0.09917586377938291, - 1.8466369960476658, - -1.0700847663261526, - -1.5255251709247388, - -0.6919080698812444, - -0.045586016355497805, - 0.24333944932269183, - -0.24123605785632987, - 0.3520553965142968, - -1.251539424190444, - 1.4437646040732595, - -0.0821511783925688, - 1.1172958315881276, - 0.34272534637770413, - 0.4567532191537839, - 0.5697672802322039, - 0.44770856001731496, - 0.6427227598675439, - 1.3291525301324314, - 0.19652116970147013, - 0.7090037575885123, - -0.08973569428722672, - 1.4401172154494728, - -0.6763923020592697, - 1.8009404329108156, - -0.04015795064434341, - -1.4307751021180481, - 0.12810441491078928, - -0.6810516574748808, - 0.8406435489887241, - -0.6526239793023909, - -0.4461834332147797, - -1.889540730945531, - -0.4523063192490767, - -2.4238793266289567, - -1.5839028234857233, - 0.7604146561442974, - 0.7858001586508322, - 0.42545756178496474, - -0.966976143129213, - -0.047711356141979855, - -0.0036025390905684044, - -1.1583646891925428, - 1.5033983017671506, - 0.8773622905756714, - -0.22096417382966393, - 0.02688583899453078, - 0.20838280794755248, - -2.0417348684242906, - -0.24717738252059693, - -0.6819842479977986, - -1.0016200098949155, - -0.2811002928859549, - 1.7976865268495226, - 0.6408428612670098, - -0.5711789897827968, - 0.5725827813561586 - ], - "y": [ - 0.9563001398210165, - 0.8990295127326071, - 0.56367411633477, - -0.1541158912437135, - 0.691333973683165, - 0.4819273067449821, - -0.4852352955880883, - 0.9749591557098078, - 0.8889720573404594, - 0.9532482011546275, - 0.6776691182011314, - 0.9810359625397511, - 0.8584971659926595, - -0.15449500947798156, - -0.6471295089836953, - 0.7396922088156321, - 0.6397632439089089, - 0.7164857012727133, - 0.5890639039256742, - 0.07109919113984908, - -0.684061944089911, - 0.6413125885406901, - 1.1478349536558663, - 0.13623245887782875, - 0.7360901900107049, - 0.5623752445244916, - 0.5259620757814623, - 0.5921896601207891, - 1.2150276902595891, - 0.7556906707867606, - 0.9848865665657236, - -0.6099344588446286, - 1.174993192764655, - 0.0012786076179027717, - 0.6812702078645214, - -0.1910008257926794, - 0.9098452623143523, - -1.2369836069220241, - -0.331579835427364, - 0.26528407184059866, - 0.6682202776103048, - 0.892587956123454, - 0.42820782991812045, - 0.9160336256140162, - 0.026925933125577117, - 0.9416640968556031, - 1.0834477434550638, - 0.48273180961138795, - 0.6404718820434585, - -0.3867001707595241, - 1.0296654448326752, - 0.7441764747294912, - 0.24445726734033713, - 0.8888567068236917, - 0.3151691071704559, - 0.7473293569218145, - 0.8215458735933368, - 1.3342590679253483, - 0.9416682899545545, - 0.6756684272067461, - 1.1406613649720798, - 1.1542022872675948, - 1.2274315028835887, - -0.06830394804560314, - 0.22072363938532744, - -0.11105903351945545, - 0.6833410114350873, - 0.8632020978394257, - 0.8331844817491016, - 0.7823249404317661, - 1.0719789289749464, - -0.1549166532232853, - 0.8482976251433243, - -0.18799296041309432, - -2.1791516649248512, - 0.7193886937443557, - 1.108609822572437, - 1.0765022537972961, - 1.078706987938265, - -0.7022760236000811, - 1.2244175497108465, - 1.2572003893815236, - 0.2204784005969529, - 1.2254273540502418, - 0.38537199069623185, - 1.4465622579573445, - 0.07140239901804157, - 0.8794697849553703, - 0.6812085926956701, - 1.4460663459770196, - 0.8985192954145158, - 0.6543780700304187, - 0.9488953254888184, - 0.7304112459724537, - 0.7012264845546696, - -0.31950758952996927, - 1.3172985577938938, - 1.2857100440995097, - 1.1444745868801451, - 0.8236620032944608, - -0.2187434524843057, - 0.9268643715111278, - 1.01031396105705, - 0.626620201194203, - 0.6628589047687665, - 1.1433587829514091, - -1.1761540162971702, - 0.817258040250942, - 0.5389500243914918, - 0.8521898541149859, - -1.1666037080875928, - 1.0720087092556745, - 1.0557294599219649, - -1.6834066632626457, - 1.0549982661150032, - 1.019858793171351, - 1.030902087864726, - 0.40990942623226, - -0.13458493011177497, - 1.1042159495837627, - 0.22690374601883906, - 0.7489152707441404, - -0.10645352746960057, - -0.26024152149054913, - 0.9034247129184405, - -1.4151159275807998, - 0.32318350819548947, - 1.1034511953090602, - 0.7969447666301743, - 1.5867768978761951, - 0.09013444602853404, - 1.0868292941323938, - 0.7881374513285793, - 1.3514897114163125, - 0.33934337445757023, - -0.46195752723456285, - 1.0489722291240455, - 1.0482038115098697, - 0.40321159999213485, - 0.059988355479534405, - 1.0949835521338436, - 0.2178046902003904, - -0.5626780923410211, - 0.536549182376703, - 0.8737776928672263, - 0.7961869548749969, - 0.20100908724958622, - 0.3135177776980691, - 0.5895794961543963, - 1.0547387791614082, - 0.4285260438764187, - 1.0359284978141503, - 0.5675262770054896, - 1.0272655153619539, - 0.7995459594111727, - 0.44006471332582997, - -0.4361311962504941, - 0.8486924017798583, - 0.6753251506351932, - 1.26591038741436, - 0.6302206955415824, - -0.005293741715174605, - 0.6809660061722591, - 0.6096031986381849, - 0.206724354648266, - 0.9622231496366394, - 0.5772050056221016, - -0.407987770863417, - 0.7092966750953806, - 1.211101815241379, - 0.8630998490212882, - 0.4721688128096462, - 0.9637223613119166, - 0.8173473836291141, - 1.0863998918285072, - 0.1971836141539085, - 1.245471083884693, - -0.2343543146878968, - 0.9051925388912228, - -3.021893249632707, - 0.901896893662359, - 0.4769390146479713, - 0.530735308656066, - 0.7819116938876144, - 0.9060307527321028, - 1.2368669741121874, - 0.9378192827642735, - 1.3769183183565348, - 0.2584099356461058, - -0.6105556795633085, - 0.5150477565188947, - 1.0346701123139135, - 0.9251789173627163, - 0.721391561817607, - 1.3284462374564492, - 1.2931736260544318, - 0.2695498604930684, - 0.8514617419650712, - 0.6619124847370745, - 0.265233459354129, - 0.5844236946730171, - 0.7043349211688326, - 0.16003071404853308, - 0.24708028854800634, - 0.19018047263865126, - 0.6170701977626436, - 0.8844963590105799, - 1.1755456319294797, - 0.9889579337397474, - -6.0904525807500525, - 0.7540928721485662, - 0.617447464483649, - 0.1700859986338914, - 0.8952893796861678, - 1.0372402998463215, - 0.593436806337198, - 1.1085565472006909, - 0.8872226925267676, - 0.8889733337883141, - 0.5703883258506366, - -1.3546144819739214, - -0.9249784540868724, - 0.637125112358905, - -0.5092836924829768, - 1.3150064337625005, - -0.1035769700115079, - 0.7556593987319742, - 0.21913990780874038, - 0.9280149145373415, - 1.0440227788781469, - 0.9514614497408901, - 1.121545094533149, - 0.6906587580959118, - 1.2295908874608887, - -1.2648213369336845, - 0.49967360043236475, - -0.5228269636097231, - 1.194232661894962, - 0.35274364067297803, - 0.6556748715093209, - 0.8104259677888503, - 1.012133476746067, - 0.652338576688055, - -0.010980905338740854, - 0.45211336060591156, - 0.6259781005678526, - 0.5084922520985804, - 0.12855414995033726, - -0.2962317602001088, - 0.9802321918504715, - 0.35794610921816217, - 0.8635711176682073, - -0.9621083529291781, - 1.013077041454308, - -0.4845218707260268, - 0.8333006013753561, - -0.28244935194600185, - 0.7899506112593409, - 0.7701784174792903, - 0.7151342546316997, - 0.49055796509207816, - 1.28804053020927, - -4.142091654725679, - 0.8334726564064814, - 0.9036096400121076, - 0.45060955694377824, - -0.31526453433330515, - -0.6256143937849257, - 1.2715804323024988, - 1.0804252625074673, - -0.2264193324048076, - -0.1875888449183627, - 0.22866149444744277, - 1.2199718767665653, - 0.24371096941794157, - 1.1082161608113221, - 0.8373829580548566, - 0.7592456014091322, - 0.9221335684678982, - 0.4250366179476224, - 1.318212868859485, - 0.4057383124819651, - -0.08023039337461557, - 0.026801373445120902, - -1.151001280529317, - -0.6541081775037068, - 0.9224264481676674, - 0.8939483538945547, - 1.1381708222240827, - 0.7695447099345767, - 1.2368105592544372, - 0.49273303831981985, - 0.49829243993227923, - 0.9422689811247142, - 0.28000462741749343, - 0.5169703847090368, - 0.0515610320264841, - 0.8865444210578453, - 0.5464127341579301, - 0.6825084053374243, - 0.6030059424422021, - 0.7370045247594348, - 0.5081622899457074, - 0.8371022805002184, - 1.2161622638591272, - 1.1811096730838315, - 0.022423432463402726, - 0.7757396152686633, - 0.4387346343984566, - 0.3999946636711924, - 1.2928255651041636, - 0.6793245602557278, - 0.8028916422140373, - 0.5818466131588043, - 0.5341628939672147, - 0.6325151846279411, - 0.8737105476087352, - 0.9362292812304323, - 1.1129698397950074, - 1.3732006174489788, - 1.0210212650680033, - 1.320807734620895, - 0.4789856592469004, - -1.164990103194113, - 0.3230203187153826, - 0.03814108520431381, - 0.5102447951870595, - 0.7302623216406139, - 0.80755236430032, - 0.5655553937883895, - 1.332771770319427, - 0.894029524442537, - 1.1053503280568655, - 0.02009334442060995, - 0.4673162025076554, - 0.6775375562540251, - 1.2177506943734908, - 1.4154531571486249, - 0.5053482840674874, - 0.9967705380504039, - 0.8564501664225174, - 1.0359770054282649, - 0.8695500247437793, - 1.0874836611182257, - 0.8224547762176948, - 1.0117504789609697, - -0.24736193665003992, - 0.41943124068182697, - 0.9886293219606013, - 0.9721251799158015, - 0.8876563408230493, - -0.0389953664814513, - 1.1521075033968797, - 0.9664916143353004, - 1.4629612379490884, - 0.24454684390609577, - 0.5404048980154839, - 1.2727271801154694, - 1.2858986094105873, - 0.5407669624224263, - 0.5673877663248503, - -0.16637641335700692, - 1.0255843467381363, - 1.3720927657891322, - 0.4417114804551756, - 0.7672837737744502, - 0.7863351277791972, - 1.1487572086456468, - 0.6768135082539671, - 0.8372143639308265, - 1.2966914216938221, - 0.7881832822239443, - -0.29694689420451437, - 0.5862867286437865, - -1.3596353791589806, - 0.3943346214586967, - 0.6924704245000584, - 1.2531174073535283, - -1.594946825392661, - 0.5778797934384334, - 0.9329518548193081, - 0.9761810993294707, - -1.3653159328992048, - 0.9240083177683936, - 1.0732412099749309, - 1.4748698703444418, - 1.1376649245574466, - -1.378135333043043, - 0.6342281276272601, - 0.9572430640153451, - 0.4668067525658358, - 0.9177546058661825, - 0.5866617155746603, - -0.6281323420014395, - 0.3873806317844921, - 0.9368548754872297, - -0.9216880857065597, - -0.21119245958653998, - 0.8230862397889753, - 0.2364125048158307, - -0.3454677407367086, - 0.9213614801647525, - 0.9683868246169265, - 0.8112173887449838, - 1.0288245351805507, - 0.37373595920803826, - 0.21869355784201439, - 1.3408759054608452, - 1.3718770456888314, - 1.1762514908920725, - 0.7111689701343504, - 0.19411539313762916, - -0.050744990864847406, - -0.23813071716937895, - 0.7900352173658547, - 1.2440508626197344, - -0.04857026957020749, - 0.7472630098405544, - 0.654699281659755, - 0.530870304637542, - -0.8201511092481458, - -0.7209344948697729, - 1.283377231118632, - 0.8370957504897982, - 1.132391181727895, - -0.08671751054972798, - 0.7395185558463453, - 0.9455713161022101, - 0.48818751964288687, - -0.6372120196999087, - 0.13979363122767374, - -1.1185539367072774, - 1.0852033744437637, - 0.5564710223117348, - 0.12359734045819493, - 1.0593418322623762, - -0.37787079302075677, - -0.258646300398774, - -0.23649652182063807, - 0.86684935048427, - 0.8366005128838205, - 1.40800826871644, - -1.3253969447652194, - 1.0941362116828444, - -0.19205031304815345, - 0.548062759876486, - 1.3965824808212073, - 0.48963870657611963, - 0.8295596386290907, - 0.5961301439715276, - 0.9393757029308389, - 0.7898704824444307, - 0.4256900187748247, - 0.8135177494530543, - 0.20559883101196785, - 0.672370845633794, - 0.9118919749694807, - 0.8466392205266973, - 0.4267052934828295, - 0.6936152494383636, - -1.0830798173340992, - 1.2505849650951975, - 1.0646068374131412, - 1.4760969535101167, - 1.4469983739825047, - 1.0470789889837078, - 0.9823357035202829, - 0.7238639541714589, - 0.8545150517733529, - 0.8268619796714596, - 0.8261794591032117, - -1.8764098014838073, - -0.08870469116446, - -0.12541382261021283, - -0.37868101855866954, - 0.6310009501941112, - 0.8352006472854678, - 0.6479117136620882, - -2.8463370572701963, - 0.6137469010204342, - 0.9623837086721494, - 0.8854298361803321, - -0.26406183703020514, - 0.5380254622156477, - 0.2559491950952233, - 0.026439586508798296, - 0.9612358176452211, - 0.6479482930214875, - -0.2848070072719229, - 0.8510313006096251, - 1.1982495819765466, - 0.1780193646249062, - 1.136313468644075, - 0.42700094534693656, - 0.12491769536214181, - 1.2091169106590662, - 0.47894962883810877, - 0.9391567462517969, - 0.31365961795664, - -0.3164387050437199, - 0.6171957216661017, - -0.4661398035054569, - -0.11222907922036818, - 0.6392374924982285, - 0.17194018050468807, - 0.5152351252925174, - 0.8728488043574649, - 0.6715901493324248, - 1.031671222085576, - 0.4772201489135748, - 0.4241319372240784, - 1.1125960181496009, - 0.777399855636452, - 0.8382188688381014, - 0.4692746472018079, - 0.7653565646752813, - 0.8109288729115778, - 0.504839904747777, - 1.1744694571616545, - 0.9390571050207512, - -0.4299282683240033, - 1.0529630008374093, - 0.8258842689093742, - 0.8978568460609795, - 0.9387362538899433, - -0.8135903573135899, - -0.2441432898308884, - 1.2692760131104261, - 0.9279180145196091, - 0.607307397179099, - 0.9828634769589168, - 0.22482647082565865, - 1.1398274215823938, - 0.23375044948063373, - 0.5057853177207998, - 0.9540909489200962, - 0.6076059603576525, - 0.8629558563460054, - 0.5786905803618954, - 0.08974084332841947, - 0.7802049737921424, - 0.4341867241481321, - 0.7556836444426276, - -0.008044279543092614, - -2.3037847022647053, - 1.195032529087988, - 1.099918374013043, - 0.8538858907179705, - 0.9727472292873347, - 0.5304309412551205, - 1.1322124758005339, - 1.3203087924902661, - 0.7502140910618458, - 0.9929526348239843, - 0.6875320078952991, - 0.5626193114447151, - 0.8599842193022083, - 1.249153383537319, - 0.8671860581509376, - 1.3288689604148205, - 0.6791798639154116, - -1.0738318740293842, - 0.8020716161683996, - 0.7912716316719308, - 0.25799169169309355, - 1.1766555773527436, - -1.3106471512578914, - 0.5552158346464102, - -0.6673545211553265, - 0.3541686285290453, - 0.9652999025407496, - -0.4971794775816354, - 0.9370670037384968, - 0.8562321046175996, - 0.4059285443250036, - -0.8427808354386479, - 0.5102967163939187, - 0.7353056432675316, - 0.292079990232716, - 0.5501580994707236, - 0.6715080217865079, - 0.4792488588544135, - 0.43425235064552004, - -1.8911054714604973, - 1.157908060266615, - 0.7028970478353866, - 0.8587940457794563, - 0.40472917183945967, - 0.14316535949595766, - 0.48285328410021777, - 0.4243826124192296, - 1.0811794326857145, - 0.9496812323539475, - 1.6879141016127015, - 0.3069171080514046, - 0.9934556566145867, - 0.6174139844314697, - 1.1543557153925206, - 0.8192671042351165, - 1.159719520072322, - 1.085621221626294, - 0.537940011777561, - 0.903434870310913, - 0.06563847547904222, - 1.4723802702625428, - -0.07453965990164879, - 0.5335567443948328, - -0.016325363130876624, - -0.49397607734260335, - -0.20351641485852578, - 0.4231707849572679, - 0.8379110646709194, - 1.3807462731588114, - -0.0067226763791286, - -1.240276516369139, - 1.2151828177540924, - 0.9448244935527788, - 0.58166011113553, - 1.1994532504848616, - 1.402760145308721, - 0.8863304237872498, - 0.8015861288080641, - -0.739872820202809, - 0.1083945600408569, - -0.5939049568927177, - 1.1385312487605914, - 0.644944664274214, - 1.0893365271962434, - 0.5528784994837184, - 0.5390856276849869, - -0.09903461129268276, - -0.6463589752796155, - 1.578662663862807, - 0.7256313819243179, - 0.4376603856464, - -0.4053671149331022, - 0.5991026174011083, - 0.8397883459725874, - -0.2516714230138626, - 0.6954985703850953, - 1.3200551905289895, - 0.28268629740071005, - 1.2713291775993278, - 0.1578123740850481, - 1.3034348490843741, - 0.8697705112418097, - -2.307361727132489, - 1.2129367802017672, - 1.0322020081258416, - 0.266018526571854, - -0.42021911611331486, - 0.14293136146524787, - 0.9429742248335828, - 0.6850363645149453, - -2.866127731118459, - 0.43090872684107095, - 1.2451438469696305, - 0.8837117876222138, - 1.2738053595085224, - 1.0235628967395822, - 0.811733672325134, - 0.7572411855250314, - 0.9600865147597073, - 0.5867663753090118, - 0.5953567602072267, - 0.9085008015175964, - 0.7473934225623466, - -0.16837306931488838, - -2.7248382794865353, - 0.5578351873574814, - 0.34676917608291435, - -1.4813906715428489, - 1.288352294227808, - 1.0166165637381632, - -0.022131073735636164, - 0.9595674068564564, - 0.6170450272792545, - -0.6881862730608398, - 0.21206701837873299, - 0.2885856168491827, - 1.1690168843213433, - 0.08052721800365603, - 0.9917970065262716, - 0.8777863925298479, - 0.33408263271508754, - 1.3547397711665061, - 1.1156789421300028, - 1.2864928829988855, - 0.421817853732426, - 1.068139903399608, - 0.6160101361704124, - 0.4964544148950425, - 0.34467654171706297, - 1.3201101193952862, - 0.6487972595326825, - 1.0371344217970218, - 0.7358112138595834, - 0.1521128684213151, - 0.42865906336296256, - 0.5576500458961231, - 0.6076847748958079, - 0.7462985429415265, - 0.4819776612026949, - 0.14532557093238907, - -0.15281460650314593, - 0.7100047001564285, - 0.05331140016093805, - -0.5404926497902216, - -0.6614168591314491, - -0.18287768715806862, - 0.7571862642882445, - 0.8337085963264155, - 0.9441066809864522, - 0.9120510704332376, - 0.8521458607586005, - 0.12926164573043408, - 0.8188088059158538, - 0.9585527804039233, - 0.6085574624384116, - 1.661729219495263, - 0.6328923218837383, - -0.4370935969245155, - -0.261566434547124, - 0.9021861091862688, - 1.3686150398222336, - 1.2431866202211133, - 0.77430344372668, - 1.3109221875405095, - 0.6997392716509319, - 0.6373519820644944, - 0.7377398980310823, - 0.46594599307077655, - 0.992962404460414, - -0.36701844339792267, - 0.5918243045676179, - 0.525726735548286, - 1.1441841860299906, - 0.2054829995662244, - -0.25108916775827517, - 0.6538370002972034, - -0.8299551767062303, - 0.0176800134138429, - 0.5105187511896961, - 1.087353779086893, - 0.973100168568239, - 0.8148446921024002, - 0.6658281956226718, - 0.5820444859780889, - 0.5744255936506004, - -0.2097368871690417, - 0.7043344751696458, - -0.05734822918936766, - 1.0092103248051427, - 0.9957614714192338, - 0.4467885736638151, - -2.488029667346201, - 1.1305975322386166, - 0.9993273262088715, - 1.098856791970099, - 0.35878205767483706, - 0.9207187132563248, - 1.0361012576168327, - -2.64890706673106, - 1.0366390354146915, - 0.26174856989107553, - 1.4318883098241673, - 1.0925241167292188, - -0.8107368375176389, - 0.8554925690146152, - -1.1533783022752133, - 0.7848813930706093, - 1.2122925762206656, - 1.0455050790980622, - 0.5630296777124313, - 0.7654374775108019, - -0.21364895790060778, - 0.38513629646339576, - 0.886149397017606, - 1.3677694318409113, - 0.5847921878467996, - 0.9981205872690344, - 0.10264219380135753, - 1.0727371254830136, - 1.0755774142320398, - 0.5848574429554798, - -0.016043399481949105, - 0.2646280033031587, - 0.9662921589229478, - 0.9856005208902767, - -0.36681704186019903, - 1.0368581771069802, - 1.168916525092093, - 1.2669603604271096, - -0.27794837650267584, - -0.12794466692618478, - 0.6314049798017622, - 0.8989475351026339, - 1.1266369287160227, - 0.79335728899897, - 0.9385885862887411, - 0.414197010300434, - 1.233870375586191, - 1.1034517625983824, - 0.9065955077450587, - 0.8920345878502065, - 1.1979568799990377, - 1.4075679013968454, - 0.956298439284363, - 0.09665185259713738, - 0.7158484060376145, - 1.2095386323810629, - 1.2514170840452294, - 0.4073631439473189, - 1.2713933866833282, - 0.6008036326669455, - 0.3662872818144338, - 0.9305388295812436, - 0.8419555858452394, - 1.0693167912808779, - 0.3242827886004076, - 0.6715786677364215, - 0.45860077109701436, - -1.5794859076525891, - 0.9233643755635512, - 0.587627210427875, - -0.061211756798662975, - -0.4151959279844366, - 0.9842909749163393, - 1.74706776806905, - 0.794033914872184, - 0.052367859260479266, - 0.15657834636022194, - 1.3576628185327895, - 0.3865974151597562, - 0.5398653260634977, - 0.9717979751171804, - -0.1372995970776998, - 0.6915197995485314, - 1.1912527009076874, - 0.8072213312235883, - 0.9097420386813893, - 0.6200236501950437, - 0.7439209669665603, - 1.5764185342144459, - 0.41956825566119216, - 1.1887216351250016, - 0.7035185263910311, - -1.8310371496656286, - 1.1446244675079509, - 0.5121210709177894, - 1.0740009615949226, - 0.8368710277624276, - 0.9862380446119001, - 0.5990825628893295, - -0.1617395170166951, - 0.08612230665029008, - 0.7188694618861549, - 0.9851651336883385, - 0.43929964771835683, - 0.6498502293364057, - 0.8441525153614444, - -0.22701196303903393, - -0.40769225855074254, - -1.0464430630061532, - 0.8969616384496331, - 0.4922050862963001, - 0.6520807098485237, - 1.526141276237392, - 0.8341414512867047, - -1.1189061809947596, - 0.886926141174585, - 0.8232054990971224, - 0.29892163327538057, - 0.47043759215637837, - 1.1596932471125942, - -0.3206936675078027, - 0.8231155387401969, - 0.9339047912553697, - 1.2844441468470862, - 0.9161887690720951, - -2.1609239924323207, - 1.2148203742403636, - 1.202623995287409, - 0.6317919172442861, - 0.5931016040575645, - -0.7644003504062162, - 0.6879636575912578, - 0.8784532797120006, - 0.27870759574025983, - 0.8195757378966464, - 0.6369072101602864, - 0.7966317247281332, - 0.9106786291024548, - 0.3588920460560159, - -0.10703443045344851, - 1.0251253274956365, - 0.563178323813494, - 1.0502000005174228, - 0.4851932255318019, - 0.8437075208713256, - 0.9296195660142904, - 0.7806934981645739, - 1.0228141299814673, - 0.4543894516873306, - 1.2086731537247348, - 1.125433159483579, - 0.4115911673051178, - 0.9358174594959632, - 0.8346611280498597, - -1.1292457072601332, - 1.31904041334615, - 0.946014889798491, - 1.1789178454720606, - 0.29181746457932434, - 1.095657553634366, - 0.644349958709548, - 0.7028211385559339, - 0.8797565659385773, - 0.8369947510758173, - 1.5770508795675369, - 0.16369726588541234, - 0.4341413159604013, - 0.9416833585722975, - 0.5016687116308844, - 0.20942275474124195, - -0.42973861793440915, - 0.7741633752412149, - 1.104223707437928, - -0.17680183333032562, - 0.7796129797561964, - 0.8186598123049889, - -0.5119795264145526, - 0.143810423365486, - -1.6264708665255008, - 0.9187491394644596, - 0.7374246303882759, - 0.23377225719160855, - 0.4800954389039349, - 0.7262559731980465, - 1.0206567113603429, - 0.0806977848972732, - 0.8181865091532075, - 0.5396633947391862, - 1.024604119065316, - -0.47532423660184886, - 0.1665033654675423, - 0.17962980791096195, - 0.9782621538627065, - 0.5999574851995548, - 1.0175762880576382, - 0.24085360723333915, - 0.6207390690877848, - 0.28170635247004405, - 0.28728114262511806, - 0.9511392715027052, - 0.25201167033693916, - 0.7295716703997619, - 1.014646347061636, - 1.3676808949175694, - 0.9653710005187328, - 0.8767821170649297, - 0.6837074755847263, - 0.7919288977266905, - 0.784464398129858, - 0.6241638798071336, - -0.15314472866279072, - 0.2915500175207466, - -0.8127063536757947, - 0.9284607121028179, - 0.16418405211179987, - 0.9488511469153731, - 0.34347752359791794, - 0.7279368546115244, - 0.06796376927212044, - 1.2782321537858627, - -0.8523887041987139, - 0.934429392176205, - -1.6644615965248577, - -0.1543790453058138, - 0.5949757123174262, - 0.6904392304281637, - 0.8688509856416419, - 0.41991542013521355, - 1.0175956694482027, - 1.988724446526823, - -0.5292047980097969, - -0.06741209717746699, - 0.6589914191220594, - 0.8268788033659442, - 0.8404461856794662, - 0.9299041119046647, - -0.7870190030175035, - 1.2594055937119752, - 0.8529603369909182, - 0.9058376555374715, - 0.9445197775578706, - -0.9111467447174117, - 0.24200677983935082, - 0.5940176535754198, - 0.7044291340611268 + 0.9973454465835858, + 0.28297849805199204, + 1.651436537097151, + 1.265936258705534, + 1.4913896261242878, + 2.2059300827254558, + 2.1867860889737867, + 1.004053897878877, + 0.386186399174856, + 0.7373685758962422, + 1.490732028150799, + 1.1758290447821034, + 0.9071051958003012, + 0.9274624317585825, + 0.0028459158968110196, + 0.688222711102285, + 0.283627323807291, + 0.5738058624050577, + 0.3385890509998015, + 2.392365265937726, + 0.4129121603087788, + 0.9787360059373466, + 2.2381433384979528, + 1.7437122251229307, + 0.02968323030333022, + 1.0693159694243486, + 0.8907063912931708, + 1.7548861819811095, + 1.4956441370334692, + 1.0693926697057368, + 0.7948626677932181, + 0.31427199450686705, + 1.4172990464768525, + 0.8072365345785665, + 0.045490080631097156, + 0.19952407355863258, + 0.46843911944564426, + 1.1622040490995293, + 1.0397270908927005, + 1.2552373747242185, + 1.6609524881479396, + 0.8073081862107286, + 2.0871133595881854, + 0.16444123022982496, + 1.1502055425466322, + 0.18103512959700388, + 1.1778619388085783, + 1.0311144589217422, + 0.37940061207813613, + 0.6420546892718314, + 0.7122646354705182, + 2.5983039272693147, + 0.03414212890984157, + 0.17954948463867915, + 0.4261466396903099, + 1.242869549603737, + 0.5012489895674, + 1.0127390539563705, + 0.2787408560959998, + 1.959411342388286, + 0.12074736309713868, + 0.7482156171872304, + 1.6086909680220534, + 0.8123413299768204, + 0.49974014486517293, + 0.4743472978718003, + 0.3216865758662266, + 0.7609493931283295, + 0.32346884785689517, + 1.805970109932475, + 1.5188656236315399, + 0.13021495415796958, + 1.2672986450543529, + 0.3327649772541171, + 0.5565487049100443, + 0.4562708952022307, + 1.5445444514561384, + 0.14330773250787254, + 0.25381647654962736, + 0.2837253557710373, + 0.16794229540166816, + 0.5538561660032112, + 1.3772574828673068, + 0.02031599823462459, + 0.13402679274666512, + 0.7044740740436035, + 0.6656534379123312, + 1.5236637764785275, + 0.07922701409061239, + 0.07290724327605223, + 0.403085961219367, + 1.4719293689732715, + 0.3073842186274145, + 0.13997810611456363, + 0.09346082946215117, + 1.4595892682284208, + 1.3953529297569547, + 0.3915842423501111, + 0.1771923291989879, + 0.1995821110885137, + 0.19701893254347608, + 0.7033101178067301, + 2.200702099217128, + 0.6882969302220884, + 0.2786835167270544, + 0.5795416155732297, + 0.5796897791443336, + 1.612193042812388, + 0.8960583134099478, + 0.3696195863041741, + 0.003645154973777971, + 0.956601931056012, + 0.12405589644664888, + 0.7538687788376367, + 0.06878833252597749, + 0.32257673799720377, + 1.0324797157533776, + 0.59407025523907, + 0.2908743874249234, + 0.2796626701579614, + 0.2499699394555311, + 0.43587577054744, + 0.630488030489918, + 0.36344556213502865, + 1.8629275851052287, + 0.8350587468112366, + 0.7426862211616183, + 0.5907042178943853, + 0.11529872221079104, + 0.029642925120495236, + 2.958625445893176, + 0.9901328947153126, + 0.6359427056445893, + 0.2846030298135564, + 1.2189858621324263, + 0.4201795969883613, + 1.4083691460769014, + 1.2646252869680072, + 1.2533359468559955, + 0.27803371202287097, + 0.6683168667415277, + 0.9558323551671646, + 0.6957873191396077, + 1.8758005467136352, + 0.415694539892434, + 0.16054442147971804, + 0.8197606096101892, + 0.7650548459970179, + 0.6111235500559109, + 1.3166055958635523, + 0.7506099168684812, + 0.3426379813692278, + 1.1759107718346071, + 0.6800715328674297, + 0.6402186804198472, + 1.374990631494199, + 0.68620068605291, + 0.5232184412826316, + 0.4491356133597169, + 1.8687264568398085, + 0.14242558501294, + 0.5412312971976727, + 1.3400987035364347, + 0.937850297361706, + 0.0877304638665764, + 0.17975156577131524, + 1.7190346810845034, + 2.0564673412252215, + 0.6734912780983248, + 0.6759633930029775, + 0.05929113389470675, + 1.7440410870108336, + 0.4195676758953945, + 0.2069275192832601, + 1.1311519053059893, + 0.1350776724846987, + 0.6907772729156428, + 0.36005072808083677, + 0.3769201144376306, + 0.7898280347342986, + 0.10940315644126239, + 0.7448193123951158, + 0.2514641840435942, + 0.8889929175948555, + 1.1610683576464835, + 0.24537940725969198, + 0.24402693814049461, + 1.5340902893038646, + 0.9768129824696102, + 0.03594050250391853, + 0.8501028835244372, + 0.38287023902686523, + 0.3254636281821306, + 0.4818742570187152, + 1.014303883533461, + 0.7285354008351337, + 1.6980589922472507, + 0.1243586326189154, + 1.5169736782466114, + 0.15429005055187112, + 1.520166442206532, + 0.18904344241411, + 0.9043062201346425, + 1.1999876485826133, + 0.16145636340763547, + 1.7851688135164747, + 0.3101225206265262, + 1.1704542973614533, + 0.11045310929056538, + 1.11340167803588, + 0.14299002816716133, + 0.26198919678334104, + 1.6295341945107669, + 0.06580628246283132, + 0.12938552377648257, + 0.10406073501027997, + 0.16595697447417668, + 1.6019076510169283, + 0.05868743844990988, + 1.0644226884109076, + 1.448903611625761, + 0.9830333962592408, + 0.9315296133879658, + 0.38506610277727105, + 0.9458769837130342, + 0.6130677280288434, + 0.6736489338137502, + 1.49245538715155, + 0.9864740187009399, + 0.9938067071364096, + 0.020418758785576606, + 0.7509445971896803, + 1.2587213025893325, + 0.6001752363295938, + 1.9845823984585664, + 1.062214468922782, + 1.030379331152028, + 2.2506760310308676, + 0.567880067453997, + 0.5129828495987242, + 0.31158150338288004, + 0.7520336682672812, + 0.06964074948535595, + 0.9295844699427109, + 1.2608212692267615, + 1.3374538256412125, + 0.4161238144776257, + 1.930850867048302, + 0.5685042066678756, + 0.14993382849816042, + 0.5496425958003854, + 0.3037879307861897, + 0.24376576053087365, + 0.41281876168769105, + 0.6008825086920193, + 0.6868044067946779, + 0.585768138667071, + 0.4657700660382165, + 0.4405823002889993, + 0.08259541953627011, + 0.960880075213844, + 1.7843567953013033, + 1.5880678855942618, + 0.11264417223992805, + 0.6319482840093328, + 1.2205689137145275, + 1.502580905809435, + 0.8881945413408756, + 1.1580688744398528, + 1.089532657214453, + 1.0681603873290815, + 0.34325798097756616, + 0.22626164706870253, + 0.006029327171035006, + 1.7160403221121312, + 1.3081935639887152, + 0.5056858513379232, + 0.24797988474753857, + 0.8171882801174081, + 0.09415288552221196, + 1.3306307763606484, + 0.21639656827201, + 1.255464321946314, + 0.974386203344494, + 1.9298324339990223, + 0.19148232543991203, + 0.9741324352577567, + 0.1602937210962731, + 0.6745848312366249, + 0.15974869505592115, + 0.5886855547108121, + 1.3331907028432335, + 2.559850230632471, + 0.03490256406200444, + 0.2326496582105465, + 1.6065968052348043, + 0.16872226693647913, + 0.2753418630799228, + 0.9126879358198553, + 1.1406562429474632, + 0.2652339583982989, + 1.1746002379573404, + 0.300846402206581, + 1.9590953525071417, + 0.4138630815357569, + 0.047341880907133, + 0.27994357125692276, + 1.5959211716104487, + 0.5853180300922858, + 0.5335108183398289, + 1.0458573280333687, + 0.03240725440387064, + 0.9461858967453881, + 0.5815898028611892, + 1.9867630371691618, + 0.6005710943105073, + 1.042335368440993, + 0.09592041239523996, + 0.8009296466651268, + 1.5254442364402778, + 1.8044363234026013, + 1.0882204764493446, + 0.8877660685734637, + 0.21458607470423502, + 0.7824404041044422, + 0.37152468179976716, + 0.04700244536864444, + 0.7471284116768413, + 0.5777939542243806, + 1.6421827720450202, + 1.648817861485808, + 1.7154685921699906, + 1.220078514238279, + 0.03816631200200775, + 0.62832010285517, + 1.6291212053324975, + 0.8749623291033075, + 0.35227158207147286, + 0.8909167504786911, + 0.5569525393273475, + 0.11682811556907778, + 0.2872142809033677, + 0.36120305977167483, + 1.0831988026881991, + 0.20066000871919681, + 1.0744651405355077, + 1.0726297462337824, + 0.8059821116221542, + 0.9528308618116563, + 0.03844707664769293, + 1.613381535261024, + 0.38092143377222654, + 0.7728453956729086, + 1.6222084878501515, + 0.6914225452567888, + 1.9431601707247084, + 0.3007954393670502, + 0.3012904839825757, + 0.15491185973371044, + 0.8740798091601995, + 0.40935502492564035, + 0.7718466355607634, + 1.8483799508834453, + 0.39207804655166945, + 0.7473929615463166, + 0.27273473716279445, + 0.42533585692878567, + 3.571579218026311, + 1.1062666575947218, + 1.308518452326017, + 0.8814169197592583, + 0.8874423184465896, + 1.2568208318483642, + 1.1316445091958878, + 1.5238520171998033, + 1.1015259861531725, + 0.9769215645749826, + 1.23187178862397, + 2.332061996209657, + 0.34512424061207164, + 0.05280567540772656, + 0.048108563136617044, + 0.12618068088061885, + 1.1912324570650992, + 1.0576951014282159, + 0.12651650597023537, + 0.7740000020757852, + 1.3202683189321007, + 0.9114606095823158, + 0.1682343424234322, + 1.2664292986658463, + 0.4951808887859862, + 1.8615641238318181, + 0.9359884508763173, + 0.38021914486617187, + 1.6296113186459584, + 1.052401068873978, + 0.7631605141545158, + 0.11375597287983731, + 0.10356803732332855, + 1.0891653824583838, + 1.0086509563084367, + 1.0797963503009356, + 0.856554856393462, + 1.4485765853244514, + 0.892200085137838, + 0.02337234328724855, + 0.19021001785918956, + 0.8419395730245767, + 0.23101726734337139, + 0.13497010999029418, + 2.766603071101871, + 0.05022192476406931, + 0.15160759364714313, + 0.1574627523984585, + 0.3045151754260446, + 1.5755009358424055, + 0.33056327654884465, + 1.1314436080657682, + 0.3308167712757532, + 1.518629560365495, + 1.4286638344392986, + 0.09142830851405706, + 0.9736443797991589, + 0.9979573856771604, + 1.8584744098061854, + 0.0585377546950242, + 1.4187292755100624, + 0.1617103094175957, + 0.7049794803731054, + 0.6820347768334102, + 0.29655656728653923, + 0.5233426304345435, + 0.23876067172970541, + 0.36673219814247404, + 1.0239055049925403, + 0.5513022180697554, + 0.41958914519806184, + 1.8156520639191072, + 0.29988506654577324, + 0.8953708466071769, + 1.0163912685410768, + 0.9335850943946729, + 0.4267017991752182, + 0.9598304499937307, + 0.02305220825947024, + 1.3382205319305884, + 0.08399285613164036, + 0.2472840302376188, + 0.4870092937668535, + 1.011939656367902, + 0.48547522607809224, + 0.6705123906471673, + 1.0128681948538745, + 0.9597063713475107, + 0.8291703990248491, + 1.17805700395996, + 0.10146689245241805, + 0.4727748574495346, + 0.6501549009670022, + 0.23850121218790918, + 0.2963586560529044, + 0.5653965640388058, + 0.04325054289835325, + 0.3516793717496016, + 0.5280104739792081, + 1.4210427683683313, + 1.720920319810075, + 0.422919279615949, + 0.08149089870341171, + 1.4830391747653016, + 0.7209893917039087, + 0.024211360895293473, + 0.8708978067893992, + 0.6097905060392789, + 0.14597922501351515, + 0.9992528030472034, + 0.6347631315935225, + 1.0699185989273519, + 0.47026374759618605 + ], + "xaxis": "x", + "y": [ + 11.843350419781432, + 1.2783252490927615, + 6.979833726420056, + 7.544402597594958, + 5.211726424756445, + 11.328982357962571, + 11.786593836619975, + 0.16211990034789026, + 7.708923433155757, + 9.670920116603936, + 4.312042083691266, + 11.155202833289, + 7.869078401198758, + 6.580482615711415, + 10.117961659154636, + 4.909237389853221, + 2.8108555288512362, + 5.434176086964864, + 6.319080567333178, + -0.9638222926985455, + 0.4620324882827421, + 3.7131967059703324, + 5.110824954131259, + 2.8005911372774643, + 3.1310481501035126, + 9.93791342600583, + 4.457689615957183, + 0.4432400995775329, + 9.927872067290398, + 0.07208560374580297, + 2.5457925060419573, + 7.797146506689931, + 1.22792298802629, + 7.937169737814031, + 7.45123260243356, + 1.67489222931549, + 1.1194675513412986, + 4.778004268899888, + 13.960796689428596, + 3.9755754444439644, + 1.1168230721711978, + 1.6273332962850218, + 0.29959226656146337, + 3.9489293808725505, + 4.304268219048882, + 2.93857136052065, + 2.070008969883575, + 1.935729034257215, + 1.1130900195866502, + 5.562424993316148, + 3.357834223641888, + 0.8868334937122362, + 3.6879090086979636, + 2.5402033428994164, + 4.94596569406837, + 1.7398766207780665, + 4.475351508101312, + 5.845441027556099, + 7.800587373099699, + 6.895856234148088, + 17.436047170354623, + 4.728938127043567, + 0.02818371533719566, + 2.02889084380834, + 1.4867532992412253, + 5.614750879553195, + 0.24750791079183848, + 2.242195321326359, + 3.5641873677802454, + 0.08635970063248233, + -0.49595920676842753, + 4.224838793083816, + 8.276336104798645, + 7.3543128236551265, + 1.3575429654668407, + 5.894064532176416, + 10.69693712954721, + 6.628017607729937, + 5.701570895400477, + 12.117808717278038, + 2.192838353861751, + 7.333522256074859, + 7.648063424175017, + 0.9733774045813455, + 2.2714817964855136, + 5.757697717326627, + 8.014202430187716, + 5.163800041937415, + 4.4954439259419, + 2.887888785309926, + 6.717183595775014, + 18.316699555595683, + 11.161878026704958, + 12.165757172655074, + 3.7437892066511553, + 3.723750371320296, + 6.7866102207641, + 8.168613630667, + 3.689134939806847, + 1.698569032845216, + 2.6665984837978227, + 2.573624931580353, + 16.598615431214476, + 5.007556747499594, + 11.187031300414363, + 8.161387568011705, + 8.764579046403323, + 0.8865958106624842, + 1.812819075414276, + 2.581360901997569, + 1.5802939998504824, + 7.5619340133344215, + 4.528194940530937, + 2.194619396934434, + 7.10830444130787, + 4.972998780197425, + 1.166402094029837, + 9.598528857203476, + 4.49744501382559, + 2.2995028590645066, + 1.336059929831097, + 6.084497978758436, + 3.8230731007861047, + 5.409713352553978, + 5.95560239613203, + 1.3312819841005257, + 6.012741601227922, + 5.948854893453342, + 2.8972694260864404, + 12.447063157061278, + 0.6953937663245326, + 5.536269664714117, + 3.3078506435239867, + 3.484777947869182, + 0.16092361235460018, + 1.2141811230912072, + 8.632150041290275, + 4.02211139366371, + 2.960397051847446, + 2.790085629935892, + 11.273058926217955, + 10.17782339775072, + 5.239936649946219, + 3.324474877204702, + 1.2227176042234278, + 1.988203273324926, + 3.5019337278079297, + 0.6603933752843196, + 10.629726767181422, + 4.812211693006651, + 0.5784764439999921, + 0.6007404422326096, + 1.8940193506279113, + 7.204259530927821, + 8.870176530466125, + 0.8769486269746164, + 1.9555367184659886, + 2.1404894792714435, + 5.031373727287077, + 6.9232826586902405, + 15.562624854206215, + 1.9175646434596454, + 8.735785395224633, + 3.5618739903751666, + 1.2320630512350337, + 6.149113502281869, + 8.498949844338663, + 2.2317787704976384, + 1.4959412275389172, + 3.1128298104962324, + 2.552733744082181, + 9.42661386549952, + 9.672417541662396, + 4.629299132003585, + 10.618634624925662, + 0.3326992639538201, + 4.7634016160762505, + 5.382772414106616, + 12.866243060213767, + 3.827369294847656, + 6.474996846980519, + 2.3345899532998966, + 3.2320484183065084, + 5.217356566443731, + 4.087605115985904, + 9.571900903919577, + 9.251252443373431, + 6.234434433955471, + 4.44571953956116, + 7.380398460376124, + 14.975989414269632, + 3.5226517711513834, + 0.7133578524500928, + 1.0631005370411946, + 4.455252575356227, + 10.709230969203528, + 2.0617445054761063, + 6.847157800684762, + 4.547931081643437, + 3.0190378443651653, + 2.378813292002275, + 6.715571937236744, + 1.2667830776508904, + 2.0545858704092694, + 7.254628921572497, + 12.396563861749348, + 2.5252538404288445, + 1.1110148614580833, + 3.8030025762710027, + 6.5324647321893465, + 1.5804306583618306, + 4.1278554745771485, + 3.356501450037906, + 5.411141149344755, + 1.8133123812328493, + 5.205383636920235, + 17.402923639571142, + 6.299006768374748, + 2.8266852604926425, + 1.701721596436611, + 0.7793895008092827, + 7.676735522006533, + 2.8640378562855937, + 1.5179274743074853, + 1.3719090600804011, + 11.659450205335105, + 2.5516742866728537, + 9.562512747812905, + 1.2304314915634764, + 1.3275174299690409, + 6.830886508339639, + 2.418990891831367, + 0.8681667204096835, + 1.8241127325498807, + 12.173007312697768, + 7.683621511713454, + 1.856625276512946, + 4.514575072190351, + 5.704981324652673, + 3.911596479903154, + 2.7608224695655585, + 2.941987501486197, + 3.710542900696343, + 6.89350621335775, + 0.4513503267910566, + -0.0377621450842639, + 2.514279409359936, + 6.235866954427032, + 5.93731090266978, + 1.6215072551969834, + 4.342546581180219, + 4.687956359982346, + 9.566191755934481, + 2.511769490102037, + 11.476593624468203, + 5.906266661119681, + 2.5781332982880296, + 4.513624036290565, + 1.9335179041865023, + 1.9383272387620603, + 9.00404015909179, + 0.8582842090316298, + 1.0116206084522787, + 6.832539055475626, + 6.428285472888243, + 7.119755474894247, + 0.44363067690640834, + 3.9813596950068004, + 2.5612020196508385, + 11.154901379854477, + 2.5037008342665894, + 9.347976602196868, + 3.060779614739405, + 0.7043671909360213, + 0.257537818302658, + 0.4182448082440802, + 9.350786087312052, + 5.517300255390764, + 8.937650401014938, + 1.2013366456535275, + 1.61189872633661, + 13.39768421888707, + 5.612941860969962, + 15.006767019449123, + 1.2827514574633596, + 3.9284647303353535, + 11.049065768662667, + 1.8194820979528816, + 1.9545029923300337, + 5.050991410261654, + 11.497561712086, + 9.33336562500696, + 6.912370980610654, + 7.331027182671989, + 5.204982648892568, + 3.2655281523823243, + 7.384507582777988, + 2.574063501348479, + 15.121779845481369, + 1.8457213799213785, + 6.910609547185828, + 3.3290015701070175, + 2.838177815558716, + 2.2610386791376014, + 2.4588277180073685, + 2.824716477004076, + 6.63533782213659, + 0.9895605675149649, + 5.454614044429312, + 4.591545890476965, + 0.6611757568753014, + 1.8231248215312372, + 16.63403899630275, + 6.946551478154662, + 1.2778346711298896, + 2.5604965619377147, + 1.5213610713436996, + 1.9649196400810802, + 2.814567328115494, + 2.889283720873363, + 10.006779523720134, + 0.32739330180374016, + 3.1493690993894785, + 5.069081579935573, + 5.857899988028624, + 1.525765013216732, + 5.583325658165998, + 2.0267989050836204, + 9.863071244711504, + 0.4527177563300576, + 10.788766228592362, + 5.590282589126367, + 5.074525016171147, + 10.818820975980936, + 1.3188950198235536, + 0.24835918643977317, + 10.449104407179004, + 5.63914144931611, + 6.076109555820212, + 5.338562992050922, + 6.705121533262165, + 8.649064204248692, + 3.830140822068672, + 9.294822463055219, + 6.780930300224588, + 3.769945624675496, + 5.054766257285909, + 9.155504516710621, + 10.817380341167533, + 6.691351297534186, + 2.574058148863419, + 7.050907681288254, + 0.7291717379887703, + 2.8873456580655272, + 11.068028890656013, + 0.85794443628045, + 2.6005270080115706, + 7.706519073843568, + 10.46880220748257, + 0.7795672245621978, + 17.57956003552206, + 10.034749856358273, + 2.8831310870098266, + 3.3682466015480244, + 1.5628956552847404, + 1.958203499869726, + 2.191356450408346, + -0.23080542752663563, + 1.490931743241378, + 1.6684468230576317, + 5.041216909044978, + 3.3551688393366534, + 2.8560030028702466, + 8.552540359815453, + 1.7561671435196453, + 2.0259611768566765, + 1.180579601461493, + 9.987162708714788, + 0.9171422550848839, + 2.012659771079495, + 4.484445223548995, + 2.711052876204999, + 1.4022260988803064, + 10.663183104702455, + 10.008071421675831, + 7.871397809369704, + 1.17131117523048, + 0.4436938333555654, + 1.8132031714692323, + 5.8483243807849625, + 2.186289454928466, + 4.893461203830686, + -0.24769166282179444, + 7.9032736883968635, + 6.537582709340816, + -0.006370794854138051, + 8.917828868392052, + 2.9776413214019004, + 4.26609824023815, + 2.6311237082614096, + 8.127349705869468, + 2.456923738125373, + 0.31799402669754173, + 6.284692824113377, + 7.86664131552712, + 0.7841815393133189, + 3.080254760561722, + 11.508540420152672, + 0.6633942582961944, + 5.981218888180274, + 10.045986573585775, + 2.9365537723944373, + 4.1008265984014765, + 2.2488912351551855, + 14.929199654287672, + 8.918420739808235, + 4.286275552115036, + 0.5772746845002957, + 11.29172164226737, + 4.077814919363084, + 2.5390271104002475, + 9.121481369118374, + 0.6184645452906185, + 3.1617087149950898, + 3.0159282681207293, + 6.774738979086667, + 7.796692279642645, + 0.03105419404073978, + 2.606232777173551, + 1.221686727509577, + 3.2564164418534154, + 6.388312209070728, + 11.634961902115412, + 2.6431453202175446, + 1.8873825986173614, + 3.188477306605487, + 3.6456758170498076, + 0.9420526153194824, + 1.4210871359389552, + 8.616785996682292, + 10.823372120003102, + 4.9399976532697165, + 10.256806948667807, + 9.45504435979177, + 4.14091777772119, + 2.147232483571662, + 6.683863565730471, + 6.965189698624978, + 11.702084340797052, + 4.197578409764386, + 2.7505805245123174, + 7.54404174491, + 7.921395662028064, + 6.77782727672825, + 21.263704409747263, + 3.497671194799593, + 11.065182642778163, + 5.338594594562493, + 5.039485692802774, + 2.52260166508823, + 23.444250757486415, + 5.247073954963512, + 2.043326450124893, + 5.226026657852556, + 1.8497709952095485, + 1.4495014999103024, + 1.1300640746652961, + -0.03059142475328539, + 3.04430943869141, + 16.37065363992529, + 0.14347647195360638, + 13.74034583863006, + 5.06900273413753, + 4.103162863672742, + 1.0778526840006188, + 19.004259788914794, + 0.39109854765435004, + 3.9082477849156887, + 0.8735955626714269, + 2.5789719692129744 + ], + "yaxis": "y" + } + ], + "layout": { + "legend": { + "title": { + "text": "Treatment" + }, + "tracegroupgap": 0 + }, + "template": { + "data": { + "bar": [ + { + "error_x": { + "color": "#2a3f5f" + }, + "error_y": { + "color": "#2a3f5f" + }, + "marker": { + "line": { + "color": "#E5ECF6", + "width": 0.5 + }, + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "bar" + } + ], + "barpolar": [ + { + "marker": { + "line": { + "color": "#E5ECF6", + "width": 0.5 + }, + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "barpolar" + } + ], + "carpet": [ + { + "aaxis": { + "endlinecolor": "#2a3f5f", + "gridcolor": "white", + "linecolor": "white", + "minorgridcolor": "white", + "startlinecolor": "#2a3f5f" + }, + "baxis": { + "endlinecolor": "#2a3f5f", + "gridcolor": "white", + "linecolor": "white", + "minorgridcolor": "white", + "startlinecolor": "#2a3f5f" + }, + "type": "carpet" + } + ], + "choropleth": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "choropleth" + } + ], + "contour": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "contour" + } + ], + "contourcarpet": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "contourcarpet" + } + ], + "heatmap": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "heatmap" + } + ], + "heatmapgl": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "heatmapgl" + } + ], + "histogram": [ + { + "marker": { + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "histogram" + } + ], + "histogram2d": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "histogram2d" + } + ], + "histogram2dcontour": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "histogram2dcontour" + } + ], + "mesh3d": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "mesh3d" + } + ], + "parcoords": [ + { + "line": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "parcoords" + } + ], + "pie": [ + { + "automargin": true, + "type": "pie" + } + ], + "scatter": [ + { + "fillpattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + }, + "type": "scatter" + } + ], + "scatter3d": [ + { + "line": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatter3d" + } + ], + "scattercarpet": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattercarpet" + } + ], + "scattergeo": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattergeo" + } + ], + "scattergl": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattergl" + } + ], + "scattermapbox": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattermapbox" + } + ], + "scatterpolar": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterpolar" + } + ], + "scatterpolargl": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterpolargl" + } + ], + "scatterternary": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterternary" + } + ], + "surface": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "surface" + } + ], + "table": [ + { + "cells": { + "fill": { + "color": "#EBF0F8" + }, + "line": { + "color": "white" + } + }, + "header": { + "fill": { + "color": "#C8D4E3" + }, + "line": { + "color": "white" + } + }, + "type": "table" + } + ] + }, + "layout": { + "annotationdefaults": { + "arrowcolor": "#2a3f5f", + "arrowhead": 0, + "arrowwidth": 1 + }, + "autotypenumbers": "strict", + "coloraxis": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "colorscale": { + "diverging": [ + [ + 0, + "#8e0152" + ], + [ + 0.1, + "#c51b7d" + ], + [ + 0.2, + "#de77ae" + ], + [ + 0.3, + "#f1b6da" + ], + [ + 0.4, + "#fde0ef" + ], + [ + 0.5, + "#f7f7f7" + ], + [ + 0.6, + "#e6f5d0" + ], + [ + 0.7, + "#b8e186" + ], + [ + 0.8, + "#7fbc41" + ], + [ + 0.9, + "#4d9221" + ], + [ + 1, + "#276419" + ] + ], + "sequential": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "sequentialminus": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ] + }, + "colorway": [ + "#636efa", + "#EF553B", + "#00cc96", + "#ab63fa", + "#FFA15A", + "#19d3f3", + "#FF6692", + "#B6E880", + "#FF97FF", + "#FECB52" + ], + "font": { + "color": "#2a3f5f" + }, + "geo": { + "bgcolor": "white", + "lakecolor": "white", + "landcolor": "#E5ECF6", + "showlakes": true, + "showland": true, + "subunitcolor": "white" + }, + "hoverlabel": { + "align": "left" + }, + "hovermode": "closest", + "mapbox": { + "style": "light" + }, + "paper_bgcolor": "white", + "plot_bgcolor": "#E5ECF6", + "polar": { + "angularaxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + }, + "bgcolor": "#E5ECF6", + "radialaxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + } + }, + "scene": { + "xaxis": { + "backgroundcolor": "#E5ECF6", + "gridcolor": "white", + "gridwidth": 2, + "linecolor": "white", + "showbackground": true, + "ticks": "", + "zerolinecolor": "white" + }, + "yaxis": { + "backgroundcolor": "#E5ECF6", + "gridcolor": "white", + "gridwidth": 2, + "linecolor": "white", + "showbackground": true, + "ticks": "", + "zerolinecolor": "white" + }, + "zaxis": { + "backgroundcolor": "#E5ECF6", + "gridcolor": "white", + "gridwidth": 2, + "linecolor": "white", + "showbackground": true, + "ticks": "", + "zerolinecolor": "white" + } + }, + "shapedefaults": { + "line": { + "color": "#2a3f5f" + } + }, + "ternary": { + "aaxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + }, + "baxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + }, + "bgcolor": "#E5ECF6", + "caxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + } + }, + "title": { + "x": 0.05 + }, + "xaxis": { + "automargin": true, + "gridcolor": "white", + "linecolor": "white", + "ticks": "", + "title": { + "standoff": 15 + }, + "zerolinecolor": "white", + "zerolinewidth": 2 + }, + "yaxis": { + "automargin": true, + "gridcolor": "white", + "linecolor": "white", + "ticks": "", + "title": { + "standoff": 15 + }, + "zerolinecolor": "white", + "zerolinewidth": 2 + } + } + }, + "title": { + "text": "Scatter Plot of Outcome vs. Score by Treatment Status" + }, + "xaxis": { + "anchor": "y", + "domain": [ + 0, + 1 + ], + "title": { + "text": "Score" + } + }, + "yaxis": { + "anchor": "x", + "domain": [ + 0, + 1 + ], + "title": { + "text": "Outcome" + } + } + } + } + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "fig = px.scatter(\n", + " x=df['score'],\n", + " y=df['y'],\n", + " color=df['d'].astype(bool),\n", + " labels={\n", + " \"x\": \"Score\", \n", + " \"y\": \"Outcome\",\n", + " \"color\": \"Treatment\"\n", + " },\n", + " title=\"Scatter Plot of Outcome vs. Score by Treatment Status\"\n", + ")\n", + "\n", + "fig.update_layout(\n", + " xaxis_title=\"Score\",\n", + " yaxis_title=\"Outcome\"\n", + ")\n", + "fig.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Oracle Values and Comparisons\n", + "\n", + "The generated oracle values for the potential outcomes can be used in a kernel regression to get an oracle estimator at the cutoff. " + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The oracle LATE is estimated as 0.977950766577146\n" + ] + }, + { + "data": { + "application/vnd.plotly.v1+json": { + "config": { + "plotlyServerURL": "https://plot.ly" + }, + "data": [ + { + "marker": { + "color": "blue" + }, + "mode": "markers", + "name": "ITE", + "type": "scatter", + "x": [ + -1.0856306033005612, + 0.9973454465835858, + 0.28297849805199204, + -1.506294713918092, + -0.5786002519685364, + 1.651436537097151, + -2.426679243393074, + -0.42891262885617726, + 1.265936258705534, + -0.8667404022651017, + -0.6788861516220543, + -0.09470896893689112, + 1.4913896261242878, + -0.638901996684651, + -0.44398195964606546, + -0.43435127561851733, + 2.2059300827254558, + 2.1867860889737867, + 1.004053897878877, + 0.386186399174856, + 0.7373685758962422, + 1.490732028150799, + -0.9358338684023914, + 1.1758290447821034, + -1.2538806677490124, + -0.6377515024534103, + 0.9071051958003012, + -1.428680700225969, + -0.1400687201886661, + -0.8617548958596855, + -0.2556193705305969, + -2.7985891054607244, + -1.771533104509847, + -0.6998772345979173, + 0.9274624317585825, + -0.1736356827902158, + 0.0028459158968110196, + 0.688222711102285, + -0.8795363430090519, + 0.283627323807291, + -0.8053665180656158, + -1.7276694941206072, + -0.390899793755101, + 0.5738058624050577, + 0.3385890509998015, + -0.01183049447881976, + 2.392365265937726, + 0.4129121603087788, + 0.9787360059373466, + 2.2381433384979528, + -1.2940853231612488, + -1.0387882102049535, + 1.7437122251229307, + -0.7980627352410625, + 0.02968323030333022, + 1.0693159694243486, + 0.8907063912931708, + 1.7548861819811095, + 1.4956441370334692, + 1.0693926697057368, + -0.7727087142471915, + 0.7948626677932181, + 0.31427199450686705, + -1.326265459940456, + 1.4172990464768525, + 0.8072365345785665, + 0.045490080631097156, + -0.2330920609844135, + -1.198301144700787, + 0.19952407355863258, + 0.46843911944564426, + -0.8311549842432792, + 1.1622040490995293, + -1.0972030464830342, + -2.1231003500424417, + 1.0397270908927005, + -0.4033660381021075, + -0.12602958531301514, + -0.8375167228250533, + -1.6059627607174027, + 1.2552373747242185, + -0.6888689838469215, + 1.6609524881479396, + 0.8073081862107286, + -0.31475814671745994, + -1.0859024011268665, + -0.732461986720457, + -1.2125231310951696, + 2.0871133595881854, + 0.16444123022982496, + 1.1502055425466322, + -1.2673520490102275, + 0.18103512959700388, + 1.1778619388085783, + -0.3350107619330159, + 1.0311144589217422, + -1.0845679120057665, + -1.3634715446185843, + 0.37940061207813613, + -0.3791764345725522, + 0.6420546892718314, + -1.977887931520449, + 0.7122646354705182, + 2.5983039272693147, + -0.024625981431480627, + 0.03414212890984157, + 0.17954948463867915, + -1.8619757107917871, + 0.4261466396903099, + -1.6054097440159647, + -0.42767959812380435, + 1.242869549603737, + -0.7352169561000764, + 0.5012489895674, + 1.0127390539563705, + 0.2787408560959998, + -1.3709484700946077, + -0.3324752753514139, + 1.959411342388286, + -2.025045762997471, + -0.27578601386617546, + -0.5521080714881078, + 0.12074736309713868, + 0.7482156171872304, + 1.6086909680220534, + -0.2702323920091581, + 0.8123413299768204, + 0.49974014486517293, + 0.4743472978718003, + -0.5639239315264725, + -0.9973214687759007, + -1.100043112620697, + -0.7564372093991233, + 0.3216865758662266, + 0.7609493931283295, + 0.32346884785689517, + -0.5489550961957409, + 1.805970109932475, + 1.5188656236315399, + -0.35400011275017335, + -0.8234314059856659, + 0.13021495415796958, + 1.2672986450543529, + 0.3327649772541171, + 0.5565487049100443, + -0.21208012227562573, + 0.4562708952022307, + 1.5445444514561384, + -0.23966878147771076, + 0.14330773250787254, + 0.25381647654962736, + 0.2837253557710373, + -1.4118888760712274, + -1.8768686558738945, + -1.0196550709218393, + 0.16794229540166816, + 0.5538561660032112, + -0.5306745597736241, + 1.3772574828673068, + -0.1431759743261871, + 0.02031599823462459, + -0.19396387055266243, + 0.13402679274666512, + 0.7044740740436035, + 0.6656534379123312, + -0.8984229406095902, + 1.5236637764785275, + -1.0950264574269175, + 0.07922701409061239, + -0.2743965735223526, + -1.0489916773184873, + -0.07512058797383152, + -0.7408137732923984, + 0.07290724327605223, + 0.403085961219367, + 1.4719293689732715, + 0.3073842186274145, + -0.6112253403048249, + -0.39161981071960156, + 0.13997810611456363, + 0.09346082946215117, + 1.4595892682284208, + 1.3953529297569547, + -0.3589359262422613, + -0.5486421281861983, + -2.5570546040678583, + -0.5489204133222201, + -0.9780577060842837, + -0.3548244580948187, + 0.3915842423501111, + 0.1771923291989879, + -0.02996800704754226, + 0.1995821110885137, + -0.12611777323099171, + 0.19701893254347608, + -3.2310550079193123, + -0.26929348975075423, + -0.110850721053007, + -0.3412617162065858, + -0.21794626210294177, + 0.7033101178067301, + -0.5981053313408254, + 2.200702099217128, + 0.6882969302220884, + -0.006307250913872172, + -0.2066623031975665, + -0.08652228638213517, + -0.9153070699439787, + -0.09520253925800948, + 0.2786835167270544, + 0.5795416155732297, + 0.5796897791443336, + -0.27487754656593466, + -1.4160822525219303, + -0.6691026262334455, + 1.612193042812388, + 0.8960583134099478, + 0.3696195863041741, + -0.7612942447601239, + 0.003645154973777971, + -1.255668685662482, + -0.5519368756960736, + -0.24520334168519506, + -0.361639931865213, + 0.956601931056012, + -1.4187259140354525, + -0.8654322715151541, + -1.3746879710222193, + -1.237353212687854, + 0.12405589644664888, + -1.6004405330562717, + 0.7538687788376367, + -0.24681577694107554, + 0.06878833252597749, + 0.32257673799720377, + -0.4341665202515911, + 1.0324797157533776, + -0.19434272672763503, + 0.59407025523907, + -0.19911238275725224, + 0.2908743874249234, + 0.2796626701579614, + 0.2499699394555311, + -0.9743078496209195, + 0.43587577054744, + -0.3189569890995958, + 0.630488030489918, + -2.152493444412304, + -1.465116222054951, + 0.36344556213502865, + 1.8629275851052287, + 0.8350587468112366, + -0.6824509341999805, + -1.692052415377956, + 0.7426862211616183, + -0.0805832220429508, + 0.5907042178943853, + 0.11529872221079104, + 0.029642925120495236, + 2.958625445893176, + -0.0061299610455789804, + -0.15924520925326485, + -0.12144867540402206, + -0.5835367167076569, + 0.9901328947153126, + -0.3537543337813492, + 0.6359427056445893, + 0.2846030298135564, + 1.2189858621324263, + 0.4201795969883613, + -1.2133847809476472, + -1.3264877850539407, + 1.4083691460769014, + -0.6087108032644418, + -1.3206025797896521, + -0.6696185998697584, + 1.2646252869680072, + -1.4202129989485122, + -0.8664952037596095, + -0.6668075087965194, + -1.2511898734731952, + -1.1843273385116637, + -1.5181079752636586, + -0.46118741313672207, + -0.35490883174008503, + -0.6825381542033059, + -1.653697838967641, + 1.2533359468559955, + -1.3290788291721605, + 0.27803371202287097, + -1.0747665931188752, + 0.6683168667415277, + 0.9558323551671646, + -0.8776135866276552, + -1.923715729697126, + 0.6957873191396077, + 1.8758005467136352, + 0.415694539892434, + 0.16054442147971804, + 0.8197606096101892, + 0.7650548459970179, + -0.8289888337610103, + -0.6591513106966477, + 0.6111235500559109, + -0.14401334748029268, + 1.3166055958635523, + -0.7043421471287583, + 0.7506099168684812, + 0.3426379813692278, + -0.12643756370963435, + 1.1759107718346071, + 0.6800715328674297, + -1.004967153382104, + 0.6402186804198472, + 1.374990631494199, + -0.13044468898462372, + -0.24865585038497331, + -0.6696471476435246, + -0.013603885675351006, + 0.68620068605291, + -0.8176682995787476, + -1.34635756073724, + -0.37574991098192634, + -1.37972497865875, + 0.5232184412826316, + -0.4266897699938011, + -1.7554018445508066, + -0.3486075147385099, + -0.19261498579409048, + 0.4491356133597169, + -0.14536354315421035, + 1.8687264568398085, + -0.5187038515389994, + -0.06239854858230655, + -0.10291061426267058, + -0.28262838440702354, + 0.14242558501294, + 0.5412312971976727, + 1.3400987035364347, + -1.5692561273944634, + -0.5103428738061208, + -0.4477714253522432, + 0.937850297361706, + -0.3566630610733439, + -1.8951755930793188, + 0.0877304638665764, + -0.03368923154093914, + 0.17975156577131524, + -1.040162880979482, + 1.7190346810845034, + -0.32385978378534624, + -0.18829685849366687, + -0.9000085698091608, + -0.9310020038747236, + -1.2227369597487854, + -0.3933108517811569, + -0.957581838756634, + 2.0564673412252215, + -1.8884923803868152, + -1.1283305481817938, + -0.40141442845701475, + 0.6734912780983248, + -0.41375688138006245, + 0.6759633930029775, + -0.9868038892903219, + 0.05929113389470675, + 1.7440410870108336, + -0.9677443956994779, + 0.4195676758953945, + 0.2069275192832601, + -2.25153498598787, + -0.5889705464706788, + 1.1311519053059893, + 0.1350776724846987, + -1.2122689628960637, + 0.6907772729156428, + -0.4791229453143527, + 0.36005072808083677, + 0.3769201144376306, + -1.1186956011455729, + 0.7898280347342986, + -1.007508801235176, + -1.30578586634164, + -0.882828987722037, + -0.3460900338631944, + 0.10940315644126239, + -0.77258373237244, + 0.7448193123951158, + 0.2514641840435942, + -0.6947982151055028, + 0.8889929175948555, + 1.1610683576464835, + -0.09868469680951346, + -0.21498304496389087, + -1.7737713532563517, + -0.4075125923914689, + -0.2915067125653651, + 0.24537940725969198, + -0.16842643163047274, + 0.24402693814049461, + 1.5340902893038646, + -0.5299140986336766, + -0.49097228256584685, + -1.3091653143025817, + -0.008660466741585568, + 0.9768129824696102, + -1.7510703491923696, + -0.6658569670193876, + 0.03594050250391853, + 0.8501028835244372, + 0.38287023902686523, + 0.3254636281821306, + -0.2243127859709009, + 0.4818742570187152, + 1.014303883533461, + -1.7089917765492033, + 0.7285354008351337, + -0.09875980586671322, + -0.5299888642145143, + -2.443075785879315, + -1.3803513236542992, + 1.6980589922472507, + -0.6885485324635544, + -1.084768771253082, + -0.45642595614359244, + -0.7451472218585933, + 0.1243586326189154, + 1.5169736782466114, + -0.5866159508522137, + 0.15429005055187112, + -1.1472371412402353, + 1.520166442206532, + 0.18904344241411, + -1.0818191232906198, + 0.9043062201346425, + 1.1999876485826133, + 0.16145636340763547, + -1.639396967540776, + 1.7851688135164747, + 0.3101225206265262, + 1.1704542973614533, + -0.5508932051171423, + -0.39862392473390046, + 0.11045310929056538, + 1.11340167803588, + 0.14299002816716133, + -1.2568338125336815, + 0.26198919678334104, + 1.6295341945107669, + 0.06580628246283132, + 0.12938552377648257, + -1.2625437427838198, + -1.4029890877228395, + -0.6376921388132418, + -0.32651764661872357, + 0.10406073501027997, + 0.16595697447417668, + 1.6019076510169283, + 0.05868743844990988, + 1.0644226884109076, + -0.03932933464491537, + 1.448903611625761, + -1.8703974787472009, + -0.5987317666784293, + 0.9830333962592408, + -0.17159600525671556, + 0.9315296133879658, + 0.38506610277727105, + 0.9458769837130342, + 0.6130677280288434, + 0.6736489338137502, + 1.49245538715155, + 0.9864740187009399, + 0.9938067071364096, + 0.020418758785576606, + -0.5818502098168723, + -0.6595600882722964, + 0.7509445971896803, + -2.4384605640450236, + -1.3071781883042857, + -0.96325368587879, + -0.24762137869361706, + -2.631438036808334, + 1.2587213025893325, + 0.6001752363295938, + 1.9845823984585664, + 1.062214468922782, + 1.030379331152028, + 2.2506760310308676, + -0.5709580868574299, + -1.5034583992493944, + -0.23235739649273984, + -0.8249920538471605, + -0.25684536102444716, + -1.0502189902580903, + 0.567880067453997, + 0.5129828495987242, + -0.026922590568272415, + 0.31158150338288004, + -0.14205072712918293, + 0.7520336682672812, + 0.06964074948535595, + -0.2654456248957732, + 0.9295844699427109, + 1.2608212692267615, + 1.3374538256412125, + -0.9902746893194819, + -0.5344472080416974, + -1.701496094747692, + -0.23856501820360618, + 0.4161238144776257, + -0.13280117451197487, + 1.930850867048302, + -0.4058433751113569, + -1.088508555488929, + 0.5685042066678756, + 0.14993382849816042, + 0.5496425958003854, + 0.3037879307861897, + 0.24376576053087365, + -2.1222988830425917, + -0.726114027517346, + -0.5903249179528643, + -0.3479643379349264, + -0.4483916384609412, + 0.41281876168769105, + 0.6008825086920193, + -1.1316409267511525, + 0.6868044067946779, + 0.585768138667071, + 0.4657700660382165, + -1.4178944880296693, + 0.4405823002889993, + 0.08259541953627011, + 0.960880075213844, + 1.7843567953013033, + 1.5880678855942618, + 0.11264417223992805, + -0.0018746917257705736, + 0.6319482840093328, + -1.1150399534194404, + -1.4506831416048005, + -0.4725305920249986, + 1.2205689137145275, + -0.3311282982824718, + 1.502580905809435, + -2.7881128830850024, + -1.5872064267876305, + -0.12368873285569916, + 0.8881945413408756, + -0.06962309872009259, + -0.09565274449329955, + -0.12174149525709202, + -1.7628977344010746, + 1.1580688744398528, + -0.6827647198373713, + 1.089532657214453, + -0.07052341796234977, + 1.0681603873290815, + 0.34325798097756616, + -0.10667449055824228, + 0.22626164706870253, + -1.472977609111576, + 0.006029327171035006, + 1.7160403221121312, + 1.3081935639887152, + -0.9850235826980721, + 0.5056858513379232, + 0.24797988474753857, + 0.8171882801174081, + 0.09415288552221196, + -0.2335039931301, + 1.3306307763606484, + 0.21639656827201, + 1.255464321946314, + 0.974386203344494, + -0.3244872415189078, + -0.1670002743571596, + 1.9298324339990223, + 0.19148232543991203, + -0.7586284233600243, + -1.2000432779850234, + 0.9741324352577567, + 0.1602937210962731, + -0.7920919505289836, + 0.6745848312366249, + 0.15974869505592115, + -1.660475070762957, + 0.5886855547108121, + 1.3331907028432335, + 2.559850230632471, + 0.03490256406200444, + 0.2326496582105465, + 1.6065968052348043, + 0.16872226693647913, + 0.2753418630799228, + -0.630618391430576, + -1.3943751127131896, + 0.9126879358198553, + -1.273570236812244, + 1.1406562429474632, + -0.7881655588876596, + 0.2652339583982989, + -0.3722717313582859, + 1.1746002379573404, + 0.300846402206581, + 1.9590953525071417, + -1.0836776793595817, + 0.4138630815357569, + 0.047341880907133, + 0.27994357125692276, + 1.5959211716104487, + 0.5853180300922858, + -1.147525408677207, + 0.5335108183398289, + -0.4156193761557507, + -0.4733549700707904, + 1.0458573280333687, + -0.6023399830262286, + -0.3797303275801356, + 0.03240725440387064, + 0.9461858967453881, + 0.5815898028611892, + -0.23441491191787137, + -0.27217646568739323, + -1.1601296615335286, + -0.7598350885926631, + -0.6543810858204931, + -0.14929094174744556, + 1.9867630371691618, + -0.6754694337864318, + -0.2958290679056386, + -2.0523984049766058, + 0.6005710943105073, + -1.5774487938270054, + -0.9065895221643572, + 1.042335368440993, + -2.1049284295789623, + 0.09592041239523996, + 0.8009296466651268, + 1.5254442364402778, + -0.9200931084896136, + -0.624024850239865, + 1.8044363234026013, + -0.025060144581597745, + -0.7362639342696717, + -0.7174858373072273, + -0.9725563235674656, + -0.4396722054259928, + 1.0882204764493446, + 0.8877660685734637, + -1.1742703028253445, + 0.21458607470423502, + -0.40215973507251773, + 0.7824404041044422, + -0.15635972722929936, + 0.37152468179976716, + -0.15860520695849933, + -2.1870859306382227, + 0.04700244536864444, + -1.2717469495300868, + 0.7471284116768413, + -0.6798278923997879, + -0.6050126560729895, + -0.008902825012302579, + 0.5777939542243806, + -0.1697438177991287, + 1.6421827720450202, + 1.648817861485808, + 1.7154685921699906, + -0.23431872455876748, + -1.4819584561028547, + 1.220078514238279, + -0.416345285299776, + 0.03816631200200775, + 0.62832010285517, + -1.6044364005126521, + 1.6291212053324975, + 0.8749623291033075, + 0.35227158207147286, + 0.8909167504786911, + 0.5569525393273475, + 0.11682811556907778, + -0.3077743221445603, + -0.7391422743557824, + 0.2872142809033677, + 0.36120305977167483, + 1.0831988026881991, + 0.20066000871919681, + -0.8532015157805608, + -1.576232847396656, + -0.12756216200993092, + -0.027458376689570886, + -0.09809158279359968, + -1.5305128973556241, + 1.0744651405355077, + 1.0726297462337824, + -0.823285164614491, + 0.8059821116221542, + 0.9528308618116563, + 0.03844707664769293, + -0.9484986261940769, + 1.613381535261024, + 0.38092143377222654, + -0.2510374552120426, + 0.7728453956729086, + 1.6222084878501515, + -0.4971601466888655, + 0.6914225452567888, + 1.9431601707247084, + -1.1165648342354797, + -0.5492535887280628, + -0.5978550805922049, + -0.15832713704922016, + -0.20997373588419468, + 0.3007954393670502, + -0.8203755201347369, + -0.6226634888808933, + 0.3012904839825757, + 0.15491185973371044, + 0.8740798091601995, + 0.40935502492564035, + 0.7718466355607634, + -1.1429520395415, + -0.3834163111157828, + 1.8483799508834453, + 0.39207804655166945, + 0.7473929615463166, + 0.27273473716279445, + 0.42533585692878567, + -0.23090405152817356, + 3.571579218026311, + -0.39615592240969827, + -0.03832121774315163, + -2.424836325455249, + 1.1062666575947218, + -0.5522529496849271, + -0.06079410601164124, + -0.5280405508818312, + -0.13868294527484562, + -0.28424709842062984, + -0.04304177578064844, + -0.052801482653846724, + -0.15420531148588265, + -0.16787722654627948, + 1.308518452326017, + 0.8814169197592583, + 0.8874423184465896, + -0.7324488811117759, + 1.2568208318483642, + 1.1316445091958878, + -0.553404328801565, + 1.5238520171998033, + -0.6832259429997894, + -1.842031838405077, + 1.1015259861531725, + -0.11951878043007562, + 0.9769215645749826, + -0.7542021627241914, + -1.2617700117470425, + 1.23187178862397, + -1.4072685633957673, + -1.5610305114373637, + -1.9255868907643525, + -2.7944722983075785, + -1.03910438326439, + -2.1694079584120365, + -0.035605484609829575, + -2.2364173503246474, + -1.0942734191759897, + 2.332061996209657, + 0.34512424061207164, + 0.05280567540772656, + -1.6207519803198573, + -0.24559766594877117, + 0.048108563136617044, + -1.605180795787059, + 0.12618068088061885, + 1.1912324570650992, + -0.34825811883938024, + -0.19723636840428496, + -2.0420964154954233, + -1.3992338686095869, + 1.0576951014282159, + -0.6615506465805062, + -0.9297116344424167, + -0.6925831159713568, + -0.05746612700083015, + -1.1584159108657917, + 0.12651650597023537, + -1.3600076771230591, + 0.7740000020757852, + -1.0570557773396025, + 1.3202683189321007, + -0.010032652757383347, + -0.8456444283952297, + 0.9114606095823158, + -1.3744968791031125, + -0.5470656450174095, + -0.00007552661061545873, + -0.12116680328820885, + -2.008585468370626, + -0.9206465426133663, + 0.1682343424234322, + -1.3198915593599103, + 1.2664292986658463, + 0.4951808887859862, + -0.5142403907110707, + -0.2202924653000638, + 1.8615641238318181, + 0.9359884508763173, + 0.38021914486617187, + -1.4155187704342762, + 1.6296113186459584, + 1.052401068873978, + -0.14840538755987095, + -0.5496980692087847, + -0.18790393877677286, + -1.2019366808669738, + -0.47078555770734065, + 0.7631605141545158, + -1.807621277242572, + -0.3140743742422747, + 0.11375597287983731, + 0.10356803732332855, + -1.1789369540334256, + -1.1821528913270605, + 1.0891653824583838, + -1.224529092816291, + 1.0086509563084367, + -0.48236531510849157, + 1.0797963503009356, + -0.42107850540501407, + -1.166471320616305, + 0.856554856393462, + -0.01739122223019718, + 1.4485765853244514, + 0.892200085137838, + -0.22942662894379623, + -0.4496676016629738, + 0.02337234328724855, + 0.19021001785918956, + -0.8817485267318087, + 0.8419395730245767, + -0.39736349181039743, + -0.4230277451533124, + -0.5406883373725029, + 0.23101726734337139, + -0.6920526017208553, + 0.13497010999029418, + 2.766603071101871, + -0.053609460071342124, + -0.4340047382986483, + -1.667689228147901, + 0.05022192476406931, + -1.1092309432496061, + -0.37555811897157276, + 0.15160759364714313, + -1.7309894498221519, + 0.1574627523984585, + 0.3045151754260446, + -1.2971000196666516, + -0.39230919212908744, + -1.8306663621778045, + 1.5755009358424055, + 0.33056327654884465, + -0.17958850097910234, + -0.16343583065616263, + 1.1314436080657682, + -0.09416555192061088, + 0.3308167712757532, + 1.518629560365495, + -0.3461671480021981, + -1.0926353245067322, + -0.824500574753621, + 1.4286638344392986, + 0.09142830851405706, + -0.5023312882696742, + 0.9736443797991589, + 0.9979573856771604, + -0.4756477679064388, + -0.9719368370854505, + -1.57052860106121, + -1.793888920926237, + -0.2649864518459969, + -0.893195947036793, + 1.8584744098061854, + 0.0585377546950242, + -1.9421495432511602, + 1.4187292755100624, + 0.1617103094175957, + 0.7049794803731054, + 0.6820347768334102, + 0.29655656728653923, + 0.5233426304345435, + 0.23876067172970541, + -1.106385905965437, + 0.36673219814247404, + 1.0239055049925403, + -0.21005641264581787, + 0.5513022180697554, + 0.41958914519806184, + 1.8156520639191072, + -0.25275030069976034, + -0.2920041627702413, + -0.11693174014674963, + -0.10239107510368999, + -2.272617710954302, + -0.6426098414665713, + 0.29988506654577324, + -0.008256514667853591, + -0.7993391541971328, + -0.6647792521753807, + -0.355613128296959, + -0.8015717808024205, + -0.5130506104434005, + -0.5393901194785343, + 0.8953708466071769, + 1.0163912685410768, + 0.9335850943946729, + 0.4267017991752182, + -0.7083224844135482, + 0.9598304499937307, + -0.31425058651942994, + 0.02305220825947024, + 1.3382205319305884, + 0.08399285613164036, + 0.2472840302376188, + -1.4127794859965894, + 0.4870092937668535, + -0.9800066473024811, + 1.011939656367902, + -0.18459917717285057, + -2.2361688420171104, + -0.35802010256334205, + -0.22803453828591722, + 0.48547522607809224, + 0.6705123906471673, + -0.32776424472118837, + 1.0128681948538745, + -3.167055328652906, + -0.7139889980252292, + -1.1123642708371866, + -1.2541835105849213, + 0.9597063713475107, + 0.8291703990248491, + -0.7757700204102219, + 1.17805700395996, + 0.10146689245241805, + -0.4216841007751528, + -0.6929227963724369, + -0.7782717264630926, + 0.4727748574495346, + 0.6501549009670022, + 0.23850121218790918, + -2.050217677383097, + 0.2963586560529044, + 0.5653965640388058, + -0.6692056054644492, + 0.04325054289835325, + -1.8638842993007476, + -1.229969061679773, + -0.3242353482405271, + -0.3097511440161062, + 0.3516793717496016, + -1.18692538652941, + -0.34120606462067304, + -0.48977978041340897, + 0.5280104739792081, + 1.4210427683683313, + 1.720920319810075, + -1.5684400468313575, + -0.0480141917504573, + -1.1125293102447653, + -0.0647449514862398, + 0.422919279615949, + 0.08149089870341171, + -0.04901169879446085, + 1.4830391747653016, + 0.7209893917039087, + -0.27265446153778367, + 0.024211360895293473, + 0.8708978067893992, + 0.6097905060392789, + -0.4250761037008216, + -1.7752428411035694, + -1.1846574927726896, + 0.14597922501351515, + -1.7865268526790055, + -0.15239449801642782, + -0.45356917618752884, + 0.9992528030472034, + -1.3180438234754557, + -1.9317689789009886, + -0.41964074161010806, + 0.6347631315935225, + 1.0699185989273519, + -0.9093270165599429, + 0.47026374759618605, + -1.1114304477623544 + ], + "y": [ + 0.5363024686744706, + 0.8873527237590508, + 1.0886516724929238, + 0.27940091172337034, + 1.1442718339713833, + -0.47965486957278447, + -1.8748405247229316, + 0.927991537092308, + -0.0885406867287104, + 0.30235691785556895, + 0.9433300402661295, + 1.1353308428989115, + -0.25723783892701935, + 0.5984362504067553, + 0.7986688063852796, + 0.761040003775185, + -1.1364960620170166, + -1.2212865921428389, + 0.1520023387440691, + 1.458848056171571, + 0.6257282760690295, + -0.016213980503455794, + 0.5832710332195976, + 0.5291323848592775, + 0.28284124800893107, + 1.0668690195990695, + 0.6480026829396195, + 0.3534854413403812, + 0.8305632439467837, + 0.6609261633580257, + 0.8560994961652675, + -3.0075466236196426, + -0.5532222481132933, + 0.8517935637646357, + 0.8143664320321644, + 0.9731099751629264, + 0.9451907410371501, + 0.7137010668164434, + 0.7793165936465112, + 0.3243231761173728, + 0.8812612874817409, + -0.742343241199868, + 0.9298673636665948, + 0.5990431153780973, + 0.7926627883800696, + 1.201789974144738, + -1.6180856130160501, + 0.6960684884501911, + 0.5164017610010276, + -1.33233127341376, + 0.12173642437543708, + 0.7606116275076698, + -0.6481893016801497, + 0.9642914384937482, + 1.175413769865045, + 0.7838779989471885, + 0.9606152441342553, + -0.07339038074584409, + -0.5530428777120342, + 0.312798232582432, + 0.7186556384227909, + 1.1940826657436034, + 0.7925736520735187, + 0.027935564756722542, + -0.06629066133125705, + 0.6379970743399319, + 1.1548584853489254, + 0.6885099315603982, + 0.09859315611531017, + 1.5321797816818783, + 0.9646431102177672, + 0.857279237279359, + 0.38422532708086266, + 0.19677317524572402, + -1.0269543664912555, + 0.43642158263420683, + 0.9649793038354861, + 0.9915776752869726, + 0.8715239815734429, + -0.021662127759725536, + 0.012349281484165697, + 0.4771498243494885, + -0.26834775465890837, + 0.25506716140053265, + 0.5728283955681759, + 0.5503057906568198, + 1.121955374478597, + -0.10263955207383546, + -1.318625094925765, + 0.8544807528278406, + -0.008919190807803012, + 0.6041615929550175, + 1.6077493934582812, + 0.38369336947028776, + 0.9991581369896103, + 0.46542365556670195, + 0.3665435323207973, + 0.20983362634002578, + 0.8258786511773848, + 0.685395900148928, + 0.7609367435704257, + -0.6234954853004826, + 0.32653670580718996, + -1.943373314922725, + 1.2335047827708654, + 1.0530326579839726, + 0.8952428561309316, + -0.822584519800591, + 0.8472117759344941, + 0.20398844012437678, + 1.0853219510697603, + 0.3172190705925306, + 0.6021182896234034, + 0.8252140490673443, + 0.0003258589637393783, + 0.8242185094117103, + 0.18625607468999128, + 0.7672921934951482, + -0.28977339946833247, + -1.141564311200849, + 1.0049316854868025, + 0.5768752297631936, + 0.703349429226293, + 0.7639117515096281, + -0.1815995784091602, + 0.9403688414310132, + 0.7793892863414766, + 1.2563737720169805, + 1.107535212966396, + 0.909752084884051, + 0.5376509891006682, + 0.8815116039374615, + 0.79218309112788, + 0.5056122438496673, + 0.9093193402330277, + 1.1714425462944122, + 0.9521946914549684, + -0.8189207075041215, + -0.49832180772201795, + 0.6826093493601615, + 0.6700013304550847, + 1.5904627340823985, + -0.2836502658562132, + 1.0058080040775224, + 0.28802794690561884, + 0.9264367104144924, + 0.8557375569783137, + -0.31031308152015313, + 0.7170168736442495, + 1.287478847142955, + 1.1858270383481626, + 0.9674817959919899, + 0.09623684246259412, + -0.6399893677193085, + 0.6679943199846783, + 1.4330616370412406, + 0.69795007996309, + -0.04823180835468843, + 0.3646738347271281, + 0.9055584037295592, + 1.0120205162388145, + 0.8620076611406122, + 0.9738320539314165, + 0.832230458900673, + 1.0362714833397817, + 0.9805617439845804, + -0.08691783581871171, + 0.49506968831071596, + 0.9843183071624413, + 1.2901241149710723, + 0.30173094477160844, + 0.8254041961641101, + 0.42064022915468247, + 0.9764170138177564, + 0.9362745767491027, + -0.45004773469522874, + 0.8411389331598311, + 0.7097401274823918, + 1.025897890838463, + 1.1178949022297537, + 1.004165766605698, + -0.2976897930374207, + 0.051735636081060576, + 0.4375907572662552, + 0.8450446634567399, + -2.185353967016359, + 0.6662272068672854, + 0.3120809647839362, + 0.7033159631547891, + 1.1429304241824934, + 1.2770567727185154, + 0.817941703919006, + 1.2189146842339402, + 1.3592708698168696, + 0.9074462475467429, + -4.016291369288555, + 1.1001495390788278, + 1.101848808366725, + 0.6963926830821427, + 1.0807488176361226, + 0.3498961891545611, + 1.3022010240146606, + -1.431836575999732, + 0.4839791441177672, + 1.0383501251190483, + 0.7978526967257507, + 1.1158993051085608, + 0.42649244133711584, + 1.1530084666546454, + 0.42600922420358067, + 0.7273730176851885, + 0.22731252036877336, + 0.7038340271885115, + -0.21877422004854674, + 0.9702916706116866, + -0.16137269624224182, + 1.085184671180949, + 1.5534277250053117, + 0.4258866965417779, + 1.302585493144253, + 0.8683881780019287, + 1.052195305095865, + 1.080170334337069, + 0.9152274273351815, + 0.9609480852440866, + 0.2561834654006554, + 0.1899934077560097, + 0.1479944869516565, + 0.3766638352232053, + 1.140323741975826, + -0.3035049802340195, + 1.0855545305017784, + 0.968497137657681, + 1.1644724585302573, + 1.266166316370124, + 1.092177676792792, + 0.5334266022648224, + 1.0014021386955778, + 1.1271077654901251, + 1.521245755633542, + 0.9687053401079635, + 1.1077710943020496, + 1.2442221904313269, + 0.5632370708652568, + 0.6709249328550939, + 0.8375363726435996, + 0.34681260542789527, + -1.4716306067095104, + -0.22569243393141747, + 1.3848297373970642, + -0.8431530608545836, + 0.7838078318829845, + 0.9433136706011855, + -0.19153286180519302, + 0.8114993037830045, + 1.0346599153996214, + 0.9105501474034527, + 1.1259121725281114, + 0.9698248948204125, + -3.53378298506672, + 0.7448540620055049, + 1.060294754381758, + 1.1043774780025846, + 1.1603165515843816, + 0.3923084681358944, + 0.9510365515675243, + 0.3707197838493399, + 1.1444624193547148, + 0.33483170135282625, + 1.0721119249122095, + 0.6099788253155642, + -0.05863259034815016, + 0.15807757047718773, + 0.5649458780433112, + 0.09480849915092193, + 1.233777035307996, + -0.043447631363559225, + -0.14032977152137827, + 0.21382521887808803, + 0.8563398187573918, + 0.0021424975823931547, + 0.22767319271016007, + -0.16295883481941065, + 0.9399012909035306, + 1.2695558561726017, + 0.7375542711716516, + -1.07713589044298, + 0.39143274004291273, + 0.2214020596007844, + 0.5383058084686829, + -0.3075953694614313, + 0.590849314156646, + 0.4759832703776983, + 0.7809040600409849, + -1.1353217212177995, + 0.351073083835689, + -1.2044852933757504, + 1.171866320219113, + 1.0858875820493565, + 0.45077049836923155, + 0.44041046602774664, + 0.4613224268570354, + 0.919849250544593, + 0.5215276964068085, + 1.0093081908731572, + 0.21377394951668371, + 0.6227609494699164, + 0.9006183889991741, + 0.9295898082177263, + 0.9064971994954405, + 0.35271298415118446, + 0.6279419764148004, + -0.25618611187869644, + 0.5105512377173902, + -0.10785579544518142, + 1.1305028656784142, + 0.5166630818971001, + 0.4494249333380096, + 1.2934252380640774, + 0.19455421667395623, + 0.5794447547489066, + -0.21833151409924412, + 0.7538062000576371, + 0.23125243880199714, + 1.2452116179997463, + 1.2511716286717451, + -0.22155244178611255, + 0.8433574702676889, + 0.9752821544987205, + 1.053946198600927, + 1.0246437325547864, + -0.6548036013109462, + 0.9789489073840606, + 0.8359109997208609, + 0.44539236877589117, + 0.7884631144571106, + 0.7817558090137453, + 1.1530869830877672, + -0.0838319474207232, + -0.40068498334635133, + 0.8892526613346323, + 1.0881555617705025, + 0.8186869276467714, + 0.9921684769625232, + -0.46363323358091924, + 0.6912853662267576, + 0.7205610819612063, + 1.5001057778770237, + 0.46029241955491607, + -0.4256891562329326, + 0.7639899430689701, + 0.9823372436234812, + 0.5097393523417282, + 0.6404903926445646, + 0.10367683896456215, + 0.5899498042600904, + 0.17433710547799341, + -1.137805664763131, + -0.6632484741895261, + 0.2297475687839452, + 0.3909381313499942, + 0.25488431902172914, + 0.8301823378416275, + 0.4665659908375912, + 0.7646896200069939, + 1.206934718301095, + -0.34973758092520413, + 0.2576199041553322, + 0.9529580267649305, + 0.5526283249567108, + -1.3450610343167995, + 0.7239848235591746, + 0.3452352229243143, + 0.7075607013583884, + 0.5964337026886899, + 0.8242303680157272, + 0.6307903384800246, + 1.6800787788714913, + 1.0496524602174784, + 0.05656492998973928, + 1.633758817284277, + 0.43764696771792044, + 0.042700601785166103, + 0.3495396265241948, + 1.0761790587312712, + 1.3679843551945154, + 0.7035391670294149, + 0.6726079005559644, + 1.2437330662471966, + 1.104737982594294, + 0.5523559818597734, + 0.3727402813782206, + 1.0482126731423693, + 1.3202377678851267, + -0.8981411714734593, + 1.1054407393837309, + 0.9367072259387047, + 1.2966712042622426, + 1.0216345551635424, + 1.082439128876164, + -0.30625450982019586, + 0.7845714037596592, + 1.2474873368184163, + 0.21002033545113008, + 0.8042936471609443, + 0.7750476092961307, + -0.19553878267854152, + 1.034146734042174, + 0.748462956866625, + 0.8218705232653871, + 0.8377467604934896, + 1.2624046710617491, + 1.257247120059927, + 0.6522214799395775, + 0.5977049076738918, + -0.0937608807720558, + 0.9341863961578678, + 1.1227957614075192, + 1.1656949170355762, + -2.2815988168506687, + 0.2572108105481392, + -0.029107805515256047, + 1.0590925730388165, + 0.007628860948820648, + 1.0316895080102126, + 1.0499089948390727, + 1.4609102780828938, + 0.12642181031363453, + 0.6425698380648073, + 1.1428739116834232, + 0.43408399802037456, + -0.18105437013589665, + 0.7943154409759625, + 0.7996387515793495, + 0.2328493317377469, + 0.7003300674266311, + 0.9422147118484894, + -0.3734302036478043, + -0.8185699293849584, + 0.8774194576963863, + 0.19347533898690084, + 0.37668767540199255, + 0.8558404444138983, + 1.1249289863873395, + 0.3336992104034753, + 0.9379954390402254, + 0.7704192544123885, + 1.2057541562496916, + -0.3236558220278032, + 0.5521483513667498, + 1.151397273063394, + -0.04489845340595844, + -0.6801601249322538, + 0.6903159690239891, + 1.2508675008102133, + 0.5819882803139933, + 0.8683552557266765, + -0.43702981567923427, + 1.221903058054259, + 0.4129681669488863, + 0.7401258560244268, + -0.25859928245611397, + -0.5743365715418789, + 0.7032278725203795, + 0.6956458293042669, + 0.9418669793561338, + 0.3657926571088512, + 1.025126691578047, + 0.7797361525917594, + 0.7099140336839049, + 0.45103629693629, + 0.2381552520633221, + 0.6708068946453286, + 0.20275475092561446, + 0.7584938976068019, + 0.7532539319040312, + 0.9951284020593936, + 0.7136867925605397, + -1.868964656270692, + -0.11488993991362584, + 0.924839926963696, + 1.4306133455860515, + -1.9841363568540409, + -0.3085060728186195, + 0.7722551103605915, + -0.9751948800738788, + 0.5127381609364265, + 0.5949385259433391, + -1.752706915436737, + 1.1228087763697943, + -0.605573150974914, + 0.8448160024141478, + 0.8243397274049666, + 0.8437377054639805, + -0.2188254208880256, + 0.8889755217772208, + 1.0311450068726087, + 1.2106020391619807, + 1.1246680662314887, + 1.1370717354815527, + 0.5240839221927631, + 1.4708199720885573, + 1.2677681043963074, + 0.7102313074635385, + 0.5058626203697604, + 0.018056653428469502, + 0.5796970369865644, + 1.1390888100933843, + -0.7553659518582516, + 1.2938732571869869, + 1.0692032516395125, + 1.105796354489895, + -0.5141899348520997, + 1.015116789986901, + 0.7563925043304682, + 0.6161541160828667, + 0.8017110582607067, + 1.022673394997614, + 0.6913083725918017, + 1.5960537169977274, + -0.7950753383743312, + 1.0601430353269876, + 0.5287519190601301, + 0.5534087868040806, + 1.220184895050223, + 0.5576511942664057, + 0.7115056631475802, + 0.3134060999107202, + 0.8219878358191695, + 0.19882963002562049, + 1.0183603439656568, + 0.0347486723321655, + 0.9657327291073368, + 0.63181452971074, + 0.3937413973959192, + -0.4260618453275078, + -0.07063291356158263, + 1.0135509487101295, + 1.234764001426674, + 0.8846021141507725, + 0.21347103942775947, + -0.23366838771223641, + 0.588973812951596, + 0.34299528597369733, + 0.8675386081562708, + -0.6078952599259274, + -2.935478794448456, + -0.008519554156281473, + 1.2108996964642476, + 0.7020066029845506, + 0.6888612760900485, + 0.9508366667196118, + 1.0334724372572857, + -0.8966885771709192, + 0.1507818394854219, + 0.8065887798814337, + 0.5034491841362438, + 1.0882288397131177, + 0.8307520243229731, + 1.1326670173232873, + 0.5868399885408175, + 0.7037330709235428, + -0.7573259582838254, + 0.8704310888911407, + -0.879945730568793, + 0.30822707126197607, + 0.2757047787519227, + 1.0926345822645729, + 0.9983509172583984, + 0.9015900407525379, + 0.8962312836223718, + 0.9164112313323116, + 0.005916061926951599, + 0.7661252999109536, + 0.25988522337471043, + 0.2095907098135168, + 1.3111549499832993, + 0.9259261953558529, + -1.119290863307348, + 0.6919490968929529, + 0.4970841287172161, + 0.29457734292583826, + 0.4895938174285437, + 1.1439668310985804, + 0.976088909288114, + 0.8338399552530151, + 0.5316737407418675, + -0.4660297398199664, + 1.392625198016649, + 0.6618794664947849, + -2.0176716991579875, + 0.6524359495671215, + 0.8113022360060116, + -0.6166767835277627, + 0.48495425628833555, + 0.44320007533475936, + 0.9341268403455008, + 0.005213018353710908, + 1.0496728156626656, + 0.2914796896948706, + 0.28910484321138274, + 0.169218411116014, + 1.1589993798464286, + 0.31126797768504133, + 0.09030770076502925, + 1.1790030369508053, + -0.872903506470621, + -0.30913701990179265, + 1.0477610990314943, + 1.0755188199807812, + 0.9486397982301886, + -0.19869308236255534, + 0.4044496144749701, + 0.04431421881803743, + 0.8001557943631199, + 1.1233847756587565, + 0.8312755697964205, + -0.04024164853616352, + 1.2008731735878726, + 0.597750500855528, + 0.747223583109605, + 0.4687115766917813, + 1.0401359236414995, + 0.6900681848224384, + 1.4265684548831863, + 0.26988026125764897, + 0.9343899789037089, + 0.8432350743478909, + 1.4242496999096803, + -1.294118263955314, + 0.6845667622905514, + 0.6243859266791425, + -0.7345897538923873, + 1.1280773330691938, + 0.35675177141042824, + 0.7272469485945705, + 0.2692657054718286, + -0.672329506783463, + 0.6503962569289878, + 0.7341300534229349, + -0.6459912516486939, + 0.5338506850027835, + 0.885177838155613, + -0.9753916729125116, + 0.8235532297586805, + 0.5222916583032058, + 0.9006148411065915, + 0.6124733880144895, + 0.7518634756732201, + 0.6088348554589768, + 0.5165734882621935, + 0.17678987463140317, + 0.7865869105934262, + 0.7398147529995796, + 0.7991536083848452, + 1.3199663246260074, + 0.5237634164710785, + 1.006398022332294, + -1.0599579038734617, + 0.42969774839100605, + 0.3682689988197403, + 0.25662556057924846, + 0.8749425627320901, + 0.9723492963697966, + 0.66855636194376, + 0.9160909742935068, + 0.5217183385999977, + -0.3395748307254831, + -0.6648685307789481, + -0.6638771742721064, + 1.0525645353696476, + -0.21938888180335248, + -0.008906665684582649, + 0.6325872234526368, + 0.7935465148933947, + 0.7870194863719716, + -0.9147143807516489, + -0.6012007115928178, + 0.9104445077129419, + 0.9011970377352094, + 0.8811268766955624, + 1.1135678127249324, + 0.9098850060651538, + 0.8826935335245868, + 0.7392178927400987, + 1.1138828061745656, + 0.9329906718604173, + 0.29597612925820016, + 1.0717455982438135, + 0.8816988663419156, + -0.1749892226330898, + 0.6124582389026472, + 1.1964478979225457, + 0.7926719076742095, + -0.16932357966763245, + 0.5357261188728346, + 0.19084989833685562, + 0.9927215317329425, + 0.44926772185079855, + 0.8092626623211867, + 1.0812478671837633, + 0.3673238229293232, + -0.32714450080420354, + 1.1637457461265592, + 1.342748875440627, + 0.8905402559901675, + -0.2677543110606435, + 1.069655006315366, + 0.6827427845495606, + -0.3490036108023462, + 0.15399036537414373, + 0.5926050747853835, + 0.9895283560296806, + 1.1822665753009494, + 1.1024406839677776, + 0.6546258496984889, + 1.0851727869864998, + 0.22167954880752028, + 1.3079402865738903, + 0.7113559736924433, + 0.5075937515400637, + 1.0699882677740007, + 0.8422165969140263, + 0.6265836419403357, + 0.6931820106103487, + -0.5376350101681378, + 0.9723653474361851, + 0.8531116545213852, + 0.9796673650739376, + 0.5111583304659708, + 0.992298149196198, + -5.629106503039112, + 1.0436633797951416, + 0.9461770411201642, + -2.1172407811547918, + 0.1489036283875329, + 0.44549571319597003, + 0.6718347436134682, + 0.9608319558463285, + 0.995353018940027, + 0.7999019097598978, + 0.9494267976596191, + 0.5695246222804573, + 0.8057971651629294, + 0.6682998544542125, + 0.20529274004763898, + 0.7704257961287553, + 0.5983776551412605, + 0.35665897639032274, + 0.2653417182092501, + 0.6434061958892476, + 0.7878756663529338, + 0.12107833483392727, + 1.0182024721653296, + -0.19293467303557676, + 0.47870134997630553, + 1.1737428427572199, + 0.7105414809857515, + 0.9440922160062466, + 0.34479291758747693, + 0.6290897766507229, + 0.44680961888472426, + -0.3825355371162604, + -1.0475833100655485, + -3.490840286064154, + 0.5417154924715293, + -1.0522658845329569, + 0.7208487146905975, + -1.6321811023758959, + 0.2649714174862048, + -1.614902388963484, + 0.8469196588659114, + 0.543499222505186, + -0.4448381709662437, + 0.7811283781818092, + 1.3049544837841913, + -0.6999747595880081, + 1.101125123128009, + 0.8023999801360624, + 1.4170802669109488, + 0.9022198586755319, + -1.1497041776759578, + -0.18418195781870672, + 0.4499309328642589, + 0.6858184745791776, + 0.22070123358976712, + 0.9222647754912775, + 0.5379995294735114, + 0.27982288614659545, + 1.129773661639292, + -0.3736653032191568, + 0.47765008687005484, + 0.03460000229118343, + 0.15413112541085755, + 1.5057133242733935, + 1.1526123792273744, + 0.841247914727875, + 0.01127683561999282, + 0.7011693672978474, + 1.041757532257056, + 1.2205037213413799, + -0.5712708712860461, + 0.541059963824603, + 1.3438375748717508, + 0.04224096620386231, + -0.23454270305392555, + 1.0984517504751627, + 0.840097243359061, + 0.8457509237725711, + -1.1666704429131904, + 0.4027268791770613, + 0.7494452959426736, + -0.30989606425112726, + 0.10041190877408779, + 0.6170666315687523, + 1.302589964580108, + 0.8051223463026678, + 0.6415126925337331, + -0.02630159468219695, + 1.1232804422175677, + 0.5885912717798623, + -0.492721159125022, + 0.8793894636686161, + 1.0020618617301391, + 0.9802282757805414, + 0.26086465311155194, + 0.4399242017626097, + 0.587130417002796, + 0.22209609423331989, + 0.26313530335376, + 0.7440068150201566, + 0.0063236767414930894, + 0.7974003464180867, + 0.2803225000597127, + 0.972780582249519, + 1.0291659863918747, + -0.08093273586699112, + 1.4497722335075158, + 1.4007923235810278, + 1.1474313748197495, + 1.0559074643904602, + 1.296629030412328, + 0.6078581522034927, + 0.6302007381962671, + 0.681519731504169, + 0.6400414517854873, + 0.9089612641950269, + 1.021157627592788, + 1.123262092013384, + 0.6281069717203795, + -2.795602658221447, + 0.9063274221064779, + 0.2798998378535238, + -0.07375473708872882, + 0.9834487724083094, + 0.004254325786227642, + 0.5573592471120588, + 1.0198566099443291, + -0.10682319230347481, + 0.6131551331745584, + 1.3056882896049835, + 0.33651413064670965, + 0.9271435206407592, + -1.1311168914459744, + -0.06663282447296481, + 1.046227969082528, + 1.0503097746602974, + 1.0532417385417432, + 0.030514476304000837, + 0.7667487635172815, + 1.2398067343449393, + 0.23535192162592677, + 0.9235735441751771, + 0.4473989706826893, + 0.09671974863017185, + -0.15366971760127157, + 0.8719989182051741, + 0.9332856530408948, + 0.21865687681896473, + 0.6250899420640041, + 0.9880523603477727, + 0.07715647065512266, + -0.7661645599679204, + -0.43151691402220815, + 0.8009781360466715, + 0.22267376440944764, + -0.3432279127912379, + 1.7219450977917683, + -1.3437109405688088, + -0.1225787161218227, + 1.0918131163841902, + 0.7847880267510603, + 0.9969577309798003, + 0.597921220245837, + 0.6309813036151759, + 0.684812039530502, + 0.494385255005807, + 1.4383374901635295, + 0.2202545806141063, + 0.7944332287297176, + 0.5158205399116884, + 0.484876383995162, + 0.0013511030868147422, + 1.2418719218218761, + 0.9434121860209608, + 1.268993154175317, + 0.6674823654515318, + -1.6402272169843766, + 0.701303926698571, + 0.9327820721870452, + 1.030892538614922, + 0.4280188214781928, + 0.5428076513473581, + 0.9541533386668561, + 0.7611506585722303, + 0.539810853512826, + 1.1587052710490795, + 0.6203410948466335, + 0.4891998388402836, + 0.7588625209225608, + 0.986694477947065, + 0.45136667533928865, + 0.17661540354567862, + 0.654696413689935, + 0.40536039693719617, + 0.2051246893948777, + 0.6189113788022436, + 1.1977423579174111, + -0.14291833696631162, + 0.6861599787864945, + 0.8527681636769279, + 0.27431858173722823, + 0.88271834327149, + -2.0046801338320237, + 0.5969407925190049, + 1.2091819348488162, + 0.7942669592668592, + 0.8511868259023094, + 0.24425106911967104, + 0.24238298054360197, + -3.9944347799196622, + 0.5557983788181939, + 0.4140962310920713, + 0.19620707204746868, + 0.4458084070884887, + 0.7606309068032227, + 0.6280449011030935, + 0.07600757247607248, + 1.1616073394196276, + 0.9480702724042072, + 0.8425949840125553, + 0.5088445304256077, + 0.3582815046401695, + 0.9859664774652703, + 0.8095398157579687, + -0.79964125076651, + 1.2427478508193053, + 0.8093122119303999, + 1.1396749406998337, + 1.0980638080062732, + -1.0165308056478164, + 0.5185189627696962, + 1.2639031490053014, + 0.9817908714469096, + 1.3751218613110714, + 0.26669721343642294, + 1.1013253892927155, + 1.0981436807503324, + 0.913838846821524, + 0.49206685291760155, + -0.22590871045179864, + -0.40187517639672565, + 0.6093941061455698, + -0.0668769587200666, + 1.039209613289879, + 1.1296035914351348, + 0.8602287360570546, + 1.6146496611005983, + -0.4330764347132865, + 0.9941162395211656, + 1.160475010734003, + 1.3587736915760589, + 0.19815923899560417, + 0.5293830750276197, + 0.7397136732480041, + -0.6576236993755078, + 0.025733203450694964, + 1.0911154933486102, + -0.4549233322439328, + 0.7975871904550642, + 0.6904151811195871, + 0.11541281112264945, + -0.20553253839784996, + -0.5527481710603981, + 1.0555627379710835, + 0.7695750791629372, + 0.7013321576482883, + 0.23874169478377816, + 1.0132731109244906, + 0.3153881181216155 ] }, { @@ -5247,106 +5241,106 @@ 1 ], "y": [ - 0.4367976238149422, - 0.4561609649917214, - 0.4751264927978574, - 0.4936901823542203, - 0.51184823464303, - 0.5295971401053922, - 0.5469337403104693, - 0.5638552861136631, - 0.5803594906979721, - 0.5964445759341431, - 0.6121093106055425, - 0.6273530392227575, - 0.6421757003960873, - 0.6565778340316599, - 0.6705605769553822, - 0.68412564693098, - 0.697275315404997, - 0.7100123696630032, - 0.7223400653988381, - 0.7342620709663512, - 0.745782404788642, - 0.7569053675355977, - 0.7676354707440401, - 0.7779773635483441, - 0.7879357591196384, - 0.7975153622887607, - 0.8067207996643876, - 0.8155565533667443, - 0.8240268992925793, - 0.8321358506211525, - 0.8398871070746194, - 0.8472840102679841, - 0.8543295053296853, - 0.8610261088474871, - 0.8673758830967007, - 0.8733804164380697, - 0.8790408097282322, - 0.8843576685625982, - 0.8893311011641045, - 0.8939607217361136, - 0.8982456591085038, - 0.902184570517228, - 0.9057756603644793, - 0.909016703804793, - 0.9119050749883966, - 0.9144377797644615, - 0.9166114926021806, - 0.9184225974267839, - 0.9198672319917426, - 0.9209413353201871, - 0.9216406976516547, - 0.9219610122297139, - 0.9218979281676645, - 0.9214471035398655, - 0.9206042577721857, - 0.9193652223530776, - 0.9177259888628052, - 0.9156827533272175, - 0.913231955947226, - 0.9103703153371974, - 0.9070948565238465, - 0.9034029321089622, - 0.8992922361792469, - 0.894760810747891, - 0.8898070447269918, - 0.8844296656486232, - 0.8786277245659967, - 0.8724005747659139, - 0.8657478451017792, - 0.8586694089060278, - 0.8511653495572321, - 0.8432359238569496, - 0.8348815244133265, - 0.8261026422325681, - 0.8168998306872844, - 0.8072736719649349, - 0.7972247470035453, - 0.7867536097992585, - 0.7758607668252562, - 0.7645466621381565, - 0.752811668570225, - 0.7406560852177452, - 0.7280801412416995, - 0.7150840058007775, - 0.7016678037432, - 0.6878316364976345, - 0.6735756074299396, - 0.6588998507769586, - 0.643804563136837, - 0.6282900363929231, - 0.6123566908803254, - 0.596005107574928, - 0.5792360580972628, - 0.5620505313793321, - 0.5444497559408628, - 0.5264352168597711, - 0.5080086666948834, - 0.48917212982038816, - 0.46992789985229805, - 0.45027853007769914 + 0.4295815180657684, + 0.4529988771527795, + 0.47710962996344203, + 0.5017552288364289, + 0.5267844817241528, + 0.5520453687087156, + 0.5773754995347101, + 0.6025942807516848, + 0.6274987465476943, + 0.6518631917228804, + 0.675441431196294, + 0.6979711735797796, + 0.7191825329875234, + 0.7388148476487979, + 0.7566445900896257, + 0.7725209004377553, + 0.7863971822242691, + 0.7983440604017709, + 0.8085356182935343, + 0.8172138816091191, + 0.8246464251439174, + 0.8310921773348322, + 0.8367830927996615, + 0.8419212786346919, + 0.8466871037270889, + 0.8512536198467898, + 0.8558032617668364, + 0.8605416537362366, + 0.8657005517691575, + 0.8715210309898621, + 0.8782136738678828, + 0.885905044370442, + 0.894591230119475, + 0.9041190114740699, + 0.9142017499522821, + 0.9244610930476174, + 0.9344786761552211, + 0.9438457264433638, + 0.9522060245783409, + 0.9592921714192836, + 0.9649543492673103, + 0.9691770542460705, + 0.9720771537684842, + 0.9738797710024897, + 0.9748763900354487, + 0.9753769559043954, + 0.9756690150099278, + 0.9759914969203028, + 0.9765230931100686, + 0.9773802526268452, + 0.9786192043020367, + 0.9802387797970443, + 0.9821840063919318, + 0.9843527894065834, + 0.9866083714411059, + 0.9887980961790741, + 0.9907750900623096, + 0.9924162648887455, + 0.9936301874088362, + 0.9943521071483239, + 0.9945281227537734, + 0.9940932022322146, + 0.9929481332852422, + 0.9909403331218456, + 0.9878545850601074, + 0.983421666405304, + 0.9773519363397571, + 0.9693928365183374, + 0.9593943843137583, + 0.9473551887723898, + 0.9334267361851765, + 0.9178761696891032, + 0.9010300288497884, + 0.8832261272929038, + 0.8647888731786423, + 0.8460285393156657, + 0.8272568629550504, + 0.8088093228997658, + 0.7910634126604288, + 0.7744397064651615, + 0.7593715347368142, + 0.7462361276254212, + 0.7352584152108516, + 0.726421112267187, + 0.7194243554647275, + 0.7137215128236168, + 0.7086205610660524, + 0.7034075203789637, + 0.6974431539279724, + 0.6902069888988199, + 0.6812935002199226, + 0.6703842528707634, + 0.6572222717217, + 0.641607620961352, + 0.6234229224062693, + 0.602685633294057, + 0.579608981404153, + 0.5546383269101615, + 0.5284255503346409, + 0.501724223726619 ] } ], @@ -6198,7 +6192,7 @@ "oracle_model = KernelReg(endog=ite, exog=score, reg_type='ll', var_type='c', ckertype='gaussian')\n", "\n", "score_grid = np.linspace(-1, 1, 100)\n", - "oracle_effects, _ = oracle_model.fit(score_grid)\n", + "oracle_effects_sharp, _ = oracle_model.fit(score_grid)\n", "\n", "\n", "scatter = go.Scatter(\n", @@ -6210,7 +6204,7 @@ ")\n", "line = go.Scatter(\n", " x=score_grid,\n", - " y=oracle_effects,\n", + " y=oracle_effects_sharp,\n", " mode='lines',\n", " name='Average Effect Estimate',\n", " line=dict(color='red')\n", @@ -6242,7 +6236,7 @@ "\n", "where $w_i(h)$ are local linear regression weights that depend on the data through the realizations of the running variable $S_i$ only and $h>0$ is a bandwidth. $\\hat{\\gamma}_h$ is a minimizer.\n", "\n", - "The packages ``rdrobust`` implements this estimation." + "The packages ``rdrobust`` implements this estimation with a linear adjustment." ] }, { @@ -6264,17 +6258,17 @@ "\n", " Left Right\n", "------------------------------------------------\n", - "Number of Observations 490 510\n", - "Number of Unique Obs. 490 510\n", - "Number of Effective Obs. 244 263\n", - "Bandwidth Estimation 0.653 0.653\n", - "Bandwidth Bias 1.023 1.023\n", - "rho (h/b) 0.638 0.638\n", + "Number of Observations 520 480\n", + "Number of Unique Obs. 520 480\n", + "Number of Effective Obs. 272 241\n", + "Bandwidth Estimation 0.69 0.69\n", + "Bandwidth Bias 1.096 1.096\n", + "rho (h/b) 0.629 0.629\n", "\n", "Method Coef. S.E. t-stat P>|t| 95% CI \n", "-------------------------------------------------------------------------\n", - "Conventional 2.798 3.98 0.703 4.821e-01 [-5.003, 10.598]\n", - "Robust - - 0.717 4.735e-01 [-5.806, 12.502]\n" + "Conventional 1.247 0.485 2.57 1.017e-02 [0.296, 2.198]\n", + "Robust - - 2.293 2.184e-02 [0.19, 2.42]\n" ] }, { @@ -6287,8 +6281,8 @@ } ], "source": [ - "rdrobust_linear = rdrobust(y=df['y'], x=df['score'], fuzzy=df['d'], covs=df[cov_names], c=0.0)\n", - "rdrobust_linear" + "rdrobust_sharp = rdrobust(y=df['y'], x=df['score'], fuzzy=df['d'], covs=df[cov_names], c=0.0)\n", + "rdrobust_sharp" ] }, { @@ -6306,7 +6300,7 @@ "\n", "We initialize a `DoubleMLData` object using the usual package syntax.\n", "\n", - "Note: `x_cols` refers to the covariates to be adjusted for, and `s_col` is the score." + "Note: `x_cols` refers to the covariates to be adjusted for, and `s_col` is the score. `y_col` is the observed outcome, on which we want to estimate the effect at the cutoff. In the sharp design, `d_cols` is an indicator whether an observation is left or right of the cutoff ($\\mathbb{I}[S_i > c]$)." ] }, { @@ -6318,6 +6312,13 @@ "dml_data = dml.DoubleMLData(df, y_col='y', d_cols='d', x_cols=cov_names, s_col='score')" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The ``RDFlex`` object is intialized with only one learner, that adjusts the outcome based on the covariates." + ] + }, { "cell_type": "code", "execution_count": 7, @@ -6329,24 +6330,29 @@ "text": [ "Method Coef. S.E. t-stat P>|t| 95% CI\n", "-------------------------------------------------------------------------\n", - "Conventional 3.475 2.231 1.558 1.193e-01 [-0.897, 7.847]\n", - "Robust - - 2.021 4.330e-02 [0.185, 12.112]\n" + "Conventional 1.030 0.129 7.973 1.549e-15 [0.777, 1.283]\n", + "Robust - - 6.736 1.626e-11 [0.702, 1.279]\n" ] } ], "source": [ "ml_g = LGBMRegressor(n_estimators=500, learning_rate=0.01, verbose=-1)\n", - "ml_m = LGBMClassifier(n_estimators=500, learning_rate=0.01, verbose=-1)\n", "\n", - "rdflex_model = RDFlex(dml_data,\n", + "rdflex_sharp = RDFlex(dml_data,\n", " ml_g,\n", - " ml_m,\n", - " fuzzy=fuzzy,\n", + " fuzzy=False,\n", " n_folds=5,\n", " n_rep=1)\n", - "rdflex_model.fit(n_iterations=2)\n", + "rdflex_sharp.fit(n_iterations=2)\n", "\n", - "print(rdflex_model)" + "print(rdflex_sharp)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "It is visible that the flexible adjustment decreases the standard error in the estimation and therefore provides tighter confidence intervals." ] }, { @@ -6355,8 +6361,8 @@ "source": [ "## Fuzzy RDD\n", "\n", - "In the fuzzy design, the treatment assignment is still deterministic given the score ($T_i = \\mathbb{I}[S_i > c].$).\n", - "However, in the neighborhood of the cutoff, there is a probability of observations not picking up the treatment they were assignt. These \"defiers\" cause the probability jump of treatment at the cutoff to be smaller than 1.\n", + "In the fuzzy design, the treatment assignment is still deterministic given the score ($T_i = \\mathbb{I}[S_i > c]$).\n", + "However, in the neighborhood of the cutoff, there is a probability of observations not picking up the treatment they were assignt. These observations cause the probability jump of treatment at the cutoff to be smaller than 1.\n", "\n", "### Generate Data\n", "\n", @@ -6365,7 +6371,7 @@ }, { "cell_type": "code", - "execution_count": 24, + "execution_count": 8, "metadata": {}, "outputs": [ { @@ -6456,7 +6462,7 @@ "4 4.209740 1.0 -0.234153 -0.321100 0.629650 -0.839770" ] }, - "execution_count": 24, + "execution_count": 8, "metadata": {}, "output_type": "execute_result" } @@ -6477,7 +6483,7 @@ }, { "cell_type": "code", - "execution_count": 29, + "execution_count": 9, "metadata": {}, "outputs": [ { @@ -6511,104 +6517,182 @@ "type": "scatter", "x": [ 0.4967141530112327, + -0.13826430117118466, 0.6476885381006925, 1.5230298564080254, + -0.23415337472333597, + -0.23413695694918055, 1.5792128155073915, 0.7674347291529088, + -0.4694743859349521, 0.5425600435859647, + -0.46341769281246226, 0.24196227156603412, + -1.913280244657798, + -1.7249178325130328, + -0.5622875292409727, + -1.0128311203344238, 0.3142473325952739, + -0.9080240755212109, + -1.4123037013352915, 1.465648768921554, + -0.22577630048653566, 0.06752820468792384, + -1.4247481862134568, + -0.5443827245251827, 0.11092258970986608, + -1.1509935774223028, 0.37569801834567196, + -0.600638689918805, + -0.6017066122293969, 1.8522781845089378, + -1.0577109289559004, 0.822544912103189, 0.2088635950047554, + -1.9596701238797756, 0.19686123586912352, 0.7384665799954104, 0.1713682811899705, + -0.11564828238824053, + -0.3011036955892888, + -1.4785219903674274, + -0.7198442083947086, 1.0571222262189157, 0.3436182895684614, + -1.763040155362734, 0.324083969394795, + -0.38508228041631654, + -0.6769220003059587, 0.6116762888408679, 1.030999522495951, 0.9312801191161986, + -0.8392175232226385, + -0.3092123758512146, 0.33126343140356396, 0.9755451271223592, + -0.47917423784528995, + -1.1063349740060282, 0.812525822394198, 1.356240028570823, + -0.07201012158033385, 1.0035328978920242, 0.36163602504763415, 1.5380365664659692, + -0.03582603910995154, 1.5646436558140062, + -2.6197451040897444, 0.8219025043752238, 0.08704706823817122, + -0.29900735046586746, 0.0917607765355023, + -1.9875689146008928, 0.3571125715117464, 1.477894044741516, + -0.5182702182736474, + -0.8084936028931876, + -0.5017570435845365, 0.9154021177020741, 0.32875110965968446, + -0.5297602037670388, 0.5132674331133561, 0.09707754934804039, + -0.7020530938773524, + -0.3276621465977682, + -1.4635149481321186, 0.29612027706457605, 0.26105527217988933, 0.00511345664246089, + -0.23458713337514692, + -0.42064532276535904, + -0.8022772692216189, + -0.16128571166600914, 0.4040508568145384, 1.8861859012105302, 0.17457781283183896, 0.25755039072276437, + -0.07444591576616721, + -1.9187712152990415, + -0.026513875449216878, 0.06023020994102644, + -0.19236096478112252, 0.30154734233361247, + -0.03471176970524331, + -1.168678037619532, 1.1428228145150205, 0.7519330326867741, 0.7910319470430469, 1.4027943109360992, + -1.4018510627922809, 0.5868570938002703, 2.1904556258099785, + -0.9905363251306883, + -0.5662977296027719, 0.09965136508764122, + -0.5034756541161992, + -1.5506634310661327, 0.06856297480602733, + -1.0623037137261049, 0.4735924306351816, + -0.9194242342338032, 1.5499344050175394, 0.8135172173696698, + -1.2308643164339552, 0.22745993460412942, 1.307142754282428, + -1.6074832345612275, 0.1846338585323042, 0.25988279424842353, 0.7818228717773104, + -1.236950710878082, + -1.3204566130842763, 0.5219415656168976, 0.29698467323318606, 0.25049285034587654, 0.3464482094969757, + -0.6800247215784908, 0.23225369716100355, 0.29307247329868125, + -0.7143514180263678, 1.8657745111447566, 0.4738329209117875, + -1.1913034972026486, 0.6565536086338297, 0.787084603742452, 1.158595579007404, + -0.8206823183517105, 0.9633761292443218, 0.4127809269364983, 0.82206015999449, 1.8967929826539474, + -0.2453881160028705, + -0.8895144296255233, + -0.8158102849654383, 0.3411519748166439, 0.27669079933001905, 0.8271832490360238, 0.01300189187790702, 1.4535340771573169, + -0.2646568332379561, 2.720169166589619, 0.6256673477650062, + -1.0708924980611123, 0.4824724152431853, + -0.2234627853258509, 0.714000494092092, 0.47323762457354485, + -0.07282891265687277, + -0.846793718068405, + -1.5148472246858646, 0.8563987943234723, 0.21409374413020396, 0.3853173797288368, 0.1537251059455279, 0.058208718445999896, + -1.142970297830623, 0.5607845263682344, 1.083051243175277, 1.053802052034903, + -0.9378250399151228, 0.5150352672086598, 0.5137859509122088, 0.5150476863060479, @@ -6616,82 +6700,140 @@ 1.135565640180599, 0.9540017634932023, 0.651391251305798, + -0.3152692446403456, 0.7589692204932674, + -0.7728252145375718, 0.08187413938632256, 2.3146585666735087, + -1.867265192591748, 0.6862601903745135, + -0.47193186578943347, 1.088950596967366, 0.06428001909546277, + -1.0777447779293061, + -0.7153037092599682, 0.6795977489346758, + -0.7303666317171367, 0.21645858958197486, 0.045571839903813784, + -0.6516003476058171, 2.1439440893253257, 0.6339190223180112, 0.18645431476942764, + -0.661786464768388, 0.852433334796224, + -0.7925207384327007, + -0.11473644146689901, 0.5049872789804571, 0.8657551941701215, + -0.3345012358409484, + -0.4749453111609562, 1.7654542402810969, 0.40498171096095553, + -1.2608839543350452, 0.9178619470547761, 2.1221561970126332, 1.0324652605511468, + -1.5193699659540134, + -0.48423407286625136, 1.2669111491866227, 0.44381942814622843, 0.7746340534293368, + -0.926930471578083, + -0.05952535606180008, + -3.2412673400690726, + -1.0243876413342898, + -0.2525681513931603, + -1.2477831819648495, 1.6324113039316352, + -1.4301413779606327, + -0.44004448669698376, 0.13074057728609134, 1.4412732890661155, + -1.4358621511794394, 1.1631637521549596, + -0.9815086510479509, 0.46210347426327075, 0.19905969557347003, + -0.6002168771587947, 0.06980208499001891, + -0.3853135968617602, 0.11351734525124804, 0.6621306745210467, 1.586016816145352, + -1.237815498826849, 2.1330333746562666, + -1.9520877995225019, + -0.15178509503558332, 0.5883172064845765, 0.28099186773503265, + -0.6226995198205938, + -0.4930009346588328, + -0.5893647569442115, 0.8496020970210246, 0.8995998754332507, 0.30729952087660933, 0.8128621188389601, 0.6296288419236122, + -0.8289950109220723, + -0.5601810401969696, 0.7472936051232618, 0.6103702654334648, + -0.020901593964148132, 0.117327383308782, 1.277664895788425, + -0.5915713888358299, 0.5470973811700379, + -0.20219265243389406, + -0.2176812032272203, 1.09877685198719, 0.8254163489880298, 0.8135096360006385, 1.305478807154329, 0.02100384163275905, 0.6819529712949639, + -0.31026675659345604, 0.3241663524884421, + -0.13014305436768459, 0.09699596499271819, 0.5951570254369136, + -0.8182206832334725, 2.0923872756854602, 1.1581108735000678, 0.7916626939629359, 0.6241198170521551, 0.6283455092642799, + -0.012246772846914623, 0.07580455819372633, + -0.6771617115121117, 0.9751197334177512, + -0.14705738150213865, + -0.8254971967925115, 0.41293145427562433, + -0.5637245528039747, 0.2436872114919123, 0.24496657110872277, + -0.5069431753711298, 0.2320499373576363, + -1.4074637743765552, + -0.718444221252436, + -0.21344715171184725, 0.3109075655980046, 1.475356216949552, 0.8576596232020194, + -0.1599385299634271, + -0.01851313599238993, + -0.2886586389201383, 0.3227185603380895, + -0.827230943552323, 0.5193465142411723, 1.5327389130025777, + -0.1087601484568576, 0.40171172209894146, 0.6901439917111125, 0.22409248181041677, 0.01259240078179486, + -0.7730097838554665, 0.024510174258942714, 0.49799829124544975, 1.4511436077950417, @@ -6700,240 +6842,439 @@ 0.8723206367206782, 0.18334200573835174, 2.1898029332176723, + -0.8082982853551515, + -2.123895724309807, 0.15039378647620763, 0.34175597577715944, 0.9504238381860503, 0.4919191715065057, + -1.3202332070206422, 1.8314587658543537, 1.179440120721287, + -0.4691756521047048, + -1.7131345290908775, 1.3538723741654128, + -0.11453984525261789, + -1.594427658794367, + -0.5993750229537729, 0.005243699718183166, 0.046980593764742055, + -0.45006547147924364, 0.6228499323474987, + -1.0676204293825944, + -0.1423794850212935, 0.12029563171189886, 0.514438834058749, 0.7116148780888898, + -1.1246420918378692, + -1.5341141707356223, 1.277676821898509, 0.33231401197959165, + -0.7484865365565536, 1.551151975522523, 0.11567463429285867, 1.1792971840638264, 0.06751848141010895, 2.060747924881987, 1.7553408424432044, + -0.2489641484790735, 0.9715709509543554, 0.6453759495851475, 1.3686315575323487, + -0.9649234605801045, 0.6860514599984393, 1.0584244868495878, + -1.7587394864231143, + -1.183258512665775, + -2.0392321777601006, 0.7175422557959623, 1.502357052096028, 0.07409478041977519, 1.6286155455712918, + -1.3801014582148914, + -1.7033824393551547, 0.3840654489393073, + -0.03269474809409311, + -2.0674421000398766, + -0.08912003951278841, 0.6696725488300385, 0.36659824609684827, + -0.9398797863273552, + -0.5138669173366935, + -0.06267909727317188, 0.9551423205012383, + -0.9857260463355437, 0.5040465155178444, + -0.7928728322623442, + -0.10703035995455783, + -1.035242322419374, + -1.1978778925888485, 0.03526355197172861, + -0.6997255079925856, 0.213979910734222, 0.6141667000434252, 0.7575077100473051, + -0.5305011476105275, + -0.57581824064468, + -0.275051697151644, + -2.301921164735585, + -1.5151910621985523, 1.3668742674445247, 1.6449677135012837, + -0.24903603955637832, 0.5765569630557664, 3.0788808084552377, 1.1195749114345768, + -0.12791759148076653, + -0.9555404406004258, + -1.6064463202575725, 0.2034636358672231, + -0.7563507452843033, + -0.6465728842425266, + -1.081548003614395, 1.6871416350725648, 0.8816397569494505, + -0.007972641316617372, 1.4799441388900259, 0.0773683076476183, + -0.8612842013282637, 1.5231240772696573, 0.5389100436846587, + -1.0372461543264564, + -0.1903386780836082, + -0.8756182533847572, + -1.382799730964336, 0.9261775475316414, 1.9094166404701305, + -1.3985675738191412, 0.5629692366905709, + -0.6506425691218269, + -0.863990769679816, 0.04852162794482699, + -0.8309501164110378, 0.2704568257798388, + -0.05023810944913695, + -0.9075636620415979, + -0.5767713305683327, 0.755391225825756, 0.5009171876243808, 0.09933230542922587, 0.751387123371789, + -1.6694052811213718, 0.543360192379935, + -0.6626237589458467, 0.5705986685931593, + -0.7632591565425169, + -1.804882100664519, + -1.6275424378831627, 0.048084946661381994, 0.25972250172148187, + -0.9043166251044086, 0.6385924587773739, + -1.6615200622689599, + -1.2110161997624567, 0.047398671316414016, + -0.8604133652839524, + -0.38455554422982535, 1.0062928092144405, + -0.5768918695231487, 0.8356921120651418, 0.5298041779152828, 1.4415686206579004, + -2.4716445001272893, + -0.7968952554704768, 0.57707212718054, + -0.2030453860429927, 0.37114587337130883, + -0.6039851867158206, 0.08658978747289992, + -0.15567723539207948, 1.1677820616598074, 0.2544208433012131, 0.3376026620752022, + -0.4118769661224674, + -0.48760622407249354, + -0.4325581878196209, 0.39445214237829684, + -0.42098448082026296, 0.2897748568964129, 2.075400798645439, 0.8711247034316923, + -0.32602353216784113, 1.2012139221639448, + -0.4080753730215514, + -2.038124535177854, + -1.008086310917404, + -1.8707919210258557, + -0.35151348404130867, 0.0184183791895517, 1.6764373122752827, 0.32692737376416264, + -0.21910052880886424, 0.8294055811834892, 0.23561455810856594, 0.7708651938869668, 1.143754043206929, 0.3384964074944141, + -0.4152879139008013, 0.6327818661062848, 2.270692857804396, 0.18186625505849516, + -0.4593608995402441, + -0.8498443694647918, 0.8303358165442456, 0.07156623721939247, + -0.4776574467651167, 0.47897982574639186, 0.3336621052869483, 1.0375399442578992, + -0.510016398854747, + -0.26987493529337125, + -0.9787637157823074, + -0.4442932600761116, 0.3773004930448522, 0.7569886166453519, + -0.9221653241776254, 0.8696059201056602, 1.355637858804951, 0.41343490322370086, 1.876795812558066, + -0.773789199103573, + -1.244654703311417, 1.496044311489183, 0.6543656563540577, + -0.05558467091045507, 0.2799686263198203, + -1.1254890472983765, 2.4457519796168263, 0.1292211819752275, 0.10939479460489289, 0.725766623898692, 0.4810092317367132, 0.22388402427913137, + -0.7904744554453119, 0.4714683571359957, 1.3454200461549777, 1.593186626639397, + -0.12578692009964815, 1.0941915184709485, + -1.6924646297148194, 1.5295503194606137, + -0.15800789857898942, + -0.42688106994742003, + -1.6548566718657693, 0.8231705839619146, 0.07331796718840389, + -0.3357846992901282, 1.669021525289393, + -0.2595913513636048, + -1.5031429531181062, + -0.24574306408594432, + -0.2727235697476705, + -0.05429486651781221, 0.6962063648134184, 1.8489560949453452, 1.1265650295477574, + -1.1065259087416703, 2.5733598032498604, 0.05921843401448826, 0.013929291912946203, + -0.024125087110003277, 0.19808476076785494, + -0.14436041192394247, + -0.5736620068802363, + -0.03275327021599839, + -0.543424771133765, + -0.7128457826771644, 0.10643022769189683, + -0.2549772174208553, 1.5039929885826886, + -2.650969808393012, 1.0915068519224618, 1.246085192497629, + -2.0733902324081495, + -0.34268759408034877, + -0.37144086599579146, + -1.4075116947178212, + -0.7778166875908753, + -1.1105758454658288, 1.7522704434236227, 0.9356783931474612, 1.2715550949941588, 0.7216720640432351, + -1.1290517712172292, 0.48937456122791806, + -1.2221278088919454, 0.7129984301723881, + -0.3748208075495975, 0.7109599682034915, 0.44426331148603976, 1.159329803364248, + -1.0810633275998973, 0.6159356069442637, 0.5931012579683838, + -0.3095464393139903, 0.326133022242118, + -1.251113576385303, 0.924027019206901, + -0.18490213644298903, + -0.5227230205190395, 1.0490092258368893, + -0.7043436905427592, + -1.4084612963635597, 0.6060099513456396, + -1.280429352496283, 1.7547941819843647, + -2.081929407883722, 1.6964563682900382, 0.2110174672026184, + -0.09671311187039239, + -0.5449190868089497, + -0.037634702424848364, 1.1033018820165215, 0.11422764866203965, 0.1503017614618776, + -0.056945623721067457, 0.3078017688920592, 0.743264094022715, 0.17086543812794186, + -0.18398333635267913, 0.01843393306539316, + -0.5397596803093615, + -0.7783047254023127, 0.19584525509768155, + -0.978372777615032, 0.40825275571447184, + -1.7025836042378404, 1.0291556373256436, 0.472597482413043, 0.25602973431387566, 0.9826909839455139, 1.6654744444625766, 1.0143700650181304, + -1.8408742313316453, + -1.2795769667357015, + -0.6248185776956788, 0.026091050210833786, 0.517659020469123, 0.18676676447707832, + -0.7553829323533225, + -1.4066610968482223, + -0.9232332461109043, + -1.3516846056163336, 2.632382064837391, 0.4933179008808892, 0.1848361236948739, + -0.8583577801812136, 0.7003098794089914, + -0.5756378262377739, 0.12200981464536144, 2.5600845382687947, + -0.09605989972464987, 1.1492733262856758, 1.77080063563551, + -0.6269670577877674, 1.8124485579969287, 0.7077519354554754, + -0.5624667758942676, 0.632407739055521, 0.9725544496267299, 0.6218099622171964, + -1.5702247198904564, + -0.24751863555150475, 0.620672097550678, 0.17770100093325383, + -1.3353443587101013, 0.3801978510059632, 0.5597904479310398, 1.0807807255546218, 0.8339221545489041, 0.4591800792284367, + -0.07016571145864703, + -1.6609609335159914, 0.42961821913258585, 0.20768768716311115, 0.27157883719537346, + -1.0810565404082624, 1.0531528533329035, + -0.03955515385665504, 0.6815006973726244, 0.028318376130461172, 0.02975613949574519, 0.9382838059759977, + -0.5160447282173739, 0.09612077694098337, + -0.4622752887050425, + -0.4344962274323156, + -0.30917212346863937, 0.22213377163371284, + -0.4787486216634773, 1.2557561255735208, + -0.8946073022195039, + -0.18687164416135904, + -0.4397310582741749, 0.19655477651157463, 1.0318445394686349, + -1.485560373036972, 0.26705026586925884, 0.889630795623437, 0.08228398927542419, 1.0654803750653512, + -0.5172884501003722, 1.40934744018558, 1.453384477117701, 1.5795721457307124, + -0.5228600271532683, + -0.42018681709585726, + -0.2817846088605072, + -1.344450511034277, + -0.9186519464841982, + -1.0041407667520679, + -0.7677975651041284, 0.23421473253652075, 1.5505004928140769, + -0.998354040738791, 0.9843223984765838, + -0.21398884422550896, + -0.04946370965243295, + -1.1227220215622986, 0.3824097461840506, 0.1664522082130561, 0.4924512640081491, 0.2891686439078181, 2.4553001399108942, + -0.637739984251316, + -0.6231405264247644, + -0.6373871273065177, 1.1890165311075518, 1.4205042479898549, 0.4714155563864041, 0.6329318177555108, 0.2029230208512997, + -1.515744114997232, 1.5475052013300616, 1.7958776730955217, + -0.6127886904843862, + -0.38770155993598415, 0.28586539072490497, 0.334456789987025, 0.6585442726728304, 2.0102045387663496, + -1.3793192280145272, + -0.033126972873797095, 1.7945578635177877, + -0.5176112990361714, 0.2237879516388985, + -0.016422896072752075, 1.188393273448084, 2.5269324258736217, + -0.5308687729203206, + -0.48943944251822213, 1.044160877069072, 0.6818914896263114, 1.8467073257360336, 0.5839281853259639, + -0.35929209078705954, 0.5906548306923093, 1.1087035805829077, 0.820482181197364, @@ -6942,37 +7283,58 @@ 1.1692955904456728, 1.3821589910375272, 0.6487098875896427, + -0.16711808031685435, 0.14671368643332283, 1.2065089665083568, 0.3686733088729012, + -0.3933388123273607, 0.028744822934817487, 1.2784518626072987, 0.19109906801990334, 0.04643654815614881, + -1.3598561409799192, 0.7462535660272207, 2.16325472330546, 0.21915032766393897, 0.24938368371075526, 1.5774532797634744, + -0.0952955323869521, 0.27902152577033923, 0.6078965097165392, 0.1866091231563581, + -0.44643361455052827, 0.19408999289830758, 1.073631749859772, + -1.0265152994110602, 0.132969674146876, + -0.7001208149391732, 1.1950466289248425, + -1.5231869047837747, 0.37721187506452086, 1.5655240292343404, + -0.0657502610729878, + -0.5551995266931984, 1.8811570694405901, + -1.448013900416244, + -2.198805956620082, 0.4400144500533324, + -1.0212328171307132, 0.7083564472993533, 0.24380071377119883, + -0.5640786307367284, + -1.2803043986708944, 0.8724573282801447, 0.650201177958661, + -0.09917586377938291, 1.8466369960476658, + -1.0700847663261526, + -1.5255251709247388, 0.24333944932269183, + -0.24123605785632987, 0.3520553965142968, + -1.251539424190444, 1.4437646040732595, + -0.0821511783925688, 1.1172958315881276, 0.4567532191537839, 0.5697672802322039, @@ -6981,119 +7343,212 @@ 1.3291525301324314, 0.19652116970147013, 0.7090037575885123, + -0.08973569428722672, 1.4401172154494728, + -0.6763923020592697, + -0.04015795064434341, + -1.4307751021180481, 0.12810441491078928, + -0.6810516574748808, 0.8406435489887241, + -0.6526239793023909, + -1.889540730945531, 0.7604146561442974, 0.7858001586508322, 0.42545756178496474, + -0.966976143129213, + -0.047711356141979855, + -0.0036025390905684044, 1.5033983017671506, + -0.22096417382966393, 0.20838280794755248, + -2.0417348684242906, + -1.0016200098949155, + -0.2811002928859549, 1.7976865268495226, 0.6408428612670098, + -0.5711789897827968, 0.5725827813561586 ], "xaxis": "x", "y": [ 2.1315329707498756, + 10.1042906805941, 3.3376770604434096, 7.767124195272413, + 4.20974049203863, + 8.825699725139689, 0.7481591385679691, 4.1128433169824365, + 5.353331985630865, 9.491430242004125, + 3.734004808370225, 19.22182141446181, + 1.1209894441778434, + 1.9720937426268081, + 6.24830732690344, + 1.9372139815716007, 11.557796064985189, + 4.82010669534939, + 5.816790960283385, 4.936439468036899, + 6.433240000041881, 3.333810324078476, + 7.412729614694802, + 9.289722770194079, 4.441113900423861, + 4.46380477347803, 0.6455892358611679, + 9.414982866415002, + 11.745848005819507, 0.49610928527468745, + 3.2220302699771657, 2.4006011335875828, 5.163316458119373, + 6.415044673082279, 8.391790673613986, 2.4564095455635835, 7.319450585831383, + 11.606308748575547, + 18.49399734846198, + 4.992570932665493, + 1.467711635507806, 2.4707465154292434, 10.402939953767364, + 3.979852347059092, 12.446147009792307, + 2.324549752626811, + 6.2894643691879955, 8.882718432316555, 0.857904007273836, 2.447186683872495, + 20.66341896086477, + 7.5533252863763956, 7.018174078288615, 0.9357156158889749, + 8.040319165044872, + 2.5845655723331262, 0.16920539181221195, 0.6185619513651668, + 2.1494926337664304, 4.562255000224275, 2.7184291960342915, 6.108978259340933, + 10.140475605645056, 7.401531100522695, + 5.640084316501842, 7.840952968279986, 0.6953135686971497, + 3.5101677336554538, 2.436535977334167, + -0.2023622824522054, 2.743388211356075, 8.301152100586544, + 3.698336291772635, + 9.780577080892737, + 8.971683135381175, 0.6183924355825982, 9.695049328101154, + 2.495491769978212, 3.6601487948925118, 2.6058994457584688, + 6.214447433159473, + 3.3646969687532056, + 0.16190647345125062, 11.690108377884076, 1.9344216148461812, 11.855325061722992, + 2.835767133239384, + 5.728756415798844, + 4.540623317667709, + 5.39560451014444, 1.6514489549231508, 9.361676779831594, 2.9379692479846318, 1.9046269186816902, + 9.425517531159299, + -0.10521560899271043, + 2.547077756202996, 10.370143028347302, + 17.0833174035668, 4.948184205680325, + 3.8771977188655473, + 6.747501130764894, 1.2880687838570863, 8.26102961975762, 0.45539124774730894, 15.70558111975564, + 10.165108550251254, 3.9263253615199267, 10.44991370265823, + 3.5719601116357955, + 1.6130623530455521, 9.879740840545962, + 8.419171864553423, + 6.585601524433072, 3.355173393466349, + 0.7179161063457344, 3.8910293090041606, + 16.583028502105172, -0.07290139915820362, 4.095558006274662, + 11.256854968059178, 12.15394583676655, 0.6937345905224344, + 1.4542309542129006, 11.67560310448758, 4.010683176834139, 1.0746839428581927, + 5.380738331572772, + 0.179223203564942, 7.100881196152617, 2.9841599788421855, 3.8923436288171525, 1.1508329887233149, + 11.177571959298447, 11.383218174775342, 1.4822430277021466, + 4.8796075955833835, 1.1766678151414163, 0.5223850194716981, + 7.812634612013321, 10.641029747336491, 10.629678264549034, 1.5506860258251056, + 6.634338007209781, 1.6172716862858332, 3.3084111889169994, 3.8225384869477117, 3.2181525178476242, + 9.688698248809622, + 1.3116448632489295, + 3.8863113371259406, 10.805669683789443, 1.3964934007804224, 3.2800128692883628, 3.1846391000756857, 10.695429298642578, + 10.260538720858044, 2.949958256339423, 7.540022705566691, + 7.678855529724721, 1.1527314494379268, + 5.943352379621976, 11.551630376432174, 8.3458031736762, + 5.887075267089595, + 3.5117176619480475, + 15.862252242814584, 4.984611047058473, 5.767512050794933, 7.774453798507568, 11.482890588252625, 3.8175035271584896, + 2.0268771660254226, 4.6490582097789, 5.257826041964947, 8.129020265816388, + 14.986875621160854, 6.922582683560283, 1.1653790943806284, 4.165502646998374, @@ -7101,82 +7556,140 @@ 2.093985760729416, 1.697114967540403, 6.252821237159777, + 2.747007556373036, 3.984922545466563, + 3.1047955744011966, 18.49063350079053, 0.07521768037949655, + 2.0095782112165725, 4.266382856770973, + 4.042864949432732, 3.038629780857546, 7.590612944393139, + 8.194834912534684, + 3.2131476612068988, 2.2215644054189174, + 1.8312833601971195, 4.508484870146033, 3.376999774476586, + 10.284848707710262, -0.21115656764338744, 5.9333496168305055, 4.052521960469138, + 8.398002720675747, 0.8250147782077821, + 7.499740475948032, + 9.995284378883163, 8.499434814511643, 10.26899685904756, + 9.247838740810938, + 1.1480394972621395, 3.8126959290713813, 6.635898714469415, + 2.4466197841546937, 1.6067198965643417, 10.253468884792, 1.4395963925845616, + 1.5021708284059163, + 3.4742827655830775, 3.372127918876701, 2.613768873063521, 14.20294480605421, + 9.608543935218586, + 5.554760853370753, + 2.5641174662528963, + 2.181152478168242, + 5.7545398697182435, + 8.257423340293869, 2.3822255468743685, + 2.818539975013469, + 7.287167660479172, 4.089857223659319, 9.251431469744308, + 9.381147655893232, 6.312500447045307, + 8.439120872956321, 9.311059176415537, 11.114319085950685, + 5.509219087534071, 3.1863095083950803, + 6.810727936881929, 3.2897871368232043, 7.504518978570107, 1.0559006941062314, + 2.9138427989970914, 2.2450940978353717, + 3.98523235638174, + 1.8908158073594656, 2.26843289183069, 1.7707473664381386, + 12.925201194708109, + 2.375424129982417, + 4.485571340436259, 4.559847930572106, 12.086912144333144, 5.701325415891191, 6.849392435651532, 1.4451798332463686, + 5.046520780749131, + 9.996279650953115, 3.378382187645317, 10.499967443850583, + 8.27586819775815, 13.451913885465364, 4.6519681588390585, + 5.414425523736968, 2.4453863318307465, + 2.289560961254299, + 1.0786689868742318, 3.17518004565509, 10.660132568416012, 6.012996884384393, 3.666740148539145, 12.253347417655641, 5.856761811694221, + 4.898577346306816, 7.826404734778256, + 8.97592619232773, 0.83522967339717, 3.1478380983232426, + 5.9893910416672105, 1.0301256344165093, 9.812055248429134, 2.1631727023884055, 0.7012947549049051, 2.2807440727810087, + 9.200554769250326, 2.8777095496338707, + 3.321430491347079, 3.5396243352582575, + 0.9498337342355022, + 8.125085932829787, 5.078411778327921, + 11.805154973782942, 7.644037683454063, 4.214157582480626, + 13.57471027517796, 3.227813526987917, + 0.4734362639865842, + 4.209158923648033, + 8.594919806147834, 1.8950854683377898, 8.273768587290384, 7.042883019888062, + 7.627329481529828, + 2.678312038947865, + 2.30979106984728, 6.279430040654341, + 1.179514412109931, 2.8576360333014215, 9.286549565264568, + 6.4945248413794845, 1.3859158480677314, 2.3275920490961854, 5.767573515014574, 3.7506312572570675, + 1.8611646187359694, 10.212869818117555, 2.0697294814897242, 1.441404312485799, @@ -7185,240 +7698,439 @@ 6.437503714512308, 13.433645420156413, 11.558320613040664, + 8.104258807784657, + 3.683800141920484, 9.346558165443854, 1.1488593990287084, 15.336113654335783, 8.742170519056472, + 7.7950428448355495, 6.481454238265168, 3.182703497253395, + 12.527846071882811, + 8.221105997044413, 4.393459525076071, + 2.562532986064124, + 13.187159597816699, + 5.717638418925579, 8.781178798807002, 4.928918555552588, + 10.603249673694698, 5.072259981144448, + 8.505254112725716, + 3.2577706189195226, 2.1755560735466304, 3.1373996095846595, 9.993369457421977, + 14.137041021251411, + 3.0223287320931855, 5.028053326716646, 5.055439186487435, + 6.713707181524353, 1.8034782530713143, 1.5961170573645533, 3.56840838135132, 16.285666127796514, 0.13279900178749257, 3.0736395780402708, + 2.920721296852652, 0.15201500920458605, 9.924536594732846, 5.339198033172685, + 10.002255146482415, 1.4954878511372058, 5.772096833019086, + 0.32815842160244874, + 1.8862741890381098, + 6.039578914144629, 2.7108024218677156, 0.7287727343342003, 3.687378622941323, 3.346178117658042, + 1.948384176346833, + 5.203945721396098, 4.218066681557937, + 8.18693830408368, + 4.275395284430743, + 10.609347407575518, 3.758993624607027, 11.20175638993969, + 10.71541992995938, + 3.238094741999864, + 8.689248760976493, 0.3381790137322365, + 3.7057475649489575, 7.528369810863078, + 5.966353880413951, + 1.3564627754104466, + 2.5647156561011917, + 5.673749739306935, 4.204034610650169, + 2.4352065127928624, 3.3432442539973195, 9.71074983031172, 4.557018092529859, + 9.848986399951986, + 6.954777829163438, + 2.76771836341023, + 0.4707151625732189, + 1.7120647690765098, 8.857878161767035, 10.312343392753021, + 5.175344770921929, 1.5378009481349695, 0.41576963106511766, 17.67219702866147, + 18.2942540725213, + 1.2744920642484556, + 0.5403844796193874, 3.3602581922121884, + 3.577032748745671, + 6.3977378643993985, + 7.721438045632866, 2.606247664100731, 8.900380424673967, + 0.7858417594915437, 1.714476689271548, 3.7984664567673025, + 1.8765914966556243, 0.9493116253535325, 15.97536241219612, + 12.122878627803102, + 18.205129371126603, + 10.7720662198722, + 0.035682017511550757, 10.747751324261445, 7.429029407672949, + 14.912113309723399, 11.461948489000513, + 1.5430625859292224, + 4.24877735198173, 7.6017247723226085, + 3.891406677200292, 2.6221905275316195, + 3.0441685170649997, + 17.689455193858418, + 2.2563246899704357, 15.561566983734414, 3.2472739807087194, 1.4424887305932574, 7.567256309752906, + 2.6638691109505546, 4.98937736257439, + 8.055768782176767, 2.9304105594386973, + 5.695184025830844, + 11.658362336370525, + 2.276567602703758, 1.5440083928142925, 4.910497743060022, + 9.437400230738238, 3.5533164633405154, + 4.253746837301203, + 4.679131109915834, 4.787410781944382, + 10.07225101193799, + 0.4896497753620144, 4.041051760850429, + 9.199333451437633, 6.049063673908385, 3.5380672836712668, 17.3501756288875, + 0.3704513792405704, + 2.5734618968045475, 4.414451845562086, + 9.647291667337408, 1.0668413861439257, + 4.3005719384046905, 0.9016493835817596, + 11.484373464233368, 7.966632540366974, 7.485218190712658, 3.2916061223331776, + 9.097221166821688, + 7.0236140112276075, + 8.361690007455445, 3.1942601281344674, + 3.9786275167740413, 7.334674184175711, 7.608729224468053, 4.790858808540129, + 9.992555806565914, 5.694034084347684, + 3.623002102522247, + 3.9338624545166687, + 4.650715741885662, + 2.5952781722643943, + 4.598742228256017, 8.99644827443137, 1.0259593417054744, 0.903881514393115, + 2.015984855454603, 3.4682813300473905, 8.903317816428128, 2.825454795082282, 0.7180558258955793, 10.451390235445258, + 8.977881995077347, 2.333681002415545, -0.5612011685691527, 0.9529046956183496, + 10.208149165128203, + 9.317865331378625, 1.2806207733069654, 10.707794186867956, + 3.112957888982704, 0.9973423297502046, 13.12212737619498, 9.23479312102998, + 5.813100223757802, + 2.732455267888832, + 2.911132954714122, + 7.975862236479633, 5.270786789765304, 11.843685565471757, + 2.924530657124003, 6.12995661035467, 3.2507894624967104, 2.225507657701971, 1.9311208435599505, + 6.867505728102446, + 1.7738957961206827, 1.6751235864821505, 9.409456739377488, + 9.873806254567654, 7.762737823232642, + 3.612499617777316, -0.37720636798744966, 7.476265254210922, 5.627234572872154, 3.6405360758007754, 2.643080378516415, 1.5128381297378348, + 11.457913682438097, 2.199991641756983, 7.003384050152647, 1.909785634098101, + 9.351816778709749, 0.3634373369124242, + 2.601698065218799, 7.623795045571737, + 8.569947511361946, + 12.062203444399037, + 3.7511683595061713, 9.052018101176614, 2.8663517202569726, + 4.409646665035052, 1.5597488142143623, + 3.6317746330802434, + 5.227383072244778, + 1.9165114402103245, + 2.1149277728547675, + 9.41809317592197, 2.5826115596699974, 3.738647173883102, 1.3278337233353543, + 1.8860677865787134, 2.867946078811882, 2.5503144297881106, 4.431706524679094, + 2.4805501643173344, 4.081029353260243, + 7.397439927606593, + 4.225895894218287, + 9.155256333689453, + 3.9014464232116848, + 7.1727363393242385, 5.433622799801779, + 10.690613772290403, 3.269758397089347, + 8.008239297350961, 0.3242531342459827, 0.9090846593811345, + 0.8560221512054251, + 3.984866306116848, + 3.4470888392697114, + 4.893788703425678, + 4.140566803013013, + 6.843050898538448, 0.890293978639035, 2.450408765726328, 6.856331384339364, 8.52619462926133, + 5.894008077399048, 1.947913278028056, + 0.07325103585345867, 6.450414778728382, + 4.708603117434036, 3.798103152703199, 8.139719937627595, 1.4359646648590099, + 4.062259402759353, 5.207482267025496, 2.3951108901876825, + 2.2596923527348753, 6.799779922419049, + 2.4125491443463307, 10.136664129270939, + 15.732473842056278, + 7.062523198503255, 2.6768491835032, + 12.137570597326324, + 16.51408480643509, 2.3874300185476756, + 2.3680985267930246, 2.038573705341423, + 3.5572569910085288, 5.004488160490057, 5.715150198716844, + 10.94823781968214, + 3.684890545151571, + 13.379637036538046, 10.280410257625999, 12.86283064800677, 3.5746511488610855, + 8.417421369719067, 2.8656980416874878, 2.599544256017886, 6.409149893354449, + 4.327486303162451, 14.443109269806254, + 0.8401981539574312, + 7.2614765199286815, 3.326674209951898, + 1.5662749685982906, 10.989663463088544, + 8.467889659289984, 1.8105097926902487, 14.741330533081028, 15.08675973075185, 5.1631116750875305, 9.343661006938557, 14.126360366511257, + 1.1903869499063353, + 0.25115823899788037, + 1.0720114056197707, 11.484363268268915, 8.94184778379353, 0.9604537983261285, + 2.2390554154390454, + 4.417272994284348, + 1.4211439578367604, + 3.2084278071834387, 2.1002647215789483, 2.478117428845026, 7.843235818802062, + 4.482609787886799, 14.742011015515583, + 2.4644948975357543, 4.200182925056385, 1.8547623673745726, + 2.5569793387799873, 8.268738146118627, 0.17075516241577054, + 1.396457326265756, -0.8970479734796357, 9.982459249510216, + 9.6414354354547, 3.122639019004143, 5.208129305459214, 3.9995262966163194, + 4.231294939328255, + 7.811901950496888, 1.0384176311229965, 8.090803240651615, + 5.517392574032914, 2.720588981637568, 12.810847900217274, 3.2207719681897062, 1.9527694504544508, 6.975683242729285, + 2.2188489754209817, + 1.216644984420546, 5.962908178484416, 2.031201552091179, 3.296266063714319, + 4.466515861324439, 2.8497814258160656, + 8.192964901163, 3.5992640315712263, 6.028692328076521, 2.1798547277503113, 15.946078372524447, + 1.808998384878971, 11.270067835171865, + 6.871371912617845, + 10.7543365444907, + 3.5851608468405782, 9.886737882436176, + 1.6577795724854172, 10.069873531748522, + 6.838337781510158, + 2.8140106397303914, + 9.796798438371347, 3.419671289176756, 8.120498029715673, + 5.684517665809659, 3.276912806764646, 5.150771578281058, 11.536778020411017, 1.1283312841804798, + 0.6245367259271846, 5.2922772679270125, 6.618234052355605, 9.995383628078763, + 6.667161915203483, + 2.7663952915035583, + 7.088794017436608, + 0.8062377223694329, + 10.242193930931139, + 4.360002101322867, + 1.8314555360715414, 19.79728717826931, 8.221699603028048, + 2.8952225584161444, 1.756730298878706, + 1.5489533869547458, + 6.554555046928207, + 2.9506445106657284, 1.9973513226644182, 3.9146292154471363, 6.655009309637468, 7.306798402879964, 6.636471794024103, + 2.260282959510227, + 10.711151208122779, + 8.886751869073523, 1.2105875042335548, 5.977174263502021, 3.335659958519535, 4.9740231500169205, 5.696409647756136, + 1.0705006064863138, 12.304050151594982, 12.479961038493842, + 2.7577369570593313, + 1.5583724829086052, 5.267925637149455, 8.205193667618506, 6.64127892567596, 2.584589230653057, + 19.220787565376302, + 11.747177721006013, 1.4859153087462587, + 11.913345910554039, 3.094530550283568, + 8.548416778032148, 0.8210502191076455, -1.6565034675323356, + 7.820861292021009, + 1.9990073969609923, 3.4066291519265084, 2.1271109392217773, 11.528410984296546, 11.104263573155796, + 3.3055149993536586, 2.2723724206920943, 4.902928411074227, 2.32253510026496, @@ -7427,37 +8139,58 @@ 5.913072392765526, 4.240607888229912, 3.549793526789535, + 10.801997033393413, 5.190377999146584, 3.0969532739309678, 0.3993222635384932, + 3.6983355632779618, 3.4469460988229064, -0.12939358371016055, 4.275655223374612, 2.0051290473754992, + 5.5659640831102575, 5.675153024575338, 5.9090892410023175, 1.5297744205662447, 11.434182971375352, 20.61617591266843, + 5.980813130896052, 0.9834804292692843, 0.2894674597174777, 4.629916875604893, + 11.392634098208406, 5.166479641650803, 9.456054689668147, + 9.935060602525517, 6.707682575146893, + 10.484830696572319, 4.311981700299243, + 1.4336817995954865, 2.727290679463529, 1.346888081763368, + 3.302468230190364, + 5.418514383580711, 2.091256797952634, + 6.37549435871336, + 1.5095874110710257, 2.649932550296708, + 9.284430309229744, 6.72998362612404, 1.9431963436581852, + 1.6454232259011867, + 6.4265469265263135, 1.9958889934089596, 9.265758554728484, + 9.656119959668334, 1.1918107314354887, + 1.4877532763895729, + 3.3125553134392223, 10.799943755267028, + 2.3925614492070517, 5.368437067503507, + 1.1531378556870835, 6.050692810470485, + 8.844951680421557, 0.7575948792915393, 1.9941981378277107, 10.241776461541852, @@ -7466,16 +8199,31 @@ 0.9821083549665657, 1.865779046900708, 2.0294581789518995, + 4.316327316833101, 5.685763930151271, + 2.427878468800839, + 5.032176584239583, + 8.663123275956933, 2.072247638121533, + 2.472017720592417, 1.2025334601292297, + 4.723392071795626, + 7.760678492015194, 7.65936297015509, 4.512297107524395, 1.3890972245536044, + 2.2268083580850937, + 8.069141527274184, + 9.890735154579824, 10.881249015037312, + 5.864617047313935, 5.162651574559774, + 14.697940107047362, + 1.2293290998461295, + 3.0813246011646913, 4.170255155954141, 2.992416291482686, + 1.7918443168066227, 6.144238251062534 ], "yaxis": "y" @@ -7502,10 +8250,13 @@ -0.18565897666381712, -1.1962066240806708, -0.6451197546051243, + 0.36139560550841393, -0.21967188783751193, + 0.9686449905328892, -0.39210815313215763, -1.4153707420504142, -0.3427145165267695, + 2.463242112485286, -0.9093874547947389, -0.7832532923362371, -0.3220615162056756, @@ -7515,8 +8266,11 @@ -0.8571575564162826, -0.4465149520670211, -1.245738778711988, + 0.173180925851182, -0.883857436201133, + 0.3577873603482833, -1.377669367957091, + 0.570890510693167, -0.23681860674000887, -0.48536354782910346, -1.6127158711896517, @@ -7524,7 +8278,9 @@ -1.2002964070557762, -0.6533292325737119, -0.7076694656187807, + 0.010233061019587049, -0.20812225035727522, + 0.35701548596504734, -0.6929095952606542, -1.006017381499702, -1.2141886127877322, @@ -7536,21 +8292,26 @@ -0.01901620790268883, -1.0025293646378088, -0.40122047188583626, + 0.09767609854883172, -0.7673475628880495, -0.8397218421807761, -0.5993926454440222, -0.525755021680761, -0.759132661553698, + 1.8761708392158862, -0.5769036556624031, -0.898414671348358, + 1.2378163119734618, -0.26940683444455776, -0.05554769889661878, -1.3044695005048532, -1.0592135218889516, -0.5302576183724408, -0.553649305347182, + 1.9647251329163893, -0.11232804969082982, -0.22096959953322298, + 0.3112501545435361, -1.4222537095976742, -0.48712538376469605, -0.5923939242388692, @@ -7561,10 +8322,13 @@ -1.129706854657618, -2.211135309007885, -1.4785862457798415, + 0.24822058630033608, -0.8560838259088672, -1.7787202489042786, + 1.8820244964750337, -0.5112156764311852, -0.9896048202585809, + 0.055724912288694604, -1.0121043752601675, -1.2899608997410539, -1.295078772063616, @@ -7576,21 +8340,28 @@ -0.24032539815813503, -0.3609661658190799, -1.5566291735239037, + 0.39913611435207086, -0.36361221221385587, -1.7101683926566256, -1.348185422105713, + 0.34758170536167105, -0.7257438131534656, -0.6115178029919482, -0.9758732529773327, + 1.0536417966078395, -0.949398888831943, -0.7031764251258874, -0.0349884904969617, -0.7271371758248686, -0.07443342910004629, + 0.6105857452838231, -1.2767485758203094, + 1.4469778843537329, + 2.2988981236192503, -0.36283856043965906, -0.4455025214007718, -0.03468488738678118, + 0.6748194921666038, -0.5309969550018176, -0.5554771191602547, -0.5707462937494763, @@ -7600,16 +8371,21 @@ -0.7982972445384537, -0.7309300399419191, -0.8169356709872361, + 0.6454841811410754, -0.30777823495300083, -0.5589218472715883, -0.5020542243526112, -0.6919080698812444, -0.045586016355497805, + 0.34272534637770413, + 1.8009404329108156, -0.4461834332147797, -0.4523063192490767, -2.4238793266289567, -1.5839028234857233, -1.1583646891925428, + 0.8773622905756714, + 0.02688583899453078, -0.24717738252059693, -0.6819842479977986 ], @@ -7624,10 +8400,13 @@ 3.0690128883734977, 1.220890735050157, -0.041662233621488354, + 0.6961953522232988, 0.9684966647131934, + 0.37022479811316367, 0.6857247750865538, 1.6607787445225182, 0.7714890721589855, + 0.2932283210763533, -0.006609620796110771, 0.6625735024620792, 0.7463603174480453, @@ -7637,8 +8416,11 @@ -0.22801583443500123, 2.1185425201955312, 0.28249884985599855, + 0.7732179524811826, 2.235344242009358, + 0.7278364107088494, -0.13193646878975818, + 1.2083796733551395, -0.1274133661618491, 0.9583421724350449, 0.546634435940819, @@ -7646,7 +8428,9 @@ 0.5612829495120453, 0.13325704694822132, -0.21329937211077177, + 0.23774514758516135, 1.6902482968094241, + 1.321553286803081, 1.2902250784191982, 1.215945542264764, 1.044504848259474, @@ -7658,21 +8442,26 @@ 1.676371082302052, -0.17415559470725486, 0.6958426043425507, + 0.6438998876406478, 3.5346530386737682, -0.3080686703368427, 0.3060480529833499, -0.17788449644844853, 0.4243087140516217, + 0.6219673839330705, 0.5544139842534694, 0.9965106495802344, + -0.06893129760118054, 0.30199321209423885, 1.7835146960952513, 0.7403374643098577, 1.5427172005378376, 0.7966171611510633, 1.4974960434659323, + 2.0137295594897338, -0.35527474203586934, 2.1573391244783724, + -0.026035889723002387, 0.7185732716727131, 1.5555096433975422, 2.2534676479705995, @@ -7683,10 +8472,13 @@ 1.0839979397106765, 0.7084748568910306, 1.6513302029244321, + -0.04786952680948264, 1.26745207583228, 0.8628111749286197, + 1.247001323811258, 0.3402026026708754, 1.6258882297944637, + 0.5874809527489881, 0.495144846412771, 1.3330355409939436, 1.1826515112373168, @@ -7698,21 +8490,28 @@ 1.7549849484925293, 0.047415237960372, 1.4198868709995598, + 0.12769721495585934, 1.7532998335704464, 0.5926653452903705, 1.38330117482117, + -0.27039708231441456, 2.229467488522225, 3.023173842484077, 0.2780816245255471, + -0.15957451590038646, 0.6868657958466227, 0.4413806794008475, 0.31951244046391913, 1.970102291048323, 1.4495819348609282, + 0.18998965356374367, 0.014319226529760462, + 0.027734536892010525, + 0.4314563048571381, 0.14499195704924878, 1.07883838903741, 0.48371926719553804, + -0.22656128913687823, 0.8651378855151438, 1.4087472909536356, 0.5492932131051853, @@ -7722,16 +8521,21 @@ 0.9934776995019708, 1.1743639449794019, 1.0127147372030256, + 0.48215044053286554, 1.308100584997736, 1.0106740903175286, 0.29831162343818174, 0.6580208387866686, 0.960475599896778, + -0.08813660922281999, + 0.6014846074350846, 0.5248166371161477, 1.3193694568688028, 1.1313459223367046, 0.9128511545086413, 1.3801082802587534, + -0.4623391237991351, + 0.4572093839771795, 0.3652147054957546, -0.10979372598736035 ], @@ -8619,12 +9423,12 @@ "\n", "The generated oracle values for the potential outcomes can be used in a kernel regression to get an oracle estimator at the cutoff. \n", "\n", - "Since in the fuzzy design, we calculate the treatment effect on the treated, we drop defiers for the oracle computation." + "Since in the fuzzy design we calculate the treatment effect on the treated, we drop observation that did not follow the treatment assignment for the oracle computation." ] }, { "cell_type": "code", - "execution_count": 27, + "execution_count": 10, "metadata": {}, "outputs": [ { @@ -10917,7 +11721,7 @@ "oracle_model = KernelReg(endog=ite, exog=score, reg_type='ll', var_type='c', ckertype='gaussian')\n", "\n", "score_grid = np.linspace(-1, 1, 100)\n", - "oracle_effects, _ = oracle_model.fit(score_grid)\n", + "oracle_effects_fuzzy, _ = oracle_model.fit(score_grid)\n", "\n", "\n", "scatter = go.Scatter(\n", @@ -10929,7 +11733,7 @@ ")\n", "line = go.Scatter(\n", " x=score_grid,\n", - " y=oracle_effects,\n", + " y=oracle_effects_fuzzy,\n", " mode='lines',\n", " name='Average Effect Estimate',\n", " line=dict(color='red')\n", @@ -10959,12 +11763,12 @@ "\n", "$$\\hat{\\theta}_{\\text{FRD}}(h) = \\frac{\\hat{\\theta}_{\\text{SRD}}(h)}{\\hat{\\theta}_{\\text{D}}(h)} = \\frac{\\sum_{i=1}^n w_i(h)(Y_i-X_i^T\\hat{\\gamma}_{Y, h})}{\\sum_{i=1}^n w_i(h)(D_i-X_i^T\\hat{\\gamma}_{D, h})}$$\n", "\n", - "The packages ``rdrobust`` implements this estimation." + "Under the assumption, that there are no *Defiers* (= individuals that would always pick the opposite treatment of their assigned one), this effect can be interpreted as *Average Treatment Effect on the Treated*. The package ``rdrobust`` implements this estimation with a linear adjustment." ] }, { "cell_type": "code", - "execution_count": 30, + "execution_count": 11, "metadata": {}, "outputs": [ { @@ -10998,14 +11802,14 @@ "data": { "text/plain": [] }, - "execution_count": 30, + "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "rdrobust_linear = rdrobust(y=df['y'], x=df['score'], fuzzy=df['d'], covs=df[cov_names], c=0.0)\n", - "rdrobust_linear" + "rdrobust_fuzzy = rdrobust(y=df['y'], x=df['score'], fuzzy=df['d'], covs=df[cov_names], c=0.0)\n", + "rdrobust_fuzzy" ] }, { @@ -11014,30 +11818,37 @@ "source": [ "### RDD with flexible adjustment\n", "\n", - "[Noack, Olma and Rothe (2024)](https://arxiv.org/abs/2107.07942) propose an estimator that reduces the variance of the above esimator, using a flexible adjustment of the outcome by ML. For more details, see our User Guide. The estimator here takes the form \n", + "[Noack, Olma and Rothe (2024)](https://arxiv.org/abs/2107.07942) propose an estimator that reduces the variance of the above esimator, using a flexible adjustment of the outcome by ML. For more details, see our user guide. The estimator here takes the form \n", "\n", - "$$\\hat{\\theta}_{\\text{RDFlex, FRD}}(h) = \\frac{\\sum_{i=1}^n w_i(h)(Y_i - \\hat{\\eta}_Y(X_i))}{\\sum_{i=1}^n w_i(h)(D_i - \\hat{eta}_D(X_i))},$$\n", + "$$\\hat{\\theta}_{\\text{RDFlex, FRD}}(h) = \\frac{\\sum_{i=1}^n w_i(h)(Y_i - \\hat{\\eta}_Y(X_i))}{\\sum_{i=1}^n w_i(h)(D_i - \\hat{\\eta}_D(X_i))},$$\n", "\n", "\n", "with $\\eta_Y(\\cdot), \\eta_D(\\cdot)$ being potentially nonlinear adjustment functions.\n", "\n", "We initialize a `DoubleMLData` object using the usual package syntax.\n", "\n", - "Note: `x_cols` refers to the covariates to be adjusted for, and `s_col` is the score." + "Note: `x_cols` refers to the covariates to be adjusted for, and `s_col` is the score. `d_cols` in the fuzzy case has to be the treatment received." ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 12, "metadata": {}, "outputs": [], "source": [ "dml_data = dml.DoubleMLData(df, y_col='y', d_cols='d', x_cols=cov_names, s_col='score')" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This time, we also have to specify a classifier that adjusts the treatment assignment probabilities." + ] + }, { "cell_type": "code", - "execution_count": null, + "execution_count": 13, "metadata": {}, "outputs": [ { @@ -11046,8 +11857,8 @@ "text": [ "Method Coef. S.E. t-stat P>|t| 95% CI\n", "-------------------------------------------------------------------------\n", - "Conventional 3.475 2.231 1.558 1.193e-01 [-0.897, 7.847]\n", - "Robust - - 2.021 4.330e-02 [0.185, 12.112]\n" + "Conventional 3.259 2.007 1.624 1.044e-01 [-0.674, 7.192]\n", + "Robust - - 1.668 9.527e-02 [-0.692, 8.607]\n" ] } ], @@ -11055,38 +11866,49 @@ "ml_g = LGBMRegressor(n_estimators=500, learning_rate=0.01, verbose=-1)\n", "ml_m = LGBMClassifier(n_estimators=500, learning_rate=0.01, verbose=-1)\n", "\n", - "rdflex_model = RDFlex(dml_data,\n", + "rdflex_fuzzy = RDFlex(dml_data,\n", " ml_g,\n", " ml_m,\n", - " fuzzy=fuzzy,\n", + " fuzzy=True,\n", " n_folds=5,\n", " n_rep=1)\n", - "rdflex_model.fit(n_iterations=2)\n", + "rdflex_fuzzy.fit(n_iterations=2)\n", "\n", - "print(rdflex_model)" + "print(rdflex_fuzzy)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Also for the fuzzy case, we observe a significant decrease in estimation standard error." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### Global and Local Learners\n", + "### Advanced: Global and Local Learners, Stacked Ensembles\n", "\n", - "All learners have to support the `sample_weight` in their `fit` method." + "By default, ``RDFlex`` fits the ML methods using kernel weights, there fore it is a \"local\" fit around the cutoff. If the adjustment should also compain \"global\" information from the full support of $S$ available in the data, the use of a ``GlobalLearner`` is recommended. The learners can also be stacked. All learners have to support the `sample_weight` in their `fit` method. By stacking and using local and global learners, it is possible to further tune the estimation and potentially reduce standard errors even further." ] }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 14, "metadata": {}, "outputs": [], "source": [ - "from doubleml.utils import GlobalRegressor, GlobalClassifier" + "from doubleml.utils import GlobalRegressor, GlobalClassifier\n", + "\n", + "from sklearn.linear_model import LinearRegression, LogisticRegression\n", + "from sklearn.ensemble import RandomForestRegressor, RandomForestClassifier\n", + "from sklearn.ensemble import StackingClassifier, StackingRegressor" ] }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 15, "metadata": {}, "outputs": [], "source": [ @@ -11119,7 +11941,7 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": 17, "metadata": {}, "outputs": [ { @@ -11128,21 +11950,93 @@ "text": [ "Method Coef. S.E. t-stat P>|t| 95% CI\n", "-------------------------------------------------------------------------\n", - "Conventional 1.154 1.046 1.103 2.699e-01 [-0.896, 3.205]\n", - "Robust - - 1.333 1.825e-01 [-1.000, 5.251]\n" + "Conventional 1.919 1.142 1.680 9.291e-02 [-0.319, 4.157]\n", + "Robust - - 1.514 1.300e-01 [-0.611, 4.759]\n" ] } ], "source": [ - "rdflex_model = RDFlex(dml_data,\n", - " ml_g,\n", - " ml_m,\n", - " fuzzy=fuzzy,\n", - " n_folds=5,\n", - " n_rep=1)\n", - "rdflex_model.fit(n_iterations=2)\n", + "rdflex_fuzzy_stack = RDFlex(dml_data,\n", + " ml_g,\n", + " ml_m,\n", + " fuzzy=fuzzy,\n", + " n_folds=5,\n", + " n_rep=1)\n", + "rdflex_fuzzy_stack.fit(n_iterations=2)\n", + "\n", + "print(rdflex_fuzzy_stack)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "For a conclusion, we look at a visualization of the estimated coefficient and the confidence intervals. We see that by using the flexible adjustment, it is possible to shrink confidence bands." + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [], + "source": [ + "df_sharp = pd.DataFrame({\"coef\": [rdrobust_sharp.coef.values[0][0], rdflex_sharp.coef[0]],\n", + " \"CI lower\": [rdrobust_sharp.ci.values[0][0], rdflex_sharp.confint().values[0][0]],\n", + " \"CI upper\": [rdrobust_sharp.ci.values[0][1], rdflex_sharp.confint().values[0][1]],\n", + " \"method\": [\"Linear Adj.\", \"Flexible Adj.\"]})\n", + "df_fuzzy = pd.DataFrame({\"coef\": [rdrobust_fuzzy.coef.values[0][0], rdflex_fuzzy.coef[0], rdflex_fuzzy_stack.coef[0]],\n", + " \"CI lower\": [rdrobust_fuzzy.ci.values[0][0], rdflex_fuzzy.confint().values[0][0], rdflex_fuzzy_stack.confint().values[0][0]],\n", + " \"CI upper\": [rdrobust_fuzzy.ci.values[0][1], rdflex_fuzzy.confint().values[0][1], rdflex_fuzzy_stack.confint().values[0][1]],\n", + " \"method\": [\"Linear Adj.\", \"Flexible Adj.\", \"Flexible Adj. (Stacked)\"]})" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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Srt379YPP/yg7777Tr169VJwcLDVwGlZmTt3rhYtWqSTJ0/q8uXLSktLs4z0fvr0af3111+69957c9zG2LFjZTabtWPHDsuxX1Ku/c/vv/+e5/7A2dlZly5dyjGPm5X5gvu2226z/G0ymSTJ0rknJSXpqaee0rPPPptpvVq1aik5OVkBAQEKCAjQypUr5e7urpMnTyogIEBpaWlW8dn9B78uPT1dS5cuVVxcnMqXL2/VvmjRolw/XABQmCpWrJjlZVr/lJSUJAcHB+3evTvTfXGVKlWy/H369Gn9/vvvcnBw0JEjRxQYGFhouSYlJUmSNmzYYPXFRlKOA3otXLhQf//9t5ydnS1tGRkZ2rdvn6ZOnVpo+ZU19KsoKhynOE7lhs+IbT8j1apV0/nz5zO1lytXTm3btlXbtm01ZswYrVixQo8//rheeumlbAetW716tcaNG6c333xTHTp0kIuLi9544w3t3LlTkqz2LyfdunXThx9+qI0bN2rQoEGW9tz6n/yMMP/333/L3d09z/FlvuDOyZ133qkDBw5k+x/1t99+07lz5zR9+nT5+PhIUr6fy3bdV199pYsXL+qXX36x+o8eFRWlIUOG6MKFC2rUqJGuXr2q3bt3q23btpKkw4cPl5pR/wCUPK1atVJ6erpOnz6tzp07Zxv3xBNPqFmzZho6dKiGDx8uf39/NW7cONv4kydP6q+//pK3t7ckaceOHSpXrpwaNmyYKdbPz09ms1knT57UPffck6e8z507p88++0yrV69WkyZNLO3p6em66667tGnTJgUGBsrLy0s7d+7U3XffLUmWY/Cdd96Zp9eBNfpV2APHKeSGz0jBtGrVSgcOHMg17vrVSdcHKHN0dMz03O4ffvhBHTt2tLrH/dixY5a/XVxcVKdOHW3ZskVdu3bN9rUeeOAB9erVS48++qgcHBw0YMAASbn3P/npD6KionK86uCfSl3BnZCQoL1791q13X777ZaOOz/+85//6F//+pdGjRqlYcOGqWLFijpw4IA2b96sd955R7Vq1ZKjo6PmzJmjp59+WlFRUZo2bVqB8l64cKF69uypFi1aWLX7+flp7NixWrlypUaOHKnAwEA99dRTmjdvnsqXL68xY8bk+ovP4MGDVaNGDYWFhRUoNwDIToMGDTRo0CANHjxYb775plq1aqUzZ85oy5Ytat68uXr27Km5c+cqMjJS+/btk4+PjzZs2KBBgwZpx44dcnR0zHK7Tk5OCgoK0syZM5WYmKhnn31WjzzySKZL8KRrnfC4ceM0duxYZWRk6K677lJCQoJ++OEHubq6KigoKNM6y5cv1+23365HHnnEchb2uvvuu08LFy5UYGCgnnvuOU2fPl133HGHGjVqpLfeeivXYuydd97RunXrtGXLlry/kcUY/Wpm9KslC8epzErbcepW8RnJLC+fkYCAAC1dutSqrV+/furUqZM6duwoT09PRUdHKzQ0VA0aNFCjRo0kXXvyw86dO3X8+HFVqlRJVatW1R133KFly5Zp48aN8vX11fLly/XTTz9ZnRGfMmWKnn76aVWvXl09evTQxYsX9cMPP2j06NFWOTz44INavny5Hn/8cZUvX179+vXLtf9p2LBhnvuD7du356tvKnWjlEdERKhVq1ZWU0Evp2jevLm2bdum33//XZ07d1arVq00adIky69U7u7uWrJkieWRI9OnT9fMmTPz/Trx8fHasGGD1TPsritXrpwefPBBy2iDixcvlre3t+655x499NBDevLJJ3N95t/JkycVGxub77wAIC8WL16swYMH6/nnn1fDhg3Vp08f/fTTT6pVq5YOHTqkF154Qe+++66lQHv33Xd19uxZTZw4Mdtt1q9fXw899JDuu+8+de/eXc2bN9e7776bbfy0adM0ceJEhYWFqXHjxgoMDNSGDRuyvXRt0aJFevDBBzN9QZGkvn376vPPP9fZs2f1/PPP6/HHH1dQUJDlErcHH3wwx/fj7NmzVr/Kl3T0q5nRr5Y8HKeslbbjVGHgM2ItL5+RQYMGaf/+/Tp8+LClLSAgQF988YV69eqlBg0aKCgoSI0aNdKmTZsst/eMGzdODg4O8vPzs9w69NRTT+mhhx5S//791b59e507dy7TiO5BQUGaNWuW3n33XTVp0kT333+/jhw5kmVu/fr109KlS/X4449r7dq1ufY/Ut76g8jISCUkJKhfv345vjc3MxmMqFDqeHl5adq0aRo2bJi9UwGAUm/gwIFycHDQihUr7J0KbIR+FSUdxynkpqCfkRdeeEGJiYl67733bJRZ8dK/f3+1aNFCL774Yp7XKXVnuMuyS5cuafPmzYqPj7e6jwMAUPiuXr2qAwcOKDIykmNuKUW/ipKO4xRyc6ufkZdeekm1a9e2DI5ZmqWlpalZs2YaO3Zsvtaj4C5F3n//fQ0YMEBjxoxRhw4d7J0OAJRqUVFRatOmjZo0aaKnn37a3unABuhXUdJxnEJubvUzUrlyZb344osqV670l5WOjo56+eWX8zxi+nVcUg4AAAAAgA2U/p8iAAAAAACwAwpuAAAAAABsgIIbAAAAAAAboOAGAAAAAMAGKLgBAAAAALABCm4AFl26dNGYMWMKfbtTpkxRy5YtC327AAAUV/SpACQKbqDECA4OlslkyvIZiSNHjpTJZFJwcHCethURESGTyaQLFy4UbpIAAJQA9KkAigoFN1CC+Pj4aPXq1bp8+bKlLSUlRatWrVKtWrXsmBkAACULfSqAokDBDZQgd955p3x8fLR27VpL29q1a1WrVi21atXK0paRkaGwsDD5+vrK2dlZLVq00CeffCJJOn78uLp27SpJqlKlSqZf8TMyMjR+/HhVrVpVnp6emjJlilUOJ0+eVO/evVWpUiW5urrqkUceUXx8vFXM9OnT5eHhIRcXFw0dOlQpKSmF/E4AAHBr6FMBFAUKbqCEeeKJJ7R48WLL/KJFizRkyBCrmLCwMC1btkzz58/X/v37NXbsWD322GPatm2bfHx89Omnn0qSDh8+rNjYWM2ePduy7tKlS1WxYkXt3LlTM2bM0CuvvKLNmzdLuvbFoXfv3vr777+1bds2bd68WX/88Yf69+9vWf+jjz7SlClT9Nprr+nnn3+Wl5eX3n33XVu+JQAAFAh9KgBbMxmGYdg7CQC5Cw4O1oULF/TBBx/Ix8dHhw8fliQ1atRIMTExGjZsmCpXrqz33ntPVatW1TfffKMOHTpY1h82bJguXbqkVatWKSIiQl27dtX58+dVuXJlS0yXLl2Unp6u7du3W9ratWunf//735o+fbo2b96sHj16KDo6Wj4+PpKkAwcOqEmTJtq1a5fatm2rjh07qlWrVpo7d65lG//617+UkpKivXv32vZNAgAgD+hTARSV8vZOAED+uLu7q2fPnlqyZIkMw1DPnj1VrVo1y/KjR4/q0qVL6tatm9V6aWlpVpfIZad58+ZW815eXjp9+rQk6eDBg/Lx8bF8MZAkPz8/Va5cWQcPHlTbtm118ODBTIPQdOjQQVu3bs33vgIAYEv0qQBsjYIbKIGeeOIJjRo1SpKsfvWWpKSkJEnShg0bVKNGDatlZrM5123fdtttVvMmk0kZGRm3ki4AAMUWfSoAW+IebqAECgwMVFpamq5cuaKAgACrZX5+fjKbzTp58qTq169vNV3/Fd3R0VGSlJ6enq/Xbdy4sWJiYhQTE2NpO3DggC5cuCA/Pz9LzM6dO63W27FjR773EQCAokCfCsCWOMMNlEAODg46ePCg5e+bubi4aNy4cRo7dqwyMjJ01113KSEhQT/88INcXV0VFBSk2rVry2Qy6csvv9R9990nZ2dnVapUKdfX9ff3V7NmzTRo0CDNmjVLV69e1YgRI3TPPfeoTZs2kqTnnntOwcHBatOmjTp16qSVK1dq//79qlu3buG/EQAA3CL6VAC2xBluoIRydXWVq6trlsumTZumiRMnKiwsTI0bN1ZgYKA2bNggX19fSVKNGjU0depUTZgwQR4eHpZL6XJjMpn02WefqUqVKrr77rvl7++vunXras2aNZaY/v37a+LEiRo/frxat26tEydO6Jlnnrn1HQYAwEboUwHYCqOUAwAAAABgA5zhBgAAAADABii4AQAAAACwAQpuAAAAAABsgIIbAAAAAAAboOAGAAAAAMAGKLgBAAAAALABCm4AAAAAAGyAghsAAAAAABug4AYAAAAAwAYouAEAAAAAsAEKbgAAAAAAbICCGwAAAAAAG/g/6oZz1ylva2sAAAAASUVORK5CYII=", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "fig, axes = plt.subplots(nrows=1, ncols=2, figsize=(10, 4))\n", + "\n", + "axes[0].errorbar(\n", + " df_sharp['method'],\n", + " df_sharp['coef'],\n", + " yerr=(df_sharp['coef'] - df_sharp['CI lower'], df_sharp['CI upper'] - df_sharp['coef']),\n", + " fmt='o',\n", + " capsize=5,\n", + " capthick=2\n", + ")\n", + "axes[0].set_title('Sharp Design')\n", + "axes[0].set_ylabel('Coefficient')\n", + "axes[0].set_xlabel('Method')\n", + "axes[0].axhline(oracle_effects_sharp[49:51].mean(), linestyle=\"--\", color=\"r\")\n", + "\n", + "axes[1].errorbar(\n", + " df_fuzzy['method'],\n", + " df_fuzzy['coef'],\n", + " yerr=(df_fuzzy['coef'] - df_fuzzy['CI lower'], df_fuzzy['CI upper'] - df_fuzzy['coef']),\n", + " fmt='o',\n", + " capsize=5,\n", + " capthick=2\n", + ")\n", + "axes[1].set_title('Fuzzy Design')\n", + "axes[1].set_ylabel('Coefficient') \n", + "axes[1].set_xlabel('Method')\n", + "axes[1].axhline(oracle_effects_fuzzy[49:51].mean(), linestyle=\"--\", color=\"r\")\n", "\n", - "print(rdflex_model)" + "plt.tight_layout()" ] }, { @@ -11155,7 +12049,7 @@ ], "metadata": { "kernelspec": { - "display_name": "dml_rdd", + "display_name": "didnotebook", "language": "python", "name": "python3" }, From 2803eda81df0c65da6078abefb69fd019e2a80a9 Mon Sep 17 00:00:00 2001 From: Oliver Schacht Date: Tue, 22 Oct 2024 11:28:57 +0200 Subject: [PATCH 32/71] update (still draft) --- doc/shared/models/rdd.rst | 34 +++++++++++++++++++++++++++------- 1 file changed, 27 insertions(+), 7 deletions(-) diff --git a/doc/shared/models/rdd.rst b/doc/shared/models/rdd.rst index ec90349a..fd7baef1 100644 --- a/doc/shared/models/rdd.rst +++ b/doc/shared/models/rdd.rst @@ -23,7 +23,7 @@ The LATE is identified as the difference in the conditional expectation of :math .. math:: - \theta_{\text{SRD}} = \lim_{\epsilon \to 0} \left[ \mathbb{E}[Y_i | S_i = c + \epsilon] - \mathbb{E}[Y_i | S_i = c - \epsilon] \right] + \theta_{0} = \mathbb[Y(1)-Y(0)\mid S = c] The assumptions for identifying the LATE in a sharp RDD are @@ -35,12 +35,32 @@ Without the use of covariates, :math:`\theta` is typically estimated by running .. math:: - \hat{\theta}_{\text{SRD}} = \sum_{i=1}^n w_i(h)Y_i, + \hat{\theta}_{\text{base}}(h) = \sum_{i=1}^n w_i(h)Y_i, where the :math:`w_i(h)` are local linear regression weights that depend on the data through the realizations of the running variable only and :math:`h > 0` is a bandwidth. +Under standard conditions, which include that the running variable is continuously distributed, and that the bandwidth :math:`h` tends to zero at an appropriate rate, the estimator :math:`\hat{\theta}_{\text{base}}(h)` is approximately normally distributed in large samples, with bias of order :math:`h^2` and variance of order :math:`(nh)^{-1}`: + +.. math:: + \hat{\tau}_{\text{base}}(h) \stackrel{a}{\sim} N\left(\tau + h^2 B_{\text{base}},(nh)^{-1}V_{\text{base}}\right). + +If covariates are available, they can be used to improve the accuracy of empirical RD estimates. The most popular strategy is to include them linearly and without kernel localization in the local linear regression. By simple least squares algebra, this "linear adjustment" estimator can be written as a no-covariates estimator with the covariate-adjusted outcome :math:`Y_i - Z_i^{\top} \widehat{\gamma}_h`, where :math:`\widehat{\gamma}_h` is a minimizer: + +.. math:: + \widehat{\tau}_{\text{lin}}(h) = \sum w_i(h)\left(Y_i - X_i^{\top} \widehat{\gamma}_h\right). + +If :math:`\mathbb{E}[X_i | S_i = s]` is twice continuously differentiable around the cutoff, then the distribution of :math:`\widehat{\tau}_{\text{lin}}(h)` is similar to the one of the base estimator with potentially smaller variance termin. +As this linear adjustment might not exploit the available covariate information efficiently, DoubleML features an RDD estimator with flexible covariate adjustment based on potentially nonlinear adjustment functions :math:`\eta`. The estimator takes the following form: +.. math:: + \widehat{\theta}_{\text{RDFlex}}(h; \eta) = \sum w_i(h) M_i(\eta), \quad M_i(\eta) = Y_i - \eta(Z_i). + +.. math:: + \widehat{\theta}_{\text{RDFlex}}(h; \eta) \stackrel{a}{\sim} N\left(\tau + h^2 B_{\text{base}}, (nh)^{-1} V(\alpha)\right). + +.. math:: + V(\eta) \geq V(\eta_0) \text{ for all } \eta. @@ -52,16 +72,16 @@ In a **Fuzzy RDD**, treatment assignment is identical to the sharp RDD (:math:`T The **LATE** is identified by comparing the jump in the probability of receiving treatment with the jump in the outcome. -The LATE for Fuzzy RDD is given by: +The parameter of interest in the Fuzzy RDD is the average treatment effect on the treated: .. math:: + \theta_{0} = \mathbb[Y(1, 1)-Y(0, 0)\mid S = c, \{i\in \text{compliers}\}] - \theta_{\text{FRD}} = \frac{\lim_{\epsilon \to 0} \left[ \mathbb{E}[Y_i | S_i = c + \epsilon] - \mathbb{E}[Y_i | S_i = c - \epsilon] \right]}{\lim_{\epsilon \to 0} \left[ \mathbb{E}[D_i | S_i = c + \epsilon] - \mathbb{E}[D_i | S_i = c - \epsilon] \right]} - -The assumptions for identifying the LATE in a fuzzy RDD are +with :math:`Y_i(T_i, D_i(T_i))` being the potential outcome under the potential treatments. The assumptions for identifying the ATT in a fuzzy RDD are - **Continuity of Potential Outcomes:** Similar to sharp RDD, the potential outcomes :math:`Y_i(1)` and :math:`Y_i(0)` must be continuous at the cutoff. - **Continuity of Treatment Assignment Probability:** The probability of receiving treatment :math:`\mathbb{E}[D_i | S_i]` must change discontinuously at the cutoff, but there should be no other jumps in the probability. -- **Monotonicity:** There must be no "defiers", meaning individuals for whom the treatment assignment goes in the opposite direction of the score. \ No newline at end of file +- **Monotonicity:** There must be no "defiers", meaning individuals for whom the treatment assignment goes in the opposite direction of the score. + From 63817beddf59cf19fe38dc879f5e5f045b74a6bd Mon Sep 17 00:00:00 2001 From: SvenKlaassen <47529404+SvenKlaassen@users.noreply.github.com> Date: Tue, 22 Oct 2024 12:46:42 +0200 Subject: [PATCH 33/71] Update py_double_ml_rdflex.ipynb --- doc/examples/py_double_ml_rdflex.ipynb | 157 +++++++++++++------------ 1 file changed, 85 insertions(+), 72 deletions(-) diff --git a/doc/examples/py_double_ml_rdflex.ipynb b/doc/examples/py_double_ml_rdflex.ipynb index cfa2554b..2e8a27c5 100644 --- a/doc/examples/py_double_ml_rdflex.ipynb +++ b/doc/examples/py_double_ml_rdflex.ipynb @@ -6,11 +6,13 @@ "source": [ "# DoubleML for Flexible Covariate Adjustment in Regression Discontinuity Designs (RDD)\n", "\n", - "This notebook demonstrates how to use RDD designs within ``DoubleML``. Our implementation ``RDFlex`` follows the work from [Noack, Olma and Rothe (2024)](https://arxiv.org/abs/2107.07942). \n", + "This notebook demonstrates how to use RDD designs within ``DoubleML``. Our implementation, ``RDFlex``, is based on the paper _\"Flexible Covariate Adjustments in Regression Discontinuity Designs\"_ by [Noack, Olma and Rothe (2024)](https://arxiv.org/abs/2107.07942). \n", + "\n", + "In regression discontinuity designs (RDD) treatment assignment is determined by a continuous running variable $S$ (or \"score\") crossing a known threshold $c$ (or \"cutoff\"). We aim to estimate the local average treatment effect\n", "\n", - "In RDD treatment assignment is determined by a continuous running variable (\"score\", $S$) crossing a known threshold (\"cutoff\", $c$). We aim to estimate the local average treatment effect \n", "$$\\theta_{0} = \\mathbb{E}[Y_i(1)-Y_i(0)\\mid S = c]$$\n", - "at the cutoff value. We therefore assume, that individuals are not able to manipulate their score in the neighborhood of the cutoff, and that there is a discontinuity in outcome which is sorely to be explained by the score." + "\n", + "at the cutoff value. We therefore assume, that individuals are not able to manipulate their score in the neighborhood of the cutoff and that there is a discontinuity in the outcome that can be explained solely by the score." ] }, { @@ -45,7 +47,8 @@ "\n", "### Generate Data\n", "\n", - "The function ``make_simple_rdd_data()`` can be used to generate data of a rather standard RDD setting. If we set ``fuzzy = False``, the generated data follows a sharp RDD. We also generate covariates $X$ that can be used to adjust the estimation at a later stage." + "The function ``make_simple_rdd_data()`` can be used to generate data of a rather standard RDD setting. If we set ``fuzzy = False``, the generated data follows a sharp RDD. We also generate covariates $X$ that can be used to adjust the estimation at a later stage.\n", + "In this example, the cutoff is set to $c = 0$." ] }, { @@ -149,8 +152,7 @@ "source": [ "np.random.seed(123)\n", "\n", - "fuzzy = False\n", - "data_dict = make_simple_rdd_data(n_obs=1000, fuzzy=fuzzy)\n", + "data_dict = make_simple_rdd_data(n_obs=1000, fuzzy=False)\n", "\n", "cov_names = ['x' + str(i) for i in range(data_dict['X'].shape[1])]\n", "df = pd.DataFrame(\n", @@ -160,18 +162,18 @@ "df.head()" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Comparing the observed outcomes, we can clearly see a discontinuity at the cutoff value of $c = 0$." + ] + }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "C:\\Users\\BAQ7040\\AppData\\Roaming\\Python\\Python311\\site-packages\\plotly\\express\\_core.py:1979: FutureWarning: When grouping with a length-1 list-like, you will need to pass a length-1 tuple to get_group in a future version of pandas. Pass `(name,)` instead of `name` to silence this warning.\n" - ] - }, { "data": { "application/vnd.plotly.v1+json": { @@ -3097,7 +3099,15 @@ "source": [ "### Oracle Values and Comparisons\n", "\n", - "The generated oracle values for the potential outcomes can be used in a kernel regression to get an oracle estimator at the cutoff. " + "As the data is generated we have access to the \"true\" potential outcomes. This enables us to observe the individual treatment effect (ITE)\n", + "\n", + "$$Y_i(1) - Y_i(0)$$\n", + "\n", + "for all individuals. As the effect at the cutoff is the average of these ITEs\n", + "\n", + "$$\\theta_{0} = \\mathbb{E}[Y_i(1)-Y_i(0)\\mid S = c],$$\n", + "\n", + "the ITEs can be used in a kernel regression to get an oracle estimator at the cutoff, as a local weighted average." ] }, { @@ -3109,7 +3119,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "The oracle LATE is estimated as 0.977950766577146\n" + "The oracle ATE is estimated as 0.977950766577146 at the cutoff c=0.\n" ] }, { @@ -6194,7 +6204,6 @@ "score_grid = np.linspace(-1, 1, 100)\n", "oracle_effects_sharp, _ = oracle_model.fit(score_grid)\n", "\n", - "\n", "scatter = go.Scatter(\n", " x=score,\n", " y=ite,\n", @@ -6219,7 +6228,7 @@ " legend=dict(x=0.8, y=0.2)\n", ")\n", "\n", - "print(f\"The oracle LATE is estimated as {oracle_model.fit([0])[0][0]}\")\n", + "print(f\"The oracle ATE is estimated as {oracle_model.fit([0])[0][0]} at the cutoff c={0}.\")\n", "\n", "fig.show()" ] @@ -6291,16 +6300,18 @@ "source": [ "### RDD with flexible adjustment\n", "\n", - "[Noack, Olma and Rothe (2024)](https://arxiv.org/abs/2107.07942) propose an estimator that reduces the variance of the above esimator, using a flexible adjustment of the outcome by ML. For more details, see our User Guide. The estimator here takes the form \n", + "[Noack, Olma and Rothe (2024)](https://arxiv.org/abs/2107.07942) propose an estimator that reduces the variance of the above esimator, using a flexible adjustment of the outcome by machine learning. For more details, see our User Guide. The estimator here takes the form \n", "\n", "$$\\hat{\\theta}_{\\text{RDFlex}}(h) = \\sum_{i=1}^n w_i(h)M_i(\\eta),\\quad M_i(\\eta) = Y_i - \\eta(X_i),$$\n", "\n", - "\n", "with $\\eta(\\cdot)$ being potentially nonlinear adjustment functions.\n", "\n", - "We initialize a `DoubleMLData` object using the usual package syntax.\n", + "We initialize a `DoubleMLData` object using the usual package syntax:\n", "\n", - "Note: `x_cols` refers to the covariates to be adjusted for, and `s_col` is the score. `y_col` is the observed outcome, on which we want to estimate the effect at the cutoff. In the sharp design, `d_cols` is an indicator whether an observation is left or right of the cutoff ($\\mathbb{I}[S_i > c]$)." + " - `y_col` refers to the observed outcome, on which we want to estimate the effect at the cutoff\n", + " - `s_col` refers to the score\n", + " - `x_cols` refers to the covariates to be adjusted for\n", + " - `d_cols` is an indicator whether an observation is treated or not. In the sharp design, this should be identical to an indicator whether an observation is left or right of the cutoff ($D_i = \\mathbb{I}[S_i > c]$)" ] }, { @@ -6330,8 +6341,8 @@ "text": [ "Method Coef. S.E. t-stat P>|t| 95% CI\n", "-------------------------------------------------------------------------\n", - "Conventional 1.030 0.129 7.973 1.549e-15 [0.777, 1.283]\n", - "Robust - - 6.736 1.626e-11 [0.702, 1.279]\n" + "Conventional 1.091 0.120 9.072 1.169e-19 [0.855, 1.327]\n", + "Robust - - 6.206 5.429e-10 [0.639, 1.229]\n" ] } ], @@ -6352,7 +6363,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "It is visible that the flexible adjustment decreases the standard error in the estimation and therefore provides tighter confidence intervals." + "It is visible that the flexible adjustment decreases the standard error in the estimation and therefore provides tighter confidence intervals. For coverage simulations, see the [DoubleML Coverage Repository](https://docs.doubleml.org/doubleml-coverage/dev/rdd/rdd.html).\n", + "\n", + "`RDFlex` uses a iterative fitting approach to determine a preliminary bandwidth selections for the local adjustments. The default number of iterations is `n_iterations=2`, according to [Noack, Olma and Rothe (2024)](https://arxiv.org/abs/2107.07942)." ] }, { @@ -6361,17 +6374,17 @@ "source": [ "## Fuzzy RDD\n", "\n", - "In the fuzzy design, the treatment assignment is still deterministic given the score ($T_i = \\mathbb{I}[S_i > c]$).\n", - "However, in the neighborhood of the cutoff, there is a probability of observations not picking up the treatment they were assignt. These observations cause the probability jump of treatment at the cutoff to be smaller than 1.\n", + "In the fuzzy RDDs, the treatment assignment is still deterministic given the score ($T_i = \\mathbb{I}[S_i > c]$).\n", + "However, in the neighborhood of the cutoff, there is a probability of observations not picking up the treatment they were assigned. These observations cause the probability jump of treatment at the cutoff to be smaller than 1.\n", "\n", "### Generate Data\n", "\n", - "The function ``make_simple_rdd_data()`` with ``fuzzy = True`` generates basic data for the fuzzy case." + "The function ``make_simple_rdd_data()`` with ``fuzzy = True`` generates basic data for the fuzzy case. The cutoff is still set to $c = 0$." ] }, { "cell_type": "code", - "execution_count": 8, + "execution_count": null, "metadata": {}, "outputs": [ { @@ -6470,8 +6483,7 @@ "source": [ "np.random.seed(42)\n", "\n", - "fuzzy = True\n", - "data_dict = make_simple_rdd_data(n_obs=1000, fuzzy=fuzzy)\n", + "data_dict = make_simple_rdd_data(n_obs=1000, fuzzy=True)\n", "\n", "cov_names = ['x' + str(i) for i in range(data_dict['X'].shape[1])]\n", "df = pd.DataFrame(\n", @@ -6481,21 +6493,18 @@ "df.head()" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Comparing the observed outcomes, the discontinuity is much less pronounced than in the sharp case." + ] + }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "C:\\Users\\BAQ7040\\AppData\\Roaming\\Python\\Python311\\site-packages\\plotly\\express\\_core.py:1979: FutureWarning:\n", - "\n", - "When grouping with a length-1 list-like, you will need to pass a length-1 tuple to get_group in a future version of pandas. Pass `(name,)` instead of `name` to silence this warning.\n", - "\n" - ] - }, { "data": { "application/vnd.plotly.v1+json": { @@ -9421,9 +9430,9 @@ "source": [ "### Oracle Values and Comparisons\n", "\n", - "The generated oracle values for the potential outcomes can be used in a kernel regression to get an oracle estimator at the cutoff. \n", + "As in the sharp design, the ITEs can be used to obtain an oracle estimator at the cutoff.\n", "\n", - "Since in the fuzzy design we calculate the treatment effect on the treated, we drop observation that did not follow the treatment assignment for the oracle computation." + "Remark that in the fuzzy design (ADD Assumptions), we can interpret the ratio as the treatment effect on compliers such that we have to restrict the oracle computation on the corresponding subpoipulation." ] }, { @@ -9435,7 +9444,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "The oracle LATE is estimated as 0.9087280080883967\n" + "The oracle ATE on compliers is estimated as 0.9087280080883967 at the cutoff c=0.\n" ] }, { @@ -11723,7 +11732,6 @@ "score_grid = np.linspace(-1, 1, 100)\n", "oracle_effects_fuzzy, _ = oracle_model.fit(score_grid)\n", "\n", - "\n", "scatter = go.Scatter(\n", " x=score,\n", " y=ite,\n", @@ -11748,7 +11756,7 @@ " legend=dict(x=0.8, y=0.2)\n", ")\n", "\n", - "print(f\"The oracle LATE is estimated as {oracle_model.fit([0])[0][0]}\")\n", + "print(f\"The oracle ATE on compliers is estimated as {oracle_model.fit([0])[0][0]} at the cutoff c={0}.\")\n", "\n", "fig.show()" ] @@ -11812,6 +11820,13 @@ "rdrobust_fuzzy" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The fuzzy design usually has much larger standard errors than the sharp design, as the jump in treatment probability adds further estimation uncertainty." + ] + }, { "cell_type": "markdown", "metadata": {}, @@ -11825,9 +11840,12 @@ "\n", "with $\\eta_Y(\\cdot), \\eta_D(\\cdot)$ being potentially nonlinear adjustment functions.\n", "\n", - "We initialize a `DoubleMLData` object using the usual package syntax.\n", + "We initialize a `DoubleMLData` object using the usual package syntax:\n", "\n", - "Note: `x_cols` refers to the covariates to be adjusted for, and `s_col` is the score. `d_cols` in the fuzzy case has to be the treatment received." + " - `y_col` refers to the observed outcome, on which we want to estimate the effect at the cutoff\n", + " - `s_col` refers to the score\n", + " - `x_cols` refers to the covariates to be adjusted for\n", + " - `d_cols` is an indicator whether an observation is treated or not. In the fuzzy design, this should __not__ be identical to an indicator whether an observation is left or right of the cutoff ($D_i \\neq \\mathbb{I}[S_i > c]$)" ] }, { @@ -11857,8 +11875,8 @@ "text": [ "Method Coef. S.E. t-stat P>|t| 95% CI\n", "-------------------------------------------------------------------------\n", - "Conventional 3.259 2.007 1.624 1.044e-01 [-0.674, 7.192]\n", - "Robust - - 1.668 9.527e-02 [-0.692, 8.607]\n" + "Conventional 3.475 2.231 1.558 1.193e-01 [-0.897, 7.847]\n", + "Robust - - 2.021 4.330e-02 [0.185, 12.112]\n" ] } ], @@ -11888,9 +11906,13 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Advanced: Global and Local Learners, Stacked Ensembles\n", + "## Advanced: Global and Local Learners, Stacked Ensembles\n", + "\n", + "By default, ``RDFlex`` fits ML methods using kernel weights, resulting in a \"local\" fit around the cutoff. If the adjustment should also include \"global\" information from the full support of $S$ available in the data, the use of a the ``GlobalLearner`` wrapper is recommended.\n", "\n", - "By default, ``RDFlex`` fits the ML methods using kernel weights, there fore it is a \"local\" fit around the cutoff. If the adjustment should also compain \"global\" information from the full support of $S$ available in the data, the use of a ``GlobalLearner`` is recommended. The learners can also be stacked. All learners have to support the `sample_weight` in their `fit` method. By stacking and using local and global learners, it is possible to further tune the estimation and potentially reduce standard errors even further." + "The ``GlobalLearner`` allows to ignore the weights and fit the ML method on the full support of the data, even if weights are provided.\n", + "\n", + "The learners can also be stacked. All learners have to support the `sample_weight` in their `fit` method. By stacking and using local and global learners, it is possible to further tune the estimation and potentially reduce standard errors even further." ] }, { @@ -11908,7 +11930,7 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": 19, "metadata": {}, "outputs": [], "source": [ @@ -11928,20 +11950,18 @@ "\n", "ml_g = StackingRegressor(\n", " estimators=reg_estimators,\n", - " final_estimator=RandomForestRegressor(n_estimators=10,\n", - " random_state=42)\n", + " final_estimator=LinearRegression(),\n", ")\n", "\n", "ml_m = StackingClassifier(\n", " estimators=class_estimators,\n", - " final_estimator=RandomForestClassifier(n_estimators=10,\n", - " random_state=42)\n", + " final_estimator=LogisticRegression(),\n", ")" ] }, { "cell_type": "code", - "execution_count": 17, + "execution_count": 20, "metadata": {}, "outputs": [ { @@ -11950,8 +11970,8 @@ "text": [ "Method Coef. S.E. t-stat P>|t| 95% CI\n", "-------------------------------------------------------------------------\n", - "Conventional 1.919 1.142 1.680 9.291e-02 [-0.319, 4.157]\n", - "Robust - - 1.514 1.300e-01 [-0.611, 4.759]\n" + "Conventional 3.622 2.036 1.779 7.527e-02 [-0.369, 7.613]\n", + "Robust - - 1.725 8.453e-02 [-0.689, 10.806]\n" ] } ], @@ -11959,7 +11979,7 @@ "rdflex_fuzzy_stack = RDFlex(dml_data,\n", " ml_g,\n", " ml_m,\n", - " fuzzy=fuzzy,\n", + " fuzzy=True,\n", " n_folds=5,\n", " n_rep=1)\n", "rdflex_fuzzy_stack.fit(n_iterations=2)\n", @@ -11976,7 +11996,7 @@ }, { "cell_type": "code", - "execution_count": 18, + "execution_count": 21, "metadata": {}, "outputs": [], "source": [ @@ -11992,12 +12012,12 @@ }, { "cell_type": "code", - "execution_count": 19, + "execution_count": 22, "metadata": {}, "outputs": [ { "data": { - "image/png": "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Srt379YPP/yg7777Tr169VJwcLDVwGlZmTt3rhYtWqSTJ0/q8uXLSktLs4z0fvr0af3111+69957c9zG2LFjZTabtWPHDsuxX1Ku/c/vv/+e5/7A2dlZly5dyjGPm5X5gvu2226z/G0ymSTJ0rknJSXpqaee0rPPPptpvVq1aik5OVkBAQEKCAjQypUr5e7urpMnTyogIEBpaWlW8dn9B78uPT1dS5cuVVxcnMqXL2/VvmjRolw/XABQmCpWrJjlZVr/lJSUJAcHB+3evTvTfXGVKlWy/H369Gn9/vvvcnBw0JEjRxQYGFhouSYlJUmSNmzYYPXFRlKOA3otXLhQf//9t5ydnS1tGRkZ2rdvn6ZOnVpo+ZU19KsoKhynOE7lhs+IbT8j1apV0/nz5zO1lytXTm3btlXbtm01ZswYrVixQo8//rheeumlbAetW716tcaNG6c333xTHTp0kIuLi9544w3t3LlTkqz2LyfdunXThx9+qI0bN2rQoEGW9tz6n/yMMP/333/L3d09z/FlvuDOyZ133qkDBw5k+x/1t99+07lz5zR9+nT5+PhIUr6fy3bdV199pYsXL+qXX36x+o8eFRWlIUOG6MKFC2rUqJGuXr2q3bt3q23btpKkw4cPl5pR/wCUPK1atVJ6erpOnz6tzp07Zxv3xBNPqFmzZho6dKiGDx8uf39/NW7cONv4kydP6q+//pK3t7ckaceOHSpXrpwaNmyYKdbPz09ms1knT57UPffck6e8z507p88++0yrV69WkyZNLO3p6em66667tGnTJgUGBsrLy0s7d+7U3XffLUmWY/Cdd96Zp9eBNfpV2APHKeSGz0jBtGrVSgcOHMg17vrVSdcHKHN0dMz03O4ffvhBHTt2tLrH/dixY5a/XVxcVKdOHW3ZskVdu3bN9rUeeOAB9erVS48++qgcHBw0YMAASbn3P/npD6KionK86uCfSl3BnZCQoL1791q13X777ZaOOz/+85//6F//+pdGjRqlYcOGqWLFijpw4IA2b96sd955R7Vq1ZKjo6PmzJmjp59+WlFRUZo2bVqB8l64cKF69uypFi1aWLX7+flp7NixWrlypUaOHKnAwEA99dRTmjdvnsqXL68xY8bk+ovP4MGDVaNGDYWFhRUoNwDIToMGDTRo0CANHjxYb775plq1aqUzZ85oy5Ytat68uXr27Km5c+cqMjJS+/btk4+PjzZs2KBBgwZpx44dcnR0zHK7Tk5OCgoK0syZM5WYmKhnn31WjzzySKZL8KRrnfC4ceM0duxYZWRk6K677lJCQoJ++OEHubq6KigoKNM6y5cv1+23365HHnnEchb2uvvuu08LFy5UYGCgnnvuOU2fPl133HGHGjVqpLfeeivXYuydd97RunXrtGXLlry/kcUY/Wpm9KslC8epzErbcepW8RnJLC+fkYCAAC1dutSqrV+/furUqZM6duwoT09PRUdHKzQ0VA0aNFCjRo0kXXvyw86dO3X8+HFVqlRJVatW1R133KFly5Zp48aN8vX11fLly/XTTz9ZnRGfMmWKnn76aVWvXl09evTQxYsX9cMPP2j06NFWOTz44INavny5Hn/8cZUvX179+vXLtf9p2LBhnvuD7du356tvKnWjlEdERKhVq1ZWU0Evp2jevLm2bdum33//XZ07d1arVq00adIky69U7u7uWrJkieWRI9OnT9fMmTPz/Trx8fHasGGD1TPsritXrpwefPBBy2iDixcvlre3t+655x499NBDevLJJ3N95t/JkycVGxub77wAIC8WL16swYMH6/nnn1fDhg3Vp08f/fTTT6pVq5YOHTqkF154Qe+++66lQHv33Xd19uxZTZw4Mdtt1q9fXw899JDuu+8+de/eXc2bN9e7776bbfy0adM0ceJEhYWFqXHjxgoMDNSGDRuyvXRt0aJFevDBBzN9QZGkvn376vPPP9fZs2f1/PPP6/HHH1dQUJDlErcHH3wwx/fj7NmzVr/Kl3T0q5nRr5Y8HKeslbbjVGHgM2ItL5+RQYMGaf/+/Tp8+LClLSAgQF988YV69eqlBg0aKCgoSI0aNdKmTZsst/eMGzdODg4O8vPzs9w69NRTT+mhhx5S//791b59e507dy7TiO5BQUGaNWuW3n33XTVp0kT333+/jhw5kmVu/fr109KlS/X4449r7dq1ufY/Ut76g8jISCUkJKhfv345vjc3MxmMqFDqeHl5adq0aRo2bJi9UwGAUm/gwIFycHDQihUr7J0KbIR+FSUdxynkpqCfkRdeeEGJiYl67733bJRZ8dK/f3+1aNFCL774Yp7XKXVnuMuyS5cuafPmzYqPj7e6jwMAUPiuXr2qAwcOKDIykmNuKUW/ipKO4xRyc6ufkZdeekm1a9e2DI5ZmqWlpalZs2YaO3Zsvtaj4C5F3n//fQ0YMEBjxoxRhw4d7J0OAJRqUVFRatOmjZo0aaKnn37a3unABuhXUdJxnEJubvUzUrlyZb344osqV670l5WOjo56+eWX8zxi+nVcUg4AAAAAgA2U/p8iAAAAAACwAwpuAAAAAABsgIIbAAAAAAAboOAGAAAAAMAGKLgBAAAAALABCm4AFl26dNGYMWMKfbtTpkxRy5YtC327AAAUV/SpACQKbqDECA4OlslkyvIZiSNHjpTJZFJwcHCethURESGTyaQLFy4UbpIAAJQA9KkAigoFN1CC+Pj4aPXq1bp8+bKlLSUlRatWrVKtWrXsmBkAACULfSqAokDBDZQgd955p3x8fLR27VpL29q1a1WrVi21atXK0paRkaGwsDD5+vrK2dlZLVq00CeffCJJOn78uLp27SpJqlKlSqZf8TMyMjR+/HhVrVpVnp6emjJlilUOJ0+eVO/evVWpUiW5urrqkUceUXx8vFXM9OnT5eHhIRcXFw0dOlQpKSmF/E4AAHBr6FMBFAUKbqCEeeKJJ7R48WLL/KJFizRkyBCrmLCwMC1btkzz58/X/v37NXbsWD322GPatm2bfHx89Omnn0qSDh8+rNjYWM2ePduy7tKlS1WxYkXt3LlTM2bM0CuvvKLNmzdLuvbFoXfv3vr777+1bds2bd68WX/88Yf69+9vWf+jjz7SlClT9Nprr+nnn3+Wl5eX3n33XVu+JQAAFAh9KgBbMxmGYdg7CQC5Cw4O1oULF/TBBx/Ix8dHhw8fliQ1atRIMTExGjZsmCpXrqz33ntPVatW1TfffKMOHTpY1h82bJguXbqkVatWKSIiQl27dtX58+dVuXJlS0yXLl2Unp6u7du3W9ratWunf//735o+fbo2b96sHj16KDo6Wj4+PpKkAwcOqEmTJtq1a5fatm2rjh07qlWrVpo7d65lG//617+UkpKivXv32vZNAgAgD+hTARSV8vZOAED+uLu7q2fPnlqyZIkMw1DPnj1VrVo1y/KjR4/q0qVL6tatm9V6aWlpVpfIZad58+ZW815eXjp9+rQk6eDBg/Lx8bF8MZAkPz8/Va5cWQcPHlTbtm118ODBTIPQdOjQQVu3bs33vgIAYEv0qQBsjYIbKIGeeOIJjRo1SpKsfvWWpKSkJEnShg0bVKNGDatlZrM5123fdtttVvMmk0kZGRm3ki4AAMUWfSoAW+IebqAECgwMVFpamq5cuaKAgACrZX5+fjKbzTp58qTq169vNV3/Fd3R0VGSlJ6enq/Xbdy4sWJiYhQTE2NpO3DggC5cuCA/Pz9LzM6dO63W27FjR773EQCAokCfCsCWOMMNlEAODg46ePCg5e+bubi4aNy4cRo7dqwyMjJ01113KSEhQT/88INcXV0VFBSk2rVry2Qy6csvv9R9990nZ2dnVapUKdfX9ff3V7NmzTRo0CDNmjVLV69e1YgRI3TPPfeoTZs2kqTnnntOwcHBatOmjTp16qSVK1dq//79qlu3buG/EQAA3CL6VAC2xBluoIRydXWVq6trlsumTZumiRMnKiwsTI0bN1ZgYKA2bNggX19fSVKNGjU0depUTZgwQR4eHpZL6XJjMpn02WefqUqVKrr77rvl7++vunXras2aNZaY/v37a+LEiRo/frxat26tEydO6Jlnnrn1HQYAwEboUwHYCqOUAwAAAABgA5zhBgAAAADABii4AQAAAACwAQpuAAAAAABsgIIbAAAAAAAboOAGAAAAAMAGKLgBAAAAALABCm4AAAAAAGyAghsAAAAAABug4AYAAAAAwAYouAEAAAAAsAEKbgAAAAAAbICCGwAAAAAAG/g/6oZz1ylva2sAAAAASUVORK5CYII=", + "image/png": "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rL4Xn5SUpA8//DDPxwEAKJ7q1q2rH374wartgw8+SDdOLlmyRO+//77mzZuntm3bZrivZ555Rn/88YfWr1+fZQE9cOBAmUwmPf/88/rzzz/T/a52XjCeAqUPV7iBXBo9erSuXLmihx56SA0bNlRKSop++uknrV27VrVr19aQIUNyvc8HHnhAK1askJubm3x9fRUREaHvvvvO8rNhuREZGakHH3xQAQEBioiI0MqVK/XYY4+pefPm2fa9fv265RPypKQknTp1Sl988YX279+vrl276oMPPrDEurq6av78+XriiSd09913a8CAAapatapOnz6tr7/+Wh07dtS7776rP/74Q/fdd58effRR+fr6qmzZslq/fr1iY2M1YMCATHN5+umn9e6772rgwIF6/vnn5enpqVWrVsnJyUlSwU2VBwAUfcOGDdMzzzyjvn37qlu3bvrtt9+0ceNGq58NO3/+vEaMGCFfX1+ZzeZ0V3wfeughhYeHa/ny5erbt6/279+v/fv3W7aXL19effr0saxXrVpVAQEB+uSTT1SxYkX17Nkzx/kyngK4iYIbyKWZM2fqk08+0TfffKMPPvhAKSkpqlmzpkaMGKFXX31VFStWzPU+58yZIwcHB61atUpJSUnq2LGjvvvuO/n7++d6X2vXrtWkSZM0YcIElS1bVqNGjdJbb72Vo77JycmWG8K4uLioWrVqatWqlSZNmqSHHnoo3bS7xx57TF5eXpo+fbreeustJScnq3r16urcubPlgwdvb28NHDhQW7Zs0YoVK1S2bFk1bNhQH3/8cbqb1NyufPny+v777zV69GjNmTNH5cuX1+DBg9WhQwf17dvX8kYBAFDyDR8+XJGRkVq0aJHCwsLUuXNnbd68Wffdd58lJiEhQUlJSTp06FCGNzeLjIy0XC3+7LPP9Nlnn1ltr1WrllXBLd2YVv7VV1/p0UcfldlsznG+jKcAbjIZ3AEBKBGmTJmiqVOn6ty5c1af+Jc0s2fP1tixY/XXX3+pevXq9k4HAFCCff755+rTp49++OEHde7c2d7pFCjGU6Bw8B1uAEXW1atXrdaTkpL0/vvv66677uLNAQDA5j788EPVqVNHnTp1sncq+cJ4CtgPU8oBFFkPP/ywatasqRYtWiguLk4rV67UkSNHtGrVKnunBgAowdasWaP9+/fr66+/1pw5c4r995wZ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lsE9ISFBTz/9tJ577rl0/WrWrKnExET5+/vL399fq1atUtWqVXX69Gn5+/srJSXFKj6z/+A3paamatmyZYqJiVHZsmWt2hcvXpztiwsAClK5cuUynKb1bwkJCXJwcNCePXvSfS+ufPnylr/Pnj2rP/74Qw4ODjp27JgCAgIKLNeEhARJ0tdff231xkZSljf0WrRokf755x85Oztb2tLS0rR//35NnTq1wPIrbRhXUVg4T3Geyg6vEdu+RqpUqaKLFy+may9TpozatGmjNm3aaMyYMVq5cqWeeOIJvfLKK5netG7NmjUaN26c3n77bbVv314VKlTQW2+9pV27dkmS1fFlpVu3bvroo4+0ceNGDRo0yNKe3fiTmzvM//PPP6patWqO40t9wZ2Vu+++W4cOHcr0P+rvv/+uCxcuaPr06fL29pakXP8u203ffPONLl++rF9//dXqP/qBAwc0ZMgQXbp0SQ0bNtT169e1Z88etWnTRpJ09OjREnPXPwDFT8uWLZWamqqzZ8+qc+fOmcY9+eSTatq0qYYOHarhw4fLz89PjRo1yjT+9OnT+vvvv+Xl5SVJ2rlzp8qUKaMGDRqki/X19ZXZbNbp06d177335ijvCxcu6PPPP9eaNWvUuHFjS3tqaqo6deqkTZs2KSAgQJ6entq1a5fuueceSbKcg+++++4cPQ6sMa7CHjhPITu8RvKmZcuWOnToULZxN2cn3bxBmaOjY7rf7f7xxx/VoUMHq++4nzhxwvJ3hQoVVLt2bW3ZskVdu3bN9LEefPBB9erVS4899pgcHBw0YMAASdmPP7kZDw4cOJDlrIN/K3EFd1xcnPbt22fVduedd1oG7tx46aWX9H//938aNWqUhg0bpnLlyunQoUPavHmz3n33XdWsWVOOjo6aO3eunnnmGR04cEDTpk3LU96LFi1Sz5491bx5c6t2X19fjR07VqtWrdLIkSMVEBCgp59+WvPnz1fZsmU1ZsyYbD/xGTx4sKpXr67Q0NA85QYAmalfv74GDRqkwYMH6+2331bLli117tw5bdmyRc2aNVPPnj01b948RUREaP/+/fL29tbXX3+tQYMGaefOnXJ0dMxwv05OTgoMDNTMmTMVHx+v5557To8++mi6KXjSjUF43LhxGjt2rNLS0tSpUyfFxcXpxx9/lKurqwIDA9P1WbFihe688049+uijlquwN91///1atGiRAgIC9Pzzz2v69Om666671LBhQ82aNSvbYuzdd9/V+vXrtWXLlpw/kUUY42p6jKvFC+ep9EraeSq/eI2kl5PXiL+/v5YtW2bV1q9fP3Xs2FEdOnSQh4eHIiMjFRISovr166thw4aSbvzyw65du3Ty5EmVL19elStX1l133aXly5dr48aN8vHx0YoVK/Tzzz9bXRGfMmWKnnnmGVWrVk09evTQ5cuX9eOPP2r06NFWOTz00ENasWKFnnjiCZUtW1b9+vXLdvxp0KBBjseD7du352psKnF3KQ8PD1fLli2tlrxOp2jWrJm2bdumP/74Q507d1bLli01adIky6dUVatW1dKlSy0/OTJ9+nTNnDkz148TGxurr7/+2uo37G4qU6aMHnroIcvdBpcsWSIvLy/de++9evjhh/XUU09l+5t/p0+fVnR0dK7zAoCcWLJkiQYPHqwXXnhBDRo0UJ8+ffTzzz+rZs2aOnLkiF588UW99957lgLtvffe0/nz5zVx4sRM91mvXj09/PDDuv/++9W9e3c1a9ZM7733Xqbx06ZN08SJExUaGqpGjRopICBAX3/9daZT1xYvXqyHHnoo3RsUSerbt6+++OILnT9/Xi+88IKeeOIJBQYGWqa4PfTQQ1k+H+fPn7f6VL64Y1xNj3G1+OE8Za2knacKAq8Razl5jQwaNEgHDx7U0aNHLW3+/v768ssv1atXL9WvX1+BgYFq2LChNm3aZPl6z7hx4+Tg4CBfX1/LV4eefvppPfzww+rfv7/atWunCxcupLuje2BgoGbPnq333ntPjRs31gMPPKBjx45lmFu/fv20bNkyPfHEE1q3bl2244+Us/EgIiJCcXFx6tevX5bPze1MBndUKHE8PT01bdo0DRs2zN6pAECJN3DgQDk4OGjlypX2TgU2wriK4o7zFLKT19fIiy++qPj4eL3//vs2yqxo6d+/v5o3b66XX345x31K3BXu0uzKlSvavHmzYmNjrb7HAQAoeNevX9ehQ4cUERHBObeEYlxFccd5CtnJ72vklVdeUa1atSw3xyzJUlJS1LRpU40dOzZX/Si4S5APPvhAAwYM0JgxY9S+fXt7pwMAJdqBAwfUunVrNW7cWM8884y904ENMK6iuOM8hezk9zVSsWJFvfzyyypTpuSXlY6Ojnr11VdzfMf0m5hSDgAAAACADZT8jyIAAAAAALADCm4AAAAAAGyAghsAAAAAABug4AYAAAAAwAYouAEAAAAAsAEKbgAWXbp00ZgxYwp8v1OmTFGLFi0KfL8AABRVjKkAJApuoNgICgqSyWTK8DcSR44cKZPJpKCgoBztKzw8XCaTSZcuXSrYJAEAKAYYUwEUFgpuoBjx9vbWmjVrdPXqVUtbUlKSVq9erZo1a9oxMwAAihfGVACFgYIbKEbuvvtueXt7a926dZa2devWqWbNmmrZsqWlLS0tTaGhofLx8ZGzs7OaN2+uTz/9VJJ08uRJde3aVZJUqVKldJ/ip6Wlafz48apcubI8PDw0ZcoUqxxOnz6t3r17q3z58nJ1ddWjjz6q2NhYq5jp06fL3d1dFSpU0NChQ5WUlFTAzwQAAPnDmAqgMFBwA8XMk08+qSVLlljWFy9erCFDhljFhIaGavny5VqwYIEOHjyosWPH6vHHH9e2bdvk7e2tzz77TJJ09OhRRUdHa86cOZa+y5YtU7ly5bRr1y7NmDFDr732mjZv3izpxhuH3r17659//tG2bdu0efNm/fnnn+rfv7+l/8cff6wpU6bojTfe0C+//CJPT0+99957tnxKAADIE8ZUALZmMgzDsHcSALIXFBSkS5cu6cMPP5S3t7eOHj0qSWrYsKGioqI0bNgwVaxYUe+//74qV66s7777Tu3bt7f0HzZsmK5cuaLVq1crPDxcXbt21cWLF1WxYkVLTJcuXZSamqrt27db2tq2bav//Oc/mj59ujZv3qwePXooMjJS3t7ekqRDhw6pcePG2r17t9q0aaMOHTqoZcuWmjdvnmUf//d//6ekpCTt27fPtk8SAAA5wJgKoLCUtXcCAHKnatWq6tmzp5YuXSrDMNSzZ09VqVLFsv348eO6cuWKunXrZtUvJSXFaopcZpo1a2a17unpqbNnz0qSDh8+LG9vb8sbA0ny9fVVxYoVdfjwYbVp00aHDx9OdxOa9u3ba+vWrbk+VgAAbIkxFYCtUXADxdCTTz6pUaNGSZLVp96SlJCQIEn6+uuvVb16dattZrM5233fcccdVusmk0lpaWn5SRcAgCKLMRWALfEdbqAYCggIUEpKiq5duyZ/f3+rbb6+vjKbzTp9+rTq1atntdz8FN3R0VGSlJqamqvHbdSokaKiohQVFWVpO3TokC5duiRfX19LzK5du6z67dy5M9fHCABAYWBMBWBLXOEGiiEHBwcdPnzY8vftKlSooHHjxmns2LFKS0tTp06dFBcXpx9//FGurq4KDAxUrVq1ZDKZ9NVXX+n++++Xs7Ozypcvn+3j+vn5qWnTpho0aJBmz56t69eva8SIEbr33nvVunVrSdLzzz+voKAgtW7dWh07dtSqVat08OBB1alTp+CfCAAA8okxFYAtcYUbKKZcXV3l6uqa4bZp06Zp4sSJCg0NVaNGjRQQEKCvv/5aPj4+kqTq1atr6tSpmjBhgtzd3S1T6bJjMpn0+eefq1KlSrrnnnvk5+enOnXqaO3atZaY/v37a+LEiRo/frxatWqlU6dO6dlnn83/AQMAYCOMqQBshbuUAwAAAABgA1zhBgAAAADABii4AQAAAACwAQpuAAAAAABsgIIbAAAAAAAboOAGAAAAAMAGKLgBAAAAALABCm4AAAAAAGyAghsAAAAAABug4AYAAAAAwAYouAEAAAAAsAEKbgAAAAAAbICCGwAAAAAAG/h/YTas5OuJg3IAAAAASUVORK5CYII=", "text/plain": [ "
" ] @@ -12038,18 +12058,11 @@ "\n", "plt.tight_layout()" ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] } ], "metadata": { "kernelspec": { - "display_name": "didnotebook", + "display_name": "dml_rdd", "language": "python", "name": "python3" }, @@ -12063,7 +12076,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.11.5" + "version": "3.12.4" } }, "nbformat": 4, From f9cd0dd047568c23d2e732357be985bd140fd496 Mon Sep 17 00:00:00 2001 From: Oliver Schacht Date: Wed, 23 Oct 2024 11:44:40 +0200 Subject: [PATCH 34/71] add rdd --- doc/guide/models.rst | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/doc/guide/models.rst b/doc/guide/models.rst index d1ba8f6e..3977c6d4 100644 --- a/doc/guide/models.rst +++ b/doc/guide/models.rst @@ -507,3 +507,8 @@ Estimation is conducted via its ``fit()`` method: dml_ssm = dml.DoubleMLSSM(dml_data, ml_g, ml_m, ml_pi, score='nonignorable') dml_ssm.fit() print(dml_ssm) + +Regression Discontinuity Designs (RDD) +++++++++++++++++++++++++++++++++++++++ + +.. include:: ../shared/models/rdd.rst From 8da75d27b9e110548849020ff764433a1f2f01d1 Mon Sep 17 00:00:00 2001 From: Oliver Schacht Date: Wed, 23 Oct 2024 11:45:05 +0200 Subject: [PATCH 35/71] finish rdd docu --- doc/shared/models/rdd.rst | 102 ++++++++++++++++++++++++++++++++++---- 1 file changed, 91 insertions(+), 11 deletions(-) diff --git a/doc/shared/models/rdd.rst b/doc/shared/models/rdd.rst index fd7baef1..848a5c9a 100644 --- a/doc/shared/models/rdd.rst +++ b/doc/shared/models/rdd.rst @@ -1,6 +1,6 @@ **Regression Discontinuity Designs (RDD)** are causal inference methods used when treatment assignment is determined by a continuous running variable ("score") crossing a known threshold ("cutoff"). These designs exploit discontinuities in the probability of receiving treatment at the cutoff to estimate local treatment effects. RDDs are divided into two main types: **Sharp** and **Fuzzy**. -The key idea behind RDD is that units just above and just below the threshold are assumed to be comparable, differing only in the treatment assignment. This allows to estimate the causal effect at the threshold by comparing outcomes of treated and untreated units. +The key idea behind RDD is that units just above and just below the threshold are assumed to be comparable, differing only in the treatment assignment. This allows estimating the causal effect at the threshold by comparing outcomes of treated and untreated units. Let :math:`S_i` represent the score, and let :math:`c` denote the cutoff point. Further, let :math:`Y_i(1)` and :math:`Y_i(0)` denote the potential outcomes with and without treatment, respectively. @@ -12,7 +12,7 @@ The parameter of interest in an RDD is the **Local Average Treatment Effect (LAT Our implementation follows work from `Noack, Olma and Rothe (2024) `_, however, our notation is slightly different to be consistent with the package. -By using a set of additional covariates :math:`X_i` for each observation, :math:`Y_i` and :math:`D_i` can be adjusted in a first stage, to reduce the standart deviation in estimation of $\theta$. +By using a set of additional covariates :math:`X_i` for each observation, :math:`Y_i` and :math:`D_i` can be adjusted in a first stage, to reduce the standard deviation in the estimation of :math:`\theta`. Sharp Regression Discontinuity Design ************************************* @@ -25,13 +25,13 @@ The LATE is identified as the difference in the conditional expectation of :math \theta_{0} = \mathbb[Y(1)-Y(0)\mid S = c] -The assumptions for identifying the LATE in a sharp RDD are +The assumptions for identifying the LATE in a sharp RDD are: - **Continuity:** The potential outcomes :math:`Y_i(1)` and :math:`Y_i(0)` are continuous around the cutoff, meaning no other factors besides treatment change discontinuously at the threshold. - **Exogeneity of the Score:** Units cannot perfectly manipulate their value of :math:`S_i` to either receive or avoid treatment exactly at the cutoff. -Without the use of covariates, :math:`\theta` is typically estimated by running seperate local linear regressions on each side of the cutoff, yielding an estimator of the form +Without the use of covariates, :math:`\theta` is typically estimated by running separate local linear regressions on each side of the cutoff, yielding an estimator of the form: .. math:: @@ -42,27 +42,69 @@ where the :math:`w_i(h)` are local linear regression weights that depend on the Under standard conditions, which include that the running variable is continuously distributed, and that the bandwidth :math:`h` tends to zero at an appropriate rate, the estimator :math:`\hat{\theta}_{\text{base}}(h)` is approximately normally distributed in large samples, with bias of order :math:`h^2` and variance of order :math:`(nh)^{-1}`: .. math:: - \hat{\tau}_{\text{base}}(h) \stackrel{a}{\sim} N\left(\tau + h^2 B_{\text{base}},(nh)^{-1}V_{\text{base}}\right). + \hat{\tau}_{\text{base}}(h) \stackrel{a}{\sim} N\left(\tau + h^2 B_{\text{base}},(nh)^{-1}V\right). If covariates are available, they can be used to improve the accuracy of empirical RD estimates. The most popular strategy is to include them linearly and without kernel localization in the local linear regression. By simple least squares algebra, this "linear adjustment" estimator can be written as a no-covariates estimator with the covariate-adjusted outcome :math:`Y_i - Z_i^{\top} \widehat{\gamma}_h`, where :math:`\widehat{\gamma}_h` is a minimizer: .. math:: \widehat{\tau}_{\text{lin}}(h) = \sum w_i(h)\left(Y_i - X_i^{\top} \widehat{\gamma}_h\right). -If :math:`\mathbb{E}[X_i | S_i = s]` is twice continuously differentiable around the cutoff, then the distribution of :math:`\widehat{\tau}_{\text{lin}}(h)` is similar to the one of the base estimator with potentially smaller variance termin. +If :math:`\mathbb{E}[X_i | S_i = s]` is twice continuously differentiable around the cutoff, then the distribution of :math:`\widehat{\tau}_{\text{lin}}(h)` is similar to the one of the base estimator with potentially smaller variance term. As this linear adjustment might not exploit the available covariate information efficiently, DoubleML features an RDD estimator with flexible covariate adjustment based on potentially nonlinear adjustment functions :math:`\eta`. The estimator takes the following form: .. math:: - \widehat{\theta}_{\text{RDFlex}}(h; \eta) = \sum w_i(h) M_i(\eta), \quad M_i(\eta) = Y_i - \eta(Z_i). + \widehat{\theta}_{\text{RDFlex}}(h; \eta) = \sum w_i(h) M_i(\eta), \quad M_i(\eta) = Y_i - \eta(X_i). + +Similar to other algorithms in DoubleML, :math:`\eta` is estimated by ML methods and with crossfitting. Different than in other models, there is no orthogonal score, we rather adjust the outcome variable by the influence of the covariates. + +This reduces the variance in the estimation potentially even further to: + +.. math:: + V(\eta) = \frac{\bar{\kappa}}{f_X(0)} \left( \mathbb{V}[M_i(\eta) | S_i = 0^+] + \mathbb{V}[M_i(\eta) | S_i = 0^-] \right). + +with :math:`\bar{\kappa}` being a kernel constant. To maximize the precision of the estimator :math:`\wh\tau(h;\eta)` for any particular bandwidth :math:`h`, :math:`\eta` has to be chosen such that :math:`V(\eta)` is as small as possible. Usually, the equally-weighted average of the left and right limits of the conditional expectation function :math:`\mathbb{E}[Y_i|S_i=s,X_i=x]` at the cutoff achieves this goal. It can be shown: .. math:: - \widehat{\theta}_{\text{RDFlex}}(h; \eta) \stackrel{a}{\sim} N\left(\tau + h^2 B_{\text{base}}, (nh)^{-1} V(\alpha)\right). + V(\eta) \geq V(\eta_0) \text{ for all } \eta, + +where: .. math:: - V(\eta) \geq V(\eta_0) \text{ for all } \eta. + \eta_0(x) = \frac{1}{2} \left( \mu_0^+(x) + \mu_0^-(x) \right), \quad \mu_0^\star(x) = \mathbb{E}[Y_i | S_i = 0^\star, X_i = x] \text{ for } \star \in \{+, -\}. + +``RDFlex`` implements this regression discontinuity design with :math:`\eta_0` being estimated by user-specified ML methods. The indicator ``fuzzy=False`` indicates a sharp design. The ``DoubleMLData`` object has to be defined with the argument ``s_col`` for the score and ``x_cols`` for the covariates. ``y_col`` refers to the observed outcome, on which we want to estimate the effect at the cutoff and ``d_cols`` is an indicator of whether an observation is treated or not. In the sharp design, this should be identical to an indicator of whether an observation is left or right of the cutoff (:math:`D_i = \mathbb{I}[S_i > c]`). +Estimation is conducted via its ``fit()`` method: + +.. tab-set:: + + .. tab-item:: Python + :sync: py + + .. ipython:: python + :okwarning: + + import numpy as np + from sklearn.linear_model import LassoCV + from doubleml.rdd.datasets import make_simple_rdd_data + import doubleml as dml + + np.random.seed(42) + data_dict = make_simple_rdd_data(n_obs=1000, fuzzy=False) + cov_names = ['x' + str(i) for i in range(data_dict['X'].shape[1])] + df = pd.DataFrame( + np.column_stack((data_dict['Y'], data_dict['D'], data_dict['score'], data_dict['X'])), + columns=['y', 'd', 'score'] + cov_names, + ) + + dml_data = dml.DoubleMLData(df, y_col='y', d_cols='d', x_cols=cov_names, s_col='score') + ml_g = LassoCV() + rdflex_obj = RDFlex(dml_data, ml_g, fuzzy=False) + rdflex_obj.fit() + + print(rdflex_obj) Fuzzy Regression Discontinuity Design @@ -70,14 +112,14 @@ Fuzzy Regression Discontinuity Design In a **Fuzzy RDD**, treatment assignment is identical to the sharp RDD (:math:`T_i = \mathbb{1}\{S_i \geq c\}`), however, compliance is limited around the cutoff which leads to a different treatment received than assigned (:math:`D_i \neq T_i`) for some units. -The **LATE** is identified by comparing the jump in the probability of receiving treatment with the jump in the outcome. +A treatment effect can be identified by comparing the jump in the probability of receiving treatment with the jump in the outcome. The parameter of interest in the Fuzzy RDD is the average treatment effect on the treated: .. math:: \theta_{0} = \mathbb[Y(1, 1)-Y(0, 0)\mid S = c, \{i\in \text{compliers}\}] -with :math:`Y_i(T_i, D_i(T_i))` being the potential outcome under the potential treatments. The assumptions for identifying the ATT in a fuzzy RDD are +with :math:`Y_i(T_i, D_i(T_i))` being the potential outcome under the potential treatments. The assumptions for identifying the ATT in a fuzzy RDD are: - **Continuity of Potential Outcomes:** Similar to sharp RDD, the potential outcomes :math:`Y_i(1)` and :math:`Y_i(0)` must be continuous at the cutoff. @@ -85,3 +127,41 @@ with :math:`Y_i(T_i, D_i(T_i))` being the potential outcome under the potential - **Monotonicity:** There must be no "defiers", meaning individuals for whom the treatment assignment goes in the opposite direction of the score. +Under similar considerations as in the sharp case, an estimator using flexible covariate adjustment can be derived as: + +.. math:: + \hat{\theta}(h; \widehat{\eta}_Y, \widehat{\eta}_D) = \frac{\hat{\tau}_Y(h; \widehat{\eta}_Y)}{\hat{\tau}_D(h; \widehat{\eta}_D)} + = \frac{\sum w_{i}(h) (Y_i - \widehat{\eta}_{Y}(X_i))}{\sum w_{i}(h) (T_i - \widehat{\eta}_{D}(X_i))}. + +``RDFlex`` implements this fuzzy RDD with flexible covariate adjustment. The indicator ``fuzzy=True`` indicates a fuzzy design. The ``DoubleMLData`` object has to be defined with the argument ``s_col`` for the score and ``x_cols`` for the covariates. ``y_col`` refers to the observed outcome, on which we want to estimate the effect at the cutoff and ``d_cols`` is an indicator of whether an observation is treated or not. +Estimation is conducted via its ``fit()`` method: + +.. tab-set:: + + .. tab-item:: Python + :sync: py + + .. ipython:: python + :okwarning: + + import numpy as np + from sklearn.linear_model import LassoCV, LogisticRegressionCV + from doubleml.rdd.datasets import make_simple_rdd_data + import doubleml as dml + + np.random.seed(42) + data_dict = make_simple_rdd_data(n_obs=1000, fuzzy=True) + cov_names = ['x' + str(i) for i in range(data_dict['X'].shape[1])] + df = pd.DataFrame( + np.column_stack((data_dict['Y'], data_dict['D'], data_dict['score'], data_dict['X'])), + columns=['y', 'd', 'score'] + cov_names, + ) + + dml_data = dml.DoubleMLData(df, y_col='y', d_cols='d', x_cols=cov_names, s_col='score') + + ml_g = LassoCV() + + rdflex_obj = RDFlex(dml_data, ml_g, ml_m, fuzzy=True) + rdflex_obj.fit() + + print(rdflex_obj) \ No newline at end of file From 690e7830d20cb1230f72ae7a18aa2e0f8f3950c5 Mon Sep 17 00:00:00 2001 From: Oliver Schacht Date: Wed, 23 Oct 2024 12:29:44 +0200 Subject: [PATCH 36/71] add implementation details --- doc/shared/models/rdd.rst | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/doc/shared/models/rdd.rst b/doc/shared/models/rdd.rst index 848a5c9a..054a3bf1 100644 --- a/doc/shared/models/rdd.rst +++ b/doc/shared/models/rdd.rst @@ -164,4 +164,16 @@ Estimation is conducted via its ``fit()`` method: rdflex_obj = RDFlex(dml_data, ml_g, ml_m, fuzzy=True) rdflex_obj.fit() - print(rdflex_obj) \ No newline at end of file + print(rdflex_obj) + +Implementation Details +************************************* + +There are some specialities in the ``RDFlex`` implementation, that differ from the rest of the package and thus deserve to be pointed out here. + +#. **Bandwidth Selection**: The bandwidth is a crucial tuning paramter for RDD algorithms. By default, our implementation uses the ``rdbwselect`` method from the ``rdrobust`` library for an initial selection. This can be overwritten by the user using the parameter ``h_fs``. Since covariate adjustment and RDD fitting are iteracting, by default, we repeat the bandwidth selection and nuisance estimation once in the ``fit()`` method. This can be adjusted by ``n_iterations``. +#. **Kernel Selection**: Another crucial decision when estimating with RDD is the kernel, that weights observations around the cutoff. For this, the parameters ``fs_kernel`` and ``kernel`` are important. The letter is a kwarg and is used in the RDD estimation, while the ``fs_kernel`` specifies the kernel used in the nuisance estimation. By default, both of them are ``triangular``. +#. **Local and Global Learners**: ``RDFlex`` estimates the nuisance functions locally around the cutoff. In certain scenarios, it can be desirable to rather perform a global fit on the full support of the score :math:`S`. For this, the ``Global Learners`` in ``doubleml.utils`` can be used. +#. **First Stage Specifications**: In nuisance estimation, we have to add variable(s) to add information about the location of the observation left or right of the cutoff. In the default case ``fs_specification="cutoff"``, this is an indicator whether the observation is left or right. If ``fs_specification="cutoff and score"``, additionally the score is added. In case of ``fs_specification="interacted cutoff and score"``, also an interaction term of the cutoff indicator and the score is added. +#. **Intention-to-Treat Effects**: Above, we demonstrated how to estimate the ATT in a fuzzy RDD. To estimate an Intention-to-Treat effect instead, the parameter ``fuzzy=False`` can be selected. +#. **Key-worded Arguments**: ``rdrobust`` as the underlying RDD library has additional paramters to tune the estimation. You can use ``**kwargs`` to add them via ``RDFlex`` \ No newline at end of file From 76552753da39fb427d492fb881a76c8082706dac Mon Sep 17 00:00:00 2001 From: Oliver Schacht Date: Wed, 23 Oct 2024 12:32:09 +0200 Subject: [PATCH 37/71] Update rdd.rst --- doc/shared/models/rdd.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/shared/models/rdd.rst b/doc/shared/models/rdd.rst index 054a3bf1..606fa3a3 100644 --- a/doc/shared/models/rdd.rst +++ b/doc/shared/models/rdd.rst @@ -171,8 +171,8 @@ Implementation Details There are some specialities in the ``RDFlex`` implementation, that differ from the rest of the package and thus deserve to be pointed out here. -#. **Bandwidth Selection**: The bandwidth is a crucial tuning paramter for RDD algorithms. By default, our implementation uses the ``rdbwselect`` method from the ``rdrobust`` library for an initial selection. This can be overwritten by the user using the parameter ``h_fs``. Since covariate adjustment and RDD fitting are iteracting, by default, we repeat the bandwidth selection and nuisance estimation once in the ``fit()`` method. This can be adjusted by ``n_iterations``. -#. **Kernel Selection**: Another crucial decision when estimating with RDD is the kernel, that weights observations around the cutoff. For this, the parameters ``fs_kernel`` and ``kernel`` are important. The letter is a kwarg and is used in the RDD estimation, while the ``fs_kernel`` specifies the kernel used in the nuisance estimation. By default, both of them are ``triangular``. +#. **Bandwidth Selection**: The bandwidth is a crucial tuning parameter for RDD algorithms. By default, our implementation uses the ``rdbwselect`` method from the ``rdrobust`` library for an initial selection. This can be overridden by the user using the parameter ``h_fs``. Since covariate adjustment and RDD fitting are interacting, by default, we repeat the bandwidth selection and nuisance estimation once in the ``fit()`` method. This can be adjusted by ``n_iterations``. +#. **Kernel Selection**: Another crucial decision when estimating with RDD is the kernel that weights observations around the cutoff. For this, the parameters ``fs_kernel`` and ``kernel`` are important. The latter is a kwarg and is used in the RDD estimation, while the ``fs_kernel`` specifies the kernel used in the nuisance estimation. By default, both of them are ``triangular``. #. **Local and Global Learners**: ``RDFlex`` estimates the nuisance functions locally around the cutoff. In certain scenarios, it can be desirable to rather perform a global fit on the full support of the score :math:`S`. For this, the ``Global Learners`` in ``doubleml.utils`` can be used. #. **First Stage Specifications**: In nuisance estimation, we have to add variable(s) to add information about the location of the observation left or right of the cutoff. In the default case ``fs_specification="cutoff"``, this is an indicator whether the observation is left or right. If ``fs_specification="cutoff and score"``, additionally the score is added. In case of ``fs_specification="interacted cutoff and score"``, also an interaction term of the cutoff indicator and the score is added. #. **Intention-to-Treat Effects**: Above, we demonstrated how to estimate the ATT in a fuzzy RDD. To estimate an Intention-to-Treat effect instead, the parameter ``fuzzy=False`` can be selected. From ac7536575e0730848b98ae97dc7d519aa0b3a526 Mon Sep 17 00:00:00 2001 From: Oliver Schacht Date: Wed, 23 Oct 2024 14:06:12 +0200 Subject: [PATCH 38/71] fix broken links --- doc/examples/py_double_ml_meets_flaml.ipynb | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/doc/examples/py_double_ml_meets_flaml.ipynb b/doc/examples/py_double_ml_meets_flaml.ipynb index ac2f2083..544754dc 100644 --- a/doc/examples/py_double_ml_meets_flaml.ipynb +++ b/doc/examples/py_double_ml_meets_flaml.ipynb @@ -8,9 +8,9 @@ "\n", "Recent advances in automated machine learning make it easier to tune hyperparameters of ML estimators automatically. These optimized learners can be used for the estimation part within DoubleML. In this notebook we are going to explore how to tune learners with AutoML for the DoubleML framework.\n", "\n", - "This notebook will use [`FLAML`](https://github.com/microsoft/FLAML), but there are also many other AutoML frameworks. Particularly useful for DoubleML are packages that provide some way to export the model in `sklearn`-style.\n", + "This notebook will use [FLAML](https://github.com/microsoft/FLAML), but there are also many other AutoML frameworks. Particularly useful for DoubleML are packages that provide some way to export the model in `sklearn`-style.\n", "\n", - "Examples are: [`TPOT`](https://epistasislab.github.io/tpot/), [`autosklearn`](https://automl.github.io/auto-sklearn/master/), [`H20`](https://docs.h2o.ai/h2o/latest-stable/h2o-docs/automl.html) or [`Gama`](https://openml-labs.github.io/gama/master/)." + "Examples are: [TPOT](https://epistasislab.github.io/tpot/), [autosklearn](https://automl.github.io/auto-sklearn/master/), [H20](https://docs.h2o.ai/h2o/latest-stable/h2o-docs/automl.html) or [Gama](https://openml-labs.github.io/gama/master/)." ] }, { @@ -24,7 +24,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "We create synthetic data using the [``make_plr_CCDDHNR2018()``](https://docs.doubleml.org/stable/api/generated/doubleml.datasets.make_plr_CCDDHNR2018.html) process, with $1000$ observations of $50$ covariates as well as $1$ treatment variable and an outcome. We calibrate the process such that hyperparameter tuning becomes more important." + "We create synthetic data using the [make_plr_CCDDHNR2018()](https://docs.doubleml.org/stable/api/generated/doubleml.datasets.make_plr_CCDDHNR2018.html) process, with $1000$ observations of $50$ covariates as well as $1$ treatment variable and an outcome. We calibrate the process such that hyperparameter tuning becomes more important." ] }, { @@ -916,7 +916,7 @@ "\n", "This notebook highlights that tuning plays an important role and can be easily done using FLAML AutoML. In our [recent study](https://arxiv.org/abs/2402.04674) we provide more evidence for tuning with AutoML, especially that the full sample case in all investigated cases performed similarly to the full sample case and thus tuning time and complexity can be saved by tuning externally.\n", "\n", - "See also our fully automated API for tuning DoubleML objects using AutoML, called [``AutoDoubleML``](https://github.com/OliverSchacht/AutoDoubleML) which can be installed from Github for python." + "See also our fully automated API for tuning DoubleML objects using AutoML, called [AutoDoubleML](https://github.com/OliverSchacht/AutoDoubleML) which can be installed from Github for python." ] } ], From c1721abf5a62426c6632ab88c0475bf50249d463 Mon Sep 17 00:00:00 2001 From: OliverSchacht <65898638+OliverSchacht@users.noreply.github.com> Date: Wed, 23 Oct 2024 18:07:12 +0200 Subject: [PATCH 39/71] add rdrobust to requirements --- requirements.txt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index b3e88245..d68f28b1 100644 --- a/requirements.txt +++ b/requirements.txt @@ -19,4 +19,5 @@ plotly seaborn xgboost lightgbm -flaml \ No newline at end of file +flaml +rdrobust From 8cadf92e79e5c6955d5f6b0f638ead9b93cd4ca4 Mon Sep 17 00:00:00 2001 From: Oliver Schacht Date: Wed, 23 Oct 2024 19:33:39 +0200 Subject: [PATCH 40/71] fix example in rdd,rst --- doc/shared/models/rdd.rst | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/doc/shared/models/rdd.rst b/doc/shared/models/rdd.rst index 606fa3a3..3cebc2be 100644 --- a/doc/shared/models/rdd.rst +++ b/doc/shared/models/rdd.rst @@ -85,8 +85,10 @@ Estimation is conducted via its ``fit()`` method: :okwarning: import numpy as np + import pandas as pd from sklearn.linear_model import LassoCV from doubleml.rdd.datasets import make_simple_rdd_data + from doubleml.rdd import RDFlex import doubleml as dml np.random.seed(42) @@ -145,8 +147,10 @@ Estimation is conducted via its ``fit()`` method: :okwarning: import numpy as np + import pandas as pd from sklearn.linear_model import LassoCV, LogisticRegressionCV from doubleml.rdd.datasets import make_simple_rdd_data + from doubleml.rdd import RDFlex import doubleml as dml np.random.seed(42) @@ -160,6 +164,7 @@ Estimation is conducted via its ``fit()`` method: dml_data = dml.DoubleMLData(df, y_col='y', d_cols='d', x_cols=cov_names, s_col='score') ml_g = LassoCV() + ml_m = LogisticRegressionCV() rdflex_obj = RDFlex(dml_data, ml_g, ml_m, fuzzy=True) rdflex_obj.fit() From ffd64a3855bc3a90f0468317807ebb7326f936be Mon Sep 17 00:00:00 2001 From: Oliver Schacht Date: Wed, 23 Oct 2024 20:43:31 +0200 Subject: [PATCH 41/71] apparently sphinx does not like multi line code --- doc/shared/models/rdd.rst | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/doc/shared/models/rdd.rst b/doc/shared/models/rdd.rst index 3cebc2be..3da59b94 100644 --- a/doc/shared/models/rdd.rst +++ b/doc/shared/models/rdd.rst @@ -94,10 +94,7 @@ Estimation is conducted via its ``fit()`` method: np.random.seed(42) data_dict = make_simple_rdd_data(n_obs=1000, fuzzy=False) cov_names = ['x' + str(i) for i in range(data_dict['X'].shape[1])] - df = pd.DataFrame( - np.column_stack((data_dict['Y'], data_dict['D'], data_dict['score'], data_dict['X'])), - columns=['y', 'd', 'score'] + cov_names, - ) + df = pd.DataFrame(np.column_stack((data_dict['Y'], data_dict['D'], data_dict['score'], data_dict['X'])),columns=['y', 'd', 'score'] + cov_names) dml_data = dml.DoubleMLData(df, y_col='y', d_cols='d', x_cols=cov_names, s_col='score') @@ -156,10 +153,7 @@ Estimation is conducted via its ``fit()`` method: np.random.seed(42) data_dict = make_simple_rdd_data(n_obs=1000, fuzzy=True) cov_names = ['x' + str(i) for i in range(data_dict['X'].shape[1])] - df = pd.DataFrame( - np.column_stack((data_dict['Y'], data_dict['D'], data_dict['score'], data_dict['X'])), - columns=['y', 'd', 'score'] + cov_names, - ) + df = pd.DataFrame(np.column_stack((data_dict['Y'], data_dict['D'], data_dict['score'], data_dict['X'])), columns=['y', 'd', 'score'] + cov_names) dml_data = dml.DoubleMLData(df, y_col='y', d_cols='d', x_cols=cov_names, s_col='score') From 126c5494aa52167ab24016bb16a649f4cd3eef35 Mon Sep 17 00:00:00 2001 From: Oliver Schacht Date: Thu, 24 Oct 2024 15:40:06 +0200 Subject: [PATCH 42/71] add rdd literature --- doc/literature/literature.rst | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/doc/literature/literature.rst b/doc/literature/literature.rst index 768ebeca..bb2028d8 100644 --- a/doc/literature/literature.rst +++ b/doc/literature/literature.rst @@ -178,6 +178,17 @@ Double machine learning literature **Efficient Difference-in-Differences Estimation with High-Dimensional Common Trend Confounding** |br| *arXiv preprint arXiv:1809.01643 [econ.EM], 2018* |br| :octicon:`link` :bdg-link-dark:`arXiv ` + |hr| + + - Claudia Noack, Tomasz Olma, Christoph Rothe |br| + **Flexible Covariate Adjustments in Regression Discontinuity Designs** |br| + *arXiv preprint arXiv:2107.07942v3 [econ.EM], 2024* + |hr| + + - Matias D. Cattaneo,Rocío Titiunik |br| + **Regression Discontinuity Designs** |br| + *Annual Review of Economics, 14, Pages 821-851, 2022* + |hr| .. dropdown:: Debiased sparsity-based inference / theoretical foundations :class-title: sd-bg-primary sd-font-weight-bold From 223d1a9fcbc32361155e6edce0d357df5ceed5a8 Mon Sep 17 00:00:00 2001 From: Oliver Schacht Date: Thu, 24 Oct 2024 15:44:10 +0200 Subject: [PATCH 43/71] add rdd example --- doc/examples/index.rst | 1 + 1 file changed, 1 insertion(+) diff --git a/doc/examples/index.rst b/doc/examples/index.rst index 6787b6ae..f363e19e 100644 --- a/doc/examples/index.rst +++ b/doc/examples/index.rst @@ -31,6 +31,7 @@ General Examples py_double_ml_basic_iv.ipynb py_double_ml_plm_irm_hetfx.ipynb py_double_ml_meets_flaml.ipynb + py_double_ml_rdflex.ipynb Effect Heterogeneity From 1ff3adacc24cef608baa015aaab200075950123d Mon Sep 17 00:00:00 2001 From: Oliver Schacht Date: Thu, 24 Oct 2024 15:45:39 +0200 Subject: [PATCH 44/71] revision --- doc/examples/py_double_ml_rdflex.ipynb | 18 +++-- doc/shared/models/rdd.rst | 97 +++++++++++++++++--------- 2 files changed, 74 insertions(+), 41 deletions(-) diff --git a/doc/examples/py_double_ml_rdflex.ipynb b/doc/examples/py_double_ml_rdflex.ipynb index 2e8a27c5..8f48ad7c 100644 --- a/doc/examples/py_double_ml_rdflex.ipynb +++ b/doc/examples/py_double_ml_rdflex.ipynb @@ -8,9 +8,9 @@ "\n", "This notebook demonstrates how to use RDD designs within ``DoubleML``. Our implementation, ``RDFlex``, is based on the paper _\"Flexible Covariate Adjustments in Regression Discontinuity Designs\"_ by [Noack, Olma and Rothe (2024)](https://arxiv.org/abs/2107.07942). \n", "\n", - "In regression discontinuity designs (RDD) treatment assignment is determined by a continuous running variable $S$ (or \"score\") crossing a known threshold $c$ (or \"cutoff\"). We aim to estimate the local average treatment effect\n", + "In regression discontinuity designs (RDD), treatment assignment is determined by a continuous running variable $S$ (or \"score\") crossing a known threshold $c$ (or \"cutoff\"). We aim to estimate the average treatment effect locally at the cutoff:\n", "\n", - "$$\\theta_{0} = \\mathbb{E}[Y_i(1)-Y_i(0)\\mid S = c]$$\n", + "$$\\theta_{0} = \\mathbb{E}[Y_i(1)-Y_i(0)\\mid S = c].$$\n", "\n", "at the cutoff value. We therefore assume, that individuals are not able to manipulate their score in the neighborhood of the cutoff and that there is a discontinuity in the outcome that can be explained solely by the score." ] @@ -6243,7 +6243,11 @@ "\n", "$$\\hat{\\theta}_{\\text{SRD}}(h) = \\sum_{i=1}^n w_i(h)(Y_i-X_i^T\\hat{\\gamma}_h)$$\n", "\n", - "where $w_i(h)$ are local linear regression weights that depend on the data through the realizations of the running variable $S_i$ only and $h>0$ is a bandwidth. $\\hat{\\gamma}_h$ is a minimizer.\n", + "where $w_i(h)$ are local linear regression weights that depend on the data through the realizations of the running variable $S_i$ only and $h>0$ is a bandwidth. $\\hat{\\gamma}_h$ is a minimizer from the regression\n", + "\n", + "$$\\argmin_{\\beta,\\gamma} \\sum K_h(S_i) (S_i - Q_i^\\top\\beta- X_i^{\\top}\\gamma )^2.$$\n", + "\n", + "with $Q_i =(D_i, S_i, D_i S_i,1)^T$ (for more details, see our [User Guide](https://docs.doubleml.org/stable/guide/guide.html)), $K_h(v)=K(v/h)/h$ with $K(\\cdot)$ a kernel function.\n", "\n", "The packages ``rdrobust`` implements this estimation with a linear adjustment." ] @@ -6375,7 +6379,7 @@ "## Fuzzy RDD\n", "\n", "In the fuzzy RDDs, the treatment assignment is still deterministic given the score ($T_i = \\mathbb{I}[S_i > c]$).\n", - "However, in the neighborhood of the cutoff, there is a probability of observations not picking up the treatment they were assigned. These observations cause the probability jump of treatment at the cutoff to be smaller than 1.\n", + "However, in the neighborhood of the cutoff, there is a probability of observations not picking up the treatment they were assigned. These observations cause the probability jump of treatment at the cutoff to be smaller than 1 but larger than 0. Around the cutoff there can be treatment randomization on both sides.\n", "\n", "### Generate Data\n", "\n", @@ -11771,7 +11775,7 @@ "\n", "$$\\hat{\\theta}_{\\text{FRD}}(h) = \\frac{\\hat{\\theta}_{\\text{SRD}}(h)}{\\hat{\\theta}_{\\text{D}}(h)} = \\frac{\\sum_{i=1}^n w_i(h)(Y_i-X_i^T\\hat{\\gamma}_{Y, h})}{\\sum_{i=1}^n w_i(h)(D_i-X_i^T\\hat{\\gamma}_{D, h})}$$\n", "\n", - "Under the assumption, that there are no *Defiers* (= individuals that would always pick the opposite treatment of their assigned one), this effect can be interpreted as *Average Treatment Effect on the Treated*. The package ``rdrobust`` implements this estimation with a linear adjustment." + "Under similar assumptions as in the sharp case and that there are no *Defiers* (= individuals that would always pick the opposite treatment of their assigned one), this effect estimates the average treatment effect at the cutoff. The package ``rdrobust`` implements this estimation with a linear adjustment." ] }, { @@ -12062,7 +12066,7 @@ ], "metadata": { "kernelspec": { - "display_name": "dml_rdd", + "display_name": "didnotebook", "language": "python", "name": "python3" }, @@ -12076,7 +12080,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.12.4" + "version": "3.11.5" } }, "nbformat": 4, diff --git a/doc/shared/models/rdd.rst b/doc/shared/models/rdd.rst index 3da59b94..73069c5b 100644 --- a/doc/shared/models/rdd.rst +++ b/doc/shared/models/rdd.rst @@ -4,34 +4,41 @@ The key idea behind RDD is that units just above and just below the threshold ar Let :math:`S_i` represent the score, and let :math:`c` denote the cutoff point. Further, let :math:`Y_i(1)` and :math:`Y_i(0)` denote the potential outcomes with and without treatment, respectively. -The parameter of interest in an RDD is the **Local Average Treatment Effect (LATE)** at the cutoff: +The parameter of interest in an RDD is the **Average Treatment Effect** at the cutoff: .. math:: - \theta_{0} = \mathbb[Y(1)-Y(0)\mid S = c] + \theta_{0} = \mathbb{E}[Y_i(1)-Y_i(0)\mid S_i = c] -Our implementation follows work from `Noack, Olma and Rothe (2024) `_, however, our notation is slightly different to be consistent with the package. +Our implementation follows work from `Noack, Olma and Rothe (2024) `_. By using a set of additional covariates :math:`X_i` for each observation, :math:`Y_i` and :math:`D_i` can be adjusted in a first stage, to reduce the standard deviation in the estimation of :math:`\theta`. +.. note:: + To fit into the package syntax, our notation differs as follows from the one used in most standard RDD works (as for example `Cattaneo and Titiunik (2022) `_.): + - :math:`S_i` the **score** (instead of :math:`X_i`) + - :math:`X_i` the **covariates** (instead of :math:`Z_i`) + - :math:`D_i` the **treatment received** (in sharp RDD instead of :math:`T_i`) + - :math:`T_i` the **treatment assigned** (only relevant in fuzzy RDD) + Sharp Regression Discontinuity Design ************************************* -In a **Sharp RDD**, the treatment is deterministically assigned at the cutoff (:math:`D_i = \mathbb{1}\{S_i \geq c\}`). +In a **Sharp RDD**, the treatment :math:`D_i` is deterministically assigned at the cutoff (:math:`D_i = \mathbb{1}\{S_i \geq c\}`). -The LATE is identified as the difference in the conditional expectation of :math:`Y_i` at the cutoff from both sides: +The treatment effect at the cutoff is identified as the difference in the conditional expectation of :math:`Y_i` at the cutoff from both sides: .. math:: - \theta_{0} = \mathbb[Y(1)-Y(0)\mid S = c] + \theta_{0} = \mathbb{E}[Y_i(1)-Y_i(0)\mid S_i = c] -The assumptions for identifying the LATE in a sharp RDD are: +The assumptions for identifying this effect in a sharp RDD are: -- **Continuity:** The potential outcomes :math:`Y_i(1)` and :math:`Y_i(0)` are continuous around the cutoff, meaning no other factors besides treatment change discontinuously at the threshold. +- **Continuity:** The conditional mean of the potential outcomes :math:`\mathbb{E}[Y_i(d)\mid S_i=s]` for :math:`d \in \{0, 1\}` is continuous at the cutoff level :math:`c`. - **Exogeneity of the Score:** Units cannot perfectly manipulate their value of :math:`S_i` to either receive or avoid treatment exactly at the cutoff. -Without the use of covariates, :math:`\theta` is typically estimated by running separate local linear regressions on each side of the cutoff, yielding an estimator of the form: +Without the use of covariates, :math:`\theta_{0}` is typically estimated by running separate local linear regressions on each side of the cutoff, yielding an estimator of the form: .. math:: @@ -42,28 +49,35 @@ where the :math:`w_i(h)` are local linear regression weights that depend on the Under standard conditions, which include that the running variable is continuously distributed, and that the bandwidth :math:`h` tends to zero at an appropriate rate, the estimator :math:`\hat{\theta}_{\text{base}}(h)` is approximately normally distributed in large samples, with bias of order :math:`h^2` and variance of order :math:`(nh)^{-1}`: .. math:: - \hat{\tau}_{\text{base}}(h) \stackrel{a}{\sim} N\left(\tau + h^2 B_{\text{base}},(nh)^{-1}V\right). + \hat{\theta}_{\text{base}}(h) \stackrel{a}{\sim} N\left(\theta + h^2 B_{\text{base}},(nh)^{-1}V_{\text{base}}\right). + +If covariates are available, they can be used to improve the accuracy of empirical RD estimates. The most popular strategy is to include them linearly and without kernel localization in the local linear regression. By simple least squares algebra, this "linear adjustment" estimator can be written as a no-covariates estimator with the covariate-adjusted outcome :math:`Y_i - X_i^{\top} \widehat{\gamma}_h`: + +.. math:: + \widehat{\theta}_{\text{lin}}(h) = \sum w_i(h)\left(Y_i - X_i^{\top} \widehat{\gamma}_h\right). -If covariates are available, they can be used to improve the accuracy of empirical RD estimates. The most popular strategy is to include them linearly and without kernel localization in the local linear regression. By simple least squares algebra, this "linear adjustment" estimator can be written as a no-covariates estimator with the covariate-adjusted outcome :math:`Y_i - Z_i^{\top} \widehat{\gamma}_h`, where :math:`\widehat{\gamma}_h` is a minimizer: +Here, :math:`\widehat{\gamma}_h` is the minimizer from the regression .. math:: - \widehat{\tau}_{\text{lin}}(h) = \sum w_i(h)\left(Y_i - X_i^{\top} \widehat{\gamma}_h\right). + \arg\min_{\beta,\gamma} \sum K_h(S_i) (S_i - Q_i^{\top} \beta - X_i^{\top} \gamma)^2, -If :math:`\mathbb{E}[X_i | S_i = s]` is twice continuously differentiable around the cutoff, then the distribution of :math:`\widehat{\tau}_{\text{lin}}(h)` is similar to the one of the base estimator with potentially smaller variance term. +with :math:`Q_i =(D_i, S_i, D_i S_i, 1)^T` (see ``fs_specification`` in :ref:`Implementation Details `), :math:`K_h(v)=K(v/h)/h` with :math:`K(\cdot)` a kernel function. + +If :math:`\mathbb{E}[X_i | S_i = s]` is twice continuously differentiable around the cutoff, then the distribution of :math:`\widehat{\theta}_{\text{lin}}(h)` is similar to the one of the base estimator with potentially smaller variance term :math:`V_{\text{lin}}`. As this linear adjustment might not exploit the available covariate information efficiently, DoubleML features an RDD estimator with flexible covariate adjustment based on potentially nonlinear adjustment functions :math:`\eta`. The estimator takes the following form: .. math:: \widehat{\theta}_{\text{RDFlex}}(h; \eta) = \sum w_i(h) M_i(\eta), \quad M_i(\eta) = Y_i - \eta(X_i). -Similar to other algorithms in DoubleML, :math:`\eta` is estimated by ML methods and with crossfitting. Different than in other models, there is no orthogonal score, we rather adjust the outcome variable by the influence of the covariates. +Similar to other algorithms in DoubleML, :math:`\eta` is estimated by ML methods and with crossfitting. Different than in other models, there is no orthogonal score, but a similar global insensitive property (for details see `Noack, Olma and Rothe (2024) `_). We adjust the outcome variable by the influence of the covariates. This reduces the variance in the estimation potentially even further to: .. math:: V(\eta) = \frac{\bar{\kappa}}{f_X(0)} \left( \mathbb{V}[M_i(\eta) | S_i = 0^+] + \mathbb{V}[M_i(\eta) | S_i = 0^-] \right). -with :math:`\bar{\kappa}` being a kernel constant. To maximize the precision of the estimator :math:`\wh\tau(h;\eta)` for any particular bandwidth :math:`h`, :math:`\eta` has to be chosen such that :math:`V(\eta)` is as small as possible. Usually, the equally-weighted average of the left and right limits of the conditional expectation function :math:`\mathbb{E}[Y_i|S_i=s,X_i=x]` at the cutoff achieves this goal. It can be shown: +with :math:`\bar{\kappa}` being a kernel constant. To maximize the precision of the estimator :math:`\widehat\theta(h;\eta)` for any particular bandwidth :math:`h`, :math:`\eta` has to be chosen such that :math:`V(\eta)` is as small as possible. The equally-weighted average of the left and right limits of the conditional expectation function :math:`\mathbb{E}[Y_i|S_i=s,X_i=x]` at the cutoff achieves this goal. According to `Noack, Olma and Rothe (2024) `_, it holds: .. math:: V(\eta) \geq V(\eta_0) \text{ for all } \eta, @@ -73,7 +87,13 @@ where: .. math:: \eta_0(x) = \frac{1}{2} \left( \mu_0^+(x) + \mu_0^-(x) \right), \quad \mu_0^\star(x) = \mathbb{E}[Y_i | S_i = 0^\star, X_i = x] \text{ for } \star \in \{+, -\}. -``RDFlex`` implements this regression discontinuity design with :math:`\eta_0` being estimated by user-specified ML methods. The indicator ``fuzzy=False`` indicates a sharp design. The ``DoubleMLData`` object has to be defined with the argument ``s_col`` for the score and ``x_cols`` for the covariates. ``y_col`` refers to the observed outcome, on which we want to estimate the effect at the cutoff and ``d_cols`` is an indicator of whether an observation is treated or not. In the sharp design, this should be identical to an indicator of whether an observation is left or right of the cutoff (:math:`D_i = \mathbb{I}[S_i > c]`). +``RDFlex`` implements this regression discontinuity design with :math:`\eta_0` being estimated by user-specified ML methods. The indicator ``fuzzy=False`` indicates a sharp design. The ``DoubleMLData`` object has to be defined with the arguments: + + - ``y_col`` refers to the observed outcome, on which we want to estimate the effect at the cutoff + - ``s_col`` refers to the score + - ``x_cols`` refers to the covariates to be adjusted for + - ``d_cols`` is an indicator of whether an observation is treated or not. In the sharp design, this should be identical to an indicator of whether an observation is left or right of the cutoff (:math:`D_i = \mathbb{I}[S_i > c]`) + Estimation is conducted via its ``fit()`` method: .. tab-set:: @@ -94,7 +114,7 @@ Estimation is conducted via its ``fit()`` method: np.random.seed(42) data_dict = make_simple_rdd_data(n_obs=1000, fuzzy=False) cov_names = ['x' + str(i) for i in range(data_dict['X'].shape[1])] - df = pd.DataFrame(np.column_stack((data_dict['Y'], data_dict['D'], data_dict['score'], data_dict['X'])),columns=['y', 'd', 'score'] + cov_names) + df = pd.DataFrame(np.column_stack((data_dict['Y'], data_dict['D'], data_dict['score'], data_dict['X'])), columns=['y', 'd', 'score'] + cov_names) dml_data = dml.DoubleMLData(df, y_col='y', d_cols='d', x_cols=cov_names, s_col='score') @@ -109,30 +129,34 @@ Estimation is conducted via its ``fit()`` method: Fuzzy Regression Discontinuity Design ************************************* -In a **Fuzzy RDD**, treatment assignment is identical to the sharp RDD (:math:`T_i = \mathbb{1}\{S_i \geq c\}`), however, compliance is limited around the cutoff which leads to a different treatment received than assigned (:math:`D_i \neq T_i`) for some units. - -A treatment effect can be identified by comparing the jump in the probability of receiving treatment with the jump in the outcome. +In a **Fuzzy RDD**, treatment assignment :math:`T_i` is identical to the sharp RDD (:math:`T_i = \mathbb{1}\{S_i \geq c\}`), however, compliance is limited around the cutoff which leads to a different treatment received :math:`D_i` than assigned (:math=`D_i \neq T_i`) for some units. -The parameter of interest in the Fuzzy RDD is the average treatment effect on the treated: +The parameter of interest in the Fuzzy RDD is the average treatment effect at the cutoff, for all individuals that comply with the assignment: .. math:: - \theta_{0} = \mathbb[Y(1, 1)-Y(0, 0)\mid S = c, \{i\in \text{compliers}\}] + \theta_{0} = \mathbb{E}[Y_i(1, 1)-Y_i(0, 0)\mid S_i = c, \{i\in \text{compliers}\}] with :math:`Y_i(T_i, D_i(T_i))` being the potential outcome under the potential treatments. The assumptions for identifying the ATT in a fuzzy RDD are: -- **Continuity of Potential Outcomes:** Similar to sharp RDD, the potential outcomes :math:`Y_i(1)` and :math:`Y_i(0)` must be continuous at the cutoff. +- **Continuity of Potential Outcomes:** Similar to sharp RDD, the conditional mean of the potential outcomes :math:`\mathbb{E}[Y_i(d)\mid S_i=s]` for :math:`d \in \{0, 1\}` is continuous at the cutoff level :math:`c`. -- **Continuity of Treatment Assignment Probability:** The probability of receiving treatment :math:`\mathbb{E}[D_i | S_i]` must change discontinuously at the cutoff, but there should be no other jumps in the probability. +- **Continuity of Treatment Assignment Probability:** The probability of receiving treatment :math=`\mathbb{E}[D_i | S_i = s]` must change discontinuously at the cutoff, but there should be no other jumps in the probability. - **Monotonicity:** There must be no "defiers", meaning individuals for whom the treatment assignment goes in the opposite direction of the score. Under similar considerations as in the sharp case, an estimator using flexible covariate adjustment can be derived as: .. math:: - \hat{\theta}(h; \widehat{\eta}_Y, \widehat{\eta}_D) = \frac{\hat{\tau}_Y(h; \widehat{\eta}_Y)}{\hat{\tau}_D(h; \widehat{\eta}_D)} + \hat{\theta}(h; \widehat{\eta}_Y, \widehat{\eta}_D) = \frac{\hat{\theta}_Y(h; \widehat{\eta}_Y)}{\hat{\theta}_D(h; \widehat{\eta}_D)} = \frac{\sum w_{i}(h) (Y_i - \widehat{\eta}_{Y}(X_i))}{\sum w_{i}(h) (T_i - \widehat{\eta}_{D}(X_i))}. -``RDFlex`` implements this fuzzy RDD with flexible covariate adjustment. The indicator ``fuzzy=True`` indicates a fuzzy design. The ``DoubleMLData`` object has to be defined with the argument ``s_col`` for the score and ``x_cols`` for the covariates. ``y_col`` refers to the observed outcome, on which we want to estimate the effect at the cutoff and ``d_cols`` is an indicator of whether an observation is treated or not. +``RDFlex`` implements this fuzzy RDD with flexible covariate adjustment. The indicator ``fuzzy=True`` indicates a fuzzy design. The ``DoubleMLData`` object has to be defined with the arguments: + + - ``y_col`` refers to the observed outcome, on which we want to estimate the effect at the cutoff + - ``s_col`` refers to the score + - ``x_cols`` refers to the covariates to be adjusted for + - ``d_cols`` is an indicator of whether an observation is treated or not. In the fuzzy design, this should **not** be identical to an indicator of whether an observation is left or right of the cutoff (:math=`D_i \neq \mathbb{I}[S_i > c]`) + Estimation is conducted via its ``fit()`` method: .. tab-set:: @@ -165,14 +189,19 @@ Estimation is conducted via its ``fit()`` method: print(rdflex_obj) +.. _rdd_imp_details: + Implementation Details ************************************* -There are some specialities in the ``RDFlex`` implementation, that differ from the rest of the package and thus deserve to be pointed out here. - -#. **Bandwidth Selection**: The bandwidth is a crucial tuning parameter for RDD algorithms. By default, our implementation uses the ``rdbwselect`` method from the ``rdrobust`` library for an initial selection. This can be overridden by the user using the parameter ``h_fs``. Since covariate adjustment and RDD fitting are interacting, by default, we repeat the bandwidth selection and nuisance estimation once in the ``fit()`` method. This can be adjusted by ``n_iterations``. -#. **Kernel Selection**: Another crucial decision when estimating with RDD is the kernel that weights observations around the cutoff. For this, the parameters ``fs_kernel`` and ``kernel`` are important. The latter is a kwarg and is used in the RDD estimation, while the ``fs_kernel`` specifies the kernel used in the nuisance estimation. By default, both of them are ``triangular``. -#. **Local and Global Learners**: ``RDFlex`` estimates the nuisance functions locally around the cutoff. In certain scenarios, it can be desirable to rather perform a global fit on the full support of the score :math:`S`. For this, the ``Global Learners`` in ``doubleml.utils`` can be used. -#. **First Stage Specifications**: In nuisance estimation, we have to add variable(s) to add information about the location of the observation left or right of the cutoff. In the default case ``fs_specification="cutoff"``, this is an indicator whether the observation is left or right. If ``fs_specification="cutoff and score"``, additionally the score is added. In case of ``fs_specification="interacted cutoff and score"``, also an interaction term of the cutoff indicator and the score is added. -#. **Intention-to-Treat Effects**: Above, we demonstrated how to estimate the ATT in a fuzzy RDD. To estimate an Intention-to-Treat effect instead, the parameter ``fuzzy=False`` can be selected. -#. **Key-worded Arguments**: ``rdrobust`` as the underlying RDD library has additional paramters to tune the estimation. You can use ``**kwargs`` to add them via ``RDFlex`` \ No newline at end of file +There are some specialities in the ``RDFlex`` implementation that differ from the rest of the package and thus deserve to be pointed out here. + +#. **Bandwidth Selection**: The bandwidth is a crucial tuning parameter for RDD algorithms. By default, our implementation uses the ``rdbwselect`` method from the ``rdrobust`` library for an initial selection. This can be overridden by the user using the parameter ``h_fs``. Since covariate adjustment and RDD fitting are interacting, by default, we repeat the bandwidth selection and nuisance estimation steps once in the ``fit()`` method. This can be adjusted by ``n_iterations``. +#. **Kernel Selection**: Another crucial decision when estimating with RDD is the kernel determining the weights for observations around the cutoff. For this, the parameters ``fs_kernel`` and ``kernel`` are important. The latter is a key-worded argument and is used in the RDD estimation, while the ``fs_kernel`` specifies the kernel used in the nuisance estimation. By default, both of them are ``triangular``. +#. **Local and Global Learners**: ``RDFlex`` estimates the nuisance functions locally around the cutoff. In certain scenarios, it can be desirable to rather perform a global fit on the full support of the score :math:`S`. For this, the ``Global Learners`` in ``doubleml.utils`` can be used (see our example notebook in the :ref:`Example Gallery `). +#. **First Stage Specifications**: In nuisance estimation, we have to add variable(s) to add information about the location of the observation left or right of the cutoff. Available options are: + - In the default case ``fs_specification="cutoff"``, this is an indicator of whether the observation is left or right + - If ``fs_specification="cutoff and score"``, additionally the score is added. + - In the case of ``fs_specification="interacted cutoff and score"``, also an interaction term of the cutoff indicator and the score is added. +#. **Intention-to-Treat Effects**: Above, we demonstrated how to estimate the ATE at the cutoff in a fuzzy RDD. To estimate an Intention-to-Treat effect instead, the parameter ``fuzzy=False`` can be selected. +#. **Key-worded Arguments**: ``rdrobust`` as the underlying RDD library has additional parameters to tune the estimation. You can use ``**kwargs`` to add them via ``RDFlex``. \ No newline at end of file From 7ae796468fa633987e801d649d1e4a758cd39889 Mon Sep 17 00:00:00 2001 From: Oliver Schacht Date: Thu, 24 Oct 2024 17:35:24 +0200 Subject: [PATCH 45/71] fix broken links --- doc/literature/literature.rst | 6 ++++-- doc/shared/models/rdd.rst | 4 ++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/doc/literature/literature.rst b/doc/literature/literature.rst index bb2028d8..5bbb0e74 100644 --- a/doc/literature/literature.rst +++ b/doc/literature/literature.rst @@ -182,12 +182,14 @@ Double machine learning literature - Claudia Noack, Tomasz Olma, Christoph Rothe |br| **Flexible Covariate Adjustments in Regression Discontinuity Designs** |br| - *arXiv preprint arXiv:2107.07942v3 [econ.EM], 2024* + *arXiv preprint arXiv:2107.07942v3 [econ.EM], 2024* |br| + :octicon:`link` :bdg-link-dark:`arXiv ` |hr| - Matias D. Cattaneo,Rocío Titiunik |br| **Regression Discontinuity Designs** |br| - *Annual Review of Economics, 14, Pages 821-851, 2022* + *Annual Review of Economics, 14, Pages 821-851, 2022* |br| + :octicon:`link` :bdg-link-dark:`url ` |hr| .. dropdown:: Debiased sparsity-based inference / theoretical foundations diff --git a/doc/shared/models/rdd.rst b/doc/shared/models/rdd.rst index 73069c5b..6665b238 100644 --- a/doc/shared/models/rdd.rst +++ b/doc/shared/models/rdd.rst @@ -15,7 +15,7 @@ Our implementation follows work from `Noack, Olma and Rothe (2024) `_.): + To fit into the package syntax, our notation differs as follows from the one used in most standard RDD works (as for example `Cattaneo and Titiunik (2022) `_.): - :math:`S_i` the **score** (instead of :math:`X_i`) - :math:`X_i` the **covariates** (instead of :math:`Z_i`) - :math:`D_i` the **treatment received** (in sharp RDD instead of :math:`T_i`) @@ -204,4 +204,4 @@ There are some specialities in the ``RDFlex`` implementation that differ from th - If ``fs_specification="cutoff and score"``, additionally the score is added. - In the case of ``fs_specification="interacted cutoff and score"``, also an interaction term of the cutoff indicator and the score is added. #. **Intention-to-Treat Effects**: Above, we demonstrated how to estimate the ATE at the cutoff in a fuzzy RDD. To estimate an Intention-to-Treat effect instead, the parameter ``fuzzy=False`` can be selected. -#. **Key-worded Arguments**: ``rdrobust`` as the underlying RDD library has additional parameters to tune the estimation. You can use ``**kwargs`` to add them via ``RDFlex``. \ No newline at end of file +#. **Key-worded Arguments**: ``rdrobust`` as the underlying RDD library has additional parameters to tune the estimation. You can use ``**kwargs`` to add them via ``RDFlex``. From b3d043386027ba1d831d83453012582ceb02d0b3 Mon Sep 17 00:00:00 2001 From: OliverSchacht <65898638+OliverSchacht@users.noreply.github.com> Date: Fri, 25 Oct 2024 09:28:24 +0200 Subject: [PATCH 46/71] add cattaneo link to exceptions --- doc/conf.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/doc/conf.py b/doc/conf.py index c69f9c79..07501881 100644 --- a/doc/conf.py +++ b/doc/conf.py @@ -199,6 +199,8 @@ 'http://dx.doi.org/10.2139/ssrn.3619201', # Valid URL, Causes ConnectTimeoutError 'https://folia.unifr.ch/global/documents/306524', + # Valid DOI; Causes 403 Client Error: Forbidden for url:... + 'https://doi.org/10.1146/annurev-economics-051520-021409', ] # To execute R code via jupyter-execute one needs to install the R kernel for jupyter From ff18f88640b14fcd8f001f68b5ea7a49fdc63c43 Mon Sep 17 00:00:00 2001 From: Oliver Schacht Date: Wed, 13 Nov 2024 18:08:12 +0100 Subject: [PATCH 47/71] add rdd api --- doc/api/api.rst | 2 ++ 1 file changed, 2 insertions(+) diff --git a/doc/api/api.rst b/doc/api/api.rst index 498d0d06..536e3224 100644 --- a/doc/api/api.rst +++ b/doc/api/api.rst @@ -37,6 +37,7 @@ Double machine learning models DoubleMLLPQ DoubleMLCVAR DoubleMLQTE + RDFlex Datasets module --------------- @@ -73,6 +74,7 @@ Dataset generators datasets.make_confounded_irm_data datasets.make_heterogeneous_data datasets.make_irm_data_discrete_treatments + rdd.datasets.make_simple_rdd_data Utility classes and functions ----------------------------- From 2054bed0d0b2509df580060cf02baa1249de6d52 Mon Sep 17 00:00:00 2001 From: Oliver Schacht Date: Wed, 13 Nov 2024 18:08:37 +0100 Subject: [PATCH 48/71] revision according to feedback --- doc/shared/models/rdd.rst | 58 ++++++++++++++++++--------------------- 1 file changed, 26 insertions(+), 32 deletions(-) diff --git a/doc/shared/models/rdd.rst b/doc/shared/models/rdd.rst index 6665b238..8ea906b9 100644 --- a/doc/shared/models/rdd.rst +++ b/doc/shared/models/rdd.rst @@ -2,17 +2,9 @@ The key idea behind RDD is that units just above and just below the threshold are assumed to be comparable, differing only in the treatment assignment. This allows estimating the causal effect at the threshold by comparing outcomes of treated and untreated units. -Let :math:`S_i` represent the score, and let :math:`c` denote the cutoff point. Further, let :math:`Y_i(1)` and :math:`Y_i(0)` denote the potential outcomes with and without treatment, respectively. - -The parameter of interest in an RDD is the **Average Treatment Effect** at the cutoff: - -.. math:: - - \theta_{0} = \mathbb{E}[Y_i(1)-Y_i(0)\mid S_i = c] - Our implementation follows work from `Noack, Olma and Rothe (2024) `_. -By using a set of additional covariates :math:`X_i` for each observation, :math:`Y_i` and :math:`D_i` can be adjusted in a first stage, to reduce the standard deviation in the estimation of :math:`\theta`. +Let :math:`Y_i` be the observed outcome of an individual and :math:`D_i` the treatment it received. By using a set of additional covariates :math:`X_i` for each observation, :math:`Y_i` and :math:`D_i` can be adjusted in a first stage, to reduce the standard deviation in the estimation of the causal effect. .. note:: To fit into the package syntax, our notation differs as follows from the one used in most standard RDD works (as for example `Cattaneo and Titiunik (2022) `_.): @@ -26,58 +18,58 @@ Sharp Regression Discontinuity Design In a **Sharp RDD**, the treatment :math:`D_i` is deterministically assigned at the cutoff (:math:`D_i = \mathbb{1}\{S_i \geq c\}`). -The treatment effect at the cutoff is identified as the difference in the conditional expectation of :math:`Y_i` at the cutoff from both sides: +Let :math:`S_i` represent the score, and let :math:`c` denote the cutoff point. Further, let :math:`Y_i(1)` and :math:`Y_i(0)` denote the potential outcomes with and without treatment, respectively. Then, the treatment effect at the cutoff is identified as the difference in the conditional expectation of :math:`Y_i` at the cutoff from both sides. .. math:: - \theta_{0} = \mathbb{E}[Y_i(1)-Y_i(0)\mid S_i = c] + \tau_0 = \mathbb{E}[Y_i(1)-Y_i(0)\mid S_i = c] -The assumptions for identifying this effect in a sharp RDD are: +The key assumption for identifying this effect in a sharp RDD is: - **Continuity:** The conditional mean of the potential outcomes :math:`\mathbb{E}[Y_i(d)\mid S_i=s]` for :math:`d \in \{0, 1\}` is continuous at the cutoff level :math:`c`. -- **Exogeneity of the Score:** Units cannot perfectly manipulate their value of :math:`S_i` to either receive or avoid treatment exactly at the cutoff. +This includes the necessary condition of exogeneity, implying units cannot perfectly manipulate their value of :math:`S_i` to either receive or avoid treatment exactly at the cutoff. -Without the use of covariates, :math:`\theta_{0}` is typically estimated by running separate local linear regressions on each side of the cutoff, yielding an estimator of the form: +Without the use of covariates, :math:`\tau_{0}` is typically estimated by running separate local linear regressions on each side of the cutoff, yielding an estimator of the form: .. math:: - \hat{\theta}_{\text{base}}(h) = \sum_{i=1}^n w_i(h)Y_i, + \hat{\tau}_{\text{base}}(h) = \sum_{i=1}^n w_i(h)Y_i, where the :math:`w_i(h)` are local linear regression weights that depend on the data through the realizations of the running variable only and :math:`h > 0` is a bandwidth. -Under standard conditions, which include that the running variable is continuously distributed, and that the bandwidth :math:`h` tends to zero at an appropriate rate, the estimator :math:`\hat{\theta}_{\text{base}}(h)` is approximately normally distributed in large samples, with bias of order :math:`h^2` and variance of order :math:`(nh)^{-1}`: +Under standard conditions, which include that the running variable is continuously distributed, and that the bandwidth :math:`h` tends to zero at an appropriate rate, the estimator :math:`\hat{\tau}_{\text{base}}(h)` is approximately normally distributed in large samples, with bias of order :math:`h^2` and variance of order :math:`(nh)^{-1}`: .. math:: - \hat{\theta}_{\text{base}}(h) \stackrel{a}{\sim} N\left(\theta + h^2 B_{\text{base}},(nh)^{-1}V_{\text{base}}\right). + \hat{\tau}_{\text{base}}(h) \stackrel{a}{\sim} N\left(\tau + h^2 B_{\text{base}},(nh)^{-1}V_{\text{base}}\right). If covariates are available, they can be used to improve the accuracy of empirical RD estimates. The most popular strategy is to include them linearly and without kernel localization in the local linear regression. By simple least squares algebra, this "linear adjustment" estimator can be written as a no-covariates estimator with the covariate-adjusted outcome :math:`Y_i - X_i^{\top} \widehat{\gamma}_h`: .. math:: - \widehat{\theta}_{\text{lin}}(h) = \sum w_i(h)\left(Y_i - X_i^{\top} \widehat{\gamma}_h\right). + \widehat{\tau}_{\text{lin}}(h) = \sum w_i(h)\left(Y_i - X_i^{\top} \widehat{\gamma}_h\right). Here, :math:`\widehat{\gamma}_h` is the minimizer from the regression .. math:: - \arg\min_{\beta,\gamma} \sum K_h(S_i) (S_i - Q_i^{\top} \beta - X_i^{\top} \gamma)^2, + \arg\min_{\beta,\gamma} \sum K_h(S_i) (Y_i - Q_i^{\top} \beta - X_i^{\top} \gamma)^2, with :math:`Q_i =(D_i, S_i, D_i S_i, 1)^T` (see ``fs_specification`` in :ref:`Implementation Details `), :math:`K_h(v)=K(v/h)/h` with :math:`K(\cdot)` a kernel function. -If :math:`\mathbb{E}[X_i | S_i = s]` is twice continuously differentiable around the cutoff, then the distribution of :math:`\widehat{\theta}_{\text{lin}}(h)` is similar to the one of the base estimator with potentially smaller variance term :math:`V_{\text{lin}}`. +If :math:`\mathbb{E}[X_i | S_i = s]` is twice continuously differentiable around the cutoff, then the distribution of :math:`\widehat{\tau}_{\text{lin}}(h)` is similar to the one of the base estimator with potentially smaller variance term :math:`V_{\text{lin}}`. As this linear adjustment might not exploit the available covariate information efficiently, DoubleML features an RDD estimator with flexible covariate adjustment based on potentially nonlinear adjustment functions :math:`\eta`. The estimator takes the following form: .. math:: - \widehat{\theta}_{\text{RDFlex}}(h; \eta) = \sum w_i(h) M_i(\eta), \quad M_i(\eta) = Y_i - \eta(X_i). + \widehat{\tau}_{\text{RDFlex}}(h; \eta) = \sum w_i(h) M_i(\eta), \quad M_i(\eta) = Y_i - \eta(X_i). -Similar to other algorithms in DoubleML, :math:`\eta` is estimated by ML methods and with crossfitting. Different than in other models, there is no orthogonal score, but a similar global insensitive property (for details see `Noack, Olma and Rothe (2024) `_). We adjust the outcome variable by the influence of the covariates. +Similar to other algorithms in DoubleML, :math:`\eta` is estimated by ML methods and with crossfitting. Different than in other models, there is no orthogonal score, but a similar global insensitive property holds (for details see `Noack, Olma and Rothe (2024) `_). We adjust the outcome variable by the influence of the covariates. This reduces the variance in the estimation potentially even further to: .. math:: V(\eta) = \frac{\bar{\kappa}}{f_X(0)} \left( \mathbb{V}[M_i(\eta) | S_i = 0^+] + \mathbb{V}[M_i(\eta) | S_i = 0^-] \right). -with :math:`\bar{\kappa}` being a kernel constant. To maximize the precision of the estimator :math:`\widehat\theta(h;\eta)` for any particular bandwidth :math:`h`, :math:`\eta` has to be chosen such that :math:`V(\eta)` is as small as possible. The equally-weighted average of the left and right limits of the conditional expectation function :math:`\mathbb{E}[Y_i|S_i=s,X_i=x]` at the cutoff achieves this goal. According to `Noack, Olma and Rothe (2024) `_, it holds: +with :math:`\bar{\kappa}` being a kernel constant. To maximize the precision of the estimator :math:`\widehat\tau(h;\eta)` for any particular bandwidth :math:`h`, :math:`\eta` has to be chosen such that :math:`V(\eta)` is as small as possible. The equally-weighted average of the left and right limits of the conditional expectation function :math:`\mathbb{E}[Y_i|S_i=s,X_i=x]` at the cutoff achieves this goal. According to `Noack, Olma and Rothe (2024) `_, it holds: .. math:: V(\eta) \geq V(\eta_0) \text{ for all } \eta, @@ -129,7 +121,7 @@ Estimation is conducted via its ``fit()`` method: Fuzzy Regression Discontinuity Design ************************************* -In a **Fuzzy RDD**, treatment assignment :math:`T_i` is identical to the sharp RDD (:math:`T_i = \mathbb{1}\{S_i \geq c\}`), however, compliance is limited around the cutoff which leads to a different treatment received :math:`D_i` than assigned (:math=`D_i \neq T_i`) for some units. +In a **Fuzzy RDD**, treatment assignment :math:`T_i` is identical to the sharp RDD (:math:`T_i = \mathbb{1}\{S_i \geq c\}`), however, compliance is limited around the cutoff which leads to a different treatment received :math:`D_i` than assigned (:math:`D_i \neq T_i`) for some units. The parameter of interest in the Fuzzy RDD is the average treatment effect at the cutoff, for all individuals that comply with the assignment: @@ -140,7 +132,7 @@ with :math:`Y_i(T_i, D_i(T_i))` being the potential outcome under the potential - **Continuity of Potential Outcomes:** Similar to sharp RDD, the conditional mean of the potential outcomes :math:`\mathbb{E}[Y_i(d)\mid S_i=s]` for :math:`d \in \{0, 1\}` is continuous at the cutoff level :math:`c`. -- **Continuity of Treatment Assignment Probability:** The probability of receiving treatment :math=`\mathbb{E}[D_i | S_i = s]` must change discontinuously at the cutoff, but there should be no other jumps in the probability. +- **Continuity of Treatment Assignment Probability:** The probability of receiving treatment :math:`\mathbb{E}[D_i | S_i = s]` must change discontinuously at the cutoff, but there should be no other jumps in the probability. - **Monotonicity:** There must be no "defiers", meaning individuals for whom the treatment assignment goes in the opposite direction of the score. @@ -150,12 +142,14 @@ Under similar considerations as in the sharp case, an estimator using flexible c \hat{\theta}(h; \widehat{\eta}_Y, \widehat{\eta}_D) = \frac{\hat{\theta}_Y(h; \widehat{\eta}_Y)}{\hat{\theta}_D(h; \widehat{\eta}_D)} = \frac{\sum w_{i}(h) (Y_i - \widehat{\eta}_{Y}(X_i))}{\sum w_{i}(h) (T_i - \widehat{\eta}_{D}(X_i))}. +:math:`\eta_Y` and :math:`\eta_D` are defined as in the sharp RDD setting, with the respective outcome. + ``RDFlex`` implements this fuzzy RDD with flexible covariate adjustment. The indicator ``fuzzy=True`` indicates a fuzzy design. The ``DoubleMLData`` object has to be defined with the arguments: - ``y_col`` refers to the observed outcome, on which we want to estimate the effect at the cutoff - ``s_col`` refers to the score - ``x_cols`` refers to the covariates to be adjusted for - - ``d_cols`` is an indicator of whether an observation is treated or not. In the fuzzy design, this should **not** be identical to an indicator of whether an observation is left or right of the cutoff (:math=`D_i \neq \mathbb{I}[S_i > c]`) + - ``d_cols`` is an indicator of whether an observation is treated or not. In the fuzzy design, this should **not** be identical to an indicator of whether an observation is left or right of the cutoff (:math:`D_i \neq \mathbb{I}[S_i > c]`) Estimation is conducted via its ``fit()`` method: @@ -196,12 +190,12 @@ Implementation Details There are some specialities in the ``RDFlex`` implementation that differ from the rest of the package and thus deserve to be pointed out here. -#. **Bandwidth Selection**: The bandwidth is a crucial tuning parameter for RDD algorithms. By default, our implementation uses the ``rdbwselect`` method from the ``rdrobust`` library for an initial selection. This can be overridden by the user using the parameter ``h_fs``. Since covariate adjustment and RDD fitting are interacting, by default, we repeat the bandwidth selection and nuisance estimation steps once in the ``fit()`` method. This can be adjusted by ``n_iterations``. -#. **Kernel Selection**: Another crucial decision when estimating with RDD is the kernel determining the weights for observations around the cutoff. For this, the parameters ``fs_kernel`` and ``kernel`` are important. The latter is a key-worded argument and is used in the RDD estimation, while the ``fs_kernel`` specifies the kernel used in the nuisance estimation. By default, both of them are ``triangular``. -#. **Local and Global Learners**: ``RDFlex`` estimates the nuisance functions locally around the cutoff. In certain scenarios, it can be desirable to rather perform a global fit on the full support of the score :math:`S`. For this, the ``Global Learners`` in ``doubleml.utils`` can be used (see our example notebook in the :ref:`Example Gallery `). -#. **First Stage Specifications**: In nuisance estimation, we have to add variable(s) to add information about the location of the observation left or right of the cutoff. Available options are: +1. **Bandwidth Selection**: The bandwidth is a crucial tuning parameter for RDD algorithms. By default, our implementation uses the ``rdbwselect`` method from the ``rdrobust`` library for an initial selection. This can be overridden by the user using the parameter ``h_fs``. Since covariate adjustment and RDD fitting are interacting, by default, we repeat the bandwidth selection and nuisance estimation steps once in the ``fit()`` method. This can be adjusted by ``n_iterations``. +2. **Kernel Selection**: Another crucial decision when estimating with RDD is the kernel determining the weights for observations around the cutoff. For this, the parameters ``fs_kernel`` and ``kernel`` are important. The latter is a key-worded argument and is used in the RDD estimation, while the ``fs_kernel`` specifies the kernel used in the nuisance estimation. By default, both of them are ``triangular``. +3. **Local and Global Learners**: ``RDFlex`` estimates the nuisance functions locally around the cutoff. In certain scenarios, it can be desirable to rather perform a global fit on the full support of the score :math:`S`. For this, the ``Global Learners`` in ``doubleml.utils`` can be used (see our example notebook in the :ref:`Example Gallery `). +4. **First Stage Specifications**: In nuisance estimation, we have to add variable(s) to add information about the location of the observation left or right of the cutoff. Available options are: - In the default case ``fs_specification="cutoff"``, this is an indicator of whether the observation is left or right - If ``fs_specification="cutoff and score"``, additionally the score is added. - In the case of ``fs_specification="interacted cutoff and score"``, also an interaction term of the cutoff indicator and the score is added. -#. **Intention-to-Treat Effects**: Above, we demonstrated how to estimate the ATE at the cutoff in a fuzzy RDD. To estimate an Intention-to-Treat effect instead, the parameter ``fuzzy=False`` can be selected. -#. **Key-worded Arguments**: ``rdrobust`` as the underlying RDD library has additional parameters to tune the estimation. You can use ``**kwargs`` to add them via ``RDFlex``. +5. **Intention-to-Treat Effects**: Above, we demonstrated how to estimate the ATE at the cutoff in a fuzzy RDD. To estimate an Intention-to-Treat effect instead, the parameter ``fuzzy=False`` can be selected. +6. **Key-worded Arguments**: ``rdrobust`` as the underlying RDD library has additional parameters to tune the estimation. You can use ``**kwargs`` to add them via ``RDFlex``. From d0dec8fcac737e18fc11891b832aa3db87c25f4c Mon Sep 17 00:00:00 2001 From: Oliver Schacht Date: Wed, 13 Nov 2024 18:09:04 +0100 Subject: [PATCH 49/71] revision according to feedback --- doc/examples/py_double_ml_rdflex.ipynb | 70 +++++++++++++++++++------- 1 file changed, 51 insertions(+), 19 deletions(-) diff --git a/doc/examples/py_double_ml_rdflex.ipynb b/doc/examples/py_double_ml_rdflex.ipynb index 8f48ad7c..7769c2a6 100644 --- a/doc/examples/py_double_ml_rdflex.ipynb +++ b/doc/examples/py_double_ml_rdflex.ipynb @@ -10,9 +10,9 @@ "\n", "In regression discontinuity designs (RDD), treatment assignment is determined by a continuous running variable $S$ (or \"score\") crossing a known threshold $c$ (or \"cutoff\"). We aim to estimate the average treatment effect locally at the cutoff:\n", "\n", - "$$\\theta_{0} = \\mathbb{E}[Y_i(1)-Y_i(0)\\mid S = c].$$\n", + "$$\\tau_{0} = \\mathbb{E}[Y_i(1)-Y_i(0)\\mid S_i = c].$$\n", "\n", - "at the cutoff value. We therefore assume, that individuals are not able to manipulate their score in the neighborhood of the cutoff and that there is a discontinuity in the outcome that can be explained solely by the score." + "We therefore assume, that individuals are not able to manipulate their score in the neighborhood of the cutoff and that there is a discontinuity in the outcome that can be explained solely by the score." ] }, { @@ -43,12 +43,12 @@ "source": [ "## Sharp RDD\n", "\n", - "In the sharp design, the treatment assignment is deterministic given the score. Namely, all the individuals with a score higher than the cutoff, receive the treatment $$D_i = \\mathbb{I}[S_i > c].$$\n", + "In the sharp design, the treatment assignment is deterministic given the score. Namely, all the individuals with a score higher than the cutoff, receive the treatment $$D_i = \\mathbb{I}[S_i \\geq c].$$\n", "\n", "### Generate Data\n", "\n", "The function ``make_simple_rdd_data()`` can be used to generate data of a rather standard RDD setting. If we set ``fuzzy = False``, the generated data follows a sharp RDD. We also generate covariates $X$ that can be used to adjust the estimation at a later stage.\n", - "In this example, the cutoff is set to $c = 0$." + "Without loss of generality, the cutoff is normalized to $c = 0$ for this example." ] }, { @@ -3105,7 +3105,7 @@ "\n", "for all individuals. As the effect at the cutoff is the average of these ITEs\n", "\n", - "$$\\theta_{0} = \\mathbb{E}[Y_i(1)-Y_i(0)\\mid S = c],$$\n", + "$$\\tau_{0} = \\mathbb{E}[Y_i(1)-Y_i(0)\\mid S_i = c],$$\n", "\n", "the ITEs can be used in a kernel regression to get an oracle estimator at the cutoff, as a local weighted average." ] @@ -6237,17 +6237,43 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### RDD with Linear Adjustment\n", + "### RDD without Adjustment\n", "\n", "The standard RDD estimator for the sharp design takes the form \n", "\n", - "$$\\hat{\\theta}_{\\text{SRD}}(h) = \\sum_{i=1}^n w_i(h)(Y_i-X_i^T\\hat{\\gamma}_h)$$\n", + "$$\\hat{\\tau}_{\\text{base}}(h) = \\sum_{i=1}^n w_i(h)Y_i,$$\n", + "\n", + "where $w_i(h)$ are local linear regression weights that depend on the data through the realizations of the running variable $S_i$ only and $h>0$ is a bandwidth. $\\hat{\\gamma}_h$ is a minimizer from the regression\n", + "\n", + "$$\\argmin_{\\beta,\\gamma} \\sum K_h(S_i) (Y_i - Q_i^\\top\\beta- X_i^{\\top}\\gamma )^2.$$\n", + "\n", + "with $Q_i =(D_i, S_i, D_i S_i,1)^T$ (for more details, see our [User Guide](https://docs.doubleml.org/stable/guide/models.html#regression-discontinuity-designs-rdd)), $K_h(v)=K(v/h)/h$ with $K(\\cdot)$ a kernel function.\n", + "\n", + "The packages ``rdrobust`` implements this estimation." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### RDD with Linear Adjustment\n", + "\n", + "The linearly adjusted RDD estimator for the sharp design takes the form \n", + "\n", + "$$\\hat{\\tau}_{lin}(h) = \\sum_{i=1}^n w_i(h)(Y_i-X_i^T\\hat{\\gamma}_h)$$\n", "\n", "where $w_i(h)$ are local linear regression weights that depend on the data through the realizations of the running variable $S_i$ only and $h>0$ is a bandwidth. $\\hat{\\gamma}_h$ is a minimizer from the regression\n", "\n", "$$\\argmin_{\\beta,\\gamma} \\sum K_h(S_i) (S_i - Q_i^\\top\\beta- X_i^{\\top}\\gamma )^2.$$\n", "\n", - "with $Q_i =(D_i, S_i, D_i S_i,1)^T$ (for more details, see our [User Guide](https://docs.doubleml.org/stable/guide/guide.html)), $K_h(v)=K(v/h)/h$ with $K(\\cdot)$ a kernel function.\n", + "with $Q_i =(D_i, S_i, D_i S_i,1)^T$ (for more details, see our [User Guide](https://docs.doubleml.org/stable/guide/models.html#regression-discontinuity-designs-rdd)), $K_h(v)=K(v/h)/h$ with $K(\\cdot)$ a kernel function.\n", "\n", "The packages ``rdrobust`` implements this estimation with a linear adjustment." ] @@ -6304,9 +6330,9 @@ "source": [ "### RDD with flexible adjustment\n", "\n", - "[Noack, Olma and Rothe (2024)](https://arxiv.org/abs/2107.07942) propose an estimator that reduces the variance of the above esimator, using a flexible adjustment of the outcome by machine learning. For more details, see our User Guide. The estimator here takes the form \n", + "[Noack, Olma and Rothe (2024)](https://arxiv.org/abs/2107.07942) propose an estimator that reduces the variance of the above esimator, using a flexible adjustment of the outcome by machine learning. For more details, see our [User Guide](https://docs.doubleml.org/stable/guide/models.html#regression-discontinuity-designs-rdd). The estimator here takes the form \n", "\n", - "$$\\hat{\\theta}_{\\text{RDFlex}}(h) = \\sum_{i=1}^n w_i(h)M_i(\\eta),\\quad M_i(\\eta) = Y_i - \\eta(X_i),$$\n", + "$$\\hat{\\tau}_{\\text{RDFlex}}(h;\\eta) = \\sum_{i=1}^n w_i(h)M_i(\\eta),\\quad M_i(\\eta) = Y_i - \\eta(X_i),$$\n", "\n", "with $\\eta(\\cdot)$ being potentially nonlinear adjustment functions.\n", "\n", @@ -6315,7 +6341,7 @@ " - `y_col` refers to the observed outcome, on which we want to estimate the effect at the cutoff\n", " - `s_col` refers to the score\n", " - `x_cols` refers to the covariates to be adjusted for\n", - " - `d_cols` is an indicator whether an observation is treated or not. In the sharp design, this should be identical to an indicator whether an observation is left or right of the cutoff ($D_i = \\mathbb{I}[S_i > c]$)" + " - `d_cols` is an indicator whether an observation is treated or not. In the sharp design, this should be identical to an indicator whether an observation is left or right of the cutoff ($D_i = \\mathbb{I}[S_i \\geq c]$)" ] }, { @@ -6336,7 +6362,7 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": null, "metadata": {}, "outputs": [ { @@ -6355,6 +6381,7 @@ "\n", "rdflex_sharp = RDFlex(dml_data,\n", " ml_g,\n", + " cutoff=0,\n", " fuzzy=False,\n", " n_folds=5,\n", " n_rep=1)\n", @@ -6378,8 +6405,12 @@ "source": [ "## Fuzzy RDD\n", "\n", - "In the fuzzy RDDs, the treatment assignment is still deterministic given the score ($T_i = \\mathbb{I}[S_i > c]$).\n", - "However, in the neighborhood of the cutoff, there is a probability of observations not picking up the treatment they were assigned. These observations cause the probability jump of treatment at the cutoff to be smaller than 1 but larger than 0. Around the cutoff there can be treatment randomization on both sides.\n", + "In the fuzzy RDDs, the treatment assignment is still deterministic given the score $\\left(T_i = \\mathbb{I}[S_i \\geq c]\\right)$.\n", + "However, in the neighborhood of the cutoff, there is a probability of non-complianc. Thus, the treatment received might differ from the assigned one $(D_i \\neq T_i)$ for some units. These observations cause the probability jump of treatment at the cutoff to be smaller than 1 but larger than 0. In other words, around the cutoff there can be treatment randomization on both sides.\n", + "\n", + "The parameter of interest in the Fuzzy RDD is the average treatment effect at the cutoff, for all individuals that comply with the assignment:\n", + "\n", + "$$\\theta_{0} = \\mathbb{E}[Y_i(1, 1)-Y_i(0, 0)\\mid S_i = c, \\{i\\in \\text{compliers}\\}]$$\n", "\n", "### Generate Data\n", "\n", @@ -11771,9 +11802,9 @@ "source": [ "### RDD with Linear Adjustment\n", "\n", - "The standard RDD estimator for the fuzzy design takes the form \n", + "The linearly adjusted RDD estimator for the fuzzy design takes the form \n", "\n", - "$$\\hat{\\theta}_{\\text{FRD}}(h) = \\frac{\\hat{\\theta}_{\\text{SRD}}(h)}{\\hat{\\theta}_{\\text{D}}(h)} = \\frac{\\sum_{i=1}^n w_i(h)(Y_i-X_i^T\\hat{\\gamma}_{Y, h})}{\\sum_{i=1}^n w_i(h)(D_i-X_i^T\\hat{\\gamma}_{D, h})}$$\n", + "$$\\hat{\\theta}_{lin}(h) = \\frac{\\hat{\\tau}_{\\text{Y}, lin}(h)}{\\hat{\\tau}_{\\text{D}, lin}(h)} = \\frac{\\sum_{i=1}^n w_i(h)(Y_i-X_i^T\\hat{\\gamma}_{Y, h})}{\\sum_{i=1}^n w_i(h)(D_i-X_i^T\\hat{\\gamma}_{D, h})}$$\n", "\n", "Under similar assumptions as in the sharp case and that there are no *Defiers* (= individuals that would always pick the opposite treatment of their assigned one), this effect estimates the average treatment effect at the cutoff. The package ``rdrobust`` implements this estimation with a linear adjustment." ] @@ -11837,9 +11868,9 @@ "source": [ "### RDD with flexible adjustment\n", "\n", - "[Noack, Olma and Rothe (2024)](https://arxiv.org/abs/2107.07942) propose an estimator that reduces the variance of the above esimator, using a flexible adjustment of the outcome by ML. For more details, see our user guide. The estimator here takes the form \n", + "[Noack, Olma and Rothe (2024)](https://arxiv.org/abs/2107.07942) propose an estimator that reduces the variance of the above esimator, using a flexible adjustment of the outcome by ML. For more details, see our [User Guide](https://docs.doubleml.org/stable/guide/models.html#regression-discontinuity-designs-rdd). The estimator here takes the form \n", "\n", - "$$\\hat{\\theta}_{\\text{RDFlex, FRD}}(h) = \\frac{\\sum_{i=1}^n w_i(h)(Y_i - \\hat{\\eta}_Y(X_i))}{\\sum_{i=1}^n w_i(h)(D_i - \\hat{\\eta}_D(X_i))},$$\n", + "$$\\hat{\\theta}_{\\text{RDFlex}}(h; \\eta) = \\frac{\\sum_{i=1}^n w_i(h)(Y_i - \\hat{\\eta}_Y(X_i))}{\\sum_{i=1}^n w_i(h)(D_i - \\hat{\\eta}_D(X_i))},$$\n", "\n", "\n", "with $\\eta_Y(\\cdot), \\eta_D(\\cdot)$ being potentially nonlinear adjustment functions.\n", @@ -11870,7 +11901,7 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": null, "metadata": {}, "outputs": [ { @@ -11891,6 +11922,7 @@ "rdflex_fuzzy = RDFlex(dml_data,\n", " ml_g,\n", " ml_m,\n", + " cutoff=0,\n", " fuzzy=True,\n", " n_folds=5,\n", " n_rep=1)\n", From 54c13f8e5ff2e7c910814d7e437dad5f02007ffa Mon Sep 17 00:00:00 2001 From: SvenKlaassen <47529404+SvenKlaassen@users.noreply.github.com> Date: Thu, 14 Nov 2024 07:52:48 +0100 Subject: [PATCH 50/71] update r version --- .github/workflows/deploy_docu_dev.yml | 2 +- .github/workflows/deploy_docu_stable.yml | 2 +- .github/workflows/test_build_docu_dev.yml | 2 +- .github/workflows/test_build_docu_released.yml | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/deploy_docu_dev.yml b/.github/workflows/deploy_docu_dev.yml index bec1c65e..cf5501cc 100644 --- a/.github/workflows/deploy_docu_dev.yml +++ b/.github/workflows/deploy_docu_dev.yml @@ -42,7 +42,7 @@ jobs: run: | sudo apt install dirmngr gnupg apt-transport-https ca-certificates software-properties-common sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys E298A3A825C0D65DFD57CBB651716619E084DAB9 - sudo add-apt-repository 'deb https://cloud.r-project.org/bin/linux/ubuntu focal-cran40/' + sudo add-apt-repository 'deb https://cloud.r-project.org/bin/linux/ubuntu noble-cran40/' - name: Install R run: | sudo apt-get update diff --git a/.github/workflows/deploy_docu_stable.yml b/.github/workflows/deploy_docu_stable.yml index 831b968c..dff63f43 100644 --- a/.github/workflows/deploy_docu_stable.yml +++ b/.github/workflows/deploy_docu_stable.yml @@ -31,7 +31,7 @@ jobs: run: | sudo apt install dirmngr gnupg apt-transport-https ca-certificates software-properties-common sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys E298A3A825C0D65DFD57CBB651716619E084DAB9 - sudo add-apt-repository 'deb https://cloud.r-project.org/bin/linux/ubuntu focal-cran40/' + sudo add-apt-repository 'deb https://cloud.r-project.org/bin/linux/ubuntu noble-cran40/' - name: Install R run: | sudo apt-get update diff --git a/.github/workflows/test_build_docu_dev.yml b/.github/workflows/test_build_docu_dev.yml index 01b58c10..023916f8 100644 --- a/.github/workflows/test_build_docu_dev.yml +++ b/.github/workflows/test_build_docu_dev.yml @@ -69,7 +69,7 @@ jobs: run: | sudo apt install dirmngr gnupg apt-transport-https ca-certificates software-properties-common sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys E298A3A825C0D65DFD57CBB651716619E084DAB9 - sudo add-apt-repository 'deb https://cloud.r-project.org/bin/linux/ubuntu focal-cran40/' + sudo add-apt-repository 'deb https://cloud.r-project.org/bin/linux/ubuntu noble-cran40/' - name: Install R run: | sudo apt-get update diff --git a/.github/workflows/test_build_docu_released.yml b/.github/workflows/test_build_docu_released.yml index 772aba94..4b4fe289 100644 --- a/.github/workflows/test_build_docu_released.yml +++ b/.github/workflows/test_build_docu_released.yml @@ -40,7 +40,7 @@ jobs: run: | sudo apt install dirmngr gnupg apt-transport-https ca-certificates software-properties-common sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys E298A3A825C0D65DFD57CBB651716619E084DAB9 - sudo add-apt-repository 'deb https://cloud.r-project.org/bin/linux/ubuntu focal-cran40/' + sudo add-apt-repository 'deb https://cloud.r-project.org/bin/linux/ubuntu noble-cran40/' - name: Install R run: | sudo apt-get update From 38d5f21a3293083a4bad419905f0529a049e33d5 Mon Sep 17 00:00:00 2001 From: Oliver Schacht Date: Thu, 14 Nov 2024 16:36:51 +0100 Subject: [PATCH 51/71] fix argmin --- doc/shared/models/rdd.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/shared/models/rdd.rst b/doc/shared/models/rdd.rst index 8ea906b9..e2a3233e 100644 --- a/doc/shared/models/rdd.rst +++ b/doc/shared/models/rdd.rst @@ -51,7 +51,7 @@ If covariates are available, they can be used to improve the accuracy of empiric Here, :math:`\widehat{\gamma}_h` is the minimizer from the regression .. math:: - \arg\min_{\beta,\gamma} \sum K_h(S_i) (Y_i - Q_i^{\top} \beta - X_i^{\top} \gamma)^2, + \underset{\beta,\gamma}{\mathrm{arg\,min}} \, \sum K_h(S_i) (Y_i - Q_i^\top\beta- X_i^{\top}\gamma )^2, with :math:`Q_i =(D_i, S_i, D_i S_i, 1)^T` (see ``fs_specification`` in :ref:`Implementation Details `), :math:`K_h(v)=K(v/h)/h` with :math:`K(\cdot)` a kernel function. From 9589cbc971b151fd2665e6fe57deb70c2f511610 Mon Sep 17 00:00:00 2001 From: Oliver Schacht Date: Thu, 14 Nov 2024 16:37:08 +0100 Subject: [PATCH 52/71] add non-adj learner --- doc/examples/py_double_ml_rdflex.ipynb | 15211 ++++++++++++----------- 1 file changed, 7668 insertions(+), 7543 deletions(-) diff --git a/doc/examples/py_double_ml_rdflex.ipynb b/doc/examples/py_double_ml_rdflex.ipynb index 7769c2a6..c5341e3a 100644 --- a/doc/examples/py_double_ml_rdflex.ipynb +++ b/doc/examples/py_double_ml_rdflex.ipynb @@ -88,48 +88,48 @@ " \n", " \n", " 0\n", - " 1.524407\n", - " 0.0\n", - " -1.085631\n", - " 0.484418\n", - " -0.639093\n", - " -0.556110\n", + " 0.563067\n", + " 1.0\n", + " 0.471435\n", + " -0.198503\n", + " -0.193849\n", + " -0.493426\n", " \n", " \n", " 1\n", - " 11.843350\n", - " 1.0\n", - " 0.997345\n", - " 0.399618\n", - " 0.589009\n", - " 0.906710\n", + " 1.348622\n", + " 0.0\n", + " -1.190976\n", + " 0.013677\n", + " -0.630880\n", + " -0.885832\n", " \n", " \n", " 2\n", - " 1.278325\n", + " 1.265929\n", " 1.0\n", - " 0.282978\n", - " -0.382700\n", - " 0.097267\n", - " -0.706374\n", + " 1.432707\n", + " -0.266147\n", + " 0.439675\n", + " -0.051651\n", " \n", " \n", " 3\n", - " -0.316781\n", + " 7.477357\n", " 0.0\n", - " -1.506295\n", - " -0.126210\n", - " -0.477759\n", - " -0.302400\n", + " -0.312652\n", + " 0.845241\n", + " -0.659755\n", + " 0.436764\n", " \n", " \n", " 4\n", - " 5.924320\n", + " 13.185130\n", " 0.0\n", - " -0.578600\n", - " 0.606731\n", - " 0.606459\n", - " 0.409011\n", + " -0.720589\n", + " 0.739595\n", + " -0.741380\n", + " 0.948112\n", " \n", " \n", "\n", @@ -137,11 +137,11 @@ ], "text/plain": [ " y d score x0 x1 x2\n", - "0 1.524407 0.0 -1.085631 0.484418 -0.639093 -0.556110\n", - "1 11.843350 1.0 0.997345 0.399618 0.589009 0.906710\n", - "2 1.278325 1.0 0.282978 -0.382700 0.097267 -0.706374\n", - "3 -0.316781 0.0 -1.506295 -0.126210 -0.477759 -0.302400\n", - "4 5.924320 0.0 -0.578600 0.606731 0.606459 0.409011" + "0 0.563067 1.0 0.471435 -0.198503 -0.193849 -0.493426\n", + "1 1.348622 0.0 -1.190976 0.013677 -0.630880 -0.885832\n", + "2 1.265929 1.0 1.432707 -0.266147 0.439675 -0.051651\n", + "3 7.477357 0.0 -0.312652 0.845241 -0.659755 0.436764\n", + "4 13.185130 0.0 -0.720589 0.739595 -0.741380 0.948112" ] }, "execution_count": 2, @@ -150,7 +150,7 @@ } ], "source": [ - "np.random.seed(123)\n", + "np.random.seed(1234)\n", "\n", "data_dict = make_simple_rdd_data(n_obs=1000, fuzzy=False)\n", "\n", @@ -174,6 +174,13 @@ "execution_count": 3, "metadata": {}, "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "C:\\Users\\BAQ7040\\AppData\\Roaming\\Python\\Python311\\site-packages\\plotly\\express\\_core.py:1979: FutureWarning: When grouping with a length-1 list-like, you will need to pass a length-1 tuple to get_group in a future version of pandas. Pass `(name,)` instead of `name` to silence this warning.\n" + ] + }, { "data": { "application/vnd.plotly.v1+json": { @@ -182,2040 +189,2040 @@ }, "data": [ { - "hovertemplate": "Treatment=False
Score=%{x}
Outcome=%{y}", - "legendgroup": "False", + "hovertemplate": "Treatment=True
Score=%{x}
Outcome=%{y}", + "legendgroup": "True", "marker": { "color": "#636efa", "symbol": "circle" }, "mode": "markers", - "name": "False", + "name": "True", "orientation": "v", "showlegend": true, "type": "scatter", "x": [ - -1.0856306033005612, - -1.506294713918092, - -0.5786002519685364, - -2.426679243393074, - -0.42891262885617726, - -0.8667404022651017, - -0.6788861516220543, - -0.09470896893689112, - -0.638901996684651, - -0.44398195964606546, - -0.43435127561851733, - -0.9358338684023914, - -1.2538806677490124, - -0.6377515024534103, - -1.428680700225969, - -0.1400687201886661, - -0.8617548958596855, - -0.2556193705305969, - -2.7985891054607244, - -1.771533104509847, - -0.6998772345979173, - -0.1736356827902158, - -0.8795363430090519, - -0.8053665180656158, - -1.7276694941206072, - -0.390899793755101, - -0.01183049447881976, - -1.2940853231612488, - -1.0387882102049535, - -0.7980627352410625, - -0.7727087142471915, - -1.326265459940456, - -0.2330920609844135, - -1.198301144700787, - -0.8311549842432792, - -1.0972030464830342, - -2.1231003500424417, - -0.4033660381021075, - -0.12602958531301514, - -0.8375167228250533, - -1.6059627607174027, - -0.6888689838469215, - -0.31475814671745994, - -1.0859024011268665, - -0.732461986720457, - -1.2125231310951696, - -1.2673520490102275, - -0.3350107619330159, - -1.0845679120057665, - -1.3634715446185843, - -0.3791764345725522, - -1.977887931520449, - -0.024625981431480627, - -1.8619757107917871, - -1.6054097440159647, - -0.42767959812380435, - -0.7352169561000764, - -1.3709484700946077, - -0.3324752753514139, - -2.025045762997471, - -0.27578601386617546, - -0.5521080714881078, - -0.2702323920091581, - -0.5639239315264725, - -0.9973214687759007, - -1.100043112620697, - -0.7564372093991233, - -0.5489550961957409, - -0.35400011275017335, - -0.8234314059856659, - -0.21208012227562573, - -0.23966878147771076, - -1.4118888760712274, - -1.8768686558738945, - -1.0196550709218393, - -0.5306745597736241, - -0.1431759743261871, - -0.19396387055266243, - -0.8984229406095902, - -1.0950264574269175, - -0.2743965735223526, - -1.0489916773184873, - -0.07512058797383152, - -0.7408137732923984, - -0.6112253403048249, - -0.39161981071960156, - -0.3589359262422613, - -0.5486421281861983, - -2.5570546040678583, - -0.5489204133222201, - -0.9780577060842837, - -0.3548244580948187, - -0.02996800704754226, - -0.12611777323099171, - -3.2310550079193123, - -0.26929348975075423, - -0.110850721053007, - -0.3412617162065858, - -0.21794626210294177, - -0.5981053313408254, - -0.006307250913872172, - -0.2066623031975665, - -0.08652228638213517, - -0.9153070699439787, - -0.09520253925800948, - -0.27487754656593466, - -1.4160822525219303, - -0.6691026262334455, - -0.7612942447601239, - -1.255668685662482, - -0.5519368756960736, - -0.24520334168519506, - -0.361639931865213, - -1.4187259140354525, - -0.8654322715151541, - -1.3746879710222193, - -1.237353212687854, - -1.6004405330562717, - -0.24681577694107554, - -0.4341665202515911, - -0.19434272672763503, - -0.19911238275725224, - -0.9743078496209195, - -0.3189569890995958, - -2.152493444412304, - -1.465116222054951, - -0.6824509341999805, - -1.692052415377956, - -0.0805832220429508, - -0.0061299610455789804, - -0.15924520925326485, - -0.12144867540402206, - -0.5835367167076569, - -0.3537543337813492, - -1.2133847809476472, - -1.3264877850539407, - -0.6087108032644418, - -1.3206025797896521, - -0.6696185998697584, - -1.4202129989485122, - -0.8664952037596095, - -0.6668075087965194, - -1.2511898734731952, - -1.1843273385116637, - -1.5181079752636586, - -0.46118741313672207, - -0.35490883174008503, - -0.6825381542033059, - -1.653697838967641, - -1.3290788291721605, - -1.0747665931188752, - -0.8776135866276552, - -1.923715729697126, - -0.8289888337610103, - -0.6591513106966477, - -0.14401334748029268, - -0.7043421471287583, - -0.12643756370963435, - -1.004967153382104, - -0.13044468898462372, - -0.24865585038497331, - -0.6696471476435246, - -0.013603885675351006, - -0.8176682995787476, - -1.34635756073724, - -0.37574991098192634, - -1.37972497865875, - -0.4266897699938011, - -1.7554018445508066, - -0.3486075147385099, - -0.19261498579409048, - -0.14536354315421035, - -0.5187038515389994, - -0.06239854858230655, - -0.10291061426267058, - -0.28262838440702354, - -1.5692561273944634, - -0.5103428738061208, - -0.4477714253522432, - -0.3566630610733439, - -1.8951755930793188, - -0.03368923154093914, - -1.040162880979482, - -0.32385978378534624, - -0.18829685849366687, - -0.9000085698091608, - -0.9310020038747236, - -1.2227369597487854, - -0.3933108517811569, - -0.957581838756634, - -1.8884923803868152, - -1.1283305481817938, - -0.40141442845701475, - -0.41375688138006245, - -0.9868038892903219, - -0.9677443956994779, - -2.25153498598787, - -0.5889705464706788, - -1.2122689628960637, - -0.4791229453143527, - -1.1186956011455729, - -1.007508801235176, - -1.30578586634164, - -0.882828987722037, - -0.3460900338631944, - -0.77258373237244, - -0.6947982151055028, - -0.09868469680951346, - -0.21498304496389087, - -1.7737713532563517, - -0.4075125923914689, - -0.2915067125653651, - -0.16842643163047274, - -0.5299140986336766, - -0.49097228256584685, - -1.3091653143025817, - -0.008660466741585568, - -1.7510703491923696, - -0.6658569670193876, - -0.2243127859709009, - -1.7089917765492033, - -0.09875980586671322, - -0.5299888642145143, - -2.443075785879315, - -1.3803513236542992, - -0.6885485324635544, - -1.084768771253082, - -0.45642595614359244, - -0.7451472218585933, - -0.5866159508522137, - -1.1472371412402353, - -1.0818191232906198, - -1.639396967540776, - -0.5508932051171423, - -0.39862392473390046, - -1.2568338125336815, - -1.2625437427838198, - -1.4029890877228395, - -0.6376921388132418, - -0.32651764661872357, - -0.03932933464491537, - -1.8703974787472009, - -0.5987317666784293, - -0.17159600525671556, - -0.5818502098168723, - -0.6595600882722964, - -2.4384605640450236, - -1.3071781883042857, - -0.96325368587879, - -0.24762137869361706, - -2.631438036808334, - -0.5709580868574299, - -1.5034583992493944, - -0.23235739649273984, - -0.8249920538471605, - -0.25684536102444716, - -1.0502189902580903, - -0.026922590568272415, - -0.14205072712918293, - -0.2654456248957732, - -0.9902746893194819, - -0.5344472080416974, - -1.701496094747692, - -0.23856501820360618, - -0.13280117451197487, - -0.4058433751113569, - -1.088508555488929, - -2.1222988830425917, - -0.726114027517346, - -0.5903249179528643, - -0.3479643379349264, - -0.4483916384609412, - -1.1316409267511525, - -1.4178944880296693, - -0.0018746917257705736, - -1.1150399534194404, - -1.4506831416048005, - -0.4725305920249986, - -0.3311282982824718, - -2.7881128830850024, - -1.5872064267876305, - -0.12368873285569916, - -0.06962309872009259, - -0.09565274449329955, - -0.12174149525709202, - -1.7628977344010746, - -0.6827647198373713, - -0.07052341796234977, - -0.10667449055824228, - -1.472977609111576, - -0.9850235826980721, - -0.2335039931301, - -0.3244872415189078, - -0.1670002743571596, - -0.7586284233600243, - -1.2000432779850234, - -0.7920919505289836, - -1.660475070762957, - -0.630618391430576, - -1.3943751127131896, - -1.273570236812244, - -0.7881655588876596, - -0.3722717313582859, - -1.0836776793595817, - -1.147525408677207, - -0.4156193761557507, - -0.4733549700707904, - -0.6023399830262286, - -0.3797303275801356, - -0.23441491191787137, - -0.27217646568739323, - -1.1601296615335286, - -0.7598350885926631, - -0.6543810858204931, - -0.14929094174744556, - -0.6754694337864318, - -0.2958290679056386, - -2.0523984049766058, - -1.5774487938270054, - -0.9065895221643572, - -2.1049284295789623, - -0.9200931084896136, - -0.624024850239865, - -0.025060144581597745, - -0.7362639342696717, - -0.7174858373072273, - -0.9725563235674656, - -0.4396722054259928, - -1.1742703028253445, - -0.40215973507251773, - -0.15635972722929936, - -0.15860520695849933, - -2.1870859306382227, - -1.2717469495300868, - -0.6798278923997879, - -0.6050126560729895, - -0.008902825012302579, - -0.1697438177991287, - -0.23431872455876748, - -1.4819584561028547, - -0.416345285299776, - -1.6044364005126521, - -0.3077743221445603, - -0.7391422743557824, - -0.8532015157805608, - -1.576232847396656, - -0.12756216200993092, - -0.027458376689570886, - -0.09809158279359968, - -1.5305128973556241, - -0.823285164614491, - -0.9484986261940769, - -0.2510374552120426, - -0.4971601466888655, - -1.1165648342354797, - -0.5492535887280628, - -0.5978550805922049, - -0.15832713704922016, - -0.20997373588419468, - -0.8203755201347369, - -0.6226634888808933, - -1.1429520395415, - -0.3834163111157828, - -0.23090405152817356, - -0.39615592240969827, - -0.03832121774315163, - -2.424836325455249, - -0.5522529496849271, - -0.06079410601164124, - -0.5280405508818312, - -0.13868294527484562, - -0.28424709842062984, - -0.04304177578064844, - -0.052801482653846724, - -0.15420531148588265, - -0.16787722654627948, - -0.7324488811117759, - -0.553404328801565, - -0.6832259429997894, - -1.842031838405077, - -0.11951878043007562, - -0.7542021627241914, - -1.2617700117470425, - -1.4072685633957673, - -1.5610305114373637, - -1.9255868907643525, - -2.7944722983075785, - -1.03910438326439, - -2.1694079584120365, - -0.035605484609829575, - -2.2364173503246474, - -1.0942734191759897, - -1.6207519803198573, - -0.24559766594877117, - -1.605180795787059, - -0.34825811883938024, - -0.19723636840428496, - -2.0420964154954233, - -1.3992338686095869, - -0.6615506465805062, - -0.9297116344424167, - -0.6925831159713568, - -0.05746612700083015, - -1.1584159108657917, - -1.3600076771230591, - -1.0570557773396025, - -0.010032652757383347, - -0.8456444283952297, - -1.3744968791031125, - -0.5470656450174095, - -0.00007552661061545873, - -0.12116680328820885, - -2.008585468370626, - -0.9206465426133663, - -1.3198915593599103, - -0.5142403907110707, - -0.2202924653000638, - -1.4155187704342762, - -0.14840538755987095, - -0.5496980692087847, - -0.18790393877677286, - -1.2019366808669738, - -0.47078555770734065, - -1.807621277242572, - -0.3140743742422747, - -1.1789369540334256, - -1.1821528913270605, - -1.224529092816291, - -0.48236531510849157, - -0.42107850540501407, - -1.166471320616305, - -0.01739122223019718, - -0.22942662894379623, - -0.4496676016629738, - -0.8817485267318087, - -0.39736349181039743, - -0.4230277451533124, - -0.5406883373725029, - -0.6920526017208553, - -0.053609460071342124, - -0.4340047382986483, - -1.667689228147901, - -1.1092309432496061, - -0.37555811897157276, - -1.7309894498221519, - -1.2971000196666516, - -0.39230919212908744, - -1.8306663621778045, - -0.17958850097910234, - -0.16343583065616263, - -0.09416555192061088, - -0.3461671480021981, - -1.0926353245067322, - -0.824500574753621, - -0.5023312882696742, - -0.4756477679064388, - -0.9719368370854505, - -1.57052860106121, - -1.793888920926237, - -0.2649864518459969, - -0.893195947036793, - -1.9421495432511602, - -1.106385905965437, - -0.21005641264581787, - -0.25275030069976034, - -0.2920041627702413, - -0.11693174014674963, - -0.10239107510368999, - -2.272617710954302, - -0.6426098414665713, - -0.008256514667853591, - -0.7993391541971328, - -0.6647792521753807, - -0.355613128296959, - -0.8015717808024205, - -0.5130506104434005, - -0.5393901194785343, - -0.7083224844135482, - -0.31425058651942994, - -1.4127794859965894, - -0.9800066473024811, - -0.18459917717285057, - -2.2361688420171104, - -0.35802010256334205, - -0.22803453828591722, - -0.32776424472118837, - -3.167055328652906, - -0.7139889980252292, - -1.1123642708371866, - -1.2541835105849213, - -0.7757700204102219, - -0.4216841007751528, - -0.6929227963724369, - -0.7782717264630926, - -2.050217677383097, - -0.6692056054644492, - -1.8638842993007476, - -1.229969061679773, - -0.3242353482405271, - -0.3097511440161062, - -1.18692538652941, - -0.34120606462067304, - -0.48977978041340897, - -1.5684400468313575, - -0.0480141917504573, - -1.1125293102447653, - -0.0647449514862398, - -0.04901169879446085, - -0.27265446153778367, - -0.4250761037008216, - -1.7752428411035694, - -1.1846574927726896, - -1.7865268526790055, - -0.15239449801642782, - -0.45356917618752884, - -1.3180438234754557, - -1.9317689789009886, - -0.41964074161010806, - -0.9093270165599429, - -1.1114304477623544 + 0.47143516373249306, + 1.4327069684260973, + 0.8871629403077386, + 0.8595884137174165, + 0.015696372114428918, + 1.150035724719818, + 0.9919460223426778, + 0.9533241281124304, + 0.002118364683486495, + 0.405453411570191, + 0.2890919409800353, + 1.3211581921293856, + 0.19342137647035826, + 0.5534389109567419, + 1.3181515541801367, + 0.6755540851223808, + 1.0589691875711504, + 0.3374376536139724, + 1.0475785728927218, + 1.0459382556276653, + 0.8637172916848387, + 0.12471295376821585, + 0.8416747129961416, + 2.390960515463033, + 0.07619958783723642, + 0.036141936684072715, + 0.24779219974854666, + 0.018289191349219306, + 0.7554139823981354, + 0.2152685809694434, + 0.841008794931391, + 0.35402033219923795, + 0.5657383060625951, + 1.5456588046255575, + 0.30796885521603423, + 1.0338007325554992, + 2.0306036208387996, + 0.21188338677770105, + 0.7047206243171088, + 0.4620597371620487, + 0.7042282254621743, + 0.5235079678938094, + 2.0078429507780005, + 0.2269625418708953, + 0.6319794458091295, + 0.0395126866933667, + 0.46439232505089606, + 1.3211056154702059, + 0.15263055220453448, + 0.16452954293239852, + 0.7673687357524115, + 0.9849198419098969, + 0.270835848826804, + 1.3919861934464073, + 0.07984231300862901, + 0.8165939265478418, + 0.5282881452973941, + 0.2912053597430635, + 0.5665336963535724, + 0.503591759111203, + 0.2852956847818571, + 0.48428811274975, + 1.3634815124261457, + 1.2245743551261743, + 0.8754755042743244, + 0.7491638059190651, + 0.6806560043814565, + 0.047071635325711084, + 0.3948442093272043, + 0.4362576043409168, + 0.3937105991386652, + 0.6941032876787643, + 0.6786296737098565, + 0.2395559950038969, + 0.15122662929444983, + 0.8161272333600409, + 1.8935344675962007, + 0.6396327631937027, + 1.9302467674655757, + 1.2103837049045143, + 0.7974354194278735, + 0.7025622240016004, + 1.1768124501049289, + 0.7009077309156047, + 0.9841880707224154, + 2.365768628840039, + 0.4961429262475947, + 0.7965948666649523, + 1.3577972581070583, + 0.33419793089900884, + 0.5367838249027502, + 0.22598548673375538, + 0.6287758265382943, + 0.18649434877307466, + 0.9524783451091219, + 0.9881375825933089, + 0.13968327403129469, + 2.123691888593553, + 0.12227343425882888, + 1.4229859527722433, + 0.3635645568066484, + 1.2723950785462097, + 0.2093947875359238, + 1.1043515698603126, + 0.8891574940728737, + 0.2883768477152654, + 0.156998376446689, + 1.0576331832046142, + 0.07187803937036874, + 1.9107594272771828, + 0.7879646831376144, + 0.5130821444669919, + 1.0439446554953231, + 2.10778515279337, + 1.4599274815852936, + 1.0154054578125205, + 0.7491846009241975, + 0.4402663916687296, + 0.6889718563269422, + 1.92453332001529, + 0.4112040207072239, + 0.8907649561731171, + 0.22636322725170696, + 1.126385822137273, + 0.2471117161577363, + 0.1211718053315409, + 0.2989839355420466, + 0.24945521515244942, + 0.5810733206206065, + 2.7638440798495663, + 0.3993254369795763, + 0.6684881692058056, + 0.5004829001543722, + 0.8630648605906245, + 1.1539222406122254, + 1.181944105999232, + 0.39137144842193117, + 0.2950799597862399, + 1.8638010621325043, + 0.12678118632697175, + 0.0037598477954959237, + 0.5539212514397202, + 1.5294006744839312, + 0.20545485392597962, + 0.3130131289808603, + 0.8665207121682993, + 0.2990705295943764, + 1.076540643846122, + 0.3631773475444523, + 1.8936798255518426, + 0.3876744557775985, + 0.023557610392553562, + 0.17738671938459905, + 0.9835127293431644, + 0.0235045858853947, + 0.553776977863366, + 0.3537692939966397, + 1.5410299832779386, + 0.06308453895730506, + 1.7879796324557498, + 0.3862536891890525, + 0.8227753737653734, + 1.0572033312141293, + 0.03187997356903155, + 1.3431824575289413, + 0.5270464509549642, + 0.7111123993648228, + 2.6377912107038637, + 1.4311837522545638, + 0.5927584465506688, + 0.170296895326288, + 0.2885813223432078, + 0.17160238198599498, + 0.9828178292431048, + 0.9244428673433661, + 0.9959929702457525, + 0.955557932627455, + 0.7138407711950433, + 0.13337096219412198, + 1.9087796580911864, + 0.15592326145312668, + 0.7596525320929627, + 0.18167274532368163, + 0.27449257074640343, + 0.06791235738075722, + 0.26697323153986774, + 1.3829972488529256, + 0.13139536722591508, + 0.4344371851022324, + 0.2645340683169988, + 0.5656583442738247, + 0.5850842795017246, + 0.4151005583815808, + 0.4255305913978583, + 1.498569955138537, + 0.8210479561079149, + 2.0978007807716916, + 1.2829332468745234, + 0.2703379257393719, + 1.0031403620449315, + 1.0786735513204067, + 0.34075268512976414, + 2.4814584228756535, + 1.3852548761892063, + 0.6078621862094797, + 0.10203511229233127, + 0.21071705250565526, + 1.7923391966469424, + 0.555877426385625, + 1.5727427457558043, + 1.850397801609901, + 0.1934642338198724, + 1.0327232157358608, + 0.3938922629126754, + 0.33250662216224913, + 0.5289444088560467, + 0.04826420692565666, + 0.06198845052177757, + 1.9321781695813465, + 0.35583899747282033, + 0.9894148472858507, + 1.388647381631717, + 1.0877137365241412, + 0.43880126303439065, + 1.2456099371478462, + 0.5029255176706321, + 0.5855993109298576, + 0.35280056010840655, + 0.27477883705216777, + 0.23734976450942513, + 0.44850974251240683, + 0.3495667716276656, + 1.4061761394942678, + 1.5573976506490226, + 1.6726268084547062, + 0.599962085981993, + 0.3315265183521529, + 0.26623740682783636, + 0.2794280245327373, + 0.27166078437402447, + 0.09911201694909029, + 0.025941713524132055, + 1.1055869627971613, + 2.0751854067317823, + 0.4190598246739658, + 0.4134052764244962, + 0.7175769325882829, + 0.26172483967990484, + 1.384580160839074, + 0.5000695850282261, + 1.951103236540061, + 0.03678625863071046, + 0.44585250626100126, + 0.4500013006954749, + 0.5154795307938983, + 0.09988207650262723, + 0.7257141531219552, + 0.9169762830692352, + 0.11911398259834126, + 0.523546018063799, + 0.8215173089989222, + 1.7303155195063402, + 0.22892725550405343, + 1.0927410572908394, + 1.7114259970115762, + 1.4353870862526215, + 0.040843424766001724, + 0.36201819567044535, + 0.5725921910432455, + 1.1044602367331493, + 0.75568884284869, + 0.010281457155327522, + 0.22458577076489658, + 0.028944498401123394, + 2.1040773666293053, + 1.5675141434637165, + 0.16495455703336395, + 1.2073482032456735, + 1.7119870129859922, + 0.6575858924331783, + 0.20007988155239426, + 1.091259859221752, + 1.368220262225958, + 0.8916251175268084, + 0.8375662124501372, + 0.5141447133892467, + 0.7439528461648938, + 0.0899015732727284, + 0.3227395618852, + 1.0501136937792215, + 0.7978764964211627, + 0.5525243131579977, + 1.6415521890288047, + 2.0277395138175196, + 0.07214886239228502, + 0.6131516784246442, + 1.4891664262942452, + 0.22129657503462105, + 0.801888214216484, + 1.118854972135864, + 1.569548064582847, + 1.4277317710676356, + 0.7792145652142417, + 0.24025265459504974, + 0.1911699128232047, + 1.470996579505006, + 0.7189049215428981, + 0.7646112966882201, + 1.0213556589900556, + 1.7096560949798731, + 0.029561951937617355, + 0.12384201643823771, + 0.28943005670297534, + 0.4144350112798109, + 0.9498579011377821, + 0.5218485421095229, + 0.502810027757784, + 1.0557521639658634, + 0.5397352373427955, + 0.3469912503733692, + 0.8741928933305493, + 1.699458930621629, + 1.2828372246866984, + 0.3938001271158281, + 0.4257406105857961, + 0.17196425471545257, + 0.8649983085249567, + 0.7978708863196311, + 0.6769776126657561, + 0.4872101346078452, + 0.765665358162811, + 0.4756748381165133, + 1.5528072078665365, + 0.18853062859763994, + 0.9889637830869817, + 0.21112708032840474, + 1.6117222924558978, + 0.5667304418132302, + 1.5387739411600052, + 0.3096639858949537, + 1.769100570312561, + 0.2682004879637708, + 1.850810168972202, + 1.700769505670963, + 0.3533910559483136, + 0.3364890211021921, + 1.0571054344422781, + 1.1986787224676672, + 0.8043460416389878, + 1.1916553458718568, + 1.4482691251839777, + 0.20145146638225445, + 0.5017557989907293, + 1.6133349220114617, + 1.2990825737762788, + 0.5531844259723022, + 0.5456699950930499, + 0.26228661897316985, + 0.21907020968038537, + 0.9323529322684813, + 1.7430524278808484, + 0.9540316671351478, + 0.7120509492248905, + 1.6615021287437646, + 2.547691702457717, + 2.6519991181342113, + 0.10374933997096626, + 0.11543222568465579, + 0.2586704644560386, + 1.4877433319614572, + 1.4543434763906329, + 0.7043082981680985, + 1.4663513758566715, + 0.3536221825367628, + 0.36320976100296887, + 0.4328745920492785, + 0.29563065498089497, + 2.0798442368337016, + 1.0627364666653065, + 0.01805510965628009, + 0.02279839968937127, + 0.8124230006825046, + 0.615135458353951, + 0.3246098059252541, + 0.6705693906174532, + 0.1491613231433755, + 0.3270638038828972, + 1.6761854255764614, + 0.6809960077267706, + 0.1020797487098907, + 1.1950561396844794, + 0.353683601249814, + 1.0540450911893136, + 0.35207889140437837, + 0.6659818403106037, + 1.0655015019548215, + 0.3644839042458271, + 2.1158507289245674, + 0.6855615854791441, + 1.3812877674130073, + 0.06842655874188228, + 0.31253629248338644, + 0.45425318515036217, + 0.6931185215037656, + 2.337598482195056, + 0.0800997455382507, + 0.4134509638251659, + 0.20445196734865428, + 0.47845329452970037, + 0.02958097097523698, + 0.01746667513481011, + 2.054289530002812, + 0.4238146840382535, + 1.2499025106911574, + 0.5711487534631029, + 0.2970484291574556, + 0.8718652175016266, + 0.6895231987879346, + 1.9845899031898866, + 0.9551299189232728, + 1.4704739392964385, + 0.7108614710694785, + 0.6708259593192185, + 0.06338342659156378, + 0.20024796080692478, + 2.6429226847057117, + 0.8933687076816909, + 1.288554738453981, + 0.33119818801148354, + 1.8560568664485682, + 2.1225899596034625, + 0.020305520730884315, + 1.591464114097166, + 0.0005873380366202194, + 0.15487036534807186, + 0.010685782511001917, + 0.6754553436625048, + 0.8183481023464054, + 1.0389554757038926, + 0.981271848028589, + 0.6166208035641588, + 0.020856736754465456, + 0.5993399050363709, + 1.983488054493826, + 0.07788802802787388, + 0.4045844144487453, + 1.1069498460085399, + 0.2685148227050607, + 0.488360812855723, + 0.5868386021149908, + 0.043672011407345696, + 0.23058049991323532, + 0.3285638932885436, + 0.8380485839532836, + 0.10816425581928157, + 2.039686037158919, + 0.866452901845807, + 0.7084741210544878, + 1.0771702093251387, + 0.06543853933530658, + 1.3120365067494253, + 0.21537592656166116, + 0.2597174736789681, + 0.46954942686078716, + 0.4922331098465613, + 0.51217052768379, + 1.265974917971162, + 0.19091532051019103, + 1.001555629245316, + 1.122267866057918, + 2.0118420191461803, + 0.30201074703431263, + 2.2035145562945293, + 1.3460983256762604, + 0.626820481067724, + 0.10997254269648227, + 2.0065611269776644, + 1.0159978401232488, + 0.2923665381528412, + 1.3370321440963355, + 0.3186160154286117, + 1.3970387291415345, + 0.11182047780156927, + 0.4315681264740078, + 1.6137850971757342, + 1.638962314523427, + 0.13409659216509714, + 0.17203736635766856, + 0.8806401486464327, + 0.7577097291811645, + 0.8896634154552829, + 1.1341571652425653, + 1.7316301950572073, + 0.7007847957258879, + 0.8811405230322151, + 0.16270221119589887, + 0.6697599912207146, + 0.7436871197925536, + 0.6167126196705511, + 0.9718668340412515, + 0.45913770322630687, + 0.6562382063047018, + 0.7515034769028561, + 0.2721639657384405, + 0.9315457527732457, + 0.32753233118239405, + 0.7408138005017622 ], "xaxis": "x", "y": [ - 1.5244070471861801, - -0.31678118504862285, - 5.924320317513941, - 2.5586433621344287, - 2.229455841045986, - 4.433971913220769, - 8.799700781144356, - 1.6735609545008325, - 2.6618037998684847, - 9.19267162407246, - 0.17380416320172518, - 9.796681357211401, - 2.3367111400091165, - 5.215275910742927, - 1.3080828143354875, - -0.20832335618328393, - 10.837402228513511, - 10.478426531295108, - 10.22231166785175, - 12.68339600928729, - 13.025537381085183, - 4.726037455368125, - -0.0732744724994475, - 4.749223502380172, - 8.454695881930622, - 0.5944712348499963, - 9.201908118694321, - 1.4985565830786498, - 13.454260189739914, - 4.341387628228041, - 1.7438348200899918, - 2.187100058042091, - 0.9779343707033779, - 5.123973488555185, - 8.444715038803736, - 9.27782623331036, - 3.8995852138381784, - 5.618104460019201, - 0.6163195640210587, - 0.6774462488809804, - 11.708445117312142, - 2.5891972165718284, - 1.879015292269977, - 9.375534954599209, - 1.8631407351858267, - 1.6076193292544028, - 3.8611181508851247, - 9.112336133802208, - 11.893361029191375, - 5.0333340276319865, - 0.8676647900980246, - 12.938723276999415, - 0.768994686295613, - 7.5959159871854975, - 10.194485229673715, - 0.33678018995101044, - 3.490476146394804, - 2.3183039056247936, - 4.304487179715327, - 4.2060030651793925, - 14.190346380925867, - 5.24762456381118, - 3.943248238689776, - 12.4015231457878, - 1.3554951203061163, - 10.069314603452488, - 10.58869704385167, - 10.649801717806227, - 4.4057492861709155, - 2.8749559536658644, - 5.304697452015327, - 4.472005236393971, - 4.634176199065418, - 1.5959869965901976, - 1.8155122736662486, - 0.7157671632142655, - 6.153516332387489, - 2.044323426955679, - 10.859499127651866, - 11.221560703421837, - 6.674333624988483, - 0.39906508106906446, - 2.3193275168504055, - 1.1524518131864228, - 7.2436924700533165, - 5.660378601383776, - 2.3206617612256824, - 3.5118579843107414, - 6.1168364739580205, - 0.3724246372064531, - 10.401289245452013, - 0.5744161370408288, - 8.022040625590511, - 2.658308420508858, - 2.1630845557681204, - 4.627833006053132, - 15.083909174487218, - 2.4402716205583537, - 1.3927666921295252, - 6.70222770125296, - 2.945945517202425, - 3.757069352545498, - 2.4172909364793997, - 12.753696009711952, - 10.66957192762991, - 8.39703369545653, - 2.498173455086823, - 2.435477632002068, - 0.572382126937402, - -0.2095010700207834, - -0.35458180821177915, - 7.219602518084525, - 0.2501582433458264, - 1.600512158076611, - 2.0156924193324417, - 6.158947200621, - -0.19849002504343233, - 5.9779519359889495, - 1.7241156814359933, - 0.21312151676970173, - 2.460276868932239, - 9.9634592479967, - 1.7112337432023264, - 7.003961028975444, - 0.9792581216199745, - 1.8492668222191442, - 2.233715430947482, - 1.5031179125886165, - 0.4516931708605087, - 6.20427024751976, - 1.4646256135934175, - 6.728011063164948, - 6.038321590590256, - 4.58246472086729, - 4.89598154253402, - 4.5503770432878365, - 1.495720130417968, - 9.553624891272666, - -0.08834719251766043, - 3.8050447589759027, - 1.5435796711523087, - 5.287196053243566, - 6.064325546209897, - 9.213131674664723, - 4.6077052656066435, - -0.35032290478506345, - 4.303009521999736, - 2.0946868631148203, - 9.991329340305318, - 1.6224576593146407, - 7.402526711734267, - -0.330318646932235, - 11.50198647907616, - 0.6946054682674779, - 0.4274952485480176, - 6.284206648858571, - -0.3718021899085236, - 15.996765996879489, - 0.76795705675522, - 13.117732675166229, - 5.98894065843449, - 2.6171572109923087, - -0.051380129917119245, - 2.5517531681311225, - 9.808951832149885, - 6.545641334516951, - 0.00019238296903394125, - 10.169662711091535, - 2.320419598495393, - 5.904963874171132, - 5.654077155257171, - 1.0384203812665476, - 0.5528843485225815, - 8.278033159687189, - 2.302600136586625, - 3.368746369903085, - 0.7213097232153658, - 10.124853214837623, - 3.9485900013110644, - 3.2132331398666176, - 4.291439141455488, - 3.4845400495992087, - 5.130452928302084, - 4.6271898885555665, - 3.335101629841685, - 1.0751781605841555, - 5.750396207728897, - 1.9232309742916913, - 2.4273351665206997, - 1.819310025715235, - 9.149591684667675, - 0.6557321997529058, - 6.0201255521588255, - 1.886899123944232, - 2.439391549508245, - 1.821395128230099, - 5.008342548314249, - 1.3049989240584543, - 0.6853918612604932, - 1.5300794814058394, - 7.0872566714240275, - 3.1038096281505165, - 0.768478221199121, - 1.0420330054864895, - 4.004482124807154, - 1.9507320429764672, - 11.60822187968217, - 0.19664168718806863, - 4.2443039453489755, - 7.584237184305228, - 9.443257147013668, - 0.662697160585665, - 3.6055844810303803, - 3.3834607025203667, - 9.99973384018478, - 5.151859506093366, - 1.8953114457453264, - 4.603236731727707, - 0.8545376393774061, - 5.047112096915351, - 4.823835669614105, - 5.2885470696000745, - 2.0865015849328206, - 2.4794086694880066, - 1.2039298158936174, - 2.2791357033099158, - 1.1766041832708973, - 0.946520090964468, - 4.541604026913312, - 3.2684629335264836, - 3.0779513528438804, - 0.12116471069568498, - 2.197059179832511, - 6.153522887925882, - 4.531217612356018, - 10.535802241907119, - 2.5661013955296403, - 12.498083700534197, - 2.623447905153395, - 3.1632432597670777, - 2.5921290543216386, - 3.417596029302696, - 8.274685878881048, - 1.5118142504881733, - 1.8073453819417131, - 2.2768286350169813, - 6.932206338459843, - 8.241750558286878, - 3.689947131449205, - 14.992349220066943, - 13.177711449950907, - 17.936031552825437, - 4.657895351251875, - -0.05505596162205857, - 2.0479342794758377, - 2.846250916315972, - 8.6765414326678, - 0.6080637912558369, - 4.432038542722425, - 0.7185314825734941, - 11.004554528224643, - 0.6645976926435648, - 2.7599173123312473, - 1.2136024553919431, - 13.895307536681994, - 0.20859591326729957, - 1.272450859796333, - 0.26206427308430585, - 10.797103347901205, - 0.06897890999090553, - 0.7109837460966167, - 4.0071438480003065, - 13.245054104274741, - 4.660369229720908, - 2.3982681319940573, - 3.118829526886263, - 1.2035318483914472, - 6.189097469024672, - 5.806851675016352, - 5.2053531060827805, - 10.232947843756873, - 8.906224609095952, - 0.1276830357114953, - 9.433870152004602, - 0.0028312379988869735, - 6.834063902600166, - 13.94490294713098, - 0.41283318030129335, - 4.188578889810815, - 0.4484398809285373, - 9.92021124628591, - 9.032480454286583, - 1.8323232289353775, - 17.493865464122017, - 1.5308794813025202, - 1.0676775201624182, - 14.185031479430377, - 1.5485075389203493, - 5.937933814039849, - 9.654257076842434, - 1.864792455949144, - 3.0016539477665676, - 8.568880005120032, - 2.114526882656712, - 5.2115514198742305, - 4.0090237000950815, - 3.998785869864167, - 11.513858941838201, - -0.05802102360120709, - 1.3877640416014811, - -0.4814385014377364, - 3.500684568953761, - 1.4899510273764827, - 2.247073712982378, - 1.567744831828642, - 0.22807993818531466, - 10.393723775682087, - 5.842660499292155, - 1.206703703834176, - 1.5565990366652183, - 1.2162230054416696, - 2.148866819952457, - 4.04586698043334, - 1.5716794098709914, - 5.86449472789805, - 10.110465625146873, - 1.2430483978183664, - 8.719742977808671, - 16.344699854425947, - 3.4918322268341613, - 0.8524078243007223, - 0.048231310769335456, - 0.8741495580941971, - 6.354970785483929, - 7.575743567419406, - 5.8484782363298295, - 3.753893094849748, - 2.8399361856732432, - 11.186413229440477, - 11.672251271389886, - 14.303204145124884, - 10.941493091988898, - 0.8545262278373883, - 1.4668880693783932, - 4.9194224196221565, - 1.4623407342359085, - 4.360280099546943, - 3.443397847844641, - 3.840572140275994, - 5.951896387115502, - 7.456016067948249, - 3.8207093172927613, - 0.5034225128990067, - 0.8150618381066009, - 0.30586900725658567, - 0.2722616210367304, - 0.6621446380484735, - 7.389029047186425, - 0.09501286101944884, - 1.1494906207543638, - 2.646775428482537, - 5.9259671458628365, - 0.6465922711442541, - 2.523794575481865, - 8.15532226521328, - 0.17989295898067234, - 4.823409503994681, - 6.115192761454895, - 3.810685983205399, - 2.402304431024967, - 1.701127121532548, - 8.913644891259347, - 5.341321136009601, - 1.6992052254274577, - 1.3802658335845173, - 1.321077116711181, - 3.4778958483315905, - 0.45106887260893425, - -0.29877850826601193, - 2.814576224571102, - 1.061470699070461, - 1.5560591193234292, - 0.009002727420105161, - -0.5728632466381287, - 1.4488941039869414, - 2.680103057576405, - 8.087660681859163, - 7.924096604576609, - 1.8830621438909143, - 7.330046940749516, - 1.3052051888704335, - 20.239407858743434, - 5.458202861874518, - 3.566518117425007, - 2.2755470859864575, - 12.710228264839888, - -0.02031091425673931, - 3.2010455466919776, - 12.748612239522714, - 1.7172106711308466, - 6.223889820398672, - -0.10834187887947563, - 6.414424700317907, - 9.485581690297234, - 0.20692746040285404, - 5.612009569446481, - -0.7968636854144878, - 11.212858292512838, - 3.8754718429087074, - 1.6355803374837654, - 1.0702481066826948, - 2.2238251355718823, - 9.664440199572164, - 6.678822705320481, - 5.6130816025802766, - 4.213900521246352, - 1.0315610455288375, - 9.07810266559977, - 1.6016841184574746, - 3.6771313021760634, - 2.7210499996428643, - 8.491045007856302, - 5.084167080074604, - 2.7027096168449347, - 8.244254695152835, - 1.9306473159601143, - 11.863769083579493, - 1.7703401551327915, - 1.6497084333348082, - 0.8362048794944831, - 5.874666811023051, - 3.538351087917226, - 1.1192408993876222, - 18.70093797194956, - 1.0365836778048962, - 4.615518699199752, - 9.416180112127925, - 2.2235781879856678, - 7.535568347995813, - 5.718870488934903, - 9.511238582862612, - 5.4793437671264975, - 0.9090308679390406, - 7.522390598242492, - 11.353252699415938, - 6.355338535434804, - 1.3166995303064548, - 6.814046134066176, - 1.1825360716592745, - 0.8055867554557106, - 0.30429045710780633, - 3.350184907820748, - 1.004400398183057, - 2.4578737976090324, - 0.2834045471778131, - 4.218514400485709, - 1.9430246141702063, - 1.64813868078584, - 0.47174643285034557, - 15.206963957774773, - 2.192695980222657, - 2.4118119178354767, - 2.0138351483016677, - 9.003466454195726, - 1.0112053026388435, - 7.732918790830611, - -0.4379989034027618, - 5.1519561783691925, - 8.474071310474365, - 1.3035440640784772, - -0.11072696712528579, - 4.378655268005002, - 3.5675108310755226, - 16.602631284075027, - 8.947393471939215, - 0.7819048381828108, - 3.5075319114594974, - 8.449360709078297, - 0.5804901799302381, - 2.208064305095736, - -0.08195129248483209, - 2.2709638107831265, - 3.336917837775417, - -0.1257618390648644, - 6.357216896021258, - 0.1556198040786207, - 10.594700657726156, - 10.876605493956605, - 1.4714823530783638, - 6.789552642997241, - 4.549333989095359, - 10.657111202235658, - 1.7292433063064971, - 0.5034197235493725, - 4.165853227731777, - 0.4815625417868352, - 11.040440544211428, - 6.814102237909044, - 10.568537722677682, - -0.09712993539328726, - 2.417293005058559, - 5.636952165005905, - 2.2897033617438236, - 1.0235939146661586, - 0.5756335735430999, - 1.3599892566979137, - 3.4808597665179164, - 8.355708081608233, - 3.8408289357547876, - 4.003987884400956, - 10.277828605350983, - 1.3479295458259453, - 10.797775589833455, - 6.542299074199517, - 0.012465241501093904, - 0.4063876051827512, - 3.8836053230647347, - 5.1638582727533615, - 4.044971139437629, - 0.0404292392599387 + 0.5630670750871645, + 1.265929471529643, + 9.748742710522935, + 3.4645630543002266, + 4.720577430325107, + 0.5906588386478189, + 1.094457274340711, + 2.8561356439738455, + 2.6652752947892124, + 3.258380402564378, + 2.4246531645049867, + 11.32396548183264, + 7.460567186562126, + 8.617960664434255, + 7.104539653403088, + 7.484138990719681, + 10.263973781556944, + 7.462833084556626, + 9.939603495455666, + 6.399661064524305, + 1.620400631064451, + 3.010865464260581, + 2.381320486974768, + 0.8308852277275207, + 3.556867416800981, + 1.948719095440292, + 8.600952713627429, + 2.1942833111391407, + 3.8946151927027572, + 4.635183887917489, + 12.036012082261806, + 5.637853691092357, + 12.221400040211847, + 1.7991157129239725, + 4.835865097197437, + 14.518747141216663, + -0.05875788804659948, + 6.3429859357301615, + 6.044358420828881, + 3.2790509190307753, + 3.661836726142834, + 6.027239323766707, + 5.2983880594659505, + 2.020013027089809, + 4.057610475845288, + 0.9338547248594324, + 3.1322631895362214, + 1.544860532455904, + 2.8272043421838253, + 2.646174515498736, + 2.943333161825477, + 0.25674709373115784, + 0.9564278707373953, + 0.5677485344907051, + 15.513337028875254, + 9.184765679426906, + 2.873153778309327, + 12.740174353522601, + 0.6039867353606898, + 5.255971423541705, + 9.861840580482127, + 2.4824345911784356, + 3.1606833199359152, + 10.758696194494975, + 4.0114814973324, + 1.3060695154765898, + 16.628049600932172, + 0.5396465065237206, + 1.9879917890238492, + 11.819285172419374, + 0.9107010782331554, + 5.44432760117919, + 1.7231523458302642, + 12.654564132534047, + 1.6867551361260875, + 0.4447510137167535, + 3.184193644033716, + 1.3123531867413947, + 4.907226338887424, + 1.2079738117623608, + 1.2976490783801529, + 3.0875966628748115, + 0.7662042158113374, + 3.3902681930418512, + 1.4763266658009067, + 1.6771273074590236, + 3.521164016793936, + 2.9790615945018963, + 2.8699549823091317, + 4.007461426415795, + 2.338940416336114, + 8.869888400801477, + 5.307738209931988, + 2.903746274695888, + 2.0856592384183767, + 2.670106787790936, + 7.294504633413678, + 1.9281350171251979, + 16.485468447411897, + 17.184456808988877, + 1.144175815597039, + 18.011448878519992, + 2.544852768481243, + 13.147775772480772, + 6.308070628222554, + 5.950585492608078, + 2.7891548279849387, + 1.2020926001030658, + 9.16406881190855, + 7.976670952867432, + 1.4702041620939958, + 4.134771415941696, + 9.618572668452142, + 11.154706893256707, + 1.9590841736079028, + 1.5765816250505442, + 2.203390528077207, + 2.500852809076819, + 17.77166976434441, + 3.4334313245502894, + 11.468809201993695, + 10.611429868963665, + 2.8637685911784025, + 6.001435101935673, + 7.369174521358374, + 14.217050945628085, + 12.603820025465769, + 3.3488782763418348, + 3.2131428606397328, + 13.91323011942871, + 6.9492001745411365, + 2.4085004716874194, + 2.5283967843946575, + 10.496296186991868, + 6.899498460269936, + 14.511067704191701, + 1.5608665881374613, + 10.84023714538772, + -0.6965244914717429, + 3.877125463354468, + 1.6956300173141827, + 9.231373497595118, + 2.7324465944061935, + 0.572300015216746, + 1.7319163875792771, + 7.173741895691831, + 8.72395855428605, + 1.4875526365435794, + 3.978081921739523, + 1.277176305974415, + 7.140580358652747, + 3.6406166270359526, + 3.263313964754971, + 7.04651848454491, + 5.8025687454395705, + 3.36570374652826, + 2.6977943889433376, + 10.208286605796419, + 2.584062116190693, + 1.39730823672077, + 9.141716452962367, + 15.010875697096775, + 9.716622199946908, + 10.861472590823428, + 0.8039268941832941, + 2.074774356414138, + 12.012572481931103, + -1.7598574267134772, + 3.2833135797555872, + 3.814606437723484, + 0.4098298865217034, + 0.9945304991518853, + 5.487369383152597, + 15.256389831013331, + 8.199846271814256, + 2.025112405354149, + 0.6760337811953564, + 8.270906507890658, + 9.851786931249737, + 9.658459208235294, + 7.9024491221299815, + 9.958092102214838, + 8.806679996607663, + 7.301841904208959, + 1.8959520678532464, + 1.4492962315955902, + 10.095742608750829, + 1.512564357382991, + 3.496852522553875, + 16.201070405665643, + 10.655181721121407, + 7.458668947695023, + 6.182585257102322, + 0.8381018734017056, + 5.954448421794118, + 9.87411606476611, + 6.44274037363752, + 7.225006373432191, + 9.410356026338688, + 7.092928912418812, + 6.2279781627067194, + 2.115857209972452, + 3.282548417419812, + 13.506884332057322, + 3.224684124764207, + 2.2777888910561184, + 13.656807361191017, + -0.2876756672935018, + 6.476384536900452, + 1.4078354924710546, + 0.4229833078605427, + 5.2566415961307165, + 1.2110296394109732, + 3.2348947786879796, + 5.258356272014977, + 2.3793809666939514, + 0.6472462881020166, + 10.264043112573114, + 1.0429433035735227, + 2.2201818077648126, + 13.4752145699751, + 4.145156625312843, + 1.6543586694441952, + 12.879051236600745, + 6.45682004663257, + 4.347351369089084, + 1.1398487127891446, + 8.752660083201123, + 4.02936560189911, + 9.322939743368408, + 2.8839303549256052, + 3.6528989976894994, + 8.23135357094443, + 7.50990937761974, + 1.3943898694921013, + 1.154134614445248, + 2.568654362308105, + 1.6317679540729098, + 9.558916997021942, + 11.347672582990297, + 3.282706463206077, + 8.29015465213362, + 2.5201550487419118, + 2.082022967226665, + 13.394201595285786, + 7.123966577481741, + 9.788541878471024, + 0.8422694533861999, + 3.5510943644870325, + 0.869819037499602, + 5.289082660734713, + 2.6330481899665306, + 5.677261752418803, + 12.645123193561433, + 4.4817511509321575, + 9.73135266063922, + 3.7551030628053486, + 2.1486714708117454, + 0.6236894726215128, + 9.17983249026187, + 5.4106108238588435, + 11.186651231469241, + 3.539902667427348, + 2.856974473907083, + 4.112886606965867, + 8.704875635951035, + 3.7024009314204016, + 5.127085315063862, + 4.895177962193958, + 2.805952128761161, + 2.0980465678831446, + 5.34465527074354, + 3.492431190958235, + 1.6299896045787312, + 0.265747092234916, + 5.942637664055524, + 2.348774115542101, + 4.402157484675704, + 9.116117235217184, + 3.4613547432564773, + 6.531671178472615, + 0.5823907366088681, + 0.959614387956564, + 14.489472594917014, + 4.822830547230848, + 6.499318869571259, + 9.032703049730282, + 7.190469660155882, + 1.9821676416870053, + 3.729218380691533, + 0.14701638808235667, + 2.593338126565563, + 3.513639508012342, + -0.48947405694846785, + 11.05679949241901, + 6.8535085774225974, + 2.8655532959460177, + 2.2977205841009107, + 8.993921914076, + 12.662304944150975, + 2.730133386249415, + 5.930689831586816, + 6.843459588109378, + 5.9954149907923355, + 5.506224292866516, + 0.6342150915008665, + 3.3174584761957835, + 1.2745894543814298, + 3.156564963752938, + 4.681035169088436, + 0.8682305274854047, + 11.792242512055923, + 1.9604221983391767, + 1.0462505871181245, + 5.711606376048099, + 3.068431613494066, + 2.8490213170428658, + 3.403959339305843, + 2.264179673326793, + 1.387978957119129, + 2.0930389945578867, + 1.0208994161105056, + 9.207668213067246, + 3.8606197895306593, + 1.6754162996313244, + 5.374779432437628, + 8.937184334004515, + 3.587884587512182, + 2.046242353652768, + 1.221756539602425, + 5.228476809017635, + 2.4441544833538806, + 2.2720936360102066, + 6.872279730973945, + 2.8243847518725254, + 3.9270580938911173, + 4.30569605379481, + 0.9263924032944642, + 1.982656548934253, + 0.41273184273741137, + 3.746157409358521, + 1.8483087547703183, + -0.10663683587216477, + 2.4880649403573276, + 10.732943752874196, + 5.9813129049237475, + 2.238459321206564, + 0.9256466820771712, + 7.418832968509168, + 1.7527514786002814, + 5.284160109950633, + 1.1634444861365167, + 0.9692343390160645, + -0.26887827327987335, + 9.787539601288069, + 11.895746374184167, + 9.965974552589072, + 9.062736049997376, + 3.1959767936832493, + 6.098242051931191, + -0.18547642092121291, + 3.005491424762978, + 1.533722689314001, + 0.8181368638728819, + 6.744568721567811, + 4.590598935913978, + 16.320957993486164, + 7.0913596958688565, + 2.056244034539619, + 10.46875965833262, + 0.08959655165547539, + 1.4096590522968548, + 4.310917476297208, + 4.0474420794264265, + 7.399995484071186, + 15.684623947529222, + 6.319113255288522, + -1.071882414549458, + 1.7809199910271896, + 10.597484092134568, + 5.473066959556585, + 5.362604379349994, + 0.9203431272301328, + 2.2949214206204025, + 1.8302969183486257, + 9.377576340374638, + 11.695367528603342, + 13.31462998390479, + 5.229088516361773, + 1.1612625683247135, + 7.5733289120723954, + 13.068835777185974, + 6.116304508486813, + 3.4789516811077896, + 12.201334815401738, + 1.2535400933557803, + 9.917238694141234, + 5.201274413655002, + 3.6200547532319867, + 0.7236331316200587, + 6.381441868078257, + 2.098334928618128, + 3.853399636918509, + 10.3952442006207, + 0.23272164849107474, + 2.5448227286349776, + 5.393261931006413, + 2.7689547564428887, + 7.03951458366662, + 2.7843861480103103, + 1.3747919230315948, + -0.11910075956786537, + 15.192679799545468, + 5.80072117939065, + 1.480441393050849, + 9.909191504815636, + 0.7295384349042683, + 0.8707473024376744, + -0.37541410634386446, + 2.3411429792009937, + 10.066438850385445, + 12.650547610477856, + 7.896877285673233, + 2.8388305599419104, + 0.7326646640660937, + 0.5785057335161181, + 4.465699169142491, + 3.4336848149227843, + 2.817753618939716, + 9.325611392051854, + 4.069830743631792, + 6.058062632929909, + 1.9159320923666834, + 2.325309229205214, + 3.6747587303809506, + 5.37197924529851, + 15.562328372379785, + 4.727536425813394, + 1.4067812717509782, + 2.7479395372103377, + 3.357959643164211, + 2.1157143634746034, + 3.5546653081564776, + 3.3811870689190684, + 1.0932624617665345, + 4.842986192059503, + 12.775377927488867, + 9.52804827793297, + 2.0287108774118243, + 2.9188253218804037, + 9.103443000619613, + 3.24690827055626, + 2.1962885130444167, + 4.631753203632753, + 12.114802646740193, + 4.088701749783405, + 6.733015419190123, + 1.0922488953952154, + 3.3012288114262556, + 9.84119574001116, + 8.642091012688123, + 2.1434429230266305, + 8.285082770663648, + 9.636217269201904, + 0.9518078384347449, + 2.6790083186093123, + 4.481767881878449, + 0.7560951420608685, + 6.57750145845892, + 1.3487689578263442, + 1.758855452517031, + 2.6692564484876717, + 16.34422736518518, + -0.14101190326756194, + 11.449212352595664, + 3.8875616041211565, + 7.846735256556087, + 15.957494350302662, + 3.8055648247878975, + 7.964989170975489, + 1.1676659305603234, + -0.07662067433000817, + 5.9371029470728205, + 5.768823511173059, + 1.0408554481784802, + -0.6036402304209916, + 2.6025896704276534, + 8.584272616464322, + 12.280705656341215, + 8.155549718844648, + 0.6382341393030234, + 1.8484947110270162, + 2.7857375699307556, + 0.36573864392377353, + 4.057159291263697, + 3.2999120644958038, + 2.4124649768137942, + 8.636493224325857, + 10.41559220076361, + 1.91287781057633, + 7.420632293781813, + 6.114443764932338, + 2.6829951311847617, + 1.3490980265992172, + 7.965626018208414, + 9.961085374384197, + 6.950627443018606 ], "yaxis": "y" }, { - "hovertemplate": "Treatment=True
Score=%{x}
Outcome=%{y}", - "legendgroup": "True", + "hovertemplate": "Treatment=False
Score=%{x}
Outcome=%{y}", + "legendgroup": "False", "marker": { "color": "#EF553B", "symbol": "circle" }, "mode": "markers", - "name": "True", + "name": "False", "orientation": "v", "showlegend": true, "type": "scatter", "x": [ - 0.9973454465835858, - 0.28297849805199204, - 1.651436537097151, - 1.265936258705534, - 1.4913896261242878, - 2.2059300827254558, - 2.1867860889737867, - 1.004053897878877, - 0.386186399174856, - 0.7373685758962422, - 1.490732028150799, - 1.1758290447821034, - 0.9071051958003012, - 0.9274624317585825, - 0.0028459158968110196, - 0.688222711102285, - 0.283627323807291, - 0.5738058624050577, - 0.3385890509998015, - 2.392365265937726, - 0.4129121603087788, - 0.9787360059373466, - 2.2381433384979528, - 1.7437122251229307, - 0.02968323030333022, - 1.0693159694243486, - 0.8907063912931708, - 1.7548861819811095, - 1.4956441370334692, - 1.0693926697057368, - 0.7948626677932181, - 0.31427199450686705, - 1.4172990464768525, - 0.8072365345785665, - 0.045490080631097156, - 0.19952407355863258, - 0.46843911944564426, - 1.1622040490995293, - 1.0397270908927005, - 1.2552373747242185, - 1.6609524881479396, - 0.8073081862107286, - 2.0871133595881854, - 0.16444123022982496, - 1.1502055425466322, - 0.18103512959700388, - 1.1778619388085783, - 1.0311144589217422, - 0.37940061207813613, - 0.6420546892718314, - 0.7122646354705182, - 2.5983039272693147, - 0.03414212890984157, - 0.17954948463867915, - 0.4261466396903099, - 1.242869549603737, - 0.5012489895674, - 1.0127390539563705, - 0.2787408560959998, - 1.959411342388286, - 0.12074736309713868, - 0.7482156171872304, - 1.6086909680220534, - 0.8123413299768204, - 0.49974014486517293, - 0.4743472978718003, - 0.3216865758662266, - 0.7609493931283295, - 0.32346884785689517, - 1.805970109932475, - 1.5188656236315399, - 0.13021495415796958, - 1.2672986450543529, - 0.3327649772541171, - 0.5565487049100443, - 0.4562708952022307, - 1.5445444514561384, - 0.14330773250787254, - 0.25381647654962736, - 0.2837253557710373, - 0.16794229540166816, - 0.5538561660032112, - 1.3772574828673068, - 0.02031599823462459, - 0.13402679274666512, - 0.7044740740436035, - 0.6656534379123312, - 1.5236637764785275, - 0.07922701409061239, - 0.07290724327605223, - 0.403085961219367, - 1.4719293689732715, - 0.3073842186274145, - 0.13997810611456363, - 0.09346082946215117, - 1.4595892682284208, - 1.3953529297569547, - 0.3915842423501111, - 0.1771923291989879, - 0.1995821110885137, - 0.19701893254347608, - 0.7033101178067301, - 2.200702099217128, - 0.6882969302220884, - 0.2786835167270544, - 0.5795416155732297, - 0.5796897791443336, - 1.612193042812388, - 0.8960583134099478, - 0.3696195863041741, - 0.003645154973777971, - 0.956601931056012, - 0.12405589644664888, - 0.7538687788376367, - 0.06878833252597749, - 0.32257673799720377, - 1.0324797157533776, - 0.59407025523907, - 0.2908743874249234, - 0.2796626701579614, - 0.2499699394555311, - 0.43587577054744, - 0.630488030489918, - 0.36344556213502865, - 1.8629275851052287, - 0.8350587468112366, - 0.7426862211616183, - 0.5907042178943853, - 0.11529872221079104, - 0.029642925120495236, - 2.958625445893176, - 0.9901328947153126, - 0.6359427056445893, - 0.2846030298135564, - 1.2189858621324263, - 0.4201795969883613, - 1.4083691460769014, - 1.2646252869680072, - 1.2533359468559955, - 0.27803371202287097, - 0.6683168667415277, - 0.9558323551671646, - 0.6957873191396077, - 1.8758005467136352, - 0.415694539892434, - 0.16054442147971804, - 0.8197606096101892, - 0.7650548459970179, - 0.6111235500559109, - 1.3166055958635523, - 0.7506099168684812, - 0.3426379813692278, - 1.1759107718346071, - 0.6800715328674297, - 0.6402186804198472, - 1.374990631494199, - 0.68620068605291, - 0.5232184412826316, - 0.4491356133597169, - 1.8687264568398085, - 0.14242558501294, - 0.5412312971976727, - 1.3400987035364347, - 0.937850297361706, - 0.0877304638665764, - 0.17975156577131524, - 1.7190346810845034, - 2.0564673412252215, - 0.6734912780983248, - 0.6759633930029775, - 0.05929113389470675, - 1.7440410870108336, - 0.4195676758953945, - 0.2069275192832601, - 1.1311519053059893, - 0.1350776724846987, - 0.6907772729156428, - 0.36005072808083677, - 0.3769201144376306, - 0.7898280347342986, - 0.10940315644126239, - 0.7448193123951158, - 0.2514641840435942, - 0.8889929175948555, - 1.1610683576464835, - 0.24537940725969198, - 0.24402693814049461, - 1.5340902893038646, - 0.9768129824696102, - 0.03594050250391853, - 0.8501028835244372, - 0.38287023902686523, - 0.3254636281821306, - 0.4818742570187152, - 1.014303883533461, - 0.7285354008351337, - 1.6980589922472507, - 0.1243586326189154, - 1.5169736782466114, - 0.15429005055187112, - 1.520166442206532, - 0.18904344241411, - 0.9043062201346425, - 1.1999876485826133, - 0.16145636340763547, - 1.7851688135164747, - 0.3101225206265262, - 1.1704542973614533, - 0.11045310929056538, - 1.11340167803588, - 0.14299002816716133, - 0.26198919678334104, - 1.6295341945107669, - 0.06580628246283132, - 0.12938552377648257, - 0.10406073501027997, - 0.16595697447417668, - 1.6019076510169283, - 0.05868743844990988, - 1.0644226884109076, - 1.448903611625761, - 0.9830333962592408, - 0.9315296133879658, - 0.38506610277727105, - 0.9458769837130342, - 0.6130677280288434, - 0.6736489338137502, - 1.49245538715155, - 0.9864740187009399, - 0.9938067071364096, - 0.020418758785576606, - 0.7509445971896803, - 1.2587213025893325, - 0.6001752363295938, - 1.9845823984585664, - 1.062214468922782, - 1.030379331152028, - 2.2506760310308676, - 0.567880067453997, - 0.5129828495987242, - 0.31158150338288004, - 0.7520336682672812, - 0.06964074948535595, - 0.9295844699427109, - 1.2608212692267615, - 1.3374538256412125, - 0.4161238144776257, - 1.930850867048302, - 0.5685042066678756, - 0.14993382849816042, - 0.5496425958003854, - 0.3037879307861897, - 0.24376576053087365, - 0.41281876168769105, - 0.6008825086920193, - 0.6868044067946779, - 0.585768138667071, - 0.4657700660382165, - 0.4405823002889993, - 0.08259541953627011, - 0.960880075213844, - 1.7843567953013033, - 1.5880678855942618, - 0.11264417223992805, - 0.6319482840093328, - 1.2205689137145275, - 1.502580905809435, - 0.8881945413408756, - 1.1580688744398528, - 1.089532657214453, - 1.0681603873290815, - 0.34325798097756616, - 0.22626164706870253, - 0.006029327171035006, - 1.7160403221121312, - 1.3081935639887152, - 0.5056858513379232, - 0.24797988474753857, - 0.8171882801174081, - 0.09415288552221196, - 1.3306307763606484, - 0.21639656827201, - 1.255464321946314, - 0.974386203344494, - 1.9298324339990223, - 0.19148232543991203, - 0.9741324352577567, - 0.1602937210962731, - 0.6745848312366249, - 0.15974869505592115, - 0.5886855547108121, - 1.3331907028432335, - 2.559850230632471, - 0.03490256406200444, - 0.2326496582105465, - 1.6065968052348043, - 0.16872226693647913, - 0.2753418630799228, - 0.9126879358198553, - 1.1406562429474632, - 0.2652339583982989, - 1.1746002379573404, - 0.300846402206581, - 1.9590953525071417, - 0.4138630815357569, - 0.047341880907133, - 0.27994357125692276, - 1.5959211716104487, - 0.5853180300922858, - 0.5335108183398289, - 1.0458573280333687, - 0.03240725440387064, - 0.9461858967453881, - 0.5815898028611892, - 1.9867630371691618, - 0.6005710943105073, - 1.042335368440993, - 0.09592041239523996, - 0.8009296466651268, - 1.5254442364402778, - 1.8044363234026013, - 1.0882204764493446, - 0.8877660685734637, - 0.21458607470423502, - 0.7824404041044422, - 0.37152468179976716, - 0.04700244536864444, - 0.7471284116768413, - 0.5777939542243806, - 1.6421827720450202, - 1.648817861485808, - 1.7154685921699906, - 1.220078514238279, - 0.03816631200200775, - 0.62832010285517, - 1.6291212053324975, - 0.8749623291033075, - 0.35227158207147286, - 0.8909167504786911, - 0.5569525393273475, - 0.11682811556907778, - 0.2872142809033677, - 0.36120305977167483, - 1.0831988026881991, - 0.20066000871919681, - 1.0744651405355077, - 1.0726297462337824, - 0.8059821116221542, - 0.9528308618116563, - 0.03844707664769293, - 1.613381535261024, - 0.38092143377222654, - 0.7728453956729086, - 1.6222084878501515, - 0.6914225452567888, - 1.9431601707247084, - 0.3007954393670502, - 0.3012904839825757, - 0.15491185973371044, - 0.8740798091601995, - 0.40935502492564035, - 0.7718466355607634, - 1.8483799508834453, - 0.39207804655166945, - 0.7473929615463166, - 0.27273473716279445, - 0.42533585692878567, - 3.571579218026311, - 1.1062666575947218, - 1.308518452326017, - 0.8814169197592583, - 0.8874423184465896, - 1.2568208318483642, - 1.1316445091958878, - 1.5238520171998033, - 1.1015259861531725, - 0.9769215645749826, - 1.23187178862397, - 2.332061996209657, - 0.34512424061207164, - 0.05280567540772656, - 0.048108563136617044, - 0.12618068088061885, - 1.1912324570650992, - 1.0576951014282159, - 0.12651650597023537, - 0.7740000020757852, - 1.3202683189321007, - 0.9114606095823158, - 0.1682343424234322, - 1.2664292986658463, - 0.4951808887859862, - 1.8615641238318181, - 0.9359884508763173, - 0.38021914486617187, - 1.6296113186459584, - 1.052401068873978, - 0.7631605141545158, - 0.11375597287983731, - 0.10356803732332855, - 1.0891653824583838, - 1.0086509563084367, - 1.0797963503009356, - 0.856554856393462, - 1.4485765853244514, - 0.892200085137838, - 0.02337234328724855, - 0.19021001785918956, - 0.8419395730245767, - 0.23101726734337139, - 0.13497010999029418, - 2.766603071101871, - 0.05022192476406931, - 0.15160759364714313, - 0.1574627523984585, - 0.3045151754260446, - 1.5755009358424055, - 0.33056327654884465, - 1.1314436080657682, - 0.3308167712757532, - 1.518629560365495, - 1.4286638344392986, - 0.09142830851405706, - 0.9736443797991589, - 0.9979573856771604, - 1.8584744098061854, - 0.0585377546950242, - 1.4187292755100624, - 0.1617103094175957, - 0.7049794803731054, - 0.6820347768334102, - 0.29655656728653923, - 0.5233426304345435, - 0.23876067172970541, - 0.36673219814247404, - 1.0239055049925403, - 0.5513022180697554, - 0.41958914519806184, - 1.8156520639191072, - 0.29988506654577324, - 0.8953708466071769, - 1.0163912685410768, - 0.9335850943946729, - 0.4267017991752182, - 0.9598304499937307, - 0.02305220825947024, - 1.3382205319305884, - 0.08399285613164036, - 0.2472840302376188, - 0.4870092937668535, - 1.011939656367902, - 0.48547522607809224, - 0.6705123906471673, - 1.0128681948538745, - 0.9597063713475107, - 0.8291703990248491, - 1.17805700395996, - 0.10146689245241805, - 0.4727748574495346, - 0.6501549009670022, - 0.23850121218790918, - 0.2963586560529044, - 0.5653965640388058, - 0.04325054289835325, - 0.3516793717496016, - 0.5280104739792081, - 1.4210427683683313, - 1.720920319810075, - 0.422919279615949, - 0.08149089870341171, - 1.4830391747653016, - 0.7209893917039087, - 0.024211360895293473, - 0.8708978067893992, - 0.6097905060392789, - 0.14597922501351515, - 0.9992528030472034, - 0.6347631315935225, - 1.0699185989273519, - 0.47026374759618605 + -1.1909756947064645, + -0.3126518960917129, + -0.7205887333650116, + -0.6365235044173491, + -2.2426849541854055, + -2.0212548201949705, + -0.334077365808097, + -1.5469055532292402, + -0.2026463246291819, + -0.6559693441389339, + -0.4693052847058996, + -1.8170272265901968, + -0.1831085401789987, + -0.3978402281999914, + -0.12209157484767426, + -0.32279480560829565, + -0.5664459304649568, + -2.0749776006900293, + -0.8971567844396987, + -0.1367948332613474, + -1.4458100770443063, + -1.4019732815008439, + -0.10091819994891389, + -0.5482424491868549, + -0.14461950836938436, + -0.03551302527814021, + -0.9742363337673154, + -0.07034487710410242, + -0.20849876310587975, + -2.4004536338122957, + -1.1426312890227635, + -0.785435211763197, + -0.9262543135302259, + -1.1526591092509524, + -3.5635166606247353, + -0.4300956908764876, + -0.3999645806965225, + -1.0278505586819058, + -0.5847182112607883, + -0.08194705182666534, + -0.3447660142546443, + -1.0689887834801322, + -0.5118813091268151, + -0.781105283625392, + -0.4680176663374855, + -1.2811082751440426, + -1.710715324029529, + -0.4507651031362744, + -0.20393286610125122, + -0.18217541166573417, + -1.8184989903916142, + -0.24843205438084665, + -0.6177066479970167, + -0.682883996449334, + -1.703012774113238, + -0.47932400357549726, + -0.2990162929660804, + -0.9620288319051914, + -2.0852656421201097, + -1.7353488744703927, + -0.379810784047379, + -0.850346271655115, + -0.524336102632456, + -0.12172840866682022, + -0.4740208901256851, + -0.05669571649092953, + -0.8048337241667037, + -2.12362024909293, + -0.33350244043324745, + -0.886719352485378, + -0.7438303679362013, + -0.3202038822408791, + -0.9161988612665409, + -0.8596682999817407, + -0.07260831396267549, + -0.5506029235634193, + -0.9381526140931042, + -1.2390715625947926, + -0.22301898188247601, + -1.4094317399227687, + -2.14785503764361, + -1.347532513457755, + -0.014752111804594866, + -1.4495666088633876, + -1.1955237416669708, + -0.591862973147249, + -0.4145048435321895, + -1.4257947334380214, + -0.5928860038389254, + -1.4731164134656474, + -0.896580615301871, + -0.43154951551604476, + -0.16113690824405888, + -1.0515389375700381, + -0.31956139984023146, + -0.6199930877212022, + -0.5714553510797893, + -0.7914888094778855, + -0.5246273459284702, + -0.5464162802735939, + -0.6755214784366882, + -0.2766461272769873, + -2.0786178937021753, + -0.387886231967176, + -0.08710696996399898, + -0.1570991368466517, + -0.7404690227807179, + -1.2476529230512328, + -0.2757737286563052, + -1.0516278594652122, + -1.392054077493087, + -0.8810470922015694, + -1.7122739244712557, + -1.4070845457432255, + -1.2689942560733918, + -0.8388429214202899, + -0.5040427180819637, + -0.7884401845178787, + -0.48575274428280835, + -0.6602295020442799, + -0.31868492957801425, + -0.7226621936743727, + -0.27559363376768226, + -0.4904835914786814, + -0.37443660019278063, + -2.397503976138816, + -0.28444068392629274, + -1.2656005376012107, + -0.35450870806937423, + -0.10476112306710425, + -0.6837898224310078, + -0.0505396895487724, + -0.3640099563071088, + -1.5533423394310608, + -0.3192978018201611, + -0.21754548049047615, + -1.7421376305949654, + -0.09443480774144415, + -1.7517059477920245, + -0.5425795169067793, + -0.025348902062768783, + -0.28755244928410806, + -0.06124629986631457, + -0.7310333425852061, + -1.0227737046951428, + -0.8070383084728134, + -0.3420107818792151, + -0.42300622841924834, + -0.036982814875919444, + -0.1708010306976224, + -0.022460873511426515, + -0.17429815275208735, + -1.0713686714550896, + -0.04846050255238326, + -0.8452903895662435, + -0.9807243575005858, + -0.42782610997202053, + -0.36015657086902797, + -0.45824038933749284, + -1.3379684019509706, + -0.04138653961487197, + -0.1980749596235683, + -1.154600965389669, + -1.2680690503770815, + -1.080096483157591, + -0.6112816747957622, + -1.4365739367721186, + -0.8969041706975123, + -1.7243930789918331, + -1.3127127065922315, + -0.6818813054911307, + -0.10465157484776595, + -0.3333504267494006, + -0.49674493786490903, + -1.7398037975225593, + -0.7558621756229088, + -0.8811117326479355, + -0.9500255347962833, + -1.120520993992725, + -1.0275156732178674, + -0.23833536546732603, + -0.22663229367683593, + -0.923830720176923, + -1.2700634783862885, + -0.19547241269675866, + -0.4634193992174632, + -0.961602240881236, + -0.6313987783785193, + -0.70425204708826, + -0.24048253675834233, + -1.8155576924320858, + -0.9101238456951419, + -0.7485279533390595, + -0.10812492648026306, + -0.2598436943633885, + -0.31244217715639994, + -0.05953196470440051, + -0.47001481339778667, + -1.0274688471736129, + -0.3066384838696108, + -1.2496967727943529, + -1.5601488888852328, + -0.5933563949764882, + -0.17028851232950049, + -0.5407998076498752, + -0.6841283287665846, + -0.2171991251446381, + -0.38336458015082797, + -0.781816088073111, + -1.21962569517377, + -0.7239489167555044, + -1.7347783075439347, + -0.3630899064372582, + -0.5882267282885189, + -0.5723023507451587, + -1.2080155928296474, + -1.3397010399749156, + -1.4894097013310104, + -1.1509530656259641, + -0.2427712711003623, + -0.5012681327516669, + -0.6981289789688551, + -0.2864254139357557, + -0.2783674615930086, + -1.4103507576806693, + -1.1540839403826029, + -1.3801733950718382, + -0.4958330052131627, + -0.41327907241887124, + -1.7193166679275491, + -0.029560902753084674, + -0.7660398835228289, + -0.7130239566297442, + -2.226117620977587, + -0.5638902404112554, + -1.5221795568231706, + -0.014278788627562308, + -0.24672080681888428, + -0.1653294765172792, + -2.0749804861700474, + -1.002755217016917, + -0.14874184933286258, + -0.045370411959291965, + -0.704492925529761, + -0.35357152666142744, + -0.03065886493678412, + -0.2001718506206763, + -0.48131023935727413, + -1.167520333241006, + -0.4256720265205931, + -1.1347082265682895, + -0.9515209412315562, + -0.12713045607576656, + -0.6242296327908734, + -0.40064420205997625, + -1.1370615382091245, + -0.9031590369968799, + -1.0972780624190317, + -0.07130920963109931, + -1.3193390866508534, + -0.5600929458770713, + -0.6315857879244524, + -0.8670697795627686, + -1.0025626707106647, + -0.6245894793017125, + -0.21214580398595856, + -1.1935641822743448, + -0.48902205827370954, + -0.050049692409833806, + -1.7240502035381267, + -0.37714942561155657, + -0.0002208983015993693, + -0.1686991122175147, + -1.153093261804181, + -1.4389778344742428, + -1.365317321173664, + -1.530892108386614, + -0.42446671286333926, + -1.3718378731166938, + -0.26641789264219634, + -0.10281429468501402, + -0.5864646217583874, + -0.9980556587715391, + -0.9528030215809088, + -0.1665595772769085, + -1.1894434708478612, + -0.5348572637202641, + -0.02159784664665048, + -1.1051915914797859, + -1.0559463385249355, + -0.3014922439465465, + -1.9692628740518392, + -0.35442243933376033, + -0.44699048181139484, + -1.1169783859357703, + -0.7882663825810968, + -1.3045412108969867, + -1.5751793626207562, + -0.15998365617495094, + -0.643333236166963, + -0.7153708866312951, + -0.45255766631820826, + -0.13004743219159512, + -0.3937331661815619, + -0.6410597741081536, + -0.8401490192933458, + -0.2048613320814621, + -0.1070733343325384, + -0.24210668506471908, + -0.9024827749371497, + -0.289095787657148, + -0.34318403393053737, + -2.200564435744119, + -2.5960623967791756, + -1.594885645232233, + -1.1100767316660405, + -0.9984064955184256, + -2.275806602546662, + -1.149298768674316, + -1.5861363032929552, + -0.4723808755437636, + -0.18884634787574245, + -0.6411772534653856, + -0.44884868035202796, + -1.4622250619252337, + -2.594654269661883, + -0.7147453741565917, + -0.12736538411633605, + -1.0749752659886933, + -0.27835427971563803, + -1.0368186639409402, + -1.8977106282505025, + -0.20036229600666147, + -0.12470367976984963, + -0.5793366572156923, + -0.7618194555160586, + -0.038912324029113265, + -0.356409207238252, + -1.8625686534341959, + -0.1362303703563351, + -1.0855234635679416, + -1.813277132405328, + -0.19791075971583402, + -0.5405657877076904, + -1.8424329199610465, + -0.5111660166205718, + -0.58093512839474, + -1.6797914849149362, + -0.625888706466102, + -1.2502708184687266, + -0.12139461101379515, + -1.2808952713375565, + -0.35296169014182177, + -0.9055276404436707, + -0.7037176105934078, + -0.2779593857816089, + -0.052165291629840356, + -0.40831076211055395, + -1.8104296677951879, + -0.9033080622801077, + -0.9808768767289832, + -0.22843361310270258, + -1.514846657215433, + -0.07526128723722576, + -0.29705808175737614, + -0.7274143817732619, + -0.24587534038557923, + -0.12794894211963254, + -0.3693106199094617, + -2.6230042844775308, + -0.15744398471175033, + -0.7884718753018505, + -0.06584033431115952, + -1.418479846109691, + -0.1397533402109211, + -0.5553548562130987, + -0.5019177788520144, + -0.2453604968501647, + -1.2694318590858544, + -0.2623238551840711, + -0.7817174376760302, + -1.3394111207653079, + -0.1824419843989386, + -2.5318833133900305, + -0.955683515590636, + -0.1336742103217792, + -1.077403324709461, + -0.16371119657423003, + -0.11828188509401265, + -1.1805528861977703, + -0.021557883623027695, + -0.8118350520747238, + -2.251213065289845, + -1.12610018599184, + -0.3078667459168953, + -0.9618845356398223, + -0.6567958804642327, + -0.2883631824527201, + -0.21979349574451643, + -0.8455002410306656, + -0.3337447706635678, + -0.14550836017250823, + -0.07536789810631976, + -0.061147655522904056, + -0.7530412824561289, + -0.34022586976460656, + -0.5509960393063006, + -0.6040373262522097, + -0.866260054447336, + -0.35588838632283426, + -0.9543423107689742, + -0.4640317318179717, + -1.5237107863092993, + -0.8406493439809086, + -0.5437403904555086, + -0.9733422132310651, + -0.11601728545379246, + -0.6908582143577912, + -0.7874870323351537, + -0.3781952626733465, + -0.05546876687944298, + -0.8490095099068151, + -0.0780897990873757, + -0.5273122406197597, + -0.24268793363602895, + -0.03552991507180546, + -0.9599149837120845, + -0.6289509748030468, + -0.17539274109078976, + -0.433426256842158, + -2.368892931279029, + -1.5927211354658712, + -2.441670740242832, + -0.2627338282699097, + -0.822618318710863, + -0.042268338331824626, + -0.39127020083745107, + -0.9078816127611445, + -0.04174551326063229, + -1.9943356434051311, + -0.5892856890062176, + -0.9849802336244897, + -1.0361773997113255, + -0.6587570839399224, + -0.6079835611701924, + -0.7414694894279271, + -1.470561473204019, + -0.12851239742110507, + -0.16063982952151423, + -0.6133974021549207, + -0.711763631312299, + -0.42147083331107177, + -0.341216883674434, + -1.8229324878347437, + -0.6707133283158744, + -1.1420202563413573, + -0.11489386424404562, + -0.9292300251800608, + -0.09742149039769883, + -2.119596982319414, + -2.1969217399884924, + -0.48966164024190245, + -0.5135490947661565, + -1.0739210599237325, + -0.29882845731838414, + -0.06581075463628752, + -1.8438652086995353, + -0.7578505995039082, + -1.59249315299401, + -0.24325392379441643, + -0.23102356637828622, + -0.3389292822418378, + -0.8798130487131584, + -0.2973845710076038, + -1.3650171542843021, + -0.4212656827400207, + -1.47256655193283, + -0.6366050127557136, + -0.015838160674877966, + -0.3878147409362679, + -0.7055198448961673, + -1.2858104335854346, + -0.6382100575533082, + -0.6532038099890327, + -1.31996590252498, + -0.8187126044465817, + -0.5740804187646116, + -0.7119035172923535, + -0.7356927851492516, + -0.9634637827705722, + -1.8721836112668646, + -0.5562800612192723, + -0.8019050477600198 ], "xaxis": "x", "y": [ - 11.843350419781432, - 1.2783252490927615, - 6.979833726420056, - 7.544402597594958, - 5.211726424756445, - 11.328982357962571, - 11.786593836619975, - 0.16211990034789026, - 7.708923433155757, - 9.670920116603936, - 4.312042083691266, - 11.155202833289, - 7.869078401198758, - 6.580482615711415, - 10.117961659154636, - 4.909237389853221, - 2.8108555288512362, - 5.434176086964864, - 6.319080567333178, - -0.9638222926985455, - 0.4620324882827421, - 3.7131967059703324, - 5.110824954131259, - 2.8005911372774643, - 3.1310481501035126, - 9.93791342600583, - 4.457689615957183, - 0.4432400995775329, - 9.927872067290398, - 0.07208560374580297, - 2.5457925060419573, - 7.797146506689931, - 1.22792298802629, - 7.937169737814031, - 7.45123260243356, - 1.67489222931549, - 1.1194675513412986, - 4.778004268899888, - 13.960796689428596, - 3.9755754444439644, - 1.1168230721711978, - 1.6273332962850218, - 0.29959226656146337, - 3.9489293808725505, - 4.304268219048882, - 2.93857136052065, - 2.070008969883575, - 1.935729034257215, - 1.1130900195866502, - 5.562424993316148, - 3.357834223641888, - 0.8868334937122362, - 3.6879090086979636, - 2.5402033428994164, - 4.94596569406837, - 1.7398766207780665, - 4.475351508101312, - 5.845441027556099, - 7.800587373099699, - 6.895856234148088, - 17.436047170354623, - 4.728938127043567, - 0.02818371533719566, - 2.02889084380834, - 1.4867532992412253, - 5.614750879553195, - 0.24750791079183848, - 2.242195321326359, - 3.5641873677802454, - 0.08635970063248233, - -0.49595920676842753, - 4.224838793083816, - 8.276336104798645, - 7.3543128236551265, - 1.3575429654668407, - 5.894064532176416, - 10.69693712954721, - 6.628017607729937, - 5.701570895400477, - 12.117808717278038, - 2.192838353861751, - 7.333522256074859, - 7.648063424175017, - 0.9733774045813455, - 2.2714817964855136, - 5.757697717326627, - 8.014202430187716, - 5.163800041937415, - 4.4954439259419, - 2.887888785309926, - 6.717183595775014, - 18.316699555595683, - 11.161878026704958, - 12.165757172655074, - 3.7437892066511553, - 3.723750371320296, - 6.7866102207641, - 8.168613630667, - 3.689134939806847, - 1.698569032845216, - 2.6665984837978227, - 2.573624931580353, - 16.598615431214476, - 5.007556747499594, - 11.187031300414363, - 8.161387568011705, - 8.764579046403323, - 0.8865958106624842, - 1.812819075414276, - 2.581360901997569, - 1.5802939998504824, - 7.5619340133344215, - 4.528194940530937, - 2.194619396934434, - 7.10830444130787, - 4.972998780197425, - 1.166402094029837, - 9.598528857203476, - 4.49744501382559, - 2.2995028590645066, - 1.336059929831097, - 6.084497978758436, - 3.8230731007861047, - 5.409713352553978, - 5.95560239613203, - 1.3312819841005257, - 6.012741601227922, - 5.948854893453342, - 2.8972694260864404, - 12.447063157061278, - 0.6953937663245326, - 5.536269664714117, - 3.3078506435239867, - 3.484777947869182, - 0.16092361235460018, - 1.2141811230912072, - 8.632150041290275, - 4.02211139366371, - 2.960397051847446, - 2.790085629935892, - 11.273058926217955, - 10.17782339775072, - 5.239936649946219, - 3.324474877204702, - 1.2227176042234278, - 1.988203273324926, - 3.5019337278079297, - 0.6603933752843196, - 10.629726767181422, - 4.812211693006651, - 0.5784764439999921, - 0.6007404422326096, - 1.8940193506279113, - 7.204259530927821, - 8.870176530466125, - 0.8769486269746164, - 1.9555367184659886, - 2.1404894792714435, - 5.031373727287077, - 6.9232826586902405, - 15.562624854206215, - 1.9175646434596454, - 8.735785395224633, - 3.5618739903751666, - 1.2320630512350337, - 6.149113502281869, - 8.498949844338663, - 2.2317787704976384, - 1.4959412275389172, - 3.1128298104962324, - 2.552733744082181, - 9.42661386549952, - 9.672417541662396, - 4.629299132003585, - 10.618634624925662, - 0.3326992639538201, - 4.7634016160762505, - 5.382772414106616, - 12.866243060213767, - 3.827369294847656, - 6.474996846980519, - 2.3345899532998966, - 3.2320484183065084, - 5.217356566443731, - 4.087605115985904, - 9.571900903919577, - 9.251252443373431, - 6.234434433955471, - 4.44571953956116, - 7.380398460376124, - 14.975989414269632, - 3.5226517711513834, - 0.7133578524500928, - 1.0631005370411946, - 4.455252575356227, - 10.709230969203528, - 2.0617445054761063, - 6.847157800684762, - 4.547931081643437, - 3.0190378443651653, - 2.378813292002275, - 6.715571937236744, - 1.2667830776508904, - 2.0545858704092694, - 7.254628921572497, - 12.396563861749348, - 2.5252538404288445, - 1.1110148614580833, - 3.8030025762710027, - 6.5324647321893465, - 1.5804306583618306, - 4.1278554745771485, - 3.356501450037906, - 5.411141149344755, - 1.8133123812328493, - 5.205383636920235, - 17.402923639571142, - 6.299006768374748, - 2.8266852604926425, - 1.701721596436611, - 0.7793895008092827, - 7.676735522006533, - 2.8640378562855937, - 1.5179274743074853, - 1.3719090600804011, - 11.659450205335105, - 2.5516742866728537, - 9.562512747812905, - 1.2304314915634764, - 1.3275174299690409, - 6.830886508339639, - 2.418990891831367, - 0.8681667204096835, - 1.8241127325498807, - 12.173007312697768, - 7.683621511713454, - 1.856625276512946, - 4.514575072190351, - 5.704981324652673, - 3.911596479903154, - 2.7608224695655585, - 2.941987501486197, - 3.710542900696343, - 6.89350621335775, - 0.4513503267910566, - -0.0377621450842639, - 2.514279409359936, - 6.235866954427032, - 5.93731090266978, - 1.6215072551969834, - 4.342546581180219, - 4.687956359982346, - 9.566191755934481, - 2.511769490102037, - 11.476593624468203, - 5.906266661119681, - 2.5781332982880296, - 4.513624036290565, - 1.9335179041865023, - 1.9383272387620603, - 9.00404015909179, - 0.8582842090316298, - 1.0116206084522787, - 6.832539055475626, - 6.428285472888243, - 7.119755474894247, - 0.44363067690640834, - 3.9813596950068004, - 2.5612020196508385, - 11.154901379854477, - 2.5037008342665894, - 9.347976602196868, - 3.060779614739405, - 0.7043671909360213, - 0.257537818302658, - 0.4182448082440802, - 9.350786087312052, - 5.517300255390764, - 8.937650401014938, - 1.2013366456535275, - 1.61189872633661, - 13.39768421888707, - 5.612941860969962, - 15.006767019449123, - 1.2827514574633596, - 3.9284647303353535, - 11.049065768662667, - 1.8194820979528816, - 1.9545029923300337, - 5.050991410261654, - 11.497561712086, - 9.33336562500696, - 6.912370980610654, - 7.331027182671989, - 5.204982648892568, - 3.2655281523823243, - 7.384507582777988, - 2.574063501348479, - 15.121779845481369, - 1.8457213799213785, - 6.910609547185828, - 3.3290015701070175, - 2.838177815558716, - 2.2610386791376014, - 2.4588277180073685, - 2.824716477004076, - 6.63533782213659, - 0.9895605675149649, - 5.454614044429312, - 4.591545890476965, - 0.6611757568753014, - 1.8231248215312372, - 16.63403899630275, - 6.946551478154662, - 1.2778346711298896, - 2.5604965619377147, - 1.5213610713436996, - 1.9649196400810802, - 2.814567328115494, - 2.889283720873363, - 10.006779523720134, - 0.32739330180374016, - 3.1493690993894785, - 5.069081579935573, - 5.857899988028624, - 1.525765013216732, - 5.583325658165998, - 2.0267989050836204, - 9.863071244711504, - 0.4527177563300576, - 10.788766228592362, - 5.590282589126367, - 5.074525016171147, - 10.818820975980936, - 1.3188950198235536, - 0.24835918643977317, - 10.449104407179004, - 5.63914144931611, - 6.076109555820212, - 5.338562992050922, - 6.705121533262165, - 8.649064204248692, - 3.830140822068672, - 9.294822463055219, - 6.780930300224588, - 3.769945624675496, - 5.054766257285909, - 9.155504516710621, - 10.817380341167533, - 6.691351297534186, - 2.574058148863419, - 7.050907681288254, - 0.7291717379887703, - 2.8873456580655272, - 11.068028890656013, - 0.85794443628045, - 2.6005270080115706, - 7.706519073843568, - 10.46880220748257, - 0.7795672245621978, - 17.57956003552206, - 10.034749856358273, - 2.8831310870098266, - 3.3682466015480244, - 1.5628956552847404, - 1.958203499869726, - 2.191356450408346, - -0.23080542752663563, - 1.490931743241378, - 1.6684468230576317, - 5.041216909044978, - 3.3551688393366534, - 2.8560030028702466, - 8.552540359815453, - 1.7561671435196453, - 2.0259611768566765, - 1.180579601461493, - 9.987162708714788, - 0.9171422550848839, - 2.012659771079495, - 4.484445223548995, - 2.711052876204999, - 1.4022260988803064, - 10.663183104702455, - 10.008071421675831, - 7.871397809369704, - 1.17131117523048, - 0.4436938333555654, - 1.8132031714692323, - 5.8483243807849625, - 2.186289454928466, - 4.893461203830686, - -0.24769166282179444, - 7.9032736883968635, - 6.537582709340816, - -0.006370794854138051, - 8.917828868392052, - 2.9776413214019004, - 4.26609824023815, - 2.6311237082614096, - 8.127349705869468, - 2.456923738125373, - 0.31799402669754173, - 6.284692824113377, - 7.86664131552712, - 0.7841815393133189, - 3.080254760561722, - 11.508540420152672, - 0.6633942582961944, - 5.981218888180274, - 10.045986573585775, - 2.9365537723944373, - 4.1008265984014765, - 2.2488912351551855, - 14.929199654287672, - 8.918420739808235, - 4.286275552115036, - 0.5772746845002957, - 11.29172164226737, - 4.077814919363084, - 2.5390271104002475, - 9.121481369118374, - 0.6184645452906185, - 3.1617087149950898, - 3.0159282681207293, - 6.774738979086667, - 7.796692279642645, - 0.03105419404073978, - 2.606232777173551, - 1.221686727509577, - 3.2564164418534154, - 6.388312209070728, - 11.634961902115412, - 2.6431453202175446, - 1.8873825986173614, - 3.188477306605487, - 3.6456758170498076, - 0.9420526153194824, - 1.4210871359389552, - 8.616785996682292, - 10.823372120003102, - 4.9399976532697165, - 10.256806948667807, - 9.45504435979177, - 4.14091777772119, - 2.147232483571662, - 6.683863565730471, - 6.965189698624978, - 11.702084340797052, - 4.197578409764386, - 2.7505805245123174, - 7.54404174491, - 7.921395662028064, - 6.77782727672825, - 21.263704409747263, - 3.497671194799593, - 11.065182642778163, - 5.338594594562493, - 5.039485692802774, - 2.52260166508823, - 23.444250757486415, - 5.247073954963512, - 2.043326450124893, - 5.226026657852556, - 1.8497709952095485, - 1.4495014999103024, - 1.1300640746652961, - -0.03059142475328539, - 3.04430943869141, - 16.37065363992529, - 0.14347647195360638, - 13.74034583863006, - 5.06900273413753, - 4.103162863672742, - 1.0778526840006188, - 19.004259788914794, - 0.39109854765435004, - 3.9082477849156887, - 0.8735955626714269, - 2.5789719692129744 + 1.3486218401039956, + 7.477357302978893, + 13.185130441195385, + 3.213884670828087, + 4.851025691238358, + 13.709625572413577, + 0.9095215968919781, + 0.4585860711409128, + 6.330611091218783, + -0.3899856239234457, + 15.159272440031835, + 10.159416656466759, + 1.1910906009059457, + 1.2031646458756038, + 3.7025147848367004, + 4.5153386414094765, + -0.5561128481502722, + 7.565566495800468, + 0.8914961577507419, + 4.784164959023863, + 4.477655236806118, + -0.41651759242783837, + 0.08806035597773143, + 0.5297637724001851, + 1.7908939267943453, + 6.416756279757693, + 3.3053798974431836, + 1.9901027948435226, + 1.9163785856840159, + 2.01801601787926, + 3.3679245111731215, + -0.14581384197929406, + 2.8463253251114113, + 1.7735415229957858, + 13.65848649643465, + 1.3891269452447803, + 9.120307212105697, + 0.6460634901698075, + 3.1896832136455227, + 2.4476007802679893, + 2.440691459852534, + 8.340491663558723, + 6.922115043013113, + 7.022901571093229, + 0.06724489894951725, + 0.20282808173671818, + 0.821493754710078, + 8.041734745886036, + -0.2992694879926443, + 3.5192039335414838, + 2.3208762968492294, + 1.5946545977070559, + 4.908132773248832, + 1.2154220956546324, + 2.508549845342969, + 6.842041176943584, + 13.919276932471254, + 0.7130649555967261, + 2.7789795394321213, + 9.200972090131284, + 7.472999443980326, + 1.7287378459171878, + 2.3855982259100093, + 9.427352114241756, + 1.3364200530683075, + 1.3210536706273739, + 4.707067484257473, + 6.92580071128665, + 2.36880536392164, + 1.4228427608646224, + 2.6813583321436183, + 1.1048547692079531, + -0.07502604670082638, + 2.250307023533512, + 4.018691995722657, + 3.0817250359340385, + 4.73533281061189, + 5.262460946495654, + -0.030953077101010695, + 6.655120482443857, + 10.887575486792901, + 9.881541668780825, + 0.3624775790859004, + 7.771131601508578, + 12.993615872678404, + 4.46180962563332, + 9.046233596815545, + 0.6153874717064401, + 0.06209084779627111, + 9.02540580710607, + 11.130776201020911, + 0.7583313584682627, + 4.167519345670676, + 1.2958887040965574, + 0.3231021368979874, + 2.4968047294816027, + 5.4849946541383945, + 8.851689212669179, + 0.22497260167637093, + -0.679854495220918, + 1.0178674945952164, + 10.06259122175227, + 7.49361519727407, + 0.7039466740923791, + 0.1923276664283496, + 4.309096888839158, + 0.9005263052843315, + 10.7904567286213, + 3.9516058179371756, + 2.044976597218969, + 4.291426997822883, + 8.136593182364422, + 0.21645849306063691, + 2.2875031906526178, + 1.0004089437269108, + 0.36111171265387776, + 0.44487698164791045, + 5.727982001110966, + 5.389075708870314, + 0.2591187071686343, + 4.349196807521143, + 8.847499888688484, + 17.086010675852076, + 2.357682600073091, + 0.11936442692347213, + 2.6745891379239874, + 9.510315808240478, + 10.660321663718435, + 12.513661621748446, + 6.560471867036691, + 3.9335568742082114, + 8.082556021092136, + 1.6394456261191244, + 0.6787831612420692, + 3.7778571560668484, + 1.8008966196476315, + 11.974289287917196, + 0.6789358057649202, + 3.479487236837873, + 4.558638359694437, + 1.4779720094871518, + 2.8765581705606706, + 1.618984651084493, + -0.5967617898546517, + 8.557701640861922, + 15.273736946209622, + 1.540555906600884, + 17.37779663412622, + 2.905320796685039, + 1.6520725885832626, + -0.4424743006174689, + 4.802259517550979, + 8.050338971448395, + 5.927871152344614, + 11.152073205328248, + 1.3549755284738203, + 5.554899749469977, + 0.7331132023276788, + 2.752146771893159, + 1.0359179974705544, + 4.345536900055321, + 2.6233719765050934, + 1.7590213928451695, + 1.0450913975811487, + 7.998289415441801, + 0.1183953918038539, + 4.708576775768007, + 1.6006440834766547, + 4.692783712058903, + 1.0360663945550246, + 4.549213238167896, + 1.9233745949318444, + 1.9797244398997378, + 9.128279660356313, + 3.269725036219773, + 0.6211616233500779, + 0.37517543140685394, + 5.043483592849441, + 1.1108138951977866, + 0.34558384540343884, + 1.109807387231308, + 11.397328743843131, + 2.311139343857397, + 7.325764630305342, + 5.864583657218799, + -0.12756523321898525, + 3.145222040875022, + 7.651476911828151, + 6.177626722731482, + 3.3784508875812698, + 4.338054049855501, + 5.753557164164235, + 0.5226603330804618, + -0.060170859100088875, + 2.2899617239460897, + 3.0045118892692733, + 6.894214243659627, + 1.7029680839076393, + 16.453126153055717, + 2.5241162657869958, + 5.086393411792524, + 2.067446896541806, + 0.2037421228824528, + 3.788566728440795, + 0.8433810912004589, + 8.73398022259693, + 6.164455561396544, + 5.798025255516479, + 15.633069587432637, + 10.748226336308578, + 1.3749827233735594, + 4.621400375274052, + 0.14514464126031956, + 0.5142775354371905, + -0.30679187046944933, + 10.365028176603392, + 4.229053755115862, + 6.838719423247291, + 1.6735109145218159, + 0.09525147204741025, + 5.633274169859272, + 1.3874135513253338, + 6.051750045442512, + 3.0353469770448553, + 0.973018917455266, + 8.896447542504344, + 1.1384522783195905, + 2.6157789831409017, + -0.618778332438777, + 1.0481937278251565, + 7.527241486465692, + 0.8439946021650253, + 5.68636813453995, + 1.4273143209321062, + 1.7294988055854636, + 6.401381203699718, + -0.432290068850227, + 1.246765100289748, + 3.8145575498127813, + 14.981223733938906, + 4.3547117742037145, + 9.944575127516327, + 1.0349323282462257, + 2.250865405991169, + 0.3433784534174193, + 2.163676222610197, + 0.14744314604060216, + -0.40229619520916193, + 9.63400358141513, + 2.24932445591205, + 4.057333469835328, + 6.781982108778782, + 10.759073146618778, + 1.3471386356430683, + 0.7646496195873962, + 0.5658228293303318, + 2.2951524342113, + 7.356610396655633, + 5.5637627509143, + 2.9546347896691243, + 8.408626718705081, + 2.720189725548378, + 10.322106818447857, + 0.05575704045468888, + 13.593412969522282, + 9.987294315572047, + 6.039899082718677, + 8.181240813066784, + 7.502746435960094, + 4.064052627696925, + 7.825621809088959, + 7.644107124755398, + 4.713550018087741, + 0.31933532074385657, + 9.292805500080178, + 14.740556336698535, + 3.6480216912856616, + 1.1014840130123558, + 0.8500635875769066, + 2.021668269770731, + 7.69610149606448, + 1.904009068981885, + 2.104071728640031, + 1.4282422725463955, + -0.1542287184063889, + 0.14638362545597935, + 5.600240737714463, + 1.489300874371906, + 1.4954795451515095, + 4.362376402733272, + 0.6213348206282769, + 7.709307418869114, + 2.4904908001412, + 5.555281863940814, + 9.422003092737722, + 2.4254330580864294, + 1.338207062398862, + 17.309342449174437, + 4.700038239212424, + 4.707541074441268, + 3.9882370260199664, + 0.5659620963183319, + 1.5533344686194606, + 0.9200400636616757, + 4.545408300690253, + 9.932720415705845, + 0.6306143094905791, + 4.088178795937608, + 6.679938991496159, + 10.174251422781808, + 11.050052132691514, + 10.79419395285209, + 1.0932824737816762, + 1.1123793072914967, + 10.634001853069048, + 3.342639023519304, + 2.1131210563570484, + 2.4123423916134765, + 3.2635831872750387, + 9.865134367880087, + 15.170521775956992, + 0.9864638070484877, + 5.952277871232277, + -0.22429698968552159, + 10.653426281895236, + 7.078660084260667, + 0.026152308571340682, + 2.4163115686018695, + 6.81506264593537, + 1.753500032982672, + 6.13418577972205, + 7.027036730809288, + 7.239424806847834, + 2.67964625593345, + -0.29242847000262817, + 7.346906185677314, + 7.08512293401148, + 1.1187963156683463, + 5.184519286167036, + 11.681597391550724, + 8.598933157024868, + 6.0189098680206605, + 9.089152432868591, + 8.587613013227351, + 3.6528693345703385, + 1.7021195783648564, + 12.4428409274409, + 6.630439258776994, + 4.7151269165494964, + 0.7293393249272646, + 1.2932899904926258, + 3.9902807973338073, + 5.949867349778937, + 7.200662450178622, + 2.319123516352471, + 1.0725604118217094, + 0.0826444359382778, + 17.617140053944556, + 2.587835772105568, + 9.6534920237235, + 10.266156167544603, + 15.534887826327623, + 4.585755041419343, + 0.36043911405584644, + 9.223885330219982, + 0.2538609094114361, + 5.513051565329957, + 5.3767398542711105, + 1.2188733275402446, + 0.27227752465740784, + 5.957509410035419, + 7.980442801090926, + 1.211856035154864, + 5.842941177649649, + 2.34455830212435, + 1.1150603903826617, + 0.5233138627951399, + 0.014215309483299951, + 4.540614289611321, + 10.09604969691086, + 7.567435602565755, + 9.819981825729077, + 5.1909970978463535, + 1.4552681482097538, + 4.321063824763318, + 4.66780249434247, + 6.498074761940801, + -0.20374752217212186, + 8.654007293669366, + 0.2674051948706437, + 3.6929968178840227, + -0.30886086104336674, + 1.2340808958358562, + 1.4145487256673344, + 2.2274011885945777, + 9.744818442988178, + 0.785235196851721, + 5.865549775035278, + 6.894842119981693, + 7.54866454467063, + 4.28335825443005, + -0.09534686814461035, + 0.34810649511538816, + 2.9850848814314466, + 6.100195736648981, + 1.0072378541569067, + 1.7853915517559302, + 0.2346367486240703, + -0.3610901011561299, + 1.632631753231078, + 3.324277613747201, + 11.038362053887168, + 0.623055074210312, + 2.4529519164172675, + 0.8928873362688777, + 1.0205389396139006, + 0.3147848495708494, + 1.4150212059382248, + 5.297619157667393, + 3.2507613327370932, + 0.3143949242786218, + 19.04654958147302, + 0.9358132860305264, + 6.865095541781097, + 2.0022066056655534, + 3.550165232686205, + 3.6148860820759716, + 0.2893192391838322, + 2.6870295469965573, + 7.6771207410376086, + 2.5997293556522543, + 9.723843473476052, + 19.89695246719818, + 0.7525531876775715, + 2.099322031098568, + 3.640862762636694, + 10.126588712300522, + 1.8965559795552247, + 0.4837995815931926, + 0.38883834760001845, + 3.128238530472426, + 3.0287181157971594, + 5.145528983088213, + 2.9839938774044934, + 5.251659075522024, + 5.981752248331269, + 9.905469616628542, + 8.113039292587432, + 2.389183056858123, + 1.5281421008725755, + 0.7251112401444999, + 5.511232338873529, + 2.5722549478657353, + 2.7598012680987805, + 3.7086949801888873, + 5.028506415538427, + 1.0273216027632337, + 7.909008494881561, + 15.239083103886744, + 12.336183290192066, + 2.6448770290342143, + 2.2983019526159363, + 4.26966015537506, + 19.360679032521865, + 7.620029935403366, + 7.608947235750834, + 0.4578952696239318, + 2.5636303602200265, + 1.2361366208392117, + 2.522278900393948, + -0.07875447360853444, + -0.09820607356546696, + 0.5192230455272994, + 2.0760441107813534, + 10.078478898125562, + 4.026487709074533, + 1.4687740141322216, + 1.6736114150139414, + 0.3284413774117222, + 4.364665831733724, + 8.057701278992917, + 0.6144847987536664, + 2.7175702943333575, + 2.597155363410655, + 0.9061489054095168, + 12.503389183146409, + 4.587884045549208, + 2.149740301840303, + 7.815182602979085, + 10.466311998993257, + 0.05084904692638065, + 0.23193727300348288, + 2.1533483673451492 ], "yaxis": "y" } @@ -3119,7 +3126,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "The oracle ATE is estimated as 0.977950766577146 at the cutoff c=0.\n" + "The oracle ATE is estimated as 0.9491168185471476 at the cutoff c=0.\n" ] }, { @@ -3137,2008 +3144,2008 @@ "name": "ITE", "type": "scatter", "x": [ - -1.0856306033005612, - 0.9973454465835858, - 0.28297849805199204, - -1.506294713918092, - -0.5786002519685364, - 1.651436537097151, - -2.426679243393074, - -0.42891262885617726, - 1.265936258705534, - -0.8667404022651017, - -0.6788861516220543, - -0.09470896893689112, - 1.4913896261242878, - -0.638901996684651, - -0.44398195964606546, - -0.43435127561851733, - 2.2059300827254558, - 2.1867860889737867, - 1.004053897878877, - 0.386186399174856, - 0.7373685758962422, - 1.490732028150799, - -0.9358338684023914, - 1.1758290447821034, - -1.2538806677490124, - -0.6377515024534103, - 0.9071051958003012, - -1.428680700225969, - -0.1400687201886661, - -0.8617548958596855, - -0.2556193705305969, - -2.7985891054607244, - -1.771533104509847, - -0.6998772345979173, - 0.9274624317585825, - -0.1736356827902158, - 0.0028459158968110196, - 0.688222711102285, - -0.8795363430090519, - 0.283627323807291, - -0.8053665180656158, - -1.7276694941206072, - -0.390899793755101, - 0.5738058624050577, - 0.3385890509998015, - -0.01183049447881976, - 2.392365265937726, - 0.4129121603087788, - 0.9787360059373466, - 2.2381433384979528, - -1.2940853231612488, - -1.0387882102049535, - 1.7437122251229307, - -0.7980627352410625, - 0.02968323030333022, - 1.0693159694243486, - 0.8907063912931708, - 1.7548861819811095, - 1.4956441370334692, - 1.0693926697057368, - -0.7727087142471915, - 0.7948626677932181, - 0.31427199450686705, - -1.326265459940456, - 1.4172990464768525, - 0.8072365345785665, - 0.045490080631097156, - -0.2330920609844135, - -1.198301144700787, - 0.19952407355863258, - 0.46843911944564426, - -0.8311549842432792, - 1.1622040490995293, - -1.0972030464830342, - -2.1231003500424417, - 1.0397270908927005, - -0.4033660381021075, - -0.12602958531301514, - -0.8375167228250533, - -1.6059627607174027, - 1.2552373747242185, - -0.6888689838469215, - 1.6609524881479396, - 0.8073081862107286, - -0.31475814671745994, - -1.0859024011268665, - -0.732461986720457, - -1.2125231310951696, - 2.0871133595881854, - 0.16444123022982496, - 1.1502055425466322, - -1.2673520490102275, - 0.18103512959700388, - 1.1778619388085783, - -0.3350107619330159, - 1.0311144589217422, - -1.0845679120057665, - -1.3634715446185843, - 0.37940061207813613, - -0.3791764345725522, - 0.6420546892718314, - -1.977887931520449, - 0.7122646354705182, - 2.5983039272693147, - -0.024625981431480627, - 0.03414212890984157, - 0.17954948463867915, - -1.8619757107917871, - 0.4261466396903099, - -1.6054097440159647, - -0.42767959812380435, - 1.242869549603737, - -0.7352169561000764, - 0.5012489895674, - 1.0127390539563705, - 0.2787408560959998, - -1.3709484700946077, - -0.3324752753514139, - 1.959411342388286, - -2.025045762997471, - -0.27578601386617546, - -0.5521080714881078, - 0.12074736309713868, - 0.7482156171872304, - 1.6086909680220534, - -0.2702323920091581, - 0.8123413299768204, - 0.49974014486517293, - 0.4743472978718003, - -0.5639239315264725, - -0.9973214687759007, - -1.100043112620697, - -0.7564372093991233, - 0.3216865758662266, - 0.7609493931283295, - 0.32346884785689517, - -0.5489550961957409, - 1.805970109932475, - 1.5188656236315399, - -0.35400011275017335, - -0.8234314059856659, - 0.13021495415796958, - 1.2672986450543529, - 0.3327649772541171, - 0.5565487049100443, - -0.21208012227562573, - 0.4562708952022307, - 1.5445444514561384, - -0.23966878147771076, - 0.14330773250787254, - 0.25381647654962736, - 0.2837253557710373, - -1.4118888760712274, - -1.8768686558738945, - -1.0196550709218393, - 0.16794229540166816, - 0.5538561660032112, - -0.5306745597736241, - 1.3772574828673068, - -0.1431759743261871, - 0.02031599823462459, - -0.19396387055266243, - 0.13402679274666512, - 0.7044740740436035, - 0.6656534379123312, - -0.8984229406095902, - 1.5236637764785275, - -1.0950264574269175, - 0.07922701409061239, - -0.2743965735223526, - -1.0489916773184873, - -0.07512058797383152, - -0.7408137732923984, - 0.07290724327605223, - 0.403085961219367, - 1.4719293689732715, - 0.3073842186274145, - -0.6112253403048249, - -0.39161981071960156, - 0.13997810611456363, - 0.09346082946215117, - 1.4595892682284208, - 1.3953529297569547, - -0.3589359262422613, - -0.5486421281861983, - -2.5570546040678583, - -0.5489204133222201, - -0.9780577060842837, - -0.3548244580948187, - 0.3915842423501111, - 0.1771923291989879, - -0.02996800704754226, - 0.1995821110885137, - -0.12611777323099171, - 0.19701893254347608, - -3.2310550079193123, - -0.26929348975075423, - -0.110850721053007, - -0.3412617162065858, - -0.21794626210294177, - 0.7033101178067301, - -0.5981053313408254, - 2.200702099217128, - 0.6882969302220884, - -0.006307250913872172, - -0.2066623031975665, - -0.08652228638213517, - -0.9153070699439787, - -0.09520253925800948, - 0.2786835167270544, - 0.5795416155732297, - 0.5796897791443336, - -0.27487754656593466, - -1.4160822525219303, - -0.6691026262334455, - 1.612193042812388, - 0.8960583134099478, - 0.3696195863041741, - -0.7612942447601239, - 0.003645154973777971, - -1.255668685662482, - -0.5519368756960736, - -0.24520334168519506, - -0.361639931865213, - 0.956601931056012, - -1.4187259140354525, - -0.8654322715151541, - -1.3746879710222193, - -1.237353212687854, - 0.12405589644664888, - -1.6004405330562717, - 0.7538687788376367, - -0.24681577694107554, - 0.06878833252597749, - 0.32257673799720377, - -0.4341665202515911, - 1.0324797157533776, - -0.19434272672763503, - 0.59407025523907, - -0.19911238275725224, - 0.2908743874249234, - 0.2796626701579614, - 0.2499699394555311, - -0.9743078496209195, - 0.43587577054744, - -0.3189569890995958, - 0.630488030489918, - -2.152493444412304, - -1.465116222054951, - 0.36344556213502865, - 1.8629275851052287, - 0.8350587468112366, - -0.6824509341999805, - -1.692052415377956, - 0.7426862211616183, - -0.0805832220429508, - 0.5907042178943853, - 0.11529872221079104, - 0.029642925120495236, - 2.958625445893176, - -0.0061299610455789804, - -0.15924520925326485, - -0.12144867540402206, - -0.5835367167076569, - 0.9901328947153126, - -0.3537543337813492, - 0.6359427056445893, - 0.2846030298135564, - 1.2189858621324263, - 0.4201795969883613, - -1.2133847809476472, - -1.3264877850539407, - 1.4083691460769014, - -0.6087108032644418, - -1.3206025797896521, - -0.6696185998697584, - 1.2646252869680072, - -1.4202129989485122, - -0.8664952037596095, - -0.6668075087965194, - -1.2511898734731952, - -1.1843273385116637, - -1.5181079752636586, - -0.46118741313672207, - -0.35490883174008503, - -0.6825381542033059, - -1.653697838967641, - 1.2533359468559955, - -1.3290788291721605, - 0.27803371202287097, - -1.0747665931188752, - 0.6683168667415277, - 0.9558323551671646, - -0.8776135866276552, - -1.923715729697126, - 0.6957873191396077, - 1.8758005467136352, - 0.415694539892434, - 0.16054442147971804, - 0.8197606096101892, - 0.7650548459970179, - -0.8289888337610103, - -0.6591513106966477, - 0.6111235500559109, - -0.14401334748029268, - 1.3166055958635523, - -0.7043421471287583, - 0.7506099168684812, - 0.3426379813692278, - -0.12643756370963435, - 1.1759107718346071, - 0.6800715328674297, - -1.004967153382104, - 0.6402186804198472, - 1.374990631494199, - -0.13044468898462372, - -0.24865585038497331, - -0.6696471476435246, - -0.013603885675351006, - 0.68620068605291, - -0.8176682995787476, - -1.34635756073724, - -0.37574991098192634, - -1.37972497865875, - 0.5232184412826316, - -0.4266897699938011, - -1.7554018445508066, - -0.3486075147385099, - -0.19261498579409048, - 0.4491356133597169, - -0.14536354315421035, - 1.8687264568398085, - -0.5187038515389994, - -0.06239854858230655, - -0.10291061426267058, - -0.28262838440702354, - 0.14242558501294, - 0.5412312971976727, - 1.3400987035364347, - -1.5692561273944634, - -0.5103428738061208, - -0.4477714253522432, - 0.937850297361706, - -0.3566630610733439, - -1.8951755930793188, - 0.0877304638665764, - -0.03368923154093914, - 0.17975156577131524, - -1.040162880979482, - 1.7190346810845034, - -0.32385978378534624, - -0.18829685849366687, - -0.9000085698091608, - -0.9310020038747236, - -1.2227369597487854, - -0.3933108517811569, - -0.957581838756634, - 2.0564673412252215, - -1.8884923803868152, - -1.1283305481817938, - -0.40141442845701475, - 0.6734912780983248, - -0.41375688138006245, - 0.6759633930029775, - -0.9868038892903219, - 0.05929113389470675, - 1.7440410870108336, - -0.9677443956994779, - 0.4195676758953945, - 0.2069275192832601, - -2.25153498598787, - -0.5889705464706788, - 1.1311519053059893, - 0.1350776724846987, - -1.2122689628960637, - 0.6907772729156428, - -0.4791229453143527, - 0.36005072808083677, - 0.3769201144376306, - -1.1186956011455729, - 0.7898280347342986, - -1.007508801235176, - -1.30578586634164, - -0.882828987722037, - -0.3460900338631944, - 0.10940315644126239, - -0.77258373237244, - 0.7448193123951158, - 0.2514641840435942, - -0.6947982151055028, - 0.8889929175948555, - 1.1610683576464835, - -0.09868469680951346, - -0.21498304496389087, - -1.7737713532563517, - -0.4075125923914689, - -0.2915067125653651, - 0.24537940725969198, - -0.16842643163047274, - 0.24402693814049461, - 1.5340902893038646, - -0.5299140986336766, - -0.49097228256584685, - -1.3091653143025817, - -0.008660466741585568, - 0.9768129824696102, - -1.7510703491923696, - -0.6658569670193876, - 0.03594050250391853, - 0.8501028835244372, - 0.38287023902686523, - 0.3254636281821306, - -0.2243127859709009, - 0.4818742570187152, - 1.014303883533461, - -1.7089917765492033, - 0.7285354008351337, - -0.09875980586671322, - -0.5299888642145143, - -2.443075785879315, - -1.3803513236542992, - 1.6980589922472507, - -0.6885485324635544, - -1.084768771253082, - -0.45642595614359244, - -0.7451472218585933, - 0.1243586326189154, - 1.5169736782466114, - -0.5866159508522137, - 0.15429005055187112, - -1.1472371412402353, - 1.520166442206532, - 0.18904344241411, - -1.0818191232906198, - 0.9043062201346425, - 1.1999876485826133, - 0.16145636340763547, - -1.639396967540776, - 1.7851688135164747, - 0.3101225206265262, - 1.1704542973614533, - -0.5508932051171423, - -0.39862392473390046, - 0.11045310929056538, - 1.11340167803588, - 0.14299002816716133, - -1.2568338125336815, - 0.26198919678334104, - 1.6295341945107669, - 0.06580628246283132, - 0.12938552377648257, - -1.2625437427838198, - -1.4029890877228395, - -0.6376921388132418, - -0.32651764661872357, - 0.10406073501027997, - 0.16595697447417668, - 1.6019076510169283, - 0.05868743844990988, - 1.0644226884109076, - -0.03932933464491537, - 1.448903611625761, - -1.8703974787472009, - -0.5987317666784293, - 0.9830333962592408, - -0.17159600525671556, - 0.9315296133879658, - 0.38506610277727105, - 0.9458769837130342, - 0.6130677280288434, - 0.6736489338137502, - 1.49245538715155, - 0.9864740187009399, - 0.9938067071364096, - 0.020418758785576606, - -0.5818502098168723, - -0.6595600882722964, - 0.7509445971896803, - -2.4384605640450236, - -1.3071781883042857, - -0.96325368587879, - -0.24762137869361706, - -2.631438036808334, - 1.2587213025893325, - 0.6001752363295938, - 1.9845823984585664, - 1.062214468922782, - 1.030379331152028, - 2.2506760310308676, - -0.5709580868574299, - -1.5034583992493944, - -0.23235739649273984, - -0.8249920538471605, - -0.25684536102444716, - -1.0502189902580903, - 0.567880067453997, - 0.5129828495987242, - -0.026922590568272415, - 0.31158150338288004, - -0.14205072712918293, - 0.7520336682672812, - 0.06964074948535595, - -0.2654456248957732, - 0.9295844699427109, - 1.2608212692267615, - 1.3374538256412125, - -0.9902746893194819, - -0.5344472080416974, - -1.701496094747692, - -0.23856501820360618, - 0.4161238144776257, - -0.13280117451197487, - 1.930850867048302, - -0.4058433751113569, - -1.088508555488929, - 0.5685042066678756, - 0.14993382849816042, - 0.5496425958003854, - 0.3037879307861897, - 0.24376576053087365, - -2.1222988830425917, - -0.726114027517346, - -0.5903249179528643, - -0.3479643379349264, - -0.4483916384609412, - 0.41281876168769105, - 0.6008825086920193, - -1.1316409267511525, - 0.6868044067946779, - 0.585768138667071, - 0.4657700660382165, - -1.4178944880296693, - 0.4405823002889993, - 0.08259541953627011, - 0.960880075213844, - 1.7843567953013033, - 1.5880678855942618, - 0.11264417223992805, - -0.0018746917257705736, - 0.6319482840093328, - -1.1150399534194404, - -1.4506831416048005, - -0.4725305920249986, - 1.2205689137145275, - -0.3311282982824718, - 1.502580905809435, - -2.7881128830850024, - -1.5872064267876305, - -0.12368873285569916, - 0.8881945413408756, - -0.06962309872009259, - -0.09565274449329955, - -0.12174149525709202, - -1.7628977344010746, - 1.1580688744398528, - -0.6827647198373713, - 1.089532657214453, - -0.07052341796234977, - 1.0681603873290815, - 0.34325798097756616, - -0.10667449055824228, - 0.22626164706870253, - -1.472977609111576, - 0.006029327171035006, - 1.7160403221121312, - 1.3081935639887152, - -0.9850235826980721, - 0.5056858513379232, - 0.24797988474753857, - 0.8171882801174081, - 0.09415288552221196, - -0.2335039931301, - 1.3306307763606484, - 0.21639656827201, - 1.255464321946314, - 0.974386203344494, - -0.3244872415189078, - -0.1670002743571596, - 1.9298324339990223, - 0.19148232543991203, - -0.7586284233600243, - -1.2000432779850234, - 0.9741324352577567, - 0.1602937210962731, - -0.7920919505289836, - 0.6745848312366249, - 0.15974869505592115, - -1.660475070762957, - 0.5886855547108121, - 1.3331907028432335, - 2.559850230632471, - 0.03490256406200444, - 0.2326496582105465, - 1.6065968052348043, - 0.16872226693647913, - 0.2753418630799228, - -0.630618391430576, - -1.3943751127131896, - 0.9126879358198553, - -1.273570236812244, - 1.1406562429474632, - -0.7881655588876596, - 0.2652339583982989, - -0.3722717313582859, - 1.1746002379573404, - 0.300846402206581, - 1.9590953525071417, - -1.0836776793595817, - 0.4138630815357569, - 0.047341880907133, - 0.27994357125692276, - 1.5959211716104487, - 0.5853180300922858, - -1.147525408677207, - 0.5335108183398289, - -0.4156193761557507, - -0.4733549700707904, - 1.0458573280333687, - -0.6023399830262286, - -0.3797303275801356, - 0.03240725440387064, - 0.9461858967453881, - 0.5815898028611892, - -0.23441491191787137, - -0.27217646568739323, - -1.1601296615335286, - -0.7598350885926631, - -0.6543810858204931, - -0.14929094174744556, - 1.9867630371691618, - -0.6754694337864318, - -0.2958290679056386, - -2.0523984049766058, - 0.6005710943105073, - -1.5774487938270054, - -0.9065895221643572, - 1.042335368440993, - -2.1049284295789623, - 0.09592041239523996, - 0.8009296466651268, - 1.5254442364402778, - -0.9200931084896136, - -0.624024850239865, - 1.8044363234026013, - -0.025060144581597745, - -0.7362639342696717, - -0.7174858373072273, - -0.9725563235674656, - -0.4396722054259928, - 1.0882204764493446, - 0.8877660685734637, - -1.1742703028253445, - 0.21458607470423502, - -0.40215973507251773, - 0.7824404041044422, - -0.15635972722929936, - 0.37152468179976716, - -0.15860520695849933, - -2.1870859306382227, - 0.04700244536864444, - -1.2717469495300868, - 0.7471284116768413, - -0.6798278923997879, - -0.6050126560729895, - -0.008902825012302579, - 0.5777939542243806, - -0.1697438177991287, - 1.6421827720450202, - 1.648817861485808, - 1.7154685921699906, - -0.23431872455876748, - -1.4819584561028547, - 1.220078514238279, - -0.416345285299776, - 0.03816631200200775, - 0.62832010285517, - -1.6044364005126521, - 1.6291212053324975, - 0.8749623291033075, - 0.35227158207147286, - 0.8909167504786911, - 0.5569525393273475, - 0.11682811556907778, - -0.3077743221445603, - -0.7391422743557824, - 0.2872142809033677, - 0.36120305977167483, - 1.0831988026881991, - 0.20066000871919681, - -0.8532015157805608, - -1.576232847396656, - -0.12756216200993092, - -0.027458376689570886, - -0.09809158279359968, - -1.5305128973556241, - 1.0744651405355077, - 1.0726297462337824, - -0.823285164614491, - 0.8059821116221542, - 0.9528308618116563, - 0.03844707664769293, - -0.9484986261940769, - 1.613381535261024, - 0.38092143377222654, - -0.2510374552120426, - 0.7728453956729086, - 1.6222084878501515, - -0.4971601466888655, - 0.6914225452567888, - 1.9431601707247084, - -1.1165648342354797, - -0.5492535887280628, - -0.5978550805922049, - -0.15832713704922016, - -0.20997373588419468, - 0.3007954393670502, - -0.8203755201347369, - -0.6226634888808933, - 0.3012904839825757, - 0.15491185973371044, - 0.8740798091601995, - 0.40935502492564035, - 0.7718466355607634, - -1.1429520395415, - -0.3834163111157828, - 1.8483799508834453, - 0.39207804655166945, - 0.7473929615463166, - 0.27273473716279445, - 0.42533585692878567, - -0.23090405152817356, - 3.571579218026311, - -0.39615592240969827, - -0.03832121774315163, - -2.424836325455249, - 1.1062666575947218, - -0.5522529496849271, - -0.06079410601164124, - -0.5280405508818312, - -0.13868294527484562, - -0.28424709842062984, - -0.04304177578064844, - -0.052801482653846724, - -0.15420531148588265, - -0.16787722654627948, - 1.308518452326017, - 0.8814169197592583, - 0.8874423184465896, - -0.7324488811117759, - 1.2568208318483642, - 1.1316445091958878, - -0.553404328801565, - 1.5238520171998033, - -0.6832259429997894, - -1.842031838405077, - 1.1015259861531725, - -0.11951878043007562, - 0.9769215645749826, - -0.7542021627241914, - -1.2617700117470425, - 1.23187178862397, - -1.4072685633957673, - -1.5610305114373637, - -1.9255868907643525, - -2.7944722983075785, - -1.03910438326439, - -2.1694079584120365, - -0.035605484609829575, - -2.2364173503246474, - -1.0942734191759897, - 2.332061996209657, - 0.34512424061207164, - 0.05280567540772656, - -1.6207519803198573, - -0.24559766594877117, - 0.048108563136617044, - -1.605180795787059, - 0.12618068088061885, - 1.1912324570650992, - -0.34825811883938024, - -0.19723636840428496, - -2.0420964154954233, - -1.3992338686095869, - 1.0576951014282159, - -0.6615506465805062, - -0.9297116344424167, - -0.6925831159713568, - -0.05746612700083015, - -1.1584159108657917, - 0.12651650597023537, - -1.3600076771230591, - 0.7740000020757852, - -1.0570557773396025, - 1.3202683189321007, - -0.010032652757383347, - -0.8456444283952297, - 0.9114606095823158, - -1.3744968791031125, - -0.5470656450174095, - -0.00007552661061545873, - -0.12116680328820885, - -2.008585468370626, - -0.9206465426133663, - 0.1682343424234322, - -1.3198915593599103, - 1.2664292986658463, - 0.4951808887859862, - -0.5142403907110707, - -0.2202924653000638, - 1.8615641238318181, - 0.9359884508763173, - 0.38021914486617187, - -1.4155187704342762, - 1.6296113186459584, - 1.052401068873978, - -0.14840538755987095, - -0.5496980692087847, - -0.18790393877677286, - -1.2019366808669738, - -0.47078555770734065, - 0.7631605141545158, - -1.807621277242572, - -0.3140743742422747, - 0.11375597287983731, - 0.10356803732332855, - -1.1789369540334256, - -1.1821528913270605, - 1.0891653824583838, - -1.224529092816291, - 1.0086509563084367, - -0.48236531510849157, - 1.0797963503009356, - -0.42107850540501407, - -1.166471320616305, - 0.856554856393462, - -0.01739122223019718, - 1.4485765853244514, - 0.892200085137838, - -0.22942662894379623, - -0.4496676016629738, - 0.02337234328724855, - 0.19021001785918956, - -0.8817485267318087, - 0.8419395730245767, - -0.39736349181039743, - -0.4230277451533124, - -0.5406883373725029, - 0.23101726734337139, - -0.6920526017208553, - 0.13497010999029418, - 2.766603071101871, - -0.053609460071342124, - -0.4340047382986483, - -1.667689228147901, - 0.05022192476406931, - -1.1092309432496061, - -0.37555811897157276, - 0.15160759364714313, - -1.7309894498221519, - 0.1574627523984585, - 0.3045151754260446, - -1.2971000196666516, - -0.39230919212908744, - -1.8306663621778045, - 1.5755009358424055, - 0.33056327654884465, - -0.17958850097910234, - -0.16343583065616263, - 1.1314436080657682, - -0.09416555192061088, - 0.3308167712757532, - 1.518629560365495, - -0.3461671480021981, - -1.0926353245067322, - -0.824500574753621, - 1.4286638344392986, - 0.09142830851405706, - -0.5023312882696742, - 0.9736443797991589, - 0.9979573856771604, - -0.4756477679064388, - -0.9719368370854505, - -1.57052860106121, - -1.793888920926237, - -0.2649864518459969, - -0.893195947036793, - 1.8584744098061854, - 0.0585377546950242, - -1.9421495432511602, - 1.4187292755100624, - 0.1617103094175957, - 0.7049794803731054, - 0.6820347768334102, - 0.29655656728653923, - 0.5233426304345435, - 0.23876067172970541, - -1.106385905965437, - 0.36673219814247404, - 1.0239055049925403, - -0.21005641264581787, - 0.5513022180697554, - 0.41958914519806184, - 1.8156520639191072, - -0.25275030069976034, - -0.2920041627702413, - -0.11693174014674963, - -0.10239107510368999, - -2.272617710954302, - -0.6426098414665713, - 0.29988506654577324, - -0.008256514667853591, - -0.7993391541971328, - -0.6647792521753807, - -0.355613128296959, - -0.8015717808024205, - -0.5130506104434005, - -0.5393901194785343, - 0.8953708466071769, - 1.0163912685410768, - 0.9335850943946729, - 0.4267017991752182, - -0.7083224844135482, - 0.9598304499937307, - -0.31425058651942994, - 0.02305220825947024, - 1.3382205319305884, - 0.08399285613164036, - 0.2472840302376188, - -1.4127794859965894, - 0.4870092937668535, - -0.9800066473024811, - 1.011939656367902, - -0.18459917717285057, - -2.2361688420171104, - -0.35802010256334205, - -0.22803453828591722, - 0.48547522607809224, - 0.6705123906471673, - -0.32776424472118837, - 1.0128681948538745, - -3.167055328652906, - -0.7139889980252292, - -1.1123642708371866, - -1.2541835105849213, - 0.9597063713475107, - 0.8291703990248491, - -0.7757700204102219, - 1.17805700395996, - 0.10146689245241805, - -0.4216841007751528, - -0.6929227963724369, - -0.7782717264630926, - 0.4727748574495346, - 0.6501549009670022, - 0.23850121218790918, - -2.050217677383097, - 0.2963586560529044, - 0.5653965640388058, - -0.6692056054644492, - 0.04325054289835325, - -1.8638842993007476, - -1.229969061679773, - -0.3242353482405271, - -0.3097511440161062, - 0.3516793717496016, - -1.18692538652941, - -0.34120606462067304, - -0.48977978041340897, - 0.5280104739792081, - 1.4210427683683313, - 1.720920319810075, - -1.5684400468313575, - -0.0480141917504573, - -1.1125293102447653, - -0.0647449514862398, - 0.422919279615949, - 0.08149089870341171, - -0.04901169879446085, - 1.4830391747653016, - 0.7209893917039087, - -0.27265446153778367, - 0.024211360895293473, - 0.8708978067893992, - 0.6097905060392789, - -0.4250761037008216, - -1.7752428411035694, - -1.1846574927726896, - 0.14597922501351515, - -1.7865268526790055, - -0.15239449801642782, - -0.45356917618752884, - 0.9992528030472034, - -1.3180438234754557, - -1.9317689789009886, - -0.41964074161010806, - 0.6347631315935225, - 1.0699185989273519, - -0.9093270165599429, - 0.47026374759618605, - -1.1114304477623544 + 0.47143516373249306, + -1.1909756947064645, + 1.4327069684260973, + -0.3126518960917129, + -0.7205887333650116, + 0.8871629403077386, + 0.8595884137174165, + -0.6365235044173491, + 0.015696372114428918, + -2.2426849541854055, + 1.150035724719818, + 0.9919460223426778, + 0.9533241281124304, + -2.0212548201949705, + -0.334077365808097, + 0.002118364683486495, + 0.405453411570191, + 0.2890919409800353, + 1.3211581921293856, + -1.5469055532292402, + -0.2026463246291819, + -0.6559693441389339, + 0.19342137647035826, + 0.5534389109567419, + 1.3181515541801367, + -0.4693052847058996, + 0.6755540851223808, + -1.8170272265901968, + -0.1831085401789987, + 1.0589691875711504, + -0.3978402281999914, + 0.3374376536139724, + 1.0475785728927218, + 1.0459382556276653, + 0.8637172916848387, + -0.12209157484767426, + 0.12471295376821585, + -0.32279480560829565, + 0.8416747129961416, + 2.390960515463033, + 0.07619958783723642, + -0.5664459304649568, + 0.036141936684072715, + -2.0749776006900293, + 0.24779219974854666, + -0.8971567844396987, + -0.1367948332613474, + 0.018289191349219306, + 0.7554139823981354, + 0.2152685809694434, + 0.841008794931391, + -1.4458100770443063, + -1.4019732815008439, + -0.10091819994891389, + -0.5482424491868549, + -0.14461950836938436, + 0.35402033219923795, + -0.03551302527814021, + 0.5657383060625951, + 1.5456588046255575, + -0.9742363337673154, + -0.07034487710410242, + 0.30796885521603423, + -0.20849876310587975, + 1.0338007325554992, + -2.4004536338122957, + 2.0306036208387996, + -1.1426312890227635, + 0.21188338677770105, + 0.7047206243171088, + -0.785435211763197, + 0.4620597371620487, + 0.7042282254621743, + 0.5235079678938094, + -0.9262543135302259, + 2.0078429507780005, + 0.2269625418708953, + -1.1526591092509524, + 0.6319794458091295, + 0.0395126866933667, + 0.46439232505089606, + -3.5635166606247353, + 1.3211056154702059, + 0.15263055220453448, + 0.16452954293239852, + -0.4300956908764876, + 0.7673687357524115, + 0.9849198419098969, + 0.270835848826804, + 1.3919861934464073, + 0.07984231300862901, + -0.3999645806965225, + -1.0278505586819058, + -0.5847182112607883, + 0.8165939265478418, + -0.08194705182666534, + -0.3447660142546443, + 0.5282881452973941, + -1.0689887834801322, + -0.5118813091268151, + 0.2912053597430635, + 0.5665336963535724, + 0.503591759111203, + 0.2852956847818571, + 0.48428811274975, + 1.3634815124261457, + -0.781105283625392, + -0.4680176663374855, + 1.2245743551261743, + -1.2811082751440426, + 0.8754755042743244, + -1.710715324029529, + -0.4507651031362744, + 0.7491638059190651, + -0.20393286610125122, + -0.18217541166573417, + 0.6806560043814565, + -1.8184989903916142, + 0.047071635325711084, + 0.3948442093272043, + -0.24843205438084665, + -0.6177066479970167, + -0.682883996449334, + 0.4362576043409168, + -1.703012774113238, + 0.3937105991386652, + -0.47932400357549726, + -0.2990162929660804, + 0.6941032876787643, + 0.6786296737098565, + 0.2395559950038969, + 0.15122662929444983, + 0.8161272333600409, + 1.8935344675962007, + 0.6396327631937027, + -0.9620288319051914, + -2.0852656421201097, + 1.9302467674655757, + -1.7353488744703927, + 1.2103837049045143, + 0.7974354194278735, + -0.379810784047379, + 0.7025622240016004, + -0.850346271655115, + 1.1768124501049289, + -0.524336102632456, + 0.7009077309156047, + 0.9841880707224154, + -0.12172840866682022, + 2.365768628840039, + 0.4961429262475947, + 0.7965948666649523, + -0.4740208901256851, + -0.05669571649092953, + 1.3577972581070583, + -0.8048337241667037, + -2.12362024909293, + -0.33350244043324745, + -0.886719352485378, + 0.33419793089900884, + 0.5367838249027502, + -0.7438303679362013, + -0.3202038822408791, + -0.9161988612665409, + -0.8596682999817407, + 0.22598548673375538, + 0.6287758265382943, + 0.18649434877307466, + 0.9524783451091219, + 0.9881375825933089, + -0.07260831396267549, + -0.5506029235634193, + -0.9381526140931042, + -1.2390715625947926, + 0.13968327403129469, + -0.22301898188247601, + 2.123691888593553, + 0.12227343425882888, + -1.4094317399227687, + 1.4229859527722433, + -2.14785503764361, + -1.347532513457755, + 0.3635645568066484, + -0.014752111804594866, + 1.2723950785462097, + -1.4495666088633876, + -1.1955237416669708, + -0.591862973147249, + -0.4145048435321895, + -1.4257947334380214, + 0.2093947875359238, + -0.5928860038389254, + -1.4731164134656474, + -0.896580615301871, + 1.1043515698603126, + -0.43154951551604476, + -0.16113690824405888, + 0.8891574940728737, + 0.2883768477152654, + -1.0515389375700381, + -0.31956139984023146, + -0.6199930877212022, + 0.156998376446689, + -0.5714553510797893, + 1.0576331832046142, + -0.7914888094778855, + -0.5246273459284702, + 0.07187803937036874, + 1.9107594272771828, + 0.7879646831376144, + 0.5130821444669919, + -0.5464162802735939, + 1.0439446554953231, + 2.10778515279337, + 1.4599274815852936, + 1.0154054578125205, + 0.7491846009241975, + -0.6755214784366882, + 0.4402663916687296, + 0.6889718563269422, + -0.2766461272769873, + 1.92453332001529, + 0.4112040207072239, + 0.8907649561731171, + 0.22636322725170696, + -2.0786178937021753, + -0.387886231967176, + -0.08710696996399898, + 1.126385822137273, + 0.2471117161577363, + 0.1211718053315409, + 0.2989839355420466, + -0.1570991368466517, + -0.7404690227807179, + -1.2476529230512328, + 0.24945521515244942, + 0.5810733206206065, + 2.7638440798495663, + 0.3993254369795763, + 0.6684881692058056, + -0.2757737286563052, + 0.5004829001543722, + 0.8630648605906245, + -1.0516278594652122, + -1.392054077493087, + 1.1539222406122254, + 1.181944105999232, + 0.39137144842193117, + -0.8810470922015694, + 0.2950799597862399, + 1.8638010621325043, + -1.7122739244712557, + -1.4070845457432255, + 0.12678118632697175, + 0.0037598477954959237, + -1.2689942560733918, + -0.8388429214202899, + 0.5539212514397202, + -0.5040427180819637, + -0.7884401845178787, + 1.5294006744839312, + 0.20545485392597962, + 0.3130131289808603, + 0.8665207121682993, + 0.2990705295943764, + 1.076540643846122, + 0.3631773475444523, + 1.8936798255518426, + -0.48575274428280835, + 0.3876744557775985, + 0.023557610392553562, + -0.6602295020442799, + -0.31868492957801425, + -0.7226621936743727, + 0.17738671938459905, + 0.9835127293431644, + 0.0235045858853947, + 0.553776977863366, + 0.3537692939966397, + -0.27559363376768226, + -0.4904835914786814, + -0.37443660019278063, + -2.397503976138816, + 1.5410299832779386, + 0.06308453895730506, + -0.28444068392629274, + -1.2656005376012107, + 1.7879796324557498, + -0.35450870806937423, + -0.10476112306710425, + 0.3862536891890525, + 0.8227753737653734, + -0.6837898224310078, + 1.0572033312141293, + 0.03187997356903155, + 1.3431824575289413, + -0.0505396895487724, + -0.3640099563071088, + -1.5533423394310608, + -0.3192978018201611, + 0.5270464509549642, + 0.7111123993648228, + -0.21754548049047615, + 2.6377912107038637, + -1.7421376305949654, + -0.09443480774144415, + 1.4311837522545638, + 0.5927584465506688, + 0.170296895326288, + -1.7517059477920245, + 0.2885813223432078, + -0.5425795169067793, + 0.17160238198599498, + 0.9828178292431048, + -0.025348902062768783, + -0.28755244928410806, + 0.9244428673433661, + -0.06124629986631457, + -0.7310333425852061, + -1.0227737046951428, + 0.9959929702457525, + 0.955557932627455, + 0.7138407711950433, + 0.13337096219412198, + -0.8070383084728134, + -0.3420107818792151, + 1.9087796580911864, + 0.15592326145312668, + 0.7596525320929627, + -0.42300622841924834, + 0.18167274532368163, + 0.27449257074640343, + 0.06791235738075722, + -0.036982814875919444, + -0.1708010306976224, + 0.26697323153986774, + 1.3829972488529256, + -0.022460873511426515, + 0.13139536722591508, + 0.4344371851022324, + 0.2645340683169988, + 0.5656583442738247, + 0.5850842795017246, + -0.17429815275208735, + -1.0713686714550896, + -0.04846050255238326, + -0.8452903895662435, + 0.4151005583815808, + 0.4255305913978583, + -0.9807243575005858, + -0.42782610997202053, + 1.498569955138537, + -0.36015657086902797, + -0.45824038933749284, + -1.3379684019509706, + -0.04138653961487197, + 0.8210479561079149, + 2.0978007807716916, + 1.2829332468745234, + 0.2703379257393719, + 1.0031403620449315, + 1.0786735513204067, + 0.34075268512976414, + -0.1980749596235683, + 2.4814584228756535, + 1.3852548761892063, + -1.154600965389669, + -1.2680690503770815, + 0.6078621862094797, + -1.080096483157591, + -0.6112816747957622, + 0.10203511229233127, + -1.4365739367721186, + 0.21071705250565526, + -0.8969041706975123, + -1.7243930789918331, + 1.7923391966469424, + -1.3127127065922315, + 0.555877426385625, + -0.6818813054911307, + 1.5727427457558043, + -0.10465157484776595, + 1.850397801609901, + -0.3333504267494006, + 0.1934642338198724, + -0.49674493786490903, + 1.0327232157358608, + -1.7398037975225593, + -0.7558621756229088, + -0.8811117326479355, + 0.3938922629126754, + -0.9500255347962833, + 0.33250662216224913, + 0.5289444088560467, + -1.120520993992725, + 0.04826420692565666, + 0.06198845052177757, + -1.0275156732178674, + -0.23833536546732603, + 1.9321781695813465, + -0.22663229367683593, + -0.923830720176923, + 0.35583899747282033, + -1.2700634783862885, + -0.19547241269675866, + -0.4634193992174632, + 0.9894148472858507, + 1.388647381631717, + 1.0877137365241412, + 0.43880126303439065, + -0.961602240881236, + 1.2456099371478462, + 0.5029255176706321, + -0.6313987783785193, + -0.70425204708826, + -0.24048253675834233, + 0.5855993109298576, + 0.35280056010840655, + -1.8155576924320858, + -0.9101238456951419, + -0.7485279533390595, + -0.10812492648026306, + 0.27477883705216777, + 0.23734976450942513, + -0.2598436943633885, + -0.31244217715639994, + 0.44850974251240683, + -0.05953196470440051, + -0.47001481339778667, + 0.3495667716276656, + -1.0274688471736129, + -0.3066384838696108, + 1.4061761394942678, + -1.2496967727943529, + -1.5601488888852328, + 1.5573976506490226, + -0.5933563949764882, + -0.17028851232950049, + 1.6726268084547062, + -0.5407998076498752, + -0.6841283287665846, + 0.599962085981993, + -0.2171991251446381, + 0.3315265183521529, + -0.38336458015082797, + -0.781816088073111, + 0.26623740682783636, + 0.2794280245327373, + -1.21962569517377, + -0.7239489167555044, + -1.7347783075439347, + 0.27166078437402447, + 0.09911201694909029, + -0.3630899064372582, + -0.5882267282885189, + 0.025941713524132055, + -0.5723023507451587, + 1.1055869627971613, + -1.2080155928296474, + -1.3397010399749156, + 2.0751854067317823, + -1.4894097013310104, + -1.1509530656259641, + 0.4190598246739658, + 0.4134052764244962, + 0.7175769325882829, + 0.26172483967990484, + -0.2427712711003623, + -0.5012681327516669, + -0.6981289789688551, + 1.384580160839074, + -0.2864254139357557, + 0.5000695850282261, + 1.951103236540061, + -0.2783674615930086, + 0.03678625863071046, + 0.44585250626100126, + -1.4103507576806693, + 0.4500013006954749, + 0.5154795307938983, + -1.1540839403826029, + -1.3801733950718382, + -0.4958330052131627, + -0.41327907241887124, + -1.7193166679275491, + -0.029560902753084674, + -0.7660398835228289, + 0.09988207650262723, + -0.7130239566297442, + -2.226117620977587, + 0.7257141531219552, + 0.9169762830692352, + -0.5638902404112554, + -1.5221795568231706, + -0.014278788627562308, + -0.24672080681888428, + -0.1653294765172792, + 0.11911398259834126, + -2.0749804861700474, + -1.002755217016917, + 0.523546018063799, + 0.8215173089989222, + -0.14874184933286258, + -0.045370411959291965, + -0.704492925529761, + 1.7303155195063402, + 0.22892725550405343, + 1.0927410572908394, + -0.35357152666142744, + -0.03065886493678412, + -0.2001718506206763, + -0.48131023935727413, + 1.7114259970115762, + 1.4353870862526215, + -1.167520333241006, + 0.040843424766001724, + 0.36201819567044535, + 0.5725921910432455, + 1.1044602367331493, + -0.4256720265205931, + 0.75568884284869, + 0.010281457155327522, + 0.22458577076489658, + -1.1347082265682895, + -0.9515209412315562, + -0.12713045607576656, + 0.028944498401123394, + 2.1040773666293053, + 1.5675141434637165, + -0.6242296327908734, + -0.40064420205997625, + -1.1370615382091245, + -0.9031590369968799, + -1.0972780624190317, + -0.07130920963109931, + -1.3193390866508534, + -0.5600929458770713, + 0.16495455703336395, + -0.6315857879244524, + -0.8670697795627686, + -1.0025626707106647, + 1.2073482032456735, + 1.7119870129859922, + -0.6245894793017125, + -0.21214580398595856, + -1.1935641822743448, + 0.6575858924331783, + 0.20007988155239426, + 1.091259859221752, + -0.48902205827370954, + 1.368220262225958, + 0.8916251175268084, + 0.8375662124501372, + 0.5141447133892467, + -0.050049692409833806, + 0.7439528461648938, + -1.7240502035381267, + 0.0899015732727284, + 0.3227395618852, + -0.37714942561155657, + -0.0002208983015993693, + 1.0501136937792215, + -0.1686991122175147, + 0.7978764964211627, + 0.5525243131579977, + -1.153093261804181, + 1.6415521890288047, + -1.4389778344742428, + 2.0277395138175196, + -1.365317321173664, + 0.07214886239228502, + 0.6131516784246442, + 1.4891664262942452, + 0.22129657503462105, + -1.530892108386614, + 0.801888214216484, + -0.42446671286333926, + 1.118854972135864, + 1.569548064582847, + 1.4277317710676356, + -1.3718378731166938, + -0.26641789264219634, + 0.7792145652142417, + -0.10281429468501402, + -0.5864646217583874, + 0.24025265459504974, + -0.9980556587715391, + 0.1911699128232047, + -0.9528030215809088, + 1.470996579505006, + 0.7189049215428981, + -0.1665595772769085, + 0.7646112966882201, + -1.1894434708478612, + -0.5348572637202641, + -0.02159784664665048, + -1.1051915914797859, + -1.0559463385249355, + 1.0213556589900556, + 1.7096560949798731, + 0.029561951937617355, + 0.12384201643823771, + 0.28943005670297534, + -0.3014922439465465, + 0.4144350112798109, + 0.9498579011377821, + 0.5218485421095229, + -1.9692628740518392, + 0.502810027757784, + -0.35442243933376033, + -0.44699048181139484, + -1.1169783859357703, + -0.7882663825810968, + 1.0557521639658634, + -1.3045412108969867, + 0.5397352373427955, + 0.3469912503733692, + 0.8741928933305493, + -1.5751793626207562, + -0.15998365617495094, + -0.643333236166963, + -0.7153708866312951, + 1.699458930621629, + 1.2828372246866984, + -0.45255766631820826, + 0.3938001271158281, + 0.4257406105857961, + -0.13004743219159512, + -0.3937331661815619, + -0.6410597741081536, + 0.17196425471545257, + -0.8401490192933458, + 0.8649983085249567, + -0.2048613320814621, + -0.1070733343325384, + -0.24210668506471908, + -0.9024827749371497, + 0.7978708863196311, + -0.289095787657148, + 0.6769776126657561, + -0.34318403393053737, + 0.4872101346078452, + 0.765665358162811, + -2.200564435744119, + -2.5960623967791756, + 0.4756748381165133, + -1.594885645232233, + -1.1100767316660405, + -0.9984064955184256, + -2.275806602546662, + 1.5528072078665365, + -1.149298768674316, + 0.18853062859763994, + 0.9889637830869817, + -1.5861363032929552, + -0.4723808755437636, + -0.18884634787574245, + 0.21112708032840474, + 1.6117222924558978, + 0.5667304418132302, + -0.6411772534653856, + 1.5387739411600052, + 0.3096639858949537, + -0.44884868035202796, + 1.769100570312561, + 0.2682004879637708, + -1.4622250619252337, + 1.850810168972202, + 1.700769505670963, + 0.3533910559483136, + 0.3364890211021921, + 1.0571054344422781, + 1.1986787224676672, + -2.594654269661883, + -0.7147453741565917, + 0.8043460416389878, + 1.1916553458718568, + -0.12736538411633605, + -1.0749752659886933, + 1.4482691251839777, + -0.27835427971563803, + -1.0368186639409402, + 0.20145146638225445, + 0.5017557989907293, + 1.6133349220114617, + -1.8977106282505025, + 1.2990825737762788, + 0.5531844259723022, + -0.20036229600666147, + 0.5456699950930499, + 0.26228661897316985, + 0.21907020968038537, + 0.9323529322684813, + 1.7430524278808484, + -0.12470367976984963, + 0.9540316671351478, + 0.7120509492248905, + -0.5793366572156923, + -0.7618194555160586, + 1.6615021287437646, + 2.547691702457717, + -0.038912324029113265, + -0.356409207238252, + -1.8625686534341959, + 2.6519991181342113, + -0.1362303703563351, + 0.10374933997096626, + 0.11543222568465579, + 0.2586704644560386, + 1.4877433319614572, + 1.4543434763906329, + 0.7043082981680985, + 1.4663513758566715, + 0.3536221825367628, + -1.0855234635679416, + 0.36320976100296887, + -1.813277132405328, + -0.19791075971583402, + 0.4328745920492785, + -0.5405657877076904, + 0.29563065498089497, + 2.0798442368337016, + -1.8424329199610465, + -0.5111660166205718, + -0.58093512839474, + 1.0627364666653065, + 0.01805510965628009, + 0.02279839968937127, + -1.6797914849149362, + 0.8124230006825046, + -0.625888706466102, + -1.2502708184687266, + 0.615135458353951, + -0.12139461101379515, + -1.2808952713375565, + 0.3246098059252541, + 0.6705693906174532, + 0.1491613231433755, + 0.3270638038828972, + -0.35296169014182177, + -0.9055276404436707, + 1.6761854255764614, + 0.6809960077267706, + -0.7037176105934078, + 0.1020797487098907, + 1.1950561396844794, + -0.2779593857816089, + -0.052165291629840356, + 0.353683601249814, + -0.40831076211055395, + -1.8104296677951879, + -0.9033080622801077, + 1.0540450911893136, + -0.9808768767289832, + 0.35207889140437837, + 0.6659818403106037, + 1.0655015019548215, + -0.22843361310270258, + 0.3644839042458271, + -1.514846657215433, + -0.07526128723722576, + -0.29705808175737614, + -0.7274143817732619, + -0.24587534038557923, + -0.12794894211963254, + -0.3693106199094617, + -2.6230042844775308, + 2.1158507289245674, + 0.6855615854791441, + -0.15744398471175033, + 1.3812877674130073, + 0.06842655874188228, + 0.31253629248338644, + 0.45425318515036217, + -0.7884718753018505, + -0.06584033431115952, + -1.418479846109691, + -0.1397533402109211, + -0.5553548562130987, + -0.5019177788520144, + 0.6931185215037656, + -0.2453604968501647, + -1.2694318590858544, + -0.2623238551840711, + 2.337598482195056, + -0.7817174376760302, + 0.0800997455382507, + -1.3394111207653079, + 0.4134509638251659, + 0.20445196734865428, + 0.47845329452970037, + 0.02958097097523698, + -0.1824419843989386, + 0.01746667513481011, + 2.054289530002812, + -2.5318833133900305, + 0.4238146840382535, + -0.955683515590636, + -0.1336742103217792, + -1.077403324709461, + 1.2499025106911574, + 0.5711487534631029, + 0.2970484291574556, + 0.8718652175016266, + -0.16371119657423003, + 0.6895231987879346, + 1.9845899031898866, + -0.11828188509401265, + 0.9551299189232728, + -1.1805528861977703, + 1.4704739392964385, + -0.021557883623027695, + 0.7108614710694785, + -0.8118350520747238, + -2.251213065289845, + -1.12610018599184, + -0.3078667459168953, + -0.9618845356398223, + 0.6708259593192185, + 0.06338342659156378, + -0.6567958804642327, + -0.2883631824527201, + -0.21979349574451643, + 0.20024796080692478, + -0.8455002410306656, + 2.6429226847057117, + -0.3337447706635678, + -0.14550836017250823, + 0.8933687076816909, + 1.288554738453981, + 0.33119818801148354, + -0.07536789810631976, + -0.061147655522904056, + 1.8560568664485682, + -0.7530412824561289, + -0.34022586976460656, + -0.5509960393063006, + -0.6040373262522097, + 2.1225899596034625, + 0.020305520730884315, + -0.866260054447336, + -0.35588838632283426, + -0.9543423107689742, + 1.591464114097166, + 0.0005873380366202194, + -0.4640317318179717, + -1.5237107863092993, + 0.15487036534807186, + -0.8406493439809086, + 0.010685782511001917, + -0.5437403904555086, + 0.6754553436625048, + -0.9733422132310651, + 0.8183481023464054, + -0.11601728545379246, + -0.6908582143577912, + 1.0389554757038926, + 0.981271848028589, + 0.6166208035641588, + -0.7874870323351537, + 0.020856736754465456, + 0.5993399050363709, + -0.3781952626733465, + -0.05546876687944298, + 1.983488054493826, + 0.07788802802787388, + 0.4045844144487453, + -0.8490095099068151, + -0.0780897990873757, + -0.5273122406197597, + -0.24268793363602895, + 1.1069498460085399, + -0.03552991507180546, + -0.9599149837120845, + -0.6289509748030468, + 0.2685148227050607, + 0.488360812855723, + 0.5868386021149908, + -0.17539274109078976, + -0.433426256842158, + 0.043672011407345696, + -2.368892931279029, + -1.5927211354658712, + -2.441670740242832, + -0.2627338282699097, + -0.822618318710863, + -0.042268338331824626, + -0.39127020083745107, + 0.23058049991323532, + 0.3285638932885436, + 0.8380485839532836, + -0.9078816127611445, + -0.04174551326063229, + -1.9943356434051311, + 0.10816425581928157, + -0.5892856890062176, + -0.9849802336244897, + -1.0361773997113255, + 2.039686037158919, + -0.6587570839399224, + -0.6079835611701924, + 0.866452901845807, + -0.7414694894279271, + -1.470561473204019, + 0.7084741210544878, + -0.12851239742110507, + -0.16063982952151423, + 1.0771702093251387, + -0.6133974021549207, + -0.711763631312299, + 0.06543853933530658, + -0.42147083331107177, + -0.341216883674434, + 1.3120365067494253, + -1.8229324878347437, + 0.21537592656166116, + -0.6707133283158744, + 0.2597174736789681, + 0.46954942686078716, + 0.4922331098465613, + 0.51217052768379, + -1.1420202563413573, + -0.11489386424404562, + 1.265974917971162, + -0.9292300251800608, + 0.19091532051019103, + 1.001555629245316, + -0.09742149039769883, + -2.119596982319414, + -2.1969217399884924, + 1.122267866057918, + 2.0118420191461803, + 0.30201074703431263, + -0.48966164024190245, + -0.5135490947661565, + -1.0739210599237325, + 2.2035145562945293, + -0.29882845731838414, + 1.3460983256762604, + 0.626820481067724, + -0.06581075463628752, + -1.8438652086995353, + 0.10997254269648227, + 2.0065611269776644, + -0.7578505995039082, + 1.0159978401232488, + -1.59249315299401, + 0.2923665381528412, + 1.3370321440963355, + -0.24325392379441643, + -0.23102356637828622, + -0.3389292822418378, + 0.3186160154286117, + 1.3970387291415345, + -0.8798130487131584, + 0.11182047780156927, + 0.4315681264740078, + 1.6137850971757342, + -0.2973845710076038, + 1.638962314523427, + 0.13409659216509714, + 0.17203736635766856, + -1.3650171542843021, + -0.4212656827400207, + 0.8806401486464327, + -1.47256655193283, + 0.7577097291811645, + -0.6366050127557136, + -0.015838160674877966, + -0.3878147409362679, + 0.8896634154552829, + 1.1341571652425653, + 1.7316301950572073, + -0.7055198448961673, + -1.2858104335854346, + -0.6382100575533082, + 0.7007847957258879, + 0.8811405230322151, + -0.6532038099890327, + -1.31996590252498, + -0.8187126044465817, + 0.16270221119589887, + 0.6697599912207146, + -0.5740804187646116, + 0.7436871197925536, + 0.6167126196705511, + 0.9718668340412515, + -0.7119035172923535, + -0.7356927851492516, + -0.9634637827705722, + 0.45913770322630687, + 0.6562382063047018, + 0.7515034769028561, + -1.8721836112668646, + -0.5562800612192723, + 0.2721639657384405, + 0.9315457527732457, + 0.32753233118239405, + 0.7408138005017622, + -0.8019050477600198 ], "y": [ - 0.5363024686744706, - 0.8873527237590508, - 1.0886516724929238, - 0.27940091172337034, - 1.1442718339713833, - -0.47965486957278447, - -1.8748405247229316, - 0.927991537092308, - -0.0885406867287104, - 0.30235691785556895, - 0.9433300402661295, - 1.1353308428989115, - -0.25723783892701935, - 0.5984362504067553, - 0.7986688063852796, - 0.761040003775185, - -1.1364960620170166, - -1.2212865921428389, - 0.1520023387440691, - 1.458848056171571, - 0.6257282760690295, - -0.016213980503455794, - 0.5832710332195976, - 0.5291323848592775, - 0.28284124800893107, - 1.0668690195990695, - 0.6480026829396195, - 0.3534854413403812, - 0.8305632439467837, - 0.6609261633580257, - 0.8560994961652675, - -3.0075466236196426, - -0.5532222481132933, - 0.8517935637646357, - 0.8143664320321644, - 0.9731099751629264, - 0.9451907410371501, - 0.7137010668164434, - 0.7793165936465112, - 0.3243231761173728, - 0.8812612874817409, - -0.742343241199868, - 0.9298673636665948, - 0.5990431153780973, - 0.7926627883800696, - 1.201789974144738, - -1.6180856130160501, - 0.6960684884501911, - 0.5164017610010276, - -1.33233127341376, - 0.12173642437543708, - 0.7606116275076698, - -0.6481893016801497, - 0.9642914384937482, - 1.175413769865045, - 0.7838779989471885, - 0.9606152441342553, - -0.07339038074584409, - -0.5530428777120342, - 0.312798232582432, - 0.7186556384227909, - 1.1940826657436034, - 0.7925736520735187, - 0.027935564756722542, - -0.06629066133125705, - 0.6379970743399319, - 1.1548584853489254, - 0.6885099315603982, - 0.09859315611531017, - 1.5321797816818783, - 0.9646431102177672, - 0.857279237279359, - 0.38422532708086266, - 0.19677317524572402, - -1.0269543664912555, - 0.43642158263420683, - 0.9649793038354861, - 0.9915776752869726, - 0.8715239815734429, - -0.021662127759725536, - 0.012349281484165697, - 0.4771498243494885, - -0.26834775465890837, - 0.25506716140053265, - 0.5728283955681759, - 0.5503057906568198, - 1.121955374478597, - -0.10263955207383546, - -1.318625094925765, - 0.8544807528278406, - -0.008919190807803012, - 0.6041615929550175, - 1.6077493934582812, - 0.38369336947028776, - 0.9991581369896103, - 0.46542365556670195, - 0.3665435323207973, - 0.20983362634002578, - 0.8258786511773848, - 0.685395900148928, - 0.7609367435704257, - -0.6234954853004826, - 0.32653670580718996, - -1.943373314922725, - 1.2335047827708654, - 1.0530326579839726, - 0.8952428561309316, - -0.822584519800591, - 0.8472117759344941, - 0.20398844012437678, - 1.0853219510697603, - 0.3172190705925306, - 0.6021182896234034, - 0.8252140490673443, - 0.0003258589637393783, - 0.8242185094117103, - 0.18625607468999128, - 0.7672921934951482, - -0.28977339946833247, - -1.141564311200849, - 1.0049316854868025, - 0.5768752297631936, - 0.703349429226293, - 0.7639117515096281, - -0.1815995784091602, - 0.9403688414310132, - 0.7793892863414766, - 1.2563737720169805, - 1.107535212966396, - 0.909752084884051, - 0.5376509891006682, - 0.8815116039374615, - 0.79218309112788, - 0.5056122438496673, - 0.9093193402330277, - 1.1714425462944122, - 0.9521946914549684, - -0.8189207075041215, - -0.49832180772201795, - 0.6826093493601615, - 0.6700013304550847, - 1.5904627340823985, - -0.2836502658562132, - 1.0058080040775224, - 0.28802794690561884, - 0.9264367104144924, - 0.8557375569783137, - -0.31031308152015313, - 0.7170168736442495, - 1.287478847142955, - 1.1858270383481626, - 0.9674817959919899, - 0.09623684246259412, - -0.6399893677193085, - 0.6679943199846783, - 1.4330616370412406, - 0.69795007996309, - -0.04823180835468843, - 0.3646738347271281, - 0.9055584037295592, - 1.0120205162388145, - 0.8620076611406122, - 0.9738320539314165, - 0.832230458900673, - 1.0362714833397817, - 0.9805617439845804, - -0.08691783581871171, - 0.49506968831071596, - 0.9843183071624413, - 1.2901241149710723, - 0.30173094477160844, - 0.8254041961641101, - 0.42064022915468247, - 0.9764170138177564, - 0.9362745767491027, - -0.45004773469522874, - 0.8411389331598311, - 0.7097401274823918, - 1.025897890838463, - 1.1178949022297537, - 1.004165766605698, - -0.2976897930374207, - 0.051735636081060576, - 0.4375907572662552, - 0.8450446634567399, - -2.185353967016359, - 0.6662272068672854, - 0.3120809647839362, - 0.7033159631547891, - 1.1429304241824934, - 1.2770567727185154, - 0.817941703919006, - 1.2189146842339402, - 1.3592708698168696, - 0.9074462475467429, - -4.016291369288555, - 1.1001495390788278, - 1.101848808366725, - 0.6963926830821427, - 1.0807488176361226, - 0.3498961891545611, - 1.3022010240146606, - -1.431836575999732, - 0.4839791441177672, - 1.0383501251190483, - 0.7978526967257507, - 1.1158993051085608, - 0.42649244133711584, - 1.1530084666546454, - 0.42600922420358067, - 0.7273730176851885, - 0.22731252036877336, - 0.7038340271885115, - -0.21877422004854674, - 0.9702916706116866, - -0.16137269624224182, - 1.085184671180949, - 1.5534277250053117, - 0.4258866965417779, - 1.302585493144253, - 0.8683881780019287, - 1.052195305095865, - 1.080170334337069, - 0.9152274273351815, - 0.9609480852440866, - 0.2561834654006554, - 0.1899934077560097, - 0.1479944869516565, - 0.3766638352232053, - 1.140323741975826, - -0.3035049802340195, - 1.0855545305017784, - 0.968497137657681, - 1.1644724585302573, - 1.266166316370124, - 1.092177676792792, - 0.5334266022648224, - 1.0014021386955778, - 1.1271077654901251, - 1.521245755633542, - 0.9687053401079635, - 1.1077710943020496, - 1.2442221904313269, - 0.5632370708652568, - 0.6709249328550939, - 0.8375363726435996, - 0.34681260542789527, - -1.4716306067095104, - -0.22569243393141747, - 1.3848297373970642, - -0.8431530608545836, - 0.7838078318829845, - 0.9433136706011855, - -0.19153286180519302, - 0.8114993037830045, - 1.0346599153996214, - 0.9105501474034527, - 1.1259121725281114, - 0.9698248948204125, - -3.53378298506672, - 0.7448540620055049, - 1.060294754381758, - 1.1043774780025846, - 1.1603165515843816, - 0.3923084681358944, - 0.9510365515675243, - 0.3707197838493399, - 1.1444624193547148, - 0.33483170135282625, - 1.0721119249122095, - 0.6099788253155642, - -0.05863259034815016, - 0.15807757047718773, - 0.5649458780433112, - 0.09480849915092193, - 1.233777035307996, - -0.043447631363559225, - -0.14032977152137827, - 0.21382521887808803, - 0.8563398187573918, - 0.0021424975823931547, - 0.22767319271016007, - -0.16295883481941065, - 0.9399012909035306, - 1.2695558561726017, - 0.7375542711716516, - -1.07713589044298, - 0.39143274004291273, - 0.2214020596007844, - 0.5383058084686829, - -0.3075953694614313, - 0.590849314156646, - 0.4759832703776983, - 0.7809040600409849, - -1.1353217212177995, - 0.351073083835689, - -1.2044852933757504, - 1.171866320219113, - 1.0858875820493565, - 0.45077049836923155, - 0.44041046602774664, - 0.4613224268570354, - 0.919849250544593, - 0.5215276964068085, - 1.0093081908731572, - 0.21377394951668371, - 0.6227609494699164, - 0.9006183889991741, - 0.9295898082177263, - 0.9064971994954405, - 0.35271298415118446, - 0.6279419764148004, - -0.25618611187869644, - 0.5105512377173902, - -0.10785579544518142, - 1.1305028656784142, - 0.5166630818971001, - 0.4494249333380096, - 1.2934252380640774, - 0.19455421667395623, - 0.5794447547489066, - -0.21833151409924412, - 0.7538062000576371, - 0.23125243880199714, - 1.2452116179997463, - 1.2511716286717451, - -0.22155244178611255, - 0.8433574702676889, - 0.9752821544987205, - 1.053946198600927, - 1.0246437325547864, - -0.6548036013109462, - 0.9789489073840606, - 0.8359109997208609, - 0.44539236877589117, - 0.7884631144571106, - 0.7817558090137453, - 1.1530869830877672, - -0.0838319474207232, - -0.40068498334635133, - 0.8892526613346323, - 1.0881555617705025, - 0.8186869276467714, - 0.9921684769625232, - -0.46363323358091924, - 0.6912853662267576, - 0.7205610819612063, - 1.5001057778770237, - 0.46029241955491607, - -0.4256891562329326, - 0.7639899430689701, - 0.9823372436234812, - 0.5097393523417282, - 0.6404903926445646, - 0.10367683896456215, - 0.5899498042600904, - 0.17433710547799341, - -1.137805664763131, - -0.6632484741895261, - 0.2297475687839452, - 0.3909381313499942, - 0.25488431902172914, - 0.8301823378416275, - 0.4665659908375912, - 0.7646896200069939, - 1.206934718301095, - -0.34973758092520413, - 0.2576199041553322, - 0.9529580267649305, - 0.5526283249567108, - -1.3450610343167995, - 0.7239848235591746, - 0.3452352229243143, - 0.7075607013583884, - 0.5964337026886899, - 0.8242303680157272, - 0.6307903384800246, - 1.6800787788714913, - 1.0496524602174784, - 0.05656492998973928, - 1.633758817284277, - 0.43764696771792044, - 0.042700601785166103, - 0.3495396265241948, - 1.0761790587312712, - 1.3679843551945154, - 0.7035391670294149, - 0.6726079005559644, - 1.2437330662471966, - 1.104737982594294, - 0.5523559818597734, - 0.3727402813782206, - 1.0482126731423693, - 1.3202377678851267, - -0.8981411714734593, - 1.1054407393837309, - 0.9367072259387047, - 1.2966712042622426, - 1.0216345551635424, - 1.082439128876164, - -0.30625450982019586, - 0.7845714037596592, - 1.2474873368184163, - 0.21002033545113008, - 0.8042936471609443, - 0.7750476092961307, - -0.19553878267854152, - 1.034146734042174, - 0.748462956866625, - 0.8218705232653871, - 0.8377467604934896, - 1.2624046710617491, - 1.257247120059927, - 0.6522214799395775, - 0.5977049076738918, - -0.0937608807720558, - 0.9341863961578678, - 1.1227957614075192, - 1.1656949170355762, - -2.2815988168506687, - 0.2572108105481392, - -0.029107805515256047, - 1.0590925730388165, - 0.007628860948820648, - 1.0316895080102126, - 1.0499089948390727, - 1.4609102780828938, - 0.12642181031363453, - 0.6425698380648073, - 1.1428739116834232, - 0.43408399802037456, - -0.18105437013589665, - 0.7943154409759625, - 0.7996387515793495, - 0.2328493317377469, - 0.7003300674266311, - 0.9422147118484894, - -0.3734302036478043, - -0.8185699293849584, - 0.8774194576963863, - 0.19347533898690084, - 0.37668767540199255, - 0.8558404444138983, - 1.1249289863873395, - 0.3336992104034753, - 0.9379954390402254, - 0.7704192544123885, - 1.2057541562496916, - -0.3236558220278032, - 0.5521483513667498, - 1.151397273063394, - -0.04489845340595844, - -0.6801601249322538, - 0.6903159690239891, - 1.2508675008102133, - 0.5819882803139933, - 0.8683552557266765, - -0.43702981567923427, - 1.221903058054259, - 0.4129681669488863, - 0.7401258560244268, - -0.25859928245611397, - -0.5743365715418789, - 0.7032278725203795, - 0.6956458293042669, - 0.9418669793561338, - 0.3657926571088512, - 1.025126691578047, - 0.7797361525917594, - 0.7099140336839049, - 0.45103629693629, - 0.2381552520633221, - 0.6708068946453286, - 0.20275475092561446, - 0.7584938976068019, - 0.7532539319040312, - 0.9951284020593936, - 0.7136867925605397, - -1.868964656270692, - -0.11488993991362584, - 0.924839926963696, - 1.4306133455860515, - -1.9841363568540409, - -0.3085060728186195, - 0.7722551103605915, - -0.9751948800738788, - 0.5127381609364265, - 0.5949385259433391, - -1.752706915436737, - 1.1228087763697943, - -0.605573150974914, - 0.8448160024141478, - 0.8243397274049666, - 0.8437377054639805, - -0.2188254208880256, - 0.8889755217772208, - 1.0311450068726087, - 1.2106020391619807, - 1.1246680662314887, - 1.1370717354815527, - 0.5240839221927631, - 1.4708199720885573, - 1.2677681043963074, - 0.7102313074635385, - 0.5058626203697604, - 0.018056653428469502, - 0.5796970369865644, - 1.1390888100933843, - -0.7553659518582516, - 1.2938732571869869, - 1.0692032516395125, - 1.105796354489895, - -0.5141899348520997, - 1.015116789986901, - 0.7563925043304682, - 0.6161541160828667, - 0.8017110582607067, - 1.022673394997614, - 0.6913083725918017, - 1.5960537169977274, - -0.7950753383743312, - 1.0601430353269876, - 0.5287519190601301, - 0.5534087868040806, - 1.220184895050223, - 0.5576511942664057, - 0.7115056631475802, - 0.3134060999107202, - 0.8219878358191695, - 0.19882963002562049, - 1.0183603439656568, - 0.0347486723321655, - 0.9657327291073368, - 0.63181452971074, - 0.3937413973959192, - -0.4260618453275078, - -0.07063291356158263, - 1.0135509487101295, - 1.234764001426674, - 0.8846021141507725, - 0.21347103942775947, - -0.23366838771223641, - 0.588973812951596, - 0.34299528597369733, - 0.8675386081562708, - -0.6078952599259274, - -2.935478794448456, - -0.008519554156281473, - 1.2108996964642476, - 0.7020066029845506, - 0.6888612760900485, - 0.9508366667196118, - 1.0334724372572857, - -0.8966885771709192, - 0.1507818394854219, - 0.8065887798814337, - 0.5034491841362438, - 1.0882288397131177, - 0.8307520243229731, - 1.1326670173232873, - 0.5868399885408175, - 0.7037330709235428, - -0.7573259582838254, - 0.8704310888911407, - -0.879945730568793, - 0.30822707126197607, - 0.2757047787519227, - 1.0926345822645729, - 0.9983509172583984, - 0.9015900407525379, - 0.8962312836223718, - 0.9164112313323116, - 0.005916061926951599, - 0.7661252999109536, - 0.25988522337471043, - 0.2095907098135168, - 1.3111549499832993, - 0.9259261953558529, - -1.119290863307348, - 0.6919490968929529, - 0.4970841287172161, - 0.29457734292583826, - 0.4895938174285437, - 1.1439668310985804, - 0.976088909288114, - 0.8338399552530151, - 0.5316737407418675, - -0.4660297398199664, - 1.392625198016649, - 0.6618794664947849, - -2.0176716991579875, - 0.6524359495671215, - 0.8113022360060116, - -0.6166767835277627, - 0.48495425628833555, - 0.44320007533475936, - 0.9341268403455008, - 0.005213018353710908, - 1.0496728156626656, - 0.2914796896948706, - 0.28910484321138274, - 0.169218411116014, - 1.1589993798464286, - 0.31126797768504133, - 0.09030770076502925, - 1.1790030369508053, - -0.872903506470621, - -0.30913701990179265, - 1.0477610990314943, - 1.0755188199807812, - 0.9486397982301886, - -0.19869308236255534, - 0.4044496144749701, - 0.04431421881803743, - 0.8001557943631199, - 1.1233847756587565, - 0.8312755697964205, - -0.04024164853616352, - 1.2008731735878726, - 0.597750500855528, - 0.747223583109605, - 0.4687115766917813, - 1.0401359236414995, - 0.6900681848224384, - 1.4265684548831863, - 0.26988026125764897, - 0.9343899789037089, - 0.8432350743478909, - 1.4242496999096803, - -1.294118263955314, - 0.6845667622905514, - 0.6243859266791425, - -0.7345897538923873, - 1.1280773330691938, - 0.35675177141042824, - 0.7272469485945705, - 0.2692657054718286, - -0.672329506783463, - 0.6503962569289878, - 0.7341300534229349, - -0.6459912516486939, - 0.5338506850027835, - 0.885177838155613, - -0.9753916729125116, - 0.8235532297586805, - 0.5222916583032058, - 0.9006148411065915, - 0.6124733880144895, - 0.7518634756732201, - 0.6088348554589768, - 0.5165734882621935, - 0.17678987463140317, - 0.7865869105934262, - 0.7398147529995796, - 0.7991536083848452, - 1.3199663246260074, - 0.5237634164710785, - 1.006398022332294, - -1.0599579038734617, - 0.42969774839100605, - 0.3682689988197403, - 0.25662556057924846, - 0.8749425627320901, - 0.9723492963697966, - 0.66855636194376, - 0.9160909742935068, - 0.5217183385999977, - -0.3395748307254831, - -0.6648685307789481, - -0.6638771742721064, - 1.0525645353696476, - -0.21938888180335248, - -0.008906665684582649, - 0.6325872234526368, - 0.7935465148933947, - 0.7870194863719716, - -0.9147143807516489, - -0.6012007115928178, - 0.9104445077129419, - 0.9011970377352094, - 0.8811268766955624, - 1.1135678127249324, - 0.9098850060651538, - 0.8826935335245868, - 0.7392178927400987, - 1.1138828061745656, - 0.9329906718604173, - 0.29597612925820016, - 1.0717455982438135, - 0.8816988663419156, - -0.1749892226330898, - 0.6124582389026472, - 1.1964478979225457, - 0.7926719076742095, - -0.16932357966763245, - 0.5357261188728346, - 0.19084989833685562, - 0.9927215317329425, - 0.44926772185079855, - 0.8092626623211867, - 1.0812478671837633, - 0.3673238229293232, - -0.32714450080420354, - 1.1637457461265592, - 1.342748875440627, - 0.8905402559901675, - -0.2677543110606435, - 1.069655006315366, - 0.6827427845495606, - -0.3490036108023462, - 0.15399036537414373, - 0.5926050747853835, - 0.9895283560296806, - 1.1822665753009494, - 1.1024406839677776, - 0.6546258496984889, - 1.0851727869864998, - 0.22167954880752028, - 1.3079402865738903, - 0.7113559736924433, - 0.5075937515400637, - 1.0699882677740007, - 0.8422165969140263, - 0.6265836419403357, - 0.6931820106103487, - -0.5376350101681378, - 0.9723653474361851, - 0.8531116545213852, - 0.9796673650739376, - 0.5111583304659708, - 0.992298149196198, - -5.629106503039112, - 1.0436633797951416, - 0.9461770411201642, - -2.1172407811547918, - 0.1489036283875329, - 0.44549571319597003, - 0.6718347436134682, - 0.9608319558463285, - 0.995353018940027, - 0.7999019097598978, - 0.9494267976596191, - 0.5695246222804573, - 0.8057971651629294, - 0.6682998544542125, - 0.20529274004763898, - 0.7704257961287553, - 0.5983776551412605, - 0.35665897639032274, - 0.2653417182092501, - 0.6434061958892476, - 0.7878756663529338, - 0.12107833483392727, - 1.0182024721653296, - -0.19293467303557676, - 0.47870134997630553, - 1.1737428427572199, - 0.7105414809857515, - 0.9440922160062466, - 0.34479291758747693, - 0.6290897766507229, - 0.44680961888472426, - -0.3825355371162604, - -1.0475833100655485, - -3.490840286064154, - 0.5417154924715293, - -1.0522658845329569, - 0.7208487146905975, - -1.6321811023758959, - 0.2649714174862048, - -1.614902388963484, - 0.8469196588659114, - 0.543499222505186, - -0.4448381709662437, - 0.7811283781818092, - 1.3049544837841913, - -0.6999747595880081, - 1.101125123128009, - 0.8023999801360624, - 1.4170802669109488, - 0.9022198586755319, - -1.1497041776759578, - -0.18418195781870672, - 0.4499309328642589, - 0.6858184745791776, - 0.22070123358976712, - 0.9222647754912775, - 0.5379995294735114, - 0.27982288614659545, - 1.129773661639292, - -0.3736653032191568, - 0.47765008687005484, - 0.03460000229118343, - 0.15413112541085755, - 1.5057133242733935, - 1.1526123792273744, - 0.841247914727875, - 0.01127683561999282, - 0.7011693672978474, - 1.041757532257056, - 1.2205037213413799, - -0.5712708712860461, - 0.541059963824603, - 1.3438375748717508, - 0.04224096620386231, - -0.23454270305392555, - 1.0984517504751627, - 0.840097243359061, - 0.8457509237725711, - -1.1666704429131904, - 0.4027268791770613, - 0.7494452959426736, - -0.30989606425112726, - 0.10041190877408779, - 0.6170666315687523, - 1.302589964580108, - 0.8051223463026678, - 0.6415126925337331, - -0.02630159468219695, - 1.1232804422175677, - 0.5885912717798623, - -0.492721159125022, - 0.8793894636686161, - 1.0020618617301391, - 0.9802282757805414, - 0.26086465311155194, - 0.4399242017626097, - 0.587130417002796, - 0.22209609423331989, - 0.26313530335376, - 0.7440068150201566, - 0.0063236767414930894, - 0.7974003464180867, - 0.2803225000597127, - 0.972780582249519, - 1.0291659863918747, - -0.08093273586699112, - 1.4497722335075158, - 1.4007923235810278, - 1.1474313748197495, - 1.0559074643904602, - 1.296629030412328, - 0.6078581522034927, - 0.6302007381962671, - 0.681519731504169, - 0.6400414517854873, - 0.9089612641950269, - 1.021157627592788, - 1.123262092013384, - 0.6281069717203795, - -2.795602658221447, - 0.9063274221064779, - 0.2798998378535238, - -0.07375473708872882, - 0.9834487724083094, - 0.004254325786227642, - 0.5573592471120588, - 1.0198566099443291, - -0.10682319230347481, - 0.6131551331745584, - 1.3056882896049835, - 0.33651413064670965, - 0.9271435206407592, - -1.1311168914459744, - -0.06663282447296481, - 1.046227969082528, - 1.0503097746602974, - 1.0532417385417432, - 0.030514476304000837, - 0.7667487635172815, - 1.2398067343449393, - 0.23535192162592677, - 0.9235735441751771, - 0.4473989706826893, - 0.09671974863017185, - -0.15366971760127157, - 0.8719989182051741, - 0.9332856530408948, - 0.21865687681896473, - 0.6250899420640041, - 0.9880523603477727, - 0.07715647065512266, - -0.7661645599679204, - -0.43151691402220815, - 0.8009781360466715, - 0.22267376440944764, - -0.3432279127912379, - 1.7219450977917683, - -1.3437109405688088, - -0.1225787161218227, - 1.0918131163841902, - 0.7847880267510603, - 0.9969577309798003, - 0.597921220245837, - 0.6309813036151759, - 0.684812039530502, - 0.494385255005807, - 1.4383374901635295, - 0.2202545806141063, - 0.7944332287297176, - 0.5158205399116884, - 0.484876383995162, - 0.0013511030868147422, - 1.2418719218218761, - 0.9434121860209608, - 1.268993154175317, - 0.6674823654515318, - -1.6402272169843766, - 0.701303926698571, - 0.9327820721870452, - 1.030892538614922, - 0.4280188214781928, - 0.5428076513473581, - 0.9541533386668561, - 0.7611506585722303, - 0.539810853512826, - 1.1587052710490795, - 0.6203410948466335, - 0.4891998388402836, - 0.7588625209225608, - 0.986694477947065, - 0.45136667533928865, - 0.17661540354567862, - 0.654696413689935, - 0.40536039693719617, - 0.2051246893948777, - 0.6189113788022436, - 1.1977423579174111, - -0.14291833696631162, - 0.6861599787864945, - 0.8527681636769279, - 0.27431858173722823, - 0.88271834327149, - -2.0046801338320237, - 0.5969407925190049, - 1.2091819348488162, - 0.7942669592668592, - 0.8511868259023094, - 0.24425106911967104, - 0.24238298054360197, - -3.9944347799196622, - 0.5557983788181939, - 0.4140962310920713, - 0.19620707204746868, - 0.4458084070884887, - 0.7606309068032227, - 0.6280449011030935, - 0.07600757247607248, - 1.1616073394196276, - 0.9480702724042072, - 0.8425949840125553, - 0.5088445304256077, - 0.3582815046401695, - 0.9859664774652703, - 0.8095398157579687, - -0.79964125076651, - 1.2427478508193053, - 0.8093122119303999, - 1.1396749406998337, - 1.0980638080062732, - -1.0165308056478164, - 0.5185189627696962, - 1.2639031490053014, - 0.9817908714469096, - 1.3751218613110714, - 0.26669721343642294, - 1.1013253892927155, - 1.0981436807503324, - 0.913838846821524, - 0.49206685291760155, - -0.22590871045179864, - -0.40187517639672565, - 0.6093941061455698, - -0.0668769587200666, - 1.039209613289879, - 1.1296035914351348, - 0.8602287360570546, - 1.6146496611005983, - -0.4330764347132865, - 0.9941162395211656, - 1.160475010734003, - 1.3587736915760589, - 0.19815923899560417, - 0.5293830750276197, - 0.7397136732480041, - -0.6576236993755078, - 0.025733203450694964, - 1.0911154933486102, - -0.4549233322439328, - 0.7975871904550642, - 0.6904151811195871, - 0.11541281112264945, - -0.20553253839784996, - -0.5527481710603981, - 1.0555627379710835, - 0.7695750791629372, - 0.7013321576482883, - 0.23874169478377816, - 1.0132731109244906, - 0.3153881181216155 + 0.7466196239929676, + 0.3674541627572123, + -0.023391631597180496, + 1.2172038524582725, + 0.8162725665960586, + 0.5560235974818095, + 0.73312405967597, + 0.24472214395976177, + 1.5700467204699695, + -1.780347944032468, + 0.08994761840418508, + 0.6532895805010861, + 0.6829559391798075, + -0.8990102310343691, + 0.8603718700812693, + 1.1091898871809014, + 0.7835309834346851, + 1.220959323757619, + 0.2929234869021542, + -0.31877747330475303, + 0.9063532065246322, + 0.7065154654934978, + 0.7434226276928895, + 0.9356572710092532, + -0.09846520992104768, + 0.9397408654205144, + 0.8308391399150388, + -0.4776990933514824, + 0.8103026793417463, + 0.6663290255792003, + 1.138155478996723, + 1.3350908968463981, + 0.196160329233507, + 0.42371070189836413, + 0.5142103699263001, + 0.5402250774349149, + 0.9218491509907478, + 1.7331948275278748, + -0.04717370403844212, + -1.824797912023624, + 1.1610846308647669, + 1.0724156145151023, + 0.7159444498343988, + -1.262924449581658, + 0.9936550613038433, + 0.4858409378315942, + 0.81703056042792, + 0.583114459965931, + 1.2434576483002848, + 1.1139677044118366, + 0.7772495604045666, + -0.6488331461453525, + 0.5492197832788176, + 1.1147061596279384, + 0.9068177547129841, + 0.6156674181699291, + 0.8260235551521671, + 1.1216314035585686, + 0.8866663097214627, + -0.8116862208258475, + 0.0916934390473001, + 1.2104679506240623, + 1.41537438363338, + 1.184604075993108, + 0.2502952033932111, + -1.656583010787054, + -1.0616004211523646, + 0.4776611411927383, + 0.8837708514196176, + 0.4657337507448194, + 0.5664492302729459, + 1.0275505614553366, + 0.9459280227177453, + 1.0399424146272755, + 0.8447952456003769, + -1.4725357408394864, + 1.7081314327345591, + 0.4652298782855253, + 0.9848071851117401, + 0.8960380587199943, + 0.7653321119235867, + -5.680106695316049, + 0.5292232913595694, + 1.2533250217233234, + 0.7090701940491229, + 1.3249999102286125, + 0.9268593413643367, + 0.770362416707852, + 1.1062114447175215, + -0.06865180811357285, + 1.7483678891210843, + 1.396206342167277, + 0.22888850689421847, + 1.0553431611451551, + 0.7299674824819249, + 1.5806513601007932, + 0.8125706941535307, + 0.8454778335173283, + 0.18562019211153924, + 1.0081757174433044, + 0.8876107107044895, + 0.4678174700437445, + 0.9420314367179579, + 1.1001838841496578, + 1.0684291760588647, + -0.03352261955559088, + 0.3143084241802647, + 1.4584159241246637, + 0.22989452310761926, + 0.175886878743244, + 0.7807462967153294, + -0.21125521801407277, + 0.923232305462399, + 0.4446318901723939, + 1.0859868710321336, + 1.044649571842617, + 1.0144567172486205, + -0.6336996947617075, + 0.8244356059548068, + 1.0024644358110986, + 1.2444742066040104, + 1.006530898602036, + 0.8378428945000782, + 1.0069344249530978, + 0.002409096856232029, + 1.2516891295727877, + 1.0604198368932751, + 1.0681027806425476, + 1.1187878006143377, + 0.27548259920571816, + 1.2221722106834942, + 0.8664340686135295, + 0.8447606298628383, + -1.0759429136200045, + 1.203622408704389, + 0.5066511393064095, + -1.4237344178778006, + -0.820783641706444, + -0.44519520609239294, + 0.28814778733959834, + 1.1623911707692047, + 1.19486795965995, + 0.6791768956895652, + 0.8923567889219208, + 0.7252948647064561, + 0.2316616676333223, + 0.9716995843503802, + 0.29088598763266904, + 0.6490953682459466, + -1.9071241822918585, + 0.5509665174582685, + 0.5326361773517014, + 1.2628236169923905, + 1.0374737176698787, + 0.27984211388799807, + 0.562038268492139, + -1.244223245620705, + 1.1189974129232692, + 0.48536332423563455, + 0.812558945704251, + 1.2058119649559491, + 0.9587136838678543, + 1.0169676030349264, + 0.7956575832526951, + 0.2649867410670015, + 1.4869728448081716, + 1.0851235856574686, + 1.0410477482847715, + -0.13413053730062208, + 0.2850323457979278, + 1.1041952967194968, + 0.8703731297861435, + 0.6865128383298993, + 0.7384515060534058, + 0.8745910132052526, + 0.9801961852324268, + -1.3372196026898622, + 0.848649457991355, + -0.12376612939790821, + 0.03229242088357154, + -1.074079448242454, + 0.34567519618697773, + 1.1725796239764252, + 0.9760350384032893, + 0.08276993814819988, + -0.5806263223063839, + 0.5161463701660605, + 0.584304719460599, + 1.0454834117173313, + 0.1627216400502146, + 1.125061549429784, + 0.3356436116541825, + -0.15888018966298745, + 0.42047285289117653, + 0.1123896080026281, + 0.8964103700561123, + 1.0975454182530777, + 0.62173417331024, + 0.8377554044728583, + 0.2779289401604166, + 1.0517568006693931, + 0.9266006043580304, + 1.3254871797580048, + 1.1435229661384527, + -0.1181460439931683, + 0.5666091951562446, + 1.0869130338742077, + 0.9036567321575841, + -0.7945393440283395, + 0.9785959402871571, + 0.8446970406339753, + 0.7064303578676414, + 0.2960895590542112, + -0.9984993227458432, + 0.22254309441209807, + 0.3048644077468854, + 0.775415475359795, + 0.34566279245967224, + 1.008474075200239, + 0.6842148532283758, + 0.89432204181443, + -0.9748028612119368, + 0.7736739466522344, + 0.24214814842054544, + 1.0503196453808843, + -1.3867321751239698, + 0.6953386819958086, + 0.9367600093332686, + 0.3488927617485338, + 1.2546813598534703, + 1.347358806198681, + 1.3324479079622193, + 1.349117080542369, + 1.0698634084257366, + 0.6041392925600135, + 1.5348875840679699, + 0.10720806230977908, + -3.057530235554813, + 0.8932610797452627, + 0.8624698359806784, + 1.31475280011174, + 0.5967249081597903, + 0.7789981073143739, + 0.5872096659896244, + 0.31561073457817024, + 0.43563119485654944, + 0.5640088112892698, + 0.8894251661793642, + 0.5950580640624654, + 1.1406726339525264, + -0.9759278477643247, + -0.6014749511402573, + -0.41421520742559026, + 1.6771769213164225, + 1.2594374619420963, + 0.6539287305683448, + -0.14773219140583527, + 0.7574142489773337, + 1.0513418030731958, + 0.36359026294787, + -0.1828782057133731, + 0.8372007620155084, + 0.9425051968670588, + 0.5205876025521379, + 1.1656679492073048, + 0.24770268687242414, + 0.9599661053186033, + -1.6866201336819966, + 0.2448943048665866, + 1.100541647678872, + 0.734537863219249, + 0.5786362352212261, + 0.9933762773179691, + 1.0084495294827445, + 1.3094297274693096, + 0.4815418914507701, + 1.0980291416997652, + 0.31575078535435663, + 0.9485282136497757, + 0.9992764668736065, + 0.6153020454531464, + 1.124124703686389, + -2.0319340624983595, + -0.6664962737532907, + 1.2580545597716748, + 1.0363578475605895, + 0.29231191105181864, + -0.7164383636241201, + 1.158174573880597, + 0.9701872699670524, + 0.8130765752641089, + 0.7650449834383721, + 0.25515693047514487, + 0.5502192392122272, + 0.9159385696803586, + -0.2231384661751462, + 1.320327023134503, + 0.8607631084264407, + -0.10869572505558067, + 0.5192409439841477, + 1.0877039127506227, + 0.7241791482978286, + 0.983753353274271, + -2.4491689222815025, + -0.5494173641478515, + 1.1380010582188511, + -0.2822404141812229, + 0.8497576029516201, + 0.28452404434960826, + -0.531940677928787, + 0.5842716429981081, + 0.9874947839024522, + 0.904809952729229, + 0.3121441260623552, + 1.3215473002604354, + 1.086799393763811, + 0.6650273737788623, + 0.4303474431335601, + 1.016314439525379, + 0.25892558311841185, + 0.6925905179184375, + 0.7779624521377506, + 0.807394962371724, + 1.187123381820177, + 0.7705801139281707, + 0.5668427642805653, + -0.32621698855167125, + 1.0272898258991408, + 1.223874572494271, + 1.1629215306141916, + 1.092178416330853, + 1.0823905403654193, + 1.1274690826678548, + 0.9286335067410039, + 0.7378907989212902, + 0.8292360912823269, + 0.2838982234082117, + 0.6185594887982608, + 0.6961088942097999, + 0.6595623683014566, + 1.0672353335035254, + 1.2440940753167578, + 0.79790249213357, + 0.9868658865558162, + 0.13731233249794172, + 1.1631258295506228, + 0.5491137138131315, + 1.2003344037866253, + 0.7050234949530617, + 0.7070643307603088, + 0.5408882951752991, + -0.25473703551972715, + 0.8718808363591878, + 0.6332916367013381, + -0.028324676465634413, + 1.2448301189942033, + 0.7896650689024654, + -1.3325256723295684, + 0.03427975551809048, + 1.0132945793425918, + 0.7406251566296547, + 0.8055528478006115, + 0.9829037022370208, + 1.072582799520704, + -2.2262969762889435, + -0.002234034975419519, + 0.4544799744448893, + 0.21407478390590629, + 0.7539126006794707, + -0.07682645581016789, + 0.7165491648924673, + 1.1293767425969852, + -0.13565082660919447, + 0.9809433304226793, + 0.6174806755553994, + -0.18596542639506097, + -1.1450102060861846, + 0.21946926088627983, + 0.11769218233539025, + 1.1140195611951267, + 0.156829189200979, + 0.8638548753219488, + -0.5076307331279614, + 1.0569606828984057, + 1.202213701429181, + 0.5937806693105276, + 0.501199496768719, + -0.6059541775965465, + 0.130882878271797, + 0.19220062193681275, + 1.1325131640327992, + 0.0414761901416405, + 1.3053043476988724, + 0.9530549370710424, + 0.9885031255269816, + 1.0454823932886028, + 1.0281971783192905, + 0.8176598228275609, + 1.418277212655708, + -1.1588738212757714, + 0.2882325989754282, + 1.1730310205544838, + 1.6817215198384439, + -0.18300622579711412, + 0.7968617828147799, + 0.8877420873427165, + 0.01981904430214243, + -0.06494948940197176, + 0.433968581575672, + 0.8637928702498332, + 0.9547090760345132, + 0.20722542443904857, + 0.5935731169244276, + 0.49026824210127273, + 1.122416742104832, + 0.9373145827632205, + 0.7407473099274123, + 1.0659859796073547, + -0.8107539743908267, + 0.1437715486274289, + 0.5600612140164987, + 1.3985017243066211, + 0.6191468948037087, + 1.047499079144675, + 1.2420489137952773, + 1.3879372785221378, + 0.6912268525478238, + 0.7874567711692135, + 0.4030690812076303, + 1.1789793640442827, + 0.46407913937219547, + 0.7731292454645371, + -0.20393415653476765, + 0.40678192660420187, + -0.08452462652788051, + -0.07754001564664925, + 0.6720031867637988, + 0.743079730460023, + -0.484449407741373, + 0.7688497706958819, + 1.0473813327369967, + 1.0057876046638259, + 0.8486811747163214, + 0.7283537648046503, + 0.6442655710593934, + 0.5948259624902157, + 0.6581642669079171, + 1.011231394448389, + 0.7055579510375249, + 0.9313108808710848, + -0.6742303975445143, + 0.7367333100339408, + 0.6402789959557857, + 1.146609796531028, + 1.205857788515331, + 1.06017477038157, + 0.8785461392095179, + 0.4308107384258837, + 0.46728002541848035, + -0.1300236453453545, + -1.0946911764483045, + -0.5786301335231006, + 0.5603502475106024, + 1.3124149607795772, + 1.267939612992003, + 0.8769984183254671, + 1.021389835488774, + 1.344298546762421, + 0.7517388220978978, + 0.8720917405004638, + 0.2138438386564232, + 1.6314534892820811, + 1.2822157143756778, + -0.7142163078288419, + 0.7528768961420282, + 1.0364165666142344, + 0.955281240457099, + -0.1260548304167073, + 1.2773440584839495, + 0.836936946522755, + 0.4171848533117899, + -0.30180780738791724, + 0.5247321175275097, + 1.3919601024982087, + -0.9772650405244125, + 0.6755477988680036, + 0.6030173446289315, + 0.9014692608943022, + 0.8878260407744687, + -1.0767507695930536, + 1.028528685235845, + 0.4813385225392828, + 1.092976023742592, + 0.09476538071458762, + 1.3231263888721627, + 0.982250838207039, + 1.3189320483129419, + 0.5105233701987179, + -0.9833164653420514, + 0.5496882124825877, + 0.9545003511069741, + 0.05175104440473799, + 1.026207899005163, + 0.9243300886776311, + 0.41534931134763253, + -0.11627934209637125, + 1.0021106284755539, + 0.25233754105047135, + 0.7447582421511274, + 0.7262898404089251, + 0.5464667464032057, + 1.1255256244638014, + 0.03208780194075711, + 0.3602942184260698, + 0.1650860859509855, + 0.4651000205531357, + 0.5782926395387689, + 0.6463442629346687, + 0.4688036106544158, + 0.8223796319246084, + 0.3132607783394379, + 0.8857624949435747, + 0.6116490442665672, + 0.9198297346769264, + 0.7807799615783999, + 0.8767379224668375, + 0.9517055733367893, + -1.0888567456648204, + -0.24093211631351874, + 0.890230372838009, + 1.6397855274670798, + 0.38306422285608843, + 0.6280097990916786, + 0.07455892516078144, + 0.9129955324751782, + -0.258113980769628, + 0.9667456592341814, + 0.9535102730934735, + 1.1689341355435219, + 0.4242612053044805, + 0.5626919641375845, + -0.046590091773542675, + -0.5190895878344488, + 1.426189165894808, + 0.7184696563323492, + 0.2591539696464613, + 0.7383896831820604, + 0.6685149816801514, + 0.7654702246605805, + 0.3533014561970287, + -0.06592390603421605, + 0.750808619053263, + 0.8133907229260542, + 0.5313907149026234, + 1.482470172373831, + 0.309810693319184, + -0.9808646070130163, + 1.0172815281529148, + 1.329046362080612, + 0.4169700301245438, + 1.3544628233451297, + 0.9743172559333342, + 1.8803420180492942, + 0.39150366654981117, + 1.4597993568685315, + 0.22329612464414167, + -0.5674849208831008, + -0.1738920355169551, + -1.0557136654639683, + 0.03454286053033151, + 1.0410207186463403, + 0.40350284940130887, + 0.048115541792572714, + 0.8928504517334668, + -0.7934104106204991, + 0.977240952247934, + 0.6103757483296097, + 0.27953440655959305, + 0.09366835085451086, + -0.1260185075799347, + 0.016082760589946177, + 0.8114466783586001, + 0.5851871343191108, + 0.9552813709238412, + 1.4208633343651438, + 0.7800095990720255, + 0.569203453986737, + 0.9767199975113785, + 0.408588559248072, + -0.04405464133866499, + 0.5991140636055827, + 1.0728599516037967, + 1.2389190630445737, + 0.2208976537172647, + 0.475023203018087, + 1.5141545373524892, + 0.22291532373101086, + 0.8905036589889903, + 0.22693356797984077, + -0.20308475869224285, + 0.8597031430274347, + 1.278898223658345, + 0.9504439290454223, + 1.403019650408344, + 1.16441728401304, + 0.6417054290055209, + 1.18499698852263, + -0.8509236700301397, + 1.2279036676785435, + 1.0896640349479654, + 0.946659232125163, + 0.35601703952907826, + 0.642261646941213, + 0.3869686694998222, + 0.351898770486168, + 0.779069790064336, + 1.2262953217201638, + 1.0986823729457458, + -0.00818511017169854, + 0.7716691108577027, + 0.9733642175302828, + 0.7541295118022182, + -0.6240637739739252, + 0.020920767872437906, + 0.7236620213835784, + 1.250308869073411, + 1.1392314139114712, + 1.0318183032814185, + 1.3493973505410408, + 0.09862194951735859, + 0.9092404569642625, + 0.7882746695603284, + 0.5730027600070979, + 0.9595307268923402, + 0.5025401645114638, + 1.0212848426216938, + -0.04578743528913343, + 1.1339155310960614, + 0.8439921067965432, + 0.15923590165804757, + 0.683760020822243, + 1.1397649253966786, + 1.096356126090404, + -1.3001591804144226, + -1.9287940237152816, + 1.413262262071131, + -0.6688116525423116, + 0.6382059796042245, + 0.1594653350543025, + -2.0190651191431432, + 0.10908004110144276, + 0.003163374954938458, + 0.5194996829950984, + 0.6370302742152205, + -0.1948781494342242, + 1.1142578715400155, + 0.657912298262189, + 0.7598328995172867, + -0.2903862340827885, + 0.4170907718188147, + 0.8928245489289264, + 0.027824948421097728, + 0.9047133468198408, + 0.7240214079044142, + -0.3988914053239969, + 1.1451996280614747, + 0.393725070617192, + -0.752618249021575, + -0.008386537811543526, + 1.3252128333404283, + 0.9407709927169314, + 0.1925234589136, + 0.5582567057046112, + -2.3662188486769056, + 1.084070192697005, + 0.20886825788753693, + 0.39421212962310426, + 0.7548859772797325, + 0.8018417183049147, + 0.18396791012046876, + 1.427547672935444, + 0.2900175240099605, + 0.6388653731993501, + 1.1736069785381338, + 0.02994776534352389, + -1.0911242203444544, + -0.11911482003243812, + 1.4217046267538773, + 1.06180432990989, + 0.7040028936744722, + 1.2180288065748144, + 1.3102801344181707, + 0.5313970636873826, + -0.35536332064750786, + 1.3398142296519242, + 0.4724059063883721, + 0.3733023686345569, + 0.6572201249213482, + 0.7744154987459702, + -0.5101370402457472, + -2.179362889646386, + 1.3162994281085165, + 1.2937960725099433, + -0.8244693023020959, + -2.6977372492600136, + 1.085974032333196, + 0.7315890161433654, + 0.773604492051911, + 1.2846492314688054, + 0.14010592537457, + 0.2497272430991999, + 1.1075304049182204, + -0.1931876036272282, + 1.0428471951443088, + 0.4668138725479931, + 1.2072801905522228, + -1.0196063279007168, + 0.48087319481327206, + 0.875483656229056, + 0.9360486796465892, + 1.0720351290707484, + -1.4732423506150343, + -0.5321971167554858, + 1.1478970571239244, + 1.1190190727757852, + 0.3449351374203631, + 1.1595577767322478, + 1.1961882067086016, + -0.02822262551322474, + 0.3875000620829443, + 0.5499045448066777, + 0.40340364050959776, + 0.6908422060599094, + 0.832292223538802, + 0.39706052503913014, + 1.4688005709204608, + 0.9006351789908946, + 0.37542743958199587, + 1.3820095068564768, + 1.1399458290684255, + 0.4179273323928694, + -0.11345286339473226, + 0.5333828214285514, + 0.29819889989692916, + 0.6526944422618903, + 0.3592127124846787, + 1.1587767152935324, + 1.2467783756959607, + 0.6231485680371485, + 0.9020459790101505, + -0.942293413892995, + 0.4041671957638915, + 0.5345314420720051, + 0.9369014297881595, + 1.3537466616873068, + 1.0242641913676653, + 0.8434663478127316, + 1.0542971768938294, + 1.0630231081839554, + 0.3584211708458973, + 1.5544873057203763, + 0.20368574221117974, + 1.1380386827365738, + 0.7924910974026549, + 0.7597458196462838, + 1.2541328217135002, + -2.167081208473392, + -1.1111907659734168, + 0.657983948520477, + 1.5653092804304434, + 0.2086666381257094, + 1.0434366055914372, + 0.3942983122758761, + 0.7154656536000039, + 0.423715959938483, + 0.9873569222132792, + 0.0264773453967333, + 0.7305976771783032, + 1.156974467332099, + 1.0856475487617494, + 0.6221468438707607, + 0.8508246112932334, + 0.4412911798720778, + 0.8438313516186664, + -1.9063350357607098, + 0.9535606866876485, + 1.0490786939381278, + 0.5464336361187101, + 1.2003566964934613, + 1.3591426180802884, + 0.7140229804433806, + 0.898362783143384, + 1.1425131603868097, + 1.4796912301951264, + -0.7898039636904367, + -2.4922315147130605, + 0.6493861887006744, + 0.7248491692050747, + 1.3083915517308462, + 0.06412032868933792, + 0.15935005520569412, + 1.3342402320372548, + 0.7641305154883522, + 0.567082337951735, + 1.084329812776839, + 0.8505914150421289, + -0.45018183005418094, + 0.7505905430218434, + 0.20037048521084877, + -0.03961586628042843, + -0.07985403932254975, + 1.1157439132977807, + 0.32323796210586053, + 0.6300880585720403, + -1.995157599106793, + 0.552578844365943, + 0.5895188424751385, + 0.7506740748956418, + 1.150188098754663, + 1.1481420335830113, + 1.0317901269247791, + 0.7688831731708348, + 1.0863911634890204, + 0.5751283915587924, + 0.8377546448439519, + -3.3562201698516407, + 0.5957333915550276, + 0.9213869736771481, + 0.11336292878064391, + 0.37173792857789545, + 1.099911403757408, + 1.0567225005401286, + 0.7767743261101843, + -0.49541955923468173, + 0.5072846075811173, + 1.0302852076867095, + 0.6419783716495913, + 1.3379132026815865, + -0.9652581204393016, + 1.446791897155296, + 0.9205539652873374, + 0.7809196739184605, + 0.6423310668631284, + -0.32004796937714497, + 1.0126381244531792, + 0.3977499404064755, + -0.022991835044264053, + 0.806514921647906, + 0.20413048903288278, + 0.9768634364823114, + 0.7308309542048764, + 0.8044147735834635, + 0.39794125106793055, + 0.19567130496838647, + 1.0974866598111257, + 0.8286917284455846, + 0.25915217509330524, + 0.8143355093593969, + 0.3589735924631432, + 0.8676286654382199, + 0.8263139337896113, + 0.9064912411441903, + 1.1256366769661628, + 0.8331517301230172, + -1.3514242496876188, + 0.6105774869780544, + 0.7126829296414909, + 0.34443595876017596, + 1.0436887830717578, + 0.8891511445088378, + 1.1756538616448613, + 0.598255242614222, + 1.0091507497934131, + 0.4422475286727736, + 0.7089998240509748, + 0.8227225992859104, + 0.883670202033817, + 0.9965755930220763, + 0.5625613895735335, + 0.3775864166613516, + 1.010772704009085, + -2.1739915155169904, + -0.489111012820139, + -2.386782111765111, + 0.7905975112218961, + 0.6432093723241961, + 1.041439300470873, + 0.9255765577425503, + 0.7836985270532781, + 1.0454751649991756, + 0.5414941342765198, + 0.9317333742281835, + 0.8530301120693473, + -0.9298230386584695, + 1.4624184142794228, + 0.5537194159220005, + 0.40601989744790945, + 0.6735920802162783, + -1.3708252252874873, + 0.7580461486912569, + 0.9073927438415197, + 0.5890576196622366, + 0.7612034822172795, + -0.3627614132899737, + 0.9436085235689212, + 0.5990252107352259, + 0.9843508377999894, + 1.056842639048055, + 0.5935676107705441, + 0.4928364877507396, + 0.768675650101617, + 0.6030862272958597, + 0.5243455187873716, + 0.24353360605791963, + -0.6650883945974271, + 1.5077522629437499, + 0.9722119914036855, + 0.8514810065943896, + 1.0628758998589092, + 0.5299071673882576, + 0.8250022688956753, + 0.3923271907093637, + 0.251168263504123, + 0.14429219259917403, + 0.4935177797314667, + 0.9050566290857452, + 0.05932474456792658, + 1.1844573978510606, + -1.224201610910841, + -1.5296462301345504, + 0.5042219761039783, + -1.3187360514789983, + 0.7798207301817166, + 0.7796297966063519, + 0.6115851744864065, + 0.35464661583426604, + -1.4994697421093548, + 0.991074618236258, + 0.059351869855618855, + 0.8480440388290589, + 0.37124998881617177, + -0.2610423496672727, + 0.46172149833075204, + -0.6900953514682104, + 0.4000700038119507, + 0.6807261125038817, + -0.4040782291165981, + 1.1626204379005296, + -0.4707891288691446, + 0.7689106401425425, + 1.3067768460192837, + 1.029173429223011, + 0.3681313001595171, + 0.09278244997784159, + 0.5933090768546788, + 1.5809329381180826, + 0.691504248073886, + -0.650344314954445, + 0.5948274052750087, + -0.4332506278946785, + 1.0248409962624374, + 1.0944985925065307, + 0.07564621498351798, + 0.7119130105831939, + 0.6612681538152856, + -0.4407654177267446, + 0.48971207550798024, + 0.8042716403667189, + 1.3135607446117255, + 0.8195404810122922, + 0.2623681398482898, + 0.22573245672240483, + -0.9096968715144604, + 0.5202101753166133, + 0.23354006938514804, + 0.49892024005543245, + 0.49052185042361107, + 0.42231558594066154, + 0.9905130437446417, + 0.3232474264268622, + 0.5266988835362589, + 0.4013196900484277, + 1.3279671151174706, + 0.609665923886884, + 1.157390429705159, + 0.6622784646313722, + 0.5085152764663021, + 0.2834456369433478, + 0.6580848395007823, + 0.7153811489855233, + 1.1906682875308254, + 0.4522053120452272, + 0.7993344724517644, + -0.6907541313236318, + 0.8157812339098632, + 1.0703813545088223, + 0.6233913944202731, + 0.9659848374199349, + 0.6922351384957883, + 1.0678789162625058 ] }, { @@ -5251,106 +5258,106 @@ 1 ], "y": [ - 0.4295815180657684, - 0.4529988771527795, - 0.47710962996344203, - 0.5017552288364289, - 0.5267844817241528, - 0.5520453687087156, - 0.5773754995347101, - 0.6025942807516848, - 0.6274987465476943, - 0.6518631917228804, - 0.675441431196294, - 0.6979711735797796, - 0.7191825329875234, - 0.7388148476487979, - 0.7566445900896257, - 0.7725209004377553, - 0.7863971822242691, - 0.7983440604017709, - 0.8085356182935343, - 0.8172138816091191, - 0.8246464251439174, - 0.8310921773348322, - 0.8367830927996615, - 0.8419212786346919, - 0.8466871037270889, - 0.8512536198467898, - 0.8558032617668364, - 0.8605416537362366, - 0.8657005517691575, - 0.8715210309898621, - 0.8782136738678828, - 0.885905044370442, - 0.894591230119475, - 0.9041190114740699, - 0.9142017499522821, - 0.9244610930476174, - 0.9344786761552211, - 0.9438457264433638, - 0.9522060245783409, - 0.9592921714192836, - 0.9649543492673103, - 0.9691770542460705, - 0.9720771537684842, - 0.9738797710024897, - 0.9748763900354487, - 0.9753769559043954, - 0.9756690150099278, - 0.9759914969203028, - 0.9765230931100686, - 0.9773802526268452, - 0.9786192043020367, - 0.9802387797970443, - 0.9821840063919318, - 0.9843527894065834, - 0.9866083714411059, - 0.9887980961790741, - 0.9907750900623096, - 0.9924162648887455, - 0.9936301874088362, - 0.9943521071483239, - 0.9945281227537734, - 0.9940932022322146, - 0.9929481332852422, - 0.9909403331218456, - 0.9878545850601074, - 0.983421666405304, - 0.9773519363397571, - 0.9693928365183374, - 0.9593943843137583, - 0.9473551887723898, - 0.9334267361851765, - 0.9178761696891032, - 0.9010300288497884, - 0.8832261272929038, - 0.8647888731786423, - 0.8460285393156657, - 0.8272568629550504, - 0.8088093228997658, - 0.7910634126604288, - 0.7744397064651615, - 0.7593715347368142, - 0.7462361276254212, - 0.7352584152108516, - 0.726421112267187, - 0.7194243554647275, - 0.7137215128236168, - 0.7086205610660524, - 0.7034075203789637, - 0.6974431539279724, - 0.6902069888988199, - 0.6812935002199226, - 0.6703842528707634, - 0.6572222717217, - 0.641607620961352, - 0.6234229224062693, - 0.602685633294057, - 0.579608981404153, - 0.5546383269101615, - 0.5284255503346409, - 0.501724223726619 + 0.4423243302610737, + 0.461573183312013, + 0.48040471193674533, + 0.49882656302188466, + 0.516846146649365, + 0.5344705581267839, + 0.5517065086339948, + 0.5685602652892019, + 0.5850376012095782, + 0.6011437559130133, + 0.6168834061842725, + 0.6322606473152198, + 0.6472789844288953, + 0.6619413334145188, + 0.6762500308376129, + 0.6902068520483747, + 0.703813036593544, + 0.71706931994293, + 0.7299759704717057, + 0.7425328305931973, + 0.7547393609134111, + 0.766594686277071, + 0.7780976425941397, + 0.7892468233743454, + 0.8000406249536653, + 0.810477289469492, + 0.8205549447287154, + 0.8302716402136737, + 0.8396253785830496, + 0.8486141421467495, + 0.8572359139236069, + 0.8654886930265543, + 0.8733705042596359, + 0.8808794019526369, + 0.8880134681999372, + 0.8947708058080052, + 0.9011495263883249, + 0.9071477341569448, + 0.9127635061158604, + 0.9179948693926759, + 0.9228397766011961, + 0.927296080154659, + 0.9313615065132872, + 0.9350336313770977, + 0.9383098568418399, + 0.9411873915194594, + 0.9436632345836296, + 0.9457341646350121, + 0.9473967341899292, + 0.9486472704801863, + 0.9494818831118853, + 0.9498964789686085, + 0.9498867845617479, + 0.9494483758312728, + 0.9485767151880207, + 0.9472671953690416, + 0.9455151894567835, + 0.9433161061982295, + 0.940665449559269, + 0.9375588812708407, + 0.9339922849749642, + 0.9299618304683933, + 0.9254640364759408, + 0.9204958303699577, + 0.9150546032899189, + 0.9091382592077267, + 0.9027452566282164, + 0.8958746418060577, + 0.8885260725927075, + 0.8806998322911191, + 0.8723968331803921, + 0.8636186096655308, + 0.8543673012964158, + 0.84464562617308, + 0.8344568455005289, + 0.8238047202665987, + 0.8126934611839032, + 0.8011276731574716, + 0.7891122956116123, + 0.7766525400336018, + 0.763753826071158, + 0.7504217174601948, + 0.736661858965304, + 0.7224799153948932, + 0.7078815136133808, + 0.6928721883215996, + 0.6774573322204069, + 0.6616421510175764, + 0.645431623589404, + 0.6288304674702124, + 0.6118431097181418, + 0.5944736630962812, + 0.5767259074154734, + 0.5586032758094147, + 0.5401088456535679, + 0.5212453337961618, + 0.5020150957407455, + 0.4824201284038636, + 0.4624620760663869, + 0.44214223914082296 ] } ], @@ -6243,21 +6250,56 @@ "\n", "$$\\hat{\\tau}_{\\text{base}}(h) = \\sum_{i=1}^n w_i(h)Y_i,$$\n", "\n", - "where $w_i(h)$ are local linear regression weights that depend on the data through the realizations of the running variable $S_i$ only and $h>0$ is a bandwidth. $\\hat{\\gamma}_h$ is a minimizer from the regression\n", - "\n", - "$$\\argmin_{\\beta,\\gamma} \\sum K_h(S_i) (Y_i - Q_i^\\top\\beta- X_i^{\\top}\\gamma )^2.$$\n", - "\n", - "with $Q_i =(D_i, S_i, D_i S_i,1)^T$ (for more details, see our [User Guide](https://docs.doubleml.org/stable/guide/models.html#regression-discontinuity-designs-rdd)), $K_h(v)=K(v/h)/h$ with $K(\\cdot)$ a kernel function.\n", + "where the $w_i(h)$ are local linear regression weights that depend on the data through the realizations of the running variable only and $h > 0$ is a bandwidth.\n", "\n", "The packages ``rdrobust`` implements this estimation." ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 5, "metadata": {}, - "outputs": [], - "source": [] + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Call: rdrobust\n", + "Number of Observations: 1000\n", + "Polynomial Order Est. (p): 1\n", + "Polynomial Order Bias (q): 2\n", + "Kernel: Triangular\n", + "Bandwidth Selection: mserd\n", + "Var-Cov Estimator: NN\n", + "\n", + " Left Right\n", + "------------------------------------------------\n", + "Number of Observations 493 507\n", + "Number of Unique Obs. 493 507\n", + "Number of Effective Obs. 291 299\n", + "Bandwidth Estimation 0.78 0.78\n", + "Bandwidth Bias 1.282 1.282\n", + "rho (h/b) 0.608 0.608\n", + "\n", + "Method Coef. S.E. t-stat P>|t| 95% CI \n", + "-------------------------------------------------------------------------\n", + "Conventional 1.407 0.634 2.219 2.652e-02 [0.164, 2.65]\n", + "Robust - - 1.786 7.417e-02 [-0.131, 2.802]\n" + ] + }, + { + "data": { + "text/plain": [] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "rdrobust_sharp_noadj = rdrobust(y=df['y'], x=df['score'], fuzzy=df['d'], c=0.0)\n", + "rdrobust_sharp_noadj" + ] }, { "cell_type": "markdown", @@ -6280,7 +6322,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 6, "metadata": {}, "outputs": [ { @@ -6297,24 +6339,24 @@ "\n", " Left Right\n", "------------------------------------------------\n", - "Number of Observations 520 480\n", - "Number of Unique Obs. 520 480\n", - "Number of Effective Obs. 272 241\n", - "Bandwidth Estimation 0.69 0.69\n", - "Bandwidth Bias 1.096 1.096\n", - "rho (h/b) 0.629 0.629\n", + "Number of Observations 493 507\n", + "Number of Unique Obs. 493 507\n", + "Number of Effective Obs. 281 285\n", + "Bandwidth Estimation 0.732 0.732\n", + "Bandwidth Bias 1.22 1.22\n", + "rho (h/b) 0.6 0.6\n", "\n", "Method Coef. S.E. t-stat P>|t| 95% CI \n", "-------------------------------------------------------------------------\n", - "Conventional 1.247 0.485 2.57 1.017e-02 [0.296, 2.198]\n", - "Robust - - 2.293 2.184e-02 [0.19, 2.42]\n" + "Conventional 1.207 0.433 2.789 5.286e-03 [0.359, 2.056]\n", + "Robust - - 2.334 1.961e-02 [0.189, 2.172]\n" ] }, { "data": { "text/plain": [] }, - "execution_count": 5, + "execution_count": 6, "metadata": {}, "output_type": "execute_result" } @@ -6346,11 +6388,11 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 7, "metadata": {}, "outputs": [], "source": [ - "dml_data = dml.DoubleMLData(df, y_col='y', d_cols='d', x_cols=cov_names, s_col='score')" + "dml_data_sharp = dml.DoubleMLData(df, y_col='y', d_cols='d', x_cols=cov_names, s_col='score')" ] }, { @@ -6362,7 +6404,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 8, "metadata": {}, "outputs": [ { @@ -6371,15 +6413,15 @@ "text": [ "Method Coef. S.E. t-stat P>|t| 95% CI\n", "-------------------------------------------------------------------------\n", - "Conventional 1.091 0.120 9.072 1.169e-19 [0.855, 1.327]\n", - "Robust - - 6.206 5.429e-10 [0.639, 1.229]\n" + "Conventional 0.983 0.103 9.549 1.304e-21 [0.781, 1.185]\n", + "Robust - - 8.229 1.891e-16 [0.740, 1.203]\n" ] } ], "source": [ "ml_g = LGBMRegressor(n_estimators=500, learning_rate=0.01, verbose=-1)\n", "\n", - "rdflex_sharp = RDFlex(dml_data,\n", + "rdflex_sharp = RDFlex(dml_data_sharp,\n", " ml_g,\n", " cutoff=0,\n", " fuzzy=False,\n", @@ -6419,7 +6461,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 9, "metadata": {}, "outputs": [ { @@ -6454,48 +6496,48 @@ " \n", " \n", " 0\n", - " 2.131533\n", - " 1.0\n", - " 0.496714\n", - " -0.665035\n", - " -0.790864\n", - " 0.272860\n", + " -0.183553\n", + " 0.0\n", + " 0.471435\n", + " -0.198503\n", + " -0.193849\n", + " -0.493426\n", " \n", " \n", " 1\n", - " 10.104291\n", - " 1.0\n", - " -0.138264\n", - " 0.412951\n", - " -0.936828\n", - " 0.872424\n", + " 1.348622\n", + " 0.0\n", + " -1.190976\n", + " 0.013677\n", + " -0.630880\n", + " -0.885832\n", " \n", " \n", " 2\n", - " 3.337677\n", + " 1.265929\n", " 1.0\n", - " 0.647689\n", - " -0.896057\n", - " 0.082593\n", - " 0.418121\n", + " 1.432707\n", + " -0.266147\n", + " 0.439675\n", + " -0.051651\n", " \n", " \n", " 3\n", - " 7.767124\n", + " 8.694561\n", " 1.0\n", - " 1.523030\n", - " 0.741938\n", - " 0.428174\n", - " 0.603456\n", + " -0.312652\n", + " 0.845241\n", + " -0.659755\n", + " 0.436764\n", " \n", " \n", " 4\n", - " 4.209740\n", + " 14.001403\n", " 1.0\n", - " -0.234153\n", - " -0.321100\n", - " 0.629650\n", - " -0.839770\n", + " -0.720589\n", + " 0.739595\n", + " -0.741380\n", + " 0.948112\n", " \n", " \n", "\n", @@ -6503,20 +6545,20 @@ ], "text/plain": [ " y d score x0 x1 x2\n", - "0 2.131533 1.0 0.496714 -0.665035 -0.790864 0.272860\n", - "1 10.104291 1.0 -0.138264 0.412951 -0.936828 0.872424\n", - "2 3.337677 1.0 0.647689 -0.896057 0.082593 0.418121\n", - "3 7.767124 1.0 1.523030 0.741938 0.428174 0.603456\n", - "4 4.209740 1.0 -0.234153 -0.321100 0.629650 -0.839770" + "0 -0.183553 0.0 0.471435 -0.198503 -0.193849 -0.493426\n", + "1 1.348622 0.0 -1.190976 0.013677 -0.630880 -0.885832\n", + "2 1.265929 1.0 1.432707 -0.266147 0.439675 -0.051651\n", + "3 8.694561 1.0 -0.312652 0.845241 -0.659755 0.436764\n", + "4 14.001403 1.0 -0.720589 0.739595 -0.741380 0.948112" ] }, - "execution_count": 8, + "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "np.random.seed(42)\n", + "np.random.seed(1234)\n", "\n", "data_dict = make_simple_rdd_data(n_obs=1000, fuzzy=True)\n", "\n", @@ -6537,9 +6579,19 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 10, "metadata": {}, "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "C:\\Users\\BAQ7040\\AppData\\Roaming\\Python\\Python311\\site-packages\\plotly\\express\\_core.py:1979: FutureWarning:\n", + "\n", + "When grouping with a length-1 list-like, you will need to pass a length-1 tuple to get_group in a future version of pandas. Pass `(name,)` instead of `name` to silence this warning.\n", + "\n" + ] + }, { "data": { "application/vnd.plotly.v1+json": { @@ -6548,2040 +6600,2040 @@ }, "data": [ { - "hovertemplate": "Treatment=True
Score=%{x}
Outcome=%{y}", - "legendgroup": "True", + "hovertemplate": "Treatment=False
Score=%{x}
Outcome=%{y}", + "legendgroup": "False", "marker": { "color": "#636efa", "symbol": "circle" }, "mode": "markers", - "name": "True", + "name": "False", "orientation": "v", "showlegend": true, "type": "scatter", "x": [ - 0.4967141530112327, - -0.13826430117118466, - 0.6476885381006925, - 1.5230298564080254, - -0.23415337472333597, - -0.23413695694918055, - 1.5792128155073915, - 0.7674347291529088, - -0.4694743859349521, - 0.5425600435859647, - -0.46341769281246226, - 0.24196227156603412, - -1.913280244657798, - -1.7249178325130328, - -0.5622875292409727, - -1.0128311203344238, - 0.3142473325952739, - -0.9080240755212109, - -1.4123037013352915, - 1.465648768921554, - -0.22577630048653566, - 0.06752820468792384, - -1.4247481862134568, - -0.5443827245251827, - 0.11092258970986608, - -1.1509935774223028, - 0.37569801834567196, - -0.600638689918805, - -0.6017066122293969, - 1.8522781845089378, - -1.0577109289559004, - 0.822544912103189, - 0.2088635950047554, - -1.9596701238797756, - 0.19686123586912352, - 0.7384665799954104, - 0.1713682811899705, - -0.11564828238824053, - -0.3011036955892888, - -1.4785219903674274, - -0.7198442083947086, - 1.0571222262189157, - 0.3436182895684614, - -1.763040155362734, - 0.324083969394795, - -0.38508228041631654, - -0.6769220003059587, - 0.6116762888408679, - 1.030999522495951, - 0.9312801191161986, - -0.8392175232226385, - -0.3092123758512146, - 0.33126343140356396, - 0.9755451271223592, - -0.47917423784528995, - -1.1063349740060282, - 0.812525822394198, - 1.356240028570823, - -0.07201012158033385, - 1.0035328978920242, - 0.36163602504763415, - 1.5380365664659692, - -0.03582603910995154, - 1.5646436558140062, - -2.6197451040897444, - 0.8219025043752238, - 0.08704706823817122, - -0.29900735046586746, - 0.0917607765355023, - -1.9875689146008928, - 0.3571125715117464, - 1.477894044741516, - -0.5182702182736474, - -0.8084936028931876, - -0.5017570435845365, - 0.9154021177020741, - 0.32875110965968446, - -0.5297602037670388, - 0.5132674331133561, - 0.09707754934804039, - -0.7020530938773524, - -0.3276621465977682, - -1.4635149481321186, - 0.29612027706457605, - 0.26105527217988933, - 0.00511345664246089, - -0.23458713337514692, - -0.42064532276535904, - -0.8022772692216189, - -0.16128571166600914, - 0.4040508568145384, - 1.8861859012105302, - 0.17457781283183896, - 0.25755039072276437, - -0.07444591576616721, - -1.9187712152990415, - -0.026513875449216878, - 0.06023020994102644, - -0.19236096478112252, - 0.30154734233361247, - -0.03471176970524331, - -1.168678037619532, - 1.1428228145150205, - 0.7519330326867741, - 0.7910319470430469, - 1.4027943109360992, - -1.4018510627922809, - 0.5868570938002703, - 2.1904556258099785, - -0.9905363251306883, - -0.5662977296027719, - 0.09965136508764122, - -0.5034756541161992, - -1.5506634310661327, - 0.06856297480602733, - -1.0623037137261049, - 0.4735924306351816, - -0.9194242342338032, - 1.5499344050175394, - 0.8135172173696698, - -1.2308643164339552, - 0.22745993460412942, - 1.307142754282428, - -1.6074832345612275, - 0.1846338585323042, - 0.25988279424842353, - 0.7818228717773104, - -1.236950710878082, - -1.3204566130842763, - 0.5219415656168976, - 0.29698467323318606, - 0.25049285034587654, - 0.3464482094969757, - -0.6800247215784908, - 0.23225369716100355, - 0.29307247329868125, - -0.7143514180263678, - 1.8657745111447566, - 0.4738329209117875, - -1.1913034972026486, - 0.6565536086338297, - 0.787084603742452, - 1.158595579007404, - -0.8206823183517105, - 0.9633761292443218, - 0.4127809269364983, - 0.82206015999449, - 1.8967929826539474, - -0.2453881160028705, - -0.8895144296255233, - -0.8158102849654383, - 0.3411519748166439, - 0.27669079933001905, - 0.8271832490360238, - 0.01300189187790702, - 1.4535340771573169, - -0.2646568332379561, - 2.720169166589619, - 0.6256673477650062, - -1.0708924980611123, - 0.4824724152431853, - -0.2234627853258509, - 0.714000494092092, - 0.47323762457354485, - -0.07282891265687277, - -0.846793718068405, - -1.5148472246858646, - 0.8563987943234723, - 0.21409374413020396, - 0.3853173797288368, - 0.1537251059455279, - 0.058208718445999896, - -1.142970297830623, - 0.5607845263682344, - 1.083051243175277, - 1.053802052034903, - -0.9378250399151228, - 0.5150352672086598, - 0.5137859509122088, - 0.5150476863060479, - 3.852731490654721, - 1.135565640180599, - 0.9540017634932023, - 0.651391251305798, - -0.3152692446403456, - 0.7589692204932674, - -0.7728252145375718, - 0.08187413938632256, - 2.3146585666735087, - -1.867265192591748, - 0.6862601903745135, - -0.47193186578943347, - 1.088950596967366, - 0.06428001909546277, - -1.0777447779293061, - -0.7153037092599682, - 0.6795977489346758, - -0.7303666317171367, - 0.21645858958197486, - 0.045571839903813784, - -0.6516003476058171, - 2.1439440893253257, - 0.6339190223180112, - 0.18645431476942764, - -0.661786464768388, - 0.852433334796224, - -0.7925207384327007, - -0.11473644146689901, - 0.5049872789804571, - 0.8657551941701215, - -0.3345012358409484, - -0.4749453111609562, - 1.7654542402810969, - 0.40498171096095553, - -1.2608839543350452, - 0.9178619470547761, - 2.1221561970126332, - 1.0324652605511468, - -1.5193699659540134, - -0.48423407286625136, - 1.2669111491866227, - 0.44381942814622843, - 0.7746340534293368, - -0.926930471578083, - -0.05952535606180008, - -3.2412673400690726, - -1.0243876413342898, - -0.2525681513931603, - -1.2477831819648495, - 1.6324113039316352, - -1.4301413779606327, - -0.44004448669698376, - 0.13074057728609134, - 1.4412732890661155, - -1.4358621511794394, - 1.1631637521549596, - -0.9815086510479509, - 0.46210347426327075, - 0.19905969557347003, - -0.6002168771587947, - 0.06980208499001891, - -0.3853135968617602, - 0.11351734525124804, - 0.6621306745210467, - 1.586016816145352, - -1.237815498826849, - 2.1330333746562666, - -1.9520877995225019, - -0.15178509503558332, - 0.5883172064845765, - 0.28099186773503265, - -0.6226995198205938, - -0.4930009346588328, - -0.5893647569442115, - 0.8496020970210246, - 0.8995998754332507, - 0.30729952087660933, - 0.8128621188389601, - 0.6296288419236122, - -0.8289950109220723, - -0.5601810401969696, - 0.7472936051232618, - 0.6103702654334648, - -0.020901593964148132, - 0.117327383308782, - 1.277664895788425, - -0.5915713888358299, - 0.5470973811700379, - -0.20219265243389406, - -0.2176812032272203, - 1.09877685198719, - 0.8254163489880298, - 0.8135096360006385, - 1.305478807154329, - 0.02100384163275905, - 0.6819529712949639, - -0.31026675659345604, - 0.3241663524884421, - -0.13014305436768459, - 0.09699596499271819, - 0.5951570254369136, - -0.8182206832334725, - 2.0923872756854602, - 1.1581108735000678, - 0.7916626939629359, - 0.6241198170521551, - 0.6283455092642799, - -0.012246772846914623, - 0.07580455819372633, - -0.6771617115121117, - 0.9751197334177512, - -0.14705738150213865, - -0.8254971967925115, - 0.41293145427562433, - -0.5637245528039747, - 0.2436872114919123, - 0.24496657110872277, - -0.5069431753711298, - 0.2320499373576363, - -1.4074637743765552, - -0.718444221252436, - -0.21344715171184725, - 0.3109075655980046, - 1.475356216949552, - 0.8576596232020194, - -0.1599385299634271, - -0.01851313599238993, - -0.2886586389201383, - 0.3227185603380895, - -0.827230943552323, - 0.5193465142411723, - 1.5327389130025777, - -0.1087601484568576, - 0.40171172209894146, - 0.6901439917111125, - 0.22409248181041677, - 0.01259240078179486, - -0.7730097838554665, - 0.024510174258942714, - 0.49799829124544975, - 1.4511436077950417, - 0.9592708260852069, - 2.1531824575115563, - 0.8723206367206782, - 0.18334200573835174, - 2.1898029332176723, - -0.8082982853551515, - -2.123895724309807, - 0.15039378647620763, - 0.34175597577715944, - 0.9504238381860503, - 0.4919191715065057, - -1.3202332070206422, - 1.8314587658543537, - 1.179440120721287, - -0.4691756521047048, - -1.7131345290908775, - 1.3538723741654128, - -0.11453984525261789, - -1.594427658794367, - -0.5993750229537729, - 0.005243699718183166, - 0.046980593764742055, - -0.45006547147924364, - 0.6228499323474987, - -1.0676204293825944, - -0.1423794850212935, - 0.12029563171189886, - 0.514438834058749, - 0.7116148780888898, - -1.1246420918378692, - -1.5341141707356223, - 1.277676821898509, - 0.33231401197959165, - -0.7484865365565536, - 1.551151975522523, - 0.11567463429285867, - 1.1792971840638264, - 0.06751848141010895, - 2.060747924881987, - 1.7553408424432044, - -0.2489641484790735, - 0.9715709509543554, - 0.6453759495851475, - 1.3686315575323487, - -0.9649234605801045, - 0.6860514599984393, - 1.0584244868495878, - -1.7587394864231143, - -1.183258512665775, - -2.0392321777601006, - 0.7175422557959623, - 1.502357052096028, - 0.07409478041977519, - 1.6286155455712918, - -1.3801014582148914, - -1.7033824393551547, - 0.3840654489393073, - -0.03269474809409311, - -2.0674421000398766, - -0.08912003951278841, - 0.6696725488300385, - 0.36659824609684827, - -0.9398797863273552, - -0.5138669173366935, - -0.06267909727317188, - 0.9551423205012383, - -0.9857260463355437, - 0.5040465155178444, - -0.7928728322623442, - -0.10703035995455783, - -1.035242322419374, - -1.1978778925888485, - 0.03526355197172861, - -0.6997255079925856, - 0.213979910734222, - 0.6141667000434252, - 0.7575077100473051, - -0.5305011476105275, - -0.57581824064468, - -0.275051697151644, - -2.301921164735585, - -1.5151910621985523, - 1.3668742674445247, - 1.6449677135012837, - -0.24903603955637832, - 0.5765569630557664, - 3.0788808084552377, - 1.1195749114345768, - -0.12791759148076653, - -0.9555404406004258, - -1.6064463202575725, - 0.2034636358672231, - -0.7563507452843033, - -0.6465728842425266, - -1.081548003614395, - 1.6871416350725648, - 0.8816397569494505, - -0.007972641316617372, - 1.4799441388900259, - 0.0773683076476183, - -0.8612842013282637, - 1.5231240772696573, - 0.5389100436846587, - -1.0372461543264564, - -0.1903386780836082, - -0.8756182533847572, - -1.382799730964336, - 0.9261775475316414, - 1.9094166404701305, - -1.3985675738191412, - 0.5629692366905709, - -0.6506425691218269, - -0.863990769679816, - 0.04852162794482699, - -0.8309501164110378, - 0.2704568257798388, - -0.05023810944913695, - -0.9075636620415979, - -0.5767713305683327, - 0.755391225825756, - 0.5009171876243808, - 0.09933230542922587, - 0.751387123371789, - -1.6694052811213718, - 0.543360192379935, - -0.6626237589458467, - 0.5705986685931593, - -0.7632591565425169, - -1.804882100664519, - -1.6275424378831627, - 0.048084946661381994, - 0.25972250172148187, - -0.9043166251044086, - 0.6385924587773739, - -1.6615200622689599, - -1.2110161997624567, - 0.047398671316414016, - -0.8604133652839524, - -0.38455554422982535, - 1.0062928092144405, - -0.5768918695231487, - 0.8356921120651418, - 0.5298041779152828, - 1.4415686206579004, - -2.4716445001272893, - -0.7968952554704768, - 0.57707212718054, - -0.2030453860429927, - 0.37114587337130883, - -0.6039851867158206, - 0.08658978747289992, - -0.15567723539207948, - 1.1677820616598074, - 0.2544208433012131, - 0.3376026620752022, - -0.4118769661224674, - -0.48760622407249354, - -0.4325581878196209, - 0.39445214237829684, - -0.42098448082026296, - 0.2897748568964129, - 2.075400798645439, - 0.8711247034316923, - -0.32602353216784113, - 1.2012139221639448, - -0.4080753730215514, - -2.038124535177854, - -1.008086310917404, - -1.8707919210258557, - -0.35151348404130867, - 0.0184183791895517, - 1.6764373122752827, - 0.32692737376416264, - -0.21910052880886424, - 0.8294055811834892, - 0.23561455810856594, - 0.7708651938869668, - 1.143754043206929, - 0.3384964074944141, - -0.4152879139008013, - 0.6327818661062848, - 2.270692857804396, - 0.18186625505849516, - -0.4593608995402441, - -0.8498443694647918, - 0.8303358165442456, - 0.07156623721939247, - -0.4776574467651167, - 0.47897982574639186, - 0.3336621052869483, - 1.0375399442578992, - -0.510016398854747, - -0.26987493529337125, - -0.9787637157823074, - -0.4442932600761116, - 0.3773004930448522, - 0.7569886166453519, - -0.9221653241776254, - 0.8696059201056602, - 1.355637858804951, - 0.41343490322370086, - 1.876795812558066, - -0.773789199103573, - -1.244654703311417, - 1.496044311489183, - 0.6543656563540577, - -0.05558467091045507, - 0.2799686263198203, - -1.1254890472983765, - 2.4457519796168263, - 0.1292211819752275, - 0.10939479460489289, - 0.725766623898692, - 0.4810092317367132, - 0.22388402427913137, - -0.7904744554453119, - 0.4714683571359957, - 1.3454200461549777, - 1.593186626639397, - -0.12578692009964815, - 1.0941915184709485, - -1.6924646297148194, - 1.5295503194606137, - -0.15800789857898942, - -0.42688106994742003, - -1.6548566718657693, - 0.8231705839619146, - 0.07331796718840389, - -0.3357846992901282, - 1.669021525289393, - -0.2595913513636048, - -1.5031429531181062, - -0.24574306408594432, - -0.2727235697476705, - -0.05429486651781221, - 0.6962063648134184, - 1.8489560949453452, - 1.1265650295477574, - -1.1065259087416703, - 2.5733598032498604, - 0.05921843401448826, - 0.013929291912946203, - -0.024125087110003277, - 0.19808476076785494, - -0.14436041192394247, - -0.5736620068802363, - -0.03275327021599839, - -0.543424771133765, - -0.7128457826771644, - 0.10643022769189683, - -0.2549772174208553, - 1.5039929885826886, - -2.650969808393012, - 1.0915068519224618, - 1.246085192497629, - -2.0733902324081495, - -0.34268759408034877, - -0.37144086599579146, - -1.4075116947178212, - -0.7778166875908753, - -1.1105758454658288, - 1.7522704434236227, - 0.9356783931474612, - 1.2715550949941588, - 0.7216720640432351, - -1.1290517712172292, - 0.48937456122791806, - -1.2221278088919454, - 0.7129984301723881, - -0.3748208075495975, - 0.7109599682034915, - 0.44426331148603976, - 1.159329803364248, - -1.0810633275998973, - 0.6159356069442637, - 0.5931012579683838, - -0.3095464393139903, - 0.326133022242118, - -1.251113576385303, - 0.924027019206901, - -0.18490213644298903, - -0.5227230205190395, - 1.0490092258368893, - -0.7043436905427592, - -1.4084612963635597, - 0.6060099513456396, - -1.280429352496283, - 1.7547941819843647, - -2.081929407883722, - 1.6964563682900382, - 0.2110174672026184, - -0.09671311187039239, - -0.5449190868089497, - -0.037634702424848364, - 1.1033018820165215, - 0.11422764866203965, - 0.1503017614618776, - -0.056945623721067457, - 0.3078017688920592, - 0.743264094022715, - 0.17086543812794186, - -0.18398333635267913, - 0.01843393306539316, - -0.5397596803093615, - -0.7783047254023127, - 0.19584525509768155, - -0.978372777615032, - 0.40825275571447184, - -1.7025836042378404, - 1.0291556373256436, - 0.472597482413043, - 0.25602973431387566, - 0.9826909839455139, - 1.6654744444625766, - 1.0143700650181304, - -1.8408742313316453, - -1.2795769667357015, - -0.6248185776956788, - 0.026091050210833786, - 0.517659020469123, - 0.18676676447707832, - -0.7553829323533225, - -1.4066610968482223, - -0.9232332461109043, - -1.3516846056163336, - 2.632382064837391, - 0.4933179008808892, - 0.1848361236948739, - -0.8583577801812136, - 0.7003098794089914, - -0.5756378262377739, - 0.12200981464536144, - 2.5600845382687947, - -0.09605989972464987, - 1.1492733262856758, - 1.77080063563551, - -0.6269670577877674, - 1.8124485579969287, - 0.7077519354554754, - -0.5624667758942676, - 0.632407739055521, - 0.9725544496267299, - 0.6218099622171964, - -1.5702247198904564, - -0.24751863555150475, - 0.620672097550678, - 0.17770100093325383, - -1.3353443587101013, - 0.3801978510059632, - 0.5597904479310398, - 1.0807807255546218, - 0.8339221545489041, - 0.4591800792284367, - -0.07016571145864703, - -1.6609609335159914, - 0.42961821913258585, - 0.20768768716311115, - 0.27157883719537346, - -1.0810565404082624, - 1.0531528533329035, - -0.03955515385665504, - 0.6815006973726244, - 0.028318376130461172, - 0.02975613949574519, - 0.9382838059759977, - -0.5160447282173739, - 0.09612077694098337, - -0.4622752887050425, - -0.4344962274323156, - -0.30917212346863937, - 0.22213377163371284, - -0.4787486216634773, - 1.2557561255735208, - -0.8946073022195039, - -0.18687164416135904, - -0.4397310582741749, - 0.19655477651157463, - 1.0318445394686349, - -1.485560373036972, - 0.26705026586925884, - 0.889630795623437, - 0.08228398927542419, - 1.0654803750653512, - -0.5172884501003722, - 1.40934744018558, - 1.453384477117701, - 1.5795721457307124, - -0.5228600271532683, - -0.42018681709585726, - -0.2817846088605072, - -1.344450511034277, - -0.9186519464841982, - -1.0041407667520679, - -0.7677975651041284, - 0.23421473253652075, - 1.5505004928140769, - -0.998354040738791, - 0.9843223984765838, - -0.21398884422550896, - -0.04946370965243295, - -1.1227220215622986, - 0.3824097461840506, - 0.1664522082130561, - 0.4924512640081491, - 0.2891686439078181, - 2.4553001399108942, - -0.637739984251316, - -0.6231405264247644, - -0.6373871273065177, - 1.1890165311075518, - 1.4205042479898549, - 0.4714155563864041, - 0.6329318177555108, - 0.2029230208512997, - -1.515744114997232, - 1.5475052013300616, - 1.7958776730955217, - -0.6127886904843862, - -0.38770155993598415, - 0.28586539072490497, - 0.334456789987025, - 0.6585442726728304, - 2.0102045387663496, - -1.3793192280145272, - -0.033126972873797095, - 1.7945578635177877, - -0.5176112990361714, - 0.2237879516388985, - -0.016422896072752075, - 1.188393273448084, - 2.5269324258736217, - -0.5308687729203206, - -0.48943944251822213, - 1.044160877069072, - 0.6818914896263114, - 1.8467073257360336, - 0.5839281853259639, - -0.35929209078705954, - 0.5906548306923093, - 1.1087035805829077, - 0.820482181197364, - 0.5072740311072977, - 1.066674689589154, - 1.1692955904456728, - 1.3821589910375272, - 0.6487098875896427, - -0.16711808031685435, - 0.14671368643332283, - 1.2065089665083568, - 0.3686733088729012, - -0.3933388123273607, - 0.028744822934817487, - 1.2784518626072987, - 0.19109906801990334, - 0.04643654815614881, - -1.3598561409799192, - 0.7462535660272207, - 2.16325472330546, - 0.21915032766393897, - 0.24938368371075526, - 1.5774532797634744, - -0.0952955323869521, - 0.27902152577033923, - 0.6078965097165392, - 0.1866091231563581, - -0.44643361455052827, - 0.19408999289830758, - 1.073631749859772, - -1.0265152994110602, - 0.132969674146876, - -0.7001208149391732, - 1.1950466289248425, - -1.5231869047837747, - 0.37721187506452086, - 1.5655240292343404, - -0.0657502610729878, - -0.5551995266931984, - 1.8811570694405901, - -1.448013900416244, - -2.198805956620082, - 0.4400144500533324, - -1.0212328171307132, - 0.7083564472993533, - 0.24380071377119883, - -0.5640786307367284, - -1.2803043986708944, - 0.8724573282801447, - 0.650201177958661, - -0.09917586377938291, - 1.8466369960476658, - -1.0700847663261526, - -1.5255251709247388, - 0.24333944932269183, - -0.24123605785632987, - 0.3520553965142968, - -1.251539424190444, - 1.4437646040732595, - -0.0821511783925688, - 1.1172958315881276, - 0.4567532191537839, - 0.5697672802322039, - 0.44770856001731496, - 0.6427227598675439, - 1.3291525301324314, - 0.19652116970147013, - 0.7090037575885123, - -0.08973569428722672, - 1.4401172154494728, - -0.6763923020592697, - -0.04015795064434341, - -1.4307751021180481, - 0.12810441491078928, - -0.6810516574748808, - 0.8406435489887241, - -0.6526239793023909, - -1.889540730945531, - 0.7604146561442974, - 0.7858001586508322, - 0.42545756178496474, - -0.966976143129213, - -0.047711356141979855, - -0.0036025390905684044, - 1.5033983017671506, - -0.22096417382966393, - 0.20838280794755248, - -2.0417348684242906, - -1.0016200098949155, - -0.2811002928859549, - 1.7976865268495226, - 0.6408428612670098, - -0.5711789897827968, - 0.5725827813561586 + 0.47143516373249306, + -1.1909756947064645, + 0.9919460223426778, + -1.5469055532292402, + -0.6559693441389339, + -0.8971567844396987, + -1.4019732815008439, + -0.10091819994891389, + -0.14461950836938436, + -0.785435211763197, + 0.9849198419098969, + 0.270835848826804, + -0.3447660142546443, + 0.5665336963535724, + -1.2811082751440426, + -1.710715324029529, + -0.20393286610125122, + 0.3937105991386652, + -0.4740208901256851, + -0.05669571649092953, + -0.9161988612665409, + -0.8596682999817407, + -0.22301898188247601, + -0.014752111804594866, + -1.4257947334380214, + -0.5928860038389254, + -0.31956139984023146, + -0.5246273459284702, + 0.7879646831376144, + -0.387886231967176, + -0.08710696996399898, + 1.8638010621325043, + -1.7122739244712557, + -1.2689942560733918, + -0.5040427180819637, + -0.37443660019278063, + -1.5533423394310608, + -0.09443480774144415, + -0.06124629986631457, + -0.7310333425852061, + -0.1708010306976224, + 0.26697323153986774, + -0.36015657086902797, + -1.3379684019509706, + -1.154600965389669, + -1.2680690503770815, + -0.6112816747957622, + -1.3127127065922315, + 1.5727427457558043, + -0.10465157484776595, + -0.7558621756229088, + -0.8811117326479355, + -0.4634193992174632, + -0.7485279533390595, + -0.2598436943633885, + -0.47001481339778667, + -1.5601488888852328, + -0.5407998076498752, + -0.5882267282885189, + 0.26172483967990484, + -0.41327907241887124, + -1.7193166679275491, + -0.5638902404112554, + -0.24672080681888428, + -0.045370411959291965, + -0.704492925529761, + -0.2001718506206763, + -0.48131023935727413, + -0.4256720265205931, + -0.40064420205997625, + -0.42446671286333926, + -1.3718378731166938, + 1.470996579505006, + -0.1665595772769085, + -1.1051915914797859, + 0.029561951937617355, + -0.3014922439465465, + -0.45255766631820826, + -0.3937331661815619, + -0.2048613320814621, + -2.200564435744119, + -0.9984064955184256, + 0.3096639858949537, + 1.850810168972202, + -0.7147453741565917, + 0.20145146638225445, + 1.7430524278808484, + -0.356409207238252, + -0.12139461101379515, + 0.1020797487098907, + -0.2779593857816089, + -0.052165291629840356, + -0.7274143817732619, + -0.5553548562130987, + -0.5019177788520144, + -0.2453604968501647, + -2.5318833133900305, + -0.16371119657423003, + -1.1805528861977703, + -0.8118350520747238, + -2.251213065289845, + -0.14550836017250823, + -0.061147655522904056, + -0.866260054447336, + -1.5237107863092993, + -0.5437403904555086, + -0.11601728545379246, + -0.6908582143577912, + -0.05546876687944298, + -0.24268793363602895, + -0.6289509748030468, + -0.2627338282699097, + -1.9943356434051311, + -0.6587570839399224, + 0.7084741210544878, + 0.4922331098465613, + -0.11489386424404562, + 0.19091532051019103, + -1.8438652086995353, + -0.7578505995039082, + -1.59249315299401, + -0.23102356637828622, + -1.47256655193283, + -0.015838160674877966, + -1.2858104335854346, + 0.7007847957258879, + 0.6697599912207146, + -0.7119035172923535, + -1.8721836112668646, + -0.5562800612192723, + 0.2721639657384405 ], "xaxis": "x", "y": [ - 2.1315329707498756, - 10.1042906805941, - 3.3376770604434096, - 7.767124195272413, - 4.20974049203863, - 8.825699725139689, - 0.7481591385679691, - 4.1128433169824365, - 5.353331985630865, - 9.491430242004125, - 3.734004808370225, - 19.22182141446181, - 1.1209894441778434, - 1.9720937426268081, - 6.24830732690344, - 1.9372139815716007, - 11.557796064985189, - 4.82010669534939, - 5.816790960283385, - 4.936439468036899, - 6.433240000041881, - 3.333810324078476, - 7.412729614694802, - 9.289722770194079, - 4.441113900423861, - 4.46380477347803, - 0.6455892358611679, - 9.414982866415002, - 11.745848005819507, - 0.49610928527468745, - 3.2220302699771657, - 2.4006011335875828, - 5.163316458119373, - 6.415044673082279, - 8.391790673613986, - 2.4564095455635835, - 7.319450585831383, - 11.606308748575547, - 18.49399734846198, - 4.992570932665493, - 1.467711635507806, - 2.4707465154292434, - 10.402939953767364, - 3.979852347059092, - 12.446147009792307, - 2.324549752626811, - 6.2894643691879955, - 8.882718432316555, - 0.857904007273836, - 2.447186683872495, - 20.66341896086477, - 7.5533252863763956, - 7.018174078288615, - 0.9357156158889749, - 8.040319165044872, - 2.5845655723331262, - 0.16920539181221195, - 0.6185619513651668, - 2.1494926337664304, - 4.562255000224275, - 2.7184291960342915, - 6.108978259340933, - 10.140475605645056, - 7.401531100522695, - 5.640084316501842, - 7.840952968279986, - 0.6953135686971497, - 3.5101677336554538, - 2.436535977334167, - -0.2023622824522054, - 2.743388211356075, - 8.301152100586544, - 3.698336291772635, - 9.780577080892737, - 8.971683135381175, - 0.6183924355825982, - 9.695049328101154, - 2.495491769978212, - 3.6601487948925118, - 2.6058994457584688, - 6.214447433159473, - 3.3646969687532056, - 0.16190647345125062, - 11.690108377884076, - 1.9344216148461812, - 11.855325061722992, - 2.835767133239384, - 5.728756415798844, - 4.540623317667709, - 5.39560451014444, - 1.6514489549231508, - 9.361676779831594, - 2.9379692479846318, - 1.9046269186816902, - 9.425517531159299, - -0.10521560899271043, - 2.547077756202996, - 10.370143028347302, - 17.0833174035668, - 4.948184205680325, - 3.8771977188655473, - 6.747501130764894, - 1.2880687838570863, - 8.26102961975762, - 0.45539124774730894, - 15.70558111975564, - 10.165108550251254, - 3.9263253615199267, - 10.44991370265823, - 3.5719601116357955, - 1.6130623530455521, - 9.879740840545962, - 8.419171864553423, - 6.585601524433072, - 3.355173393466349, - 0.7179161063457344, - 3.8910293090041606, - 16.583028502105172, - -0.07290139915820362, - 4.095558006274662, - 11.256854968059178, - 12.15394583676655, - 0.6937345905224344, - 1.4542309542129006, - 11.67560310448758, - 4.010683176834139, - 1.0746839428581927, - 5.380738331572772, - 0.179223203564942, - 7.100881196152617, - 2.9841599788421855, - 3.8923436288171525, - 1.1508329887233149, - 11.177571959298447, - 11.383218174775342, - 1.4822430277021466, - 4.8796075955833835, - 1.1766678151414163, - 0.5223850194716981, - 7.812634612013321, - 10.641029747336491, - 10.629678264549034, - 1.5506860258251056, - 6.634338007209781, - 1.6172716862858332, - 3.3084111889169994, - 3.8225384869477117, - 3.2181525178476242, - 9.688698248809622, - 1.3116448632489295, - 3.8863113371259406, - 10.805669683789443, - 1.3964934007804224, - 3.2800128692883628, - 3.1846391000756857, - 10.695429298642578, - 10.260538720858044, - 2.949958256339423, - 7.540022705566691, - 7.678855529724721, - 1.1527314494379268, - 5.943352379621976, - 11.551630376432174, - 8.3458031736762, - 5.887075267089595, - 3.5117176619480475, - 15.862252242814584, - 4.984611047058473, - 5.767512050794933, - 7.774453798507568, - 11.482890588252625, - 3.8175035271584896, - 2.0268771660254226, - 4.6490582097789, - 5.257826041964947, - 8.129020265816388, - 14.986875621160854, - 6.922582683560283, - 1.1653790943806284, - 4.165502646998374, - -1.8956593067123448, - 2.093985760729416, - 1.697114967540403, - 6.252821237159777, - 2.747007556373036, - 3.984922545466563, - 3.1047955744011966, - 18.49063350079053, - 0.07521768037949655, - 2.0095782112165725, - 4.266382856770973, - 4.042864949432732, - 3.038629780857546, - 7.590612944393139, - 8.194834912534684, - 3.2131476612068988, - 2.2215644054189174, - 1.8312833601971195, - 4.508484870146033, - 3.376999774476586, - 10.284848707710262, - -0.21115656764338744, - 5.9333496168305055, - 4.052521960469138, - 8.398002720675747, - 0.8250147782077821, - 7.499740475948032, - 9.995284378883163, - 8.499434814511643, - 10.26899685904756, - 9.247838740810938, - 1.1480394972621395, - 3.8126959290713813, - 6.635898714469415, - 2.4466197841546937, - 1.6067198965643417, - 10.253468884792, - 1.4395963925845616, - 1.5021708284059163, - 3.4742827655830775, - 3.372127918876701, - 2.613768873063521, - 14.20294480605421, - 9.608543935218586, - 5.554760853370753, - 2.5641174662528963, - 2.181152478168242, - 5.7545398697182435, - 8.257423340293869, - 2.3822255468743685, - 2.818539975013469, - 7.287167660479172, - 4.089857223659319, - 9.251431469744308, - 9.381147655893232, - 6.312500447045307, - 8.439120872956321, - 9.311059176415537, - 11.114319085950685, - 5.509219087534071, - 3.1863095083950803, - 6.810727936881929, - 3.2897871368232043, - 7.504518978570107, - 1.0559006941062314, - 2.9138427989970914, - 2.2450940978353717, - 3.98523235638174, - 1.8908158073594656, - 2.26843289183069, - 1.7707473664381386, - 12.925201194708109, - 2.375424129982417, - 4.485571340436259, - 4.559847930572106, - 12.086912144333144, - 5.701325415891191, - 6.849392435651532, - 1.4451798332463686, - 5.046520780749131, - 9.996279650953115, - 3.378382187645317, - 10.499967443850583, - 8.27586819775815, - 13.451913885465364, - 4.6519681588390585, - 5.414425523736968, - 2.4453863318307465, - 2.289560961254299, - 1.0786689868742318, - 3.17518004565509, - 10.660132568416012, - 6.012996884384393, - 3.666740148539145, - 12.253347417655641, - 5.856761811694221, - 4.898577346306816, - 7.826404734778256, - 8.97592619232773, - 0.83522967339717, - 3.1478380983232426, - 5.9893910416672105, - 1.0301256344165093, - 9.812055248429134, - 2.1631727023884055, - 0.7012947549049051, - 2.2807440727810087, - 9.200554769250326, - 2.8777095496338707, - 3.321430491347079, - 3.5396243352582575, - 0.9498337342355022, - 8.125085932829787, - 5.078411778327921, - 11.805154973782942, - 7.644037683454063, - 4.214157582480626, - 13.57471027517796, - 3.227813526987917, - 0.4734362639865842, - 4.209158923648033, - 8.594919806147834, - 1.8950854683377898, - 8.273768587290384, - 7.042883019888062, - 7.627329481529828, - 2.678312038947865, - 2.30979106984728, - 6.279430040654341, - 1.179514412109931, - 2.8576360333014215, - 9.286549565264568, - 6.4945248413794845, - 1.3859158480677314, - 2.3275920490961854, - 5.767573515014574, - 3.7506312572570675, - 1.8611646187359694, - 10.212869818117555, - 2.0697294814897242, - 1.441404312485799, - 9.864553840551586, - 0.36125477879677126, - 6.437503714512308, - 13.433645420156413, - 11.558320613040664, - 8.104258807784657, - 3.683800141920484, - 9.346558165443854, - 1.1488593990287084, - 15.336113654335783, - 8.742170519056472, - 7.7950428448355495, - 6.481454238265168, - 3.182703497253395, - 12.527846071882811, - 8.221105997044413, - 4.393459525076071, - 2.562532986064124, - 13.187159597816699, - 5.717638418925579, - 8.781178798807002, - 4.928918555552588, - 10.603249673694698, - 5.072259981144448, - 8.505254112725716, - 3.2577706189195226, - 2.1755560735466304, - 3.1373996095846595, - 9.993369457421977, - 14.137041021251411, - 3.0223287320931855, - 5.028053326716646, - 5.055439186487435, - 6.713707181524353, - 1.8034782530713143, - 1.5961170573645533, - 3.56840838135132, - 16.285666127796514, - 0.13279900178749257, - 3.0736395780402708, - 2.920721296852652, - 0.15201500920458605, - 9.924536594732846, - 5.339198033172685, - 10.002255146482415, - 1.4954878511372058, - 5.772096833019086, - 0.32815842160244874, - 1.8862741890381098, - 6.039578914144629, - 2.7108024218677156, - 0.7287727343342003, - 3.687378622941323, - 3.346178117658042, - 1.948384176346833, - 5.203945721396098, - 4.218066681557937, - 8.18693830408368, - 4.275395284430743, - 10.609347407575518, - 3.758993624607027, - 11.20175638993969, - 10.71541992995938, - 3.238094741999864, - 8.689248760976493, - 0.3381790137322365, - 3.7057475649489575, - 7.528369810863078, - 5.966353880413951, - 1.3564627754104466, - 2.5647156561011917, - 5.673749739306935, - 4.204034610650169, - 2.4352065127928624, - 3.3432442539973195, - 9.71074983031172, - 4.557018092529859, - 9.848986399951986, - 6.954777829163438, - 2.76771836341023, - 0.4707151625732189, - 1.7120647690765098, - 8.857878161767035, - 10.312343392753021, - 5.175344770921929, - 1.5378009481349695, - 0.41576963106511766, - 17.67219702866147, - 18.2942540725213, - 1.2744920642484556, - 0.5403844796193874, - 3.3602581922121884, - 3.577032748745671, - 6.3977378643993985, - 7.721438045632866, - 2.606247664100731, - 8.900380424673967, - 0.7858417594915437, - 1.714476689271548, - 3.7984664567673025, - 1.8765914966556243, - 0.9493116253535325, - 15.97536241219612, - 12.122878627803102, - 18.205129371126603, - 10.7720662198722, - 0.035682017511550757, - 10.747751324261445, - 7.429029407672949, - 14.912113309723399, - 11.461948489000513, - 1.5430625859292224, - 4.24877735198173, - 7.6017247723226085, - 3.891406677200292, - 2.6221905275316195, - 3.0441685170649997, - 17.689455193858418, - 2.2563246899704357, - 15.561566983734414, - 3.2472739807087194, - 1.4424887305932574, - 7.567256309752906, - 2.6638691109505546, - 4.98937736257439, - 8.055768782176767, - 2.9304105594386973, - 5.695184025830844, - 11.658362336370525, - 2.276567602703758, - 1.5440083928142925, - 4.910497743060022, - 9.437400230738238, - 3.5533164633405154, - 4.253746837301203, - 4.679131109915834, - 4.787410781944382, - 10.07225101193799, - 0.4896497753620144, - 4.041051760850429, - 9.199333451437633, - 6.049063673908385, - 3.5380672836712668, - 17.3501756288875, - 0.3704513792405704, - 2.5734618968045475, - 4.414451845562086, - 9.647291667337408, - 1.0668413861439257, - 4.3005719384046905, - 0.9016493835817596, - 11.484373464233368, - 7.966632540366974, - 7.485218190712658, - 3.2916061223331776, - 9.097221166821688, - 7.0236140112276075, - 8.361690007455445, - 3.1942601281344674, - 3.9786275167740413, - 7.334674184175711, - 7.608729224468053, - 4.790858808540129, - 9.992555806565914, - 5.694034084347684, - 3.623002102522247, - 3.9338624545166687, - 4.650715741885662, - 2.5952781722643943, - 4.598742228256017, - 8.99644827443137, - 1.0259593417054744, - 0.903881514393115, - 2.015984855454603, - 3.4682813300473905, - 8.903317816428128, - 2.825454795082282, - 0.7180558258955793, - 10.451390235445258, - 8.977881995077347, - 2.333681002415545, - -0.5612011685691527, - 0.9529046956183496, - 10.208149165128203, - 9.317865331378625, - 1.2806207733069654, - 10.707794186867956, - 3.112957888982704, - 0.9973423297502046, - 13.12212737619498, - 9.23479312102998, - 5.813100223757802, - 2.732455267888832, - 2.911132954714122, - 7.975862236479633, - 5.270786789765304, - 11.843685565471757, - 2.924530657124003, - 6.12995661035467, - 3.2507894624967104, - 2.225507657701971, - 1.9311208435599505, - 6.867505728102446, - 1.7738957961206827, - 1.6751235864821505, - 9.409456739377488, - 9.873806254567654, - 7.762737823232642, - 3.612499617777316, - -0.37720636798744966, - 7.476265254210922, - 5.627234572872154, - 3.6405360758007754, - 2.643080378516415, - 1.5128381297378348, - 11.457913682438097, - 2.199991641756983, - 7.003384050152647, - 1.909785634098101, - 9.351816778709749, - 0.3634373369124242, - 2.601698065218799, - 7.623795045571737, - 8.569947511361946, - 12.062203444399037, - 3.7511683595061713, - 9.052018101176614, - 2.8663517202569726, - 4.409646665035052, - 1.5597488142143623, - 3.6317746330802434, - 5.227383072244778, - 1.9165114402103245, - 2.1149277728547675, - 9.41809317592197, - 2.5826115596699974, - 3.738647173883102, - 1.3278337233353543, - 1.8860677865787134, - 2.867946078811882, - 2.5503144297881106, - 4.431706524679094, - 2.4805501643173344, - 4.081029353260243, - 7.397439927606593, - 4.225895894218287, - 9.155256333689453, - 3.9014464232116848, - 7.1727363393242385, - 5.433622799801779, - 10.690613772290403, - 3.269758397089347, - 8.008239297350961, - 0.3242531342459827, - 0.9090846593811345, - 0.8560221512054251, - 3.984866306116848, - 3.4470888392697114, - 4.893788703425678, - 4.140566803013013, - 6.843050898538448, - 0.890293978639035, - 2.450408765726328, - 6.856331384339364, - 8.52619462926133, - 5.894008077399048, - 1.947913278028056, - 0.07325103585345867, - 6.450414778728382, - 4.708603117434036, - 3.798103152703199, - 8.139719937627595, - 1.4359646648590099, - 4.062259402759353, - 5.207482267025496, - 2.3951108901876825, - 2.2596923527348753, - 6.799779922419049, - 2.4125491443463307, - 10.136664129270939, - 15.732473842056278, - 7.062523198503255, - 2.6768491835032, - 12.137570597326324, - 16.51408480643509, - 2.3874300185476756, - 2.3680985267930246, - 2.038573705341423, - 3.5572569910085288, - 5.004488160490057, - 5.715150198716844, - 10.94823781968214, - 3.684890545151571, - 13.379637036538046, - 10.280410257625999, - 12.86283064800677, - 3.5746511488610855, - 8.417421369719067, - 2.8656980416874878, - 2.599544256017886, - 6.409149893354449, - 4.327486303162451, - 14.443109269806254, - 0.8401981539574312, - 7.2614765199286815, - 3.326674209951898, - 1.5662749685982906, - 10.989663463088544, - 8.467889659289984, - 1.8105097926902487, - 14.741330533081028, - 15.08675973075185, - 5.1631116750875305, - 9.343661006938557, - 14.126360366511257, - 1.1903869499063353, - 0.25115823899788037, - 1.0720114056197707, - 11.484363268268915, - 8.94184778379353, - 0.9604537983261285, - 2.2390554154390454, - 4.417272994284348, - 1.4211439578367604, - 3.2084278071834387, - 2.1002647215789483, - 2.478117428845026, - 7.843235818802062, - 4.482609787886799, - 14.742011015515583, - 2.4644948975357543, - 4.200182925056385, - 1.8547623673745726, - 2.5569793387799873, - 8.268738146118627, - 0.17075516241577054, - 1.396457326265756, - -0.8970479734796357, - 9.982459249510216, - 9.6414354354547, - 3.122639019004143, - 5.208129305459214, - 3.9995262966163194, - 4.231294939328255, - 7.811901950496888, - 1.0384176311229965, - 8.090803240651615, - 5.517392574032914, - 2.720588981637568, - 12.810847900217274, - 3.2207719681897062, - 1.9527694504544508, - 6.975683242729285, - 2.2188489754209817, - 1.216644984420546, - 5.962908178484416, - 2.031201552091179, - 3.296266063714319, - 4.466515861324439, - 2.8497814258160656, - 8.192964901163, - 3.5992640315712263, - 6.028692328076521, - 2.1798547277503113, - 15.946078372524447, - 1.808998384878971, - 11.270067835171865, - 6.871371912617845, - 10.7543365444907, - 3.5851608468405782, - 9.886737882436176, - 1.6577795724854172, - 10.069873531748522, - 6.838337781510158, - 2.8140106397303914, - 9.796798438371347, - 3.419671289176756, - 8.120498029715673, - 5.684517665809659, - 3.276912806764646, - 5.150771578281058, - 11.536778020411017, - 1.1283312841804798, - 0.6245367259271846, - 5.2922772679270125, - 6.618234052355605, - 9.995383628078763, - 6.667161915203483, - 2.7663952915035583, - 7.088794017436608, - 0.8062377223694329, - 10.242193930931139, - 4.360002101322867, - 1.8314555360715414, - 19.79728717826931, - 8.221699603028048, - 2.8952225584161444, - 1.756730298878706, - 1.5489533869547458, - 6.554555046928207, - 2.9506445106657284, - 1.9973513226644182, - 3.9146292154471363, - 6.655009309637468, - 7.306798402879964, - 6.636471794024103, - 2.260282959510227, - 10.711151208122779, - 8.886751869073523, - 1.2105875042335548, - 5.977174263502021, - 3.335659958519535, - 4.9740231500169205, - 5.696409647756136, - 1.0705006064863138, - 12.304050151594982, - 12.479961038493842, - 2.7577369570593313, - 1.5583724829086052, - 5.267925637149455, - 8.205193667618506, - 6.64127892567596, - 2.584589230653057, - 19.220787565376302, - 11.747177721006013, - 1.4859153087462587, - 11.913345910554039, - 3.094530550283568, - 8.548416778032148, - 0.8210502191076455, - -1.6565034675323356, - 7.820861292021009, - 1.9990073969609923, - 3.4066291519265084, - 2.1271109392217773, - 11.528410984296546, - 11.104263573155796, - 3.3055149993536586, - 2.2723724206920943, - 4.902928411074227, - 2.32253510026496, - 9.505170913193153, - 1.676351819404714, - 5.913072392765526, - 4.240607888229912, - 3.549793526789535, - 10.801997033393413, - 5.190377999146584, - 3.0969532739309678, - 0.3993222635384932, - 3.6983355632779618, - 3.4469460988229064, - -0.12939358371016055, - 4.275655223374612, - 2.0051290473754992, - 5.5659640831102575, - 5.675153024575338, - 5.9090892410023175, - 1.5297744205662447, - 11.434182971375352, - 20.61617591266843, - 5.980813130896052, - 0.9834804292692843, - 0.2894674597174777, - 4.629916875604893, - 11.392634098208406, - 5.166479641650803, - 9.456054689668147, - 9.935060602525517, - 6.707682575146893, - 10.484830696572319, - 4.311981700299243, - 1.4336817995954865, - 2.727290679463529, - 1.346888081763368, - 3.302468230190364, - 5.418514383580711, - 2.091256797952634, - 6.37549435871336, - 1.5095874110710257, - 2.649932550296708, - 9.284430309229744, - 6.72998362612404, - 1.9431963436581852, - 1.6454232259011867, - 6.4265469265263135, - 1.9958889934089596, - 9.265758554728484, - 9.656119959668334, - 1.1918107314354887, - 1.4877532763895729, - 3.3125553134392223, - 10.799943755267028, - 2.3925614492070517, - 5.368437067503507, - 1.1531378556870835, - 6.050692810470485, - 8.844951680421557, - 0.7575948792915393, - 1.9941981378277107, - 10.241776461541852, - 15.16722724171395, - 3.679959347327524, - 0.9821083549665657, - 1.865779046900708, - 2.0294581789518995, - 4.316327316833101, - 5.685763930151271, - 2.427878468800839, - 5.032176584239583, - 8.663123275956933, - 2.072247638121533, - 2.472017720592417, - 1.2025334601292297, - 4.723392071795626, - 7.760678492015194, - 7.65936297015509, - 4.512297107524395, - 1.3890972245536044, - 2.2268083580850937, - 8.069141527274184, - 9.890735154579824, - 10.881249015037312, - 5.864617047313935, - 5.162651574559774, - 14.697940107047362, - 1.2293290998461295, - 3.0813246011646913, - 4.170255155954141, - 2.992416291482686, - 1.7918443168066227, - 6.144238251062534 + -0.1835525489058031, + 1.3486218401039956, + 0.4411676938396249, + 0.4585860711409128, + -0.3899856239234457, + 0.8914961577507419, + -0.41651759242783837, + 0.08806035597773143, + 1.7908939267943453, + -0.14581384197929406, + -0.5136153229766942, + -0.14978357398012626, + 2.440691459852534, + 0.13616926531694526, + 0.20282808173671818, + 0.821493754710078, + -0.2992694879926443, + -0.3409880513396322, + 1.3364200530683075, + 1.3210536706273739, + -0.07502604670082638, + 2.250307023533512, + -0.030953077101010695, + 0.3624775790859004, + 0.6153874717064401, + 0.06209084779627111, + 0.3231021368979874, + 0.22497260167637093, + 0.4916082218068387, + 0.7039466740923791, + 0.1923276664283496, + 0.27940335629258184, + 0.21645849306063691, + 1.0004089437269108, + 0.44487698164791045, + 0.11936442692347213, + 0.6787831612420692, + 0.6789358057649202, + 1.618984651084493, + -0.5967617898546517, + 1.6520725885832626, + 0.6200601403132633, + 0.7331132023276788, + 1.0359179974705544, + 1.7590213928451695, + 1.0450913975811487, + 0.1183953918038539, + 1.0360663945550246, + 1.2510063032700756, + 1.9233745949318444, + 0.6211616233500779, + 0.37517543140685394, + -0.12756523321898525, + 0.5226603330804618, + 2.2899617239460897, + 1.7029680839076393, + 2.067446896541806, + 0.8433810912004589, + 0.5142775354371905, + -0.17912038210257414, + -0.618778332438777, + 1.0481937278251565, + 1.7294988055854636, + 1.246765100289748, + 1.0349323282462257, + 2.250865405991169, + 0.14744314604060216, + -0.40229619520916193, + 2.24932445591205, + 0.7646496195873962, + 1.1014840130123558, + 0.8500635875769066, + 0.6782697328395315, + -0.1542287184063889, + 1.4954795451515095, + 0.008527384457970084, + 0.6213348206282769, + 0.5659620963183319, + 0.9200400636616757, + 0.6306143094905791, + 1.0932824737816762, + 2.1131210563570484, + -0.49198150408242947, + 0.6459814131494103, + 0.026152308571340682, + 0.5245791129371666, + 0.16988689972629495, + 1.1187963156683463, + 1.2932899904926258, + 0.5085681260628232, + 1.0725604118217094, + 0.0826444359382778, + 0.2538609094114361, + 1.1150603903826617, + 0.5233138627951399, + 0.014215309483299951, + 1.4552681482097538, + -0.20374752217212186, + 0.2674051948706437, + -0.30886086104336674, + 1.2340808958358562, + -0.09534686814461035, + 2.9850848814314466, + -0.3610901011561299, + 0.623055074210312, + 0.8928873362688777, + 0.3147848495708494, + 1.4150212059382248, + 0.3143949242786218, + 2.0022066056655534, + 0.2893192391838322, + 0.7525531876775715, + 0.38883834760001845, + 2.9839938774044934, + 0.1486403718262942, + 0.4219006710464874, + 1.0273216027632337, + -0.14896148702487677, + 0.4578952696239318, + 2.5636303602200265, + 1.2361366208392117, + -0.07875447360853444, + 1.4687740141322216, + 0.3284413774117222, + 0.6144847987536664, + -0.12478320649983757, + 1.0844978616963237, + 2.149740301840303, + 0.05084904692638065, + 0.23193727300348288, + 0.2787166720903948 ], "yaxis": "y" }, { - "hovertemplate": "Treatment=False
Score=%{x}
Outcome=%{y}", - "legendgroup": "False", + "hovertemplate": "Treatment=True
Score=%{x}
Outcome=%{y}", + "legendgroup": "True", "marker": { "color": "#EF553B", "symbol": "circle" }, "mode": "markers", - "name": "False", + "name": "True", "orientation": "v", "showlegend": true, "type": "scatter", "x": [ - -0.46572975357025687, - -0.2916937497932768, - -0.013497224737933921, - -1.2208436499710222, - -1.3281860488984305, - -0.4606387709597875, - -0.18565897666381712, - -1.1962066240806708, - -0.6451197546051243, - 0.36139560550841393, - -0.21967188783751193, - 0.9686449905328892, - -0.39210815313215763, - -1.4153707420504142, - -0.3427145165267695, - 2.463242112485286, - -0.9093874547947389, - -0.7832532923362371, - -0.3220615162056756, - -0.9746816702273214, - -0.7537361643574896, - -0.0771017094141042, - -0.8571575564162826, - -0.4465149520670211, - -1.245738778711988, - 0.173180925851182, - -0.883857436201133, - 0.3577873603482833, - -1.377669367957091, - 0.570890510693167, - -0.23681860674000887, - -0.48536354782910346, - -1.6127158711896517, - -2.025142586657607, - -1.2002964070557762, - -0.6533292325737119, - -0.7076694656187807, - 0.010233061019587049, - -0.20812225035727522, - 0.35701548596504734, - -0.6929095952606542, - -1.006017381499702, - -1.2141886127877322, - -0.8972543714858315, - -0.32138584165299344, - -0.8222203955664315, - -0.4710383056183228, - -1.4480843414973241, - -0.01901620790268883, - -1.0025293646378088, - -0.40122047188583626, - 0.09767609854883172, - -0.7673475628880495, - -0.8397218421807761, - -0.5993926454440222, - -0.525755021680761, - -0.759132661553698, - 1.8761708392158862, - -0.5769036556624031, - -0.898414671348358, - 1.2378163119734618, - -0.26940683444455776, - -0.05554769889661878, - -1.3044695005048532, - -1.0592135218889516, - -0.5302576183724408, - -0.553649305347182, - 1.9647251329163893, - -0.11232804969082982, - -0.22096959953322298, - 0.3112501545435361, - -1.4222537095976742, - -0.48712538376469605, - -0.5923939242388692, - -0.23894804686640975, - -0.977555244798551, - -0.06607979864731657, - -0.6518361078021592, - -1.129706854657618, - -2.211135309007885, - -1.4785862457798415, - 0.24822058630033608, - -0.8560838259088672, - -1.7787202489042786, - 1.8820244964750337, - -0.5112156764311852, - -0.9896048202585809, - 0.055724912288694604, - -1.0121043752601675, - -1.2899608997410539, - -1.295078772063616, - -2.6968866429415717, - -0.23093453020867796, - -0.26888869055483056, - -0.5468589412403921, - -0.5245202662797737, - -0.24032539815813503, - -0.3609661658190799, - -1.5566291735239037, - 0.39913611435207086, - -0.36361221221385587, - -1.7101683926566256, - -1.348185422105713, - 0.34758170536167105, - -0.7257438131534656, - -0.6115178029919482, - -0.9758732529773327, - 1.0536417966078395, - -0.949398888831943, - -0.7031764251258874, - -0.0349884904969617, - -0.7271371758248686, - -0.07443342910004629, - 0.6105857452838231, - -1.2767485758203094, - 1.4469778843537329, - 2.2988981236192503, - -0.36283856043965906, - -0.4455025214007718, - -0.03468488738678118, - 0.6748194921666038, - -0.5309969550018176, - -0.5554771191602547, - -0.5707462937494763, - -0.8323555731042287, - -0.5522230442809712, - -0.1769472274940494, - -0.7982972445384537, - -0.7309300399419191, - -0.8169356709872361, - 0.6454841811410754, - -0.30777823495300083, - -0.5589218472715883, - -0.5020542243526112, - -0.6919080698812444, - -0.045586016355497805, - 0.34272534637770413, - 1.8009404329108156, - -0.4461834332147797, - -0.4523063192490767, - -2.4238793266289567, - -1.5839028234857233, - -1.1583646891925428, - 0.8773622905756714, - 0.02688583899453078, - -0.24717738252059693, - -0.6819842479977986 + 1.4327069684260973, + -0.3126518960917129, + -0.7205887333650116, + 0.8871629403077386, + 0.8595884137174165, + -0.6365235044173491, + 0.015696372114428918, + -2.2426849541854055, + 1.150035724719818, + 0.9533241281124304, + -2.0212548201949705, + -0.334077365808097, + 0.002118364683486495, + 0.405453411570191, + 0.2890919409800353, + 1.3211581921293856, + -0.2026463246291819, + 0.19342137647035826, + 0.5534389109567419, + 1.3181515541801367, + -0.4693052847058996, + 0.6755540851223808, + -1.8170272265901968, + -0.1831085401789987, + 1.0589691875711504, + -0.3978402281999914, + 0.3374376536139724, + 1.0475785728927218, + 1.0459382556276653, + 0.8637172916848387, + -0.12209157484767426, + 0.12471295376821585, + -0.32279480560829565, + 0.8416747129961416, + 2.390960515463033, + 0.07619958783723642, + -0.5664459304649568, + 0.036141936684072715, + -2.0749776006900293, + 0.24779219974854666, + -0.1367948332613474, + 0.018289191349219306, + 0.7554139823981354, + 0.2152685809694434, + 0.841008794931391, + -1.4458100770443063, + -0.5482424491868549, + 0.35402033219923795, + -0.03551302527814021, + 0.5657383060625951, + 1.5456588046255575, + -0.9742363337673154, + -0.07034487710410242, + 0.30796885521603423, + -0.20849876310587975, + 1.0338007325554992, + -2.4004536338122957, + 2.0306036208387996, + -1.1426312890227635, + 0.21188338677770105, + 0.7047206243171088, + 0.4620597371620487, + 0.7042282254621743, + 0.5235079678938094, + -0.9262543135302259, + 2.0078429507780005, + 0.2269625418708953, + -1.1526591092509524, + 0.6319794458091295, + 0.0395126866933667, + 0.46439232505089606, + -3.5635166606247353, + 1.3211056154702059, + 0.15263055220453448, + 0.16452954293239852, + -0.4300956908764876, + 0.7673687357524115, + 1.3919861934464073, + 0.07984231300862901, + -0.3999645806965225, + -1.0278505586819058, + -0.5847182112607883, + 0.8165939265478418, + -0.08194705182666534, + 0.5282881452973941, + -1.0689887834801322, + -0.5118813091268151, + 0.2912053597430635, + 0.503591759111203, + 0.2852956847818571, + 0.48428811274975, + 1.3634815124261457, + -0.781105283625392, + -0.4680176663374855, + 1.2245743551261743, + 0.8754755042743244, + -0.4507651031362744, + 0.7491638059190651, + -0.18217541166573417, + 0.6806560043814565, + -1.8184989903916142, + 0.047071635325711084, + 0.3948442093272043, + -0.24843205438084665, + -0.6177066479970167, + -0.682883996449334, + 0.4362576043409168, + -1.703012774113238, + -0.47932400357549726, + -0.2990162929660804, + 0.6941032876787643, + 0.6786296737098565, + 0.2395559950038969, + 0.15122662929444983, + 0.8161272333600409, + 1.8935344675962007, + 0.6396327631937027, + -0.9620288319051914, + -2.0852656421201097, + 1.9302467674655757, + -1.7353488744703927, + 1.2103837049045143, + 0.7974354194278735, + -0.379810784047379, + 0.7025622240016004, + -0.850346271655115, + 1.1768124501049289, + -0.524336102632456, + 0.7009077309156047, + 0.9841880707224154, + -0.12172840866682022, + 2.365768628840039, + 0.4961429262475947, + 0.7965948666649523, + 1.3577972581070583, + -0.8048337241667037, + -2.12362024909293, + -0.33350244043324745, + -0.886719352485378, + 0.33419793089900884, + 0.5367838249027502, + -0.7438303679362013, + -0.3202038822408791, + 0.22598548673375538, + 0.6287758265382943, + 0.18649434877307466, + 0.9524783451091219, + 0.9881375825933089, + -0.07260831396267549, + -0.5506029235634193, + -0.9381526140931042, + -1.2390715625947926, + 0.13968327403129469, + 2.123691888593553, + 0.12227343425882888, + -1.4094317399227687, + 1.4229859527722433, + -2.14785503764361, + -1.347532513457755, + 0.3635645568066484, + 1.2723950785462097, + -1.4495666088633876, + -1.1955237416669708, + -0.591862973147249, + -0.4145048435321895, + 0.2093947875359238, + -1.4731164134656474, + -0.896580615301871, + 1.1043515698603126, + -0.43154951551604476, + -0.16113690824405888, + 0.8891574940728737, + 0.2883768477152654, + -1.0515389375700381, + -0.6199930877212022, + 0.156998376446689, + -0.5714553510797893, + 1.0576331832046142, + -0.7914888094778855, + 0.07187803937036874, + 1.9107594272771828, + 0.5130821444669919, + -0.5464162802735939, + 1.0439446554953231, + 2.10778515279337, + 1.4599274815852936, + 1.0154054578125205, + 0.7491846009241975, + -0.6755214784366882, + 0.4402663916687296, + 0.6889718563269422, + -0.2766461272769873, + 1.92453332001529, + 0.4112040207072239, + 0.8907649561731171, + 0.22636322725170696, + -2.0786178937021753, + 1.126385822137273, + 0.2471117161577363, + 0.1211718053315409, + 0.2989839355420466, + -0.1570991368466517, + -0.7404690227807179, + -1.2476529230512328, + 0.24945521515244942, + 0.5810733206206065, + 2.7638440798495663, + 0.3993254369795763, + 0.6684881692058056, + -0.2757737286563052, + 0.5004829001543722, + 0.8630648605906245, + -1.0516278594652122, + -1.392054077493087, + 1.1539222406122254, + 1.181944105999232, + 0.39137144842193117, + -0.8810470922015694, + 0.2950799597862399, + -1.4070845457432255, + 0.12678118632697175, + 0.0037598477954959237, + -0.8388429214202899, + 0.5539212514397202, + -0.7884401845178787, + 1.5294006744839312, + 0.20545485392597962, + 0.3130131289808603, + 0.8665207121682993, + 0.2990705295943764, + 1.076540643846122, + 0.3631773475444523, + 1.8936798255518426, + -0.48575274428280835, + 0.3876744557775985, + 0.023557610392553562, + -0.6602295020442799, + -0.31868492957801425, + -0.7226621936743727, + 0.17738671938459905, + 0.9835127293431644, + 0.0235045858853947, + 0.553776977863366, + 0.3537692939966397, + -0.27559363376768226, + -0.4904835914786814, + -2.397503976138816, + 1.5410299832779386, + 0.06308453895730506, + -0.28444068392629274, + -1.2656005376012107, + 1.7879796324557498, + -0.35450870806937423, + -0.10476112306710425, + 0.3862536891890525, + 0.8227753737653734, + -0.6837898224310078, + 1.0572033312141293, + 0.03187997356903155, + 1.3431824575289413, + -0.0505396895487724, + -0.3640099563071088, + -0.3192978018201611, + 0.5270464509549642, + 0.7111123993648228, + -0.21754548049047615, + 2.6377912107038637, + -1.7421376305949654, + 1.4311837522545638, + 0.5927584465506688, + 0.170296895326288, + -1.7517059477920245, + 0.2885813223432078, + -0.5425795169067793, + 0.17160238198599498, + 0.9828178292431048, + -0.025348902062768783, + -0.28755244928410806, + 0.9244428673433661, + -1.0227737046951428, + 0.9959929702457525, + 0.955557932627455, + 0.7138407711950433, + 0.13337096219412198, + -0.8070383084728134, + -0.3420107818792151, + 1.9087796580911864, + 0.15592326145312668, + 0.7596525320929627, + -0.42300622841924834, + 0.18167274532368163, + 0.27449257074640343, + 0.06791235738075722, + -0.036982814875919444, + 1.3829972488529256, + -0.022460873511426515, + 0.13139536722591508, + 0.4344371851022324, + 0.2645340683169988, + 0.5656583442738247, + 0.5850842795017246, + -0.17429815275208735, + -1.0713686714550896, + -0.04846050255238326, + -0.8452903895662435, + 0.4151005583815808, + 0.4255305913978583, + -0.9807243575005858, + -0.42782610997202053, + 1.498569955138537, + -0.45824038933749284, + -0.04138653961487197, + 0.8210479561079149, + 2.0978007807716916, + 1.2829332468745234, + 0.2703379257393719, + 1.0031403620449315, + 1.0786735513204067, + 0.34075268512976414, + -0.1980749596235683, + 2.4814584228756535, + 1.3852548761892063, + 0.6078621862094797, + -1.080096483157591, + 0.10203511229233127, + -1.4365739367721186, + 0.21071705250565526, + -0.8969041706975123, + -1.7243930789918331, + 1.7923391966469424, + 0.555877426385625, + -0.6818813054911307, + 1.850397801609901, + -0.3333504267494006, + 0.1934642338198724, + -0.49674493786490903, + 1.0327232157358608, + -1.7398037975225593, + 0.3938922629126754, + -0.9500255347962833, + 0.33250662216224913, + 0.5289444088560467, + -1.120520993992725, + 0.04826420692565666, + 0.06198845052177757, + -1.0275156732178674, + -0.23833536546732603, + 1.9321781695813465, + -0.22663229367683593, + -0.923830720176923, + 0.35583899747282033, + -1.2700634783862885, + -0.19547241269675866, + 0.9894148472858507, + 1.388647381631717, + 1.0877137365241412, + 0.43880126303439065, + -0.961602240881236, + 1.2456099371478462, + 0.5029255176706321, + -0.6313987783785193, + -0.70425204708826, + -0.24048253675834233, + 0.5855993109298576, + 0.35280056010840655, + -1.8155576924320858, + -0.9101238456951419, + -0.10812492648026306, + 0.27477883705216777, + 0.23734976450942513, + -0.31244217715639994, + 0.44850974251240683, + -0.05953196470440051, + 0.3495667716276656, + -1.0274688471736129, + -0.3066384838696108, + 1.4061761394942678, + -1.2496967727943529, + 1.5573976506490226, + -0.5933563949764882, + -0.17028851232950049, + 1.6726268084547062, + -0.6841283287665846, + 0.599962085981993, + -0.2171991251446381, + 0.3315265183521529, + -0.38336458015082797, + -0.781816088073111, + 0.26623740682783636, + 0.2794280245327373, + -1.21962569517377, + -0.7239489167555044, + -1.7347783075439347, + 0.27166078437402447, + 0.09911201694909029, + -0.3630899064372582, + 0.025941713524132055, + -0.5723023507451587, + 1.1055869627971613, + -1.2080155928296474, + -1.3397010399749156, + 2.0751854067317823, + -1.4894097013310104, + -1.1509530656259641, + 0.4190598246739658, + 0.4134052764244962, + 0.7175769325882829, + -0.2427712711003623, + -0.5012681327516669, + -0.6981289789688551, + 1.384580160839074, + -0.2864254139357557, + 0.5000695850282261, + 1.951103236540061, + -0.2783674615930086, + 0.03678625863071046, + 0.44585250626100126, + -1.4103507576806693, + 0.4500013006954749, + 0.5154795307938983, + -1.1540839403826029, + -1.3801733950718382, + -0.4958330052131627, + -0.029560902753084674, + -0.7660398835228289, + 0.09988207650262723, + -0.7130239566297442, + -2.226117620977587, + 0.7257141531219552, + 0.9169762830692352, + -1.5221795568231706, + -0.014278788627562308, + -0.1653294765172792, + 0.11911398259834126, + -2.0749804861700474, + -1.002755217016917, + 0.523546018063799, + 0.8215173089989222, + -0.14874184933286258, + 1.7303155195063402, + 0.22892725550405343, + 1.0927410572908394, + -0.35357152666142744, + -0.03065886493678412, + 1.7114259970115762, + 1.4353870862526215, + -1.167520333241006, + 0.040843424766001724, + 0.36201819567044535, + 0.5725921910432455, + 1.1044602367331493, + 0.75568884284869, + 0.010281457155327522, + 0.22458577076489658, + -1.1347082265682895, + -0.9515209412315562, + -0.12713045607576656, + 0.028944498401123394, + 2.1040773666293053, + 1.5675141434637165, + -0.6242296327908734, + -1.1370615382091245, + -0.9031590369968799, + -1.0972780624190317, + -0.07130920963109931, + -1.3193390866508534, + -0.5600929458770713, + 0.16495455703336395, + -0.6315857879244524, + -0.8670697795627686, + -1.0025626707106647, + 1.2073482032456735, + 1.7119870129859922, + -0.6245894793017125, + -0.21214580398595856, + -1.1935641822743448, + 0.6575858924331783, + 0.20007988155239426, + 1.091259859221752, + -0.48902205827370954, + 1.368220262225958, + 0.8916251175268084, + 0.8375662124501372, + 0.5141447133892467, + -0.050049692409833806, + 0.7439528461648938, + -1.7240502035381267, + 0.0899015732727284, + 0.3227395618852, + -0.37714942561155657, + -0.0002208983015993693, + 1.0501136937792215, + -0.1686991122175147, + 0.7978764964211627, + 0.5525243131579977, + -1.153093261804181, + 1.6415521890288047, + -1.4389778344742428, + 2.0277395138175196, + -1.365317321173664, + 0.07214886239228502, + 0.6131516784246442, + 1.4891664262942452, + 0.22129657503462105, + -1.530892108386614, + 0.801888214216484, + 1.118854972135864, + 1.569548064582847, + 1.4277317710676356, + -0.26641789264219634, + 0.7792145652142417, + -0.10281429468501402, + -0.5864646217583874, + 0.24025265459504974, + -0.9980556587715391, + 0.1911699128232047, + -0.9528030215809088, + 0.7189049215428981, + 0.7646112966882201, + -1.1894434708478612, + -0.5348572637202641, + -0.02159784664665048, + -1.0559463385249355, + 1.0213556589900556, + 1.7096560949798731, + 0.12384201643823771, + 0.28943005670297534, + 0.4144350112798109, + 0.9498579011377821, + 0.5218485421095229, + -1.9692628740518392, + 0.502810027757784, + -0.35442243933376033, + -0.44699048181139484, + -1.1169783859357703, + -0.7882663825810968, + 1.0557521639658634, + -1.3045412108969867, + 0.5397352373427955, + 0.3469912503733692, + 0.8741928933305493, + -1.5751793626207562, + -0.15998365617495094, + -0.643333236166963, + -0.7153708866312951, + 1.699458930621629, + 1.2828372246866984, + 0.3938001271158281, + 0.4257406105857961, + -0.13004743219159512, + -0.6410597741081536, + 0.17196425471545257, + -0.8401490192933458, + 0.8649983085249567, + -0.1070733343325384, + -0.24210668506471908, + -0.9024827749371497, + 0.7978708863196311, + -0.289095787657148, + 0.6769776126657561, + -0.34318403393053737, + 0.4872101346078452, + 0.765665358162811, + -2.5960623967791756, + 0.4756748381165133, + -1.594885645232233, + -1.1100767316660405, + -2.275806602546662, + 1.5528072078665365, + -1.149298768674316, + 0.18853062859763994, + 0.9889637830869817, + -1.5861363032929552, + -0.4723808755437636, + -0.18884634787574245, + 0.21112708032840474, + 1.6117222924558978, + 0.5667304418132302, + -0.6411772534653856, + 1.5387739411600052, + -0.44884868035202796, + 1.769100570312561, + 0.2682004879637708, + -1.4622250619252337, + 1.700769505670963, + 0.3533910559483136, + 0.3364890211021921, + 1.0571054344422781, + 1.1986787224676672, + -2.594654269661883, + 0.8043460416389878, + 1.1916553458718568, + -0.12736538411633605, + -1.0749752659886933, + 1.4482691251839777, + -0.27835427971563803, + -1.0368186639409402, + 0.5017557989907293, + 1.6133349220114617, + -1.8977106282505025, + 1.2990825737762788, + 0.5531844259723022, + -0.20036229600666147, + 0.5456699950930499, + 0.26228661897316985, + 0.21907020968038537, + 0.9323529322684813, + -0.12470367976984963, + 0.9540316671351478, + 0.7120509492248905, + -0.5793366572156923, + -0.7618194555160586, + 1.6615021287437646, + 2.547691702457717, + -0.038912324029113265, + -1.8625686534341959, + 2.6519991181342113, + -0.1362303703563351, + 0.10374933997096626, + 0.11543222568465579, + 0.2586704644560386, + 1.4877433319614572, + 1.4543434763906329, + 0.7043082981680985, + 1.4663513758566715, + 0.3536221825367628, + -1.0855234635679416, + 0.36320976100296887, + -1.813277132405328, + -0.19791075971583402, + 0.4328745920492785, + -0.5405657877076904, + 0.29563065498089497, + 2.0798442368337016, + -1.8424329199610465, + -0.5111660166205718, + -0.58093512839474, + 1.0627364666653065, + 0.01805510965628009, + 0.02279839968937127, + -1.6797914849149362, + 0.8124230006825046, + -0.625888706466102, + -1.2502708184687266, + 0.615135458353951, + -1.2808952713375565, + 0.3246098059252541, + 0.6705693906174532, + 0.1491613231433755, + 0.3270638038828972, + -0.35296169014182177, + -0.9055276404436707, + 1.6761854255764614, + 0.6809960077267706, + -0.7037176105934078, + 1.1950561396844794, + 0.353683601249814, + -0.40831076211055395, + -1.8104296677951879, + -0.9033080622801077, + 1.0540450911893136, + -0.9808768767289832, + 0.35207889140437837, + 0.6659818403106037, + 1.0655015019548215, + -0.22843361310270258, + 0.3644839042458271, + -1.514846657215433, + -0.07526128723722576, + -0.29705808175737614, + -0.24587534038557923, + -0.12794894211963254, + -0.3693106199094617, + -2.6230042844775308, + 2.1158507289245674, + 0.6855615854791441, + -0.15744398471175033, + 1.3812877674130073, + 0.06842655874188228, + 0.31253629248338644, + 0.45425318515036217, + -0.7884718753018505, + -0.06584033431115952, + -1.418479846109691, + -0.1397533402109211, + 0.6931185215037656, + -1.2694318590858544, + -0.2623238551840711, + 2.337598482195056, + -0.7817174376760302, + 0.0800997455382507, + -1.3394111207653079, + 0.4134509638251659, + 0.20445196734865428, + 0.47845329452970037, + 0.02958097097523698, + -0.1824419843989386, + 0.01746667513481011, + 2.054289530002812, + 0.4238146840382535, + -0.955683515590636, + -0.1336742103217792, + -1.077403324709461, + 1.2499025106911574, + 0.5711487534631029, + 0.2970484291574556, + 0.8718652175016266, + 0.6895231987879346, + 1.9845899031898866, + -0.11828188509401265, + 0.9551299189232728, + 1.4704739392964385, + -0.021557883623027695, + 0.7108614710694785, + -1.12610018599184, + -0.3078667459168953, + -0.9618845356398223, + 0.6708259593192185, + 0.06338342659156378, + -0.6567958804642327, + -0.2883631824527201, + -0.21979349574451643, + 0.20024796080692478, + -0.8455002410306656, + 2.6429226847057117, + -0.3337447706635678, + 0.8933687076816909, + 1.288554738453981, + 0.33119818801148354, + -0.07536789810631976, + 1.8560568664485682, + -0.7530412824561289, + -0.34022586976460656, + -0.5509960393063006, + -0.6040373262522097, + 2.1225899596034625, + 0.020305520730884315, + -0.35588838632283426, + -0.9543423107689742, + 1.591464114097166, + 0.0005873380366202194, + -0.4640317318179717, + 0.15487036534807186, + -0.8406493439809086, + 0.010685782511001917, + 0.6754553436625048, + -0.9733422132310651, + 0.8183481023464054, + 1.0389554757038926, + 0.981271848028589, + 0.6166208035641588, + -0.7874870323351537, + 0.020856736754465456, + 0.5993399050363709, + -0.3781952626733465, + 1.983488054493826, + 0.07788802802787388, + 0.4045844144487453, + -0.8490095099068151, + -0.0780897990873757, + -0.5273122406197597, + 1.1069498460085399, + -0.03552991507180546, + -0.9599149837120845, + 0.2685148227050607, + 0.488360812855723, + 0.5868386021149908, + -0.17539274109078976, + -0.433426256842158, + 0.043672011407345696, + -2.368892931279029, + -1.5927211354658712, + -2.441670740242832, + -0.822618318710863, + -0.042268338331824626, + -0.39127020083745107, + 0.23058049991323532, + 0.3285638932885436, + 0.8380485839532836, + -0.9078816127611445, + -0.04174551326063229, + 0.10816425581928157, + -0.5892856890062176, + -0.9849802336244897, + -1.0361773997113255, + 2.039686037158919, + -0.6079835611701924, + 0.866452901845807, + -0.7414694894279271, + -1.470561473204019, + -0.12851239742110507, + -0.16063982952151423, + 1.0771702093251387, + -0.6133974021549207, + -0.711763631312299, + 0.06543853933530658, + -0.42147083331107177, + -0.341216883674434, + 1.3120365067494253, + -1.8229324878347437, + 0.21537592656166116, + -0.6707133283158744, + 0.2597174736789681, + 0.46954942686078716, + 0.51217052768379, + -1.1420202563413573, + 1.265974917971162, + -0.9292300251800608, + 1.001555629245316, + -0.09742149039769883, + -2.119596982319414, + -2.1969217399884924, + 1.122267866057918, + 2.0118420191461803, + 0.30201074703431263, + -0.48966164024190245, + -0.5135490947661565, + -1.0739210599237325, + 2.2035145562945293, + -0.29882845731838414, + 1.3460983256762604, + 0.626820481067724, + -0.06581075463628752, + 0.10997254269648227, + 2.0065611269776644, + 1.0159978401232488, + 0.2923665381528412, + 1.3370321440963355, + -0.24325392379441643, + -0.3389292822418378, + 0.3186160154286117, + 1.3970387291415345, + -0.8798130487131584, + 0.11182047780156927, + 0.4315681264740078, + 1.6137850971757342, + -0.2973845710076038, + 1.638962314523427, + 0.13409659216509714, + 0.17203736635766856, + -1.3650171542843021, + -0.4212656827400207, + 0.8806401486464327, + 0.7577097291811645, + -0.6366050127557136, + -0.3878147409362679, + 0.8896634154552829, + 1.1341571652425653, + 1.7316301950572073, + -0.7055198448961673, + -0.6382100575533082, + 0.8811405230322151, + -0.6532038099890327, + -1.31996590252498, + -0.8187126044465817, + 0.16270221119589887, + -0.5740804187646116, + 0.7436871197925536, + 0.6167126196705511, + 0.9718668340412515, + -0.7356927851492516, + -0.9634637827705722, + 0.45913770322630687, + 0.6562382063047018, + 0.7515034769028561, + 0.9315457527732457, + 0.32753233118239405, + 0.7408138005017622, + -0.8019050477600198 ], "xaxis": "x", "y": [ - 1.3615999257157252, - 0.32421530102408114, - -0.3756937038823863, - 3.334706672185873, - 0.570099828388501, - 1.3246973368078483, - 3.0690128883734977, - 1.220890735050157, - -0.041662233621488354, - 0.6961953522232988, - 0.9684966647131934, - 0.37022479811316367, - 0.6857247750865538, - 1.6607787445225182, - 0.7714890721589855, - 0.2932283210763533, - -0.006609620796110771, - 0.6625735024620792, - 0.7463603174480453, - 0.8335507847427969, - 1.5827457716718185, - 2.418656872597653, - -0.22801583443500123, - 2.1185425201955312, - 0.28249884985599855, - 0.7732179524811826, - 2.235344242009358, - 0.7278364107088494, - -0.13193646878975818, - 1.2083796733551395, - -0.1274133661618491, - 0.9583421724350449, - 0.546634435940819, - 1.632786665388183, - 0.5612829495120453, - 0.13325704694822132, - -0.21329937211077177, - 0.23774514758516135, - 1.6902482968094241, - 1.321553286803081, - 1.2902250784191982, - 1.215945542264764, - 1.044504848259474, - -0.0703719303093876, - 0.23300679275301617, - -0.748889486019636, - 1.4413389190670947, - 0.3677371066021673, - 1.676371082302052, - -0.17415559470725486, - 0.6958426043425507, - 0.6438998876406478, - 3.5346530386737682, - -0.3080686703368427, - 0.3060480529833499, - -0.17788449644844853, - 0.4243087140516217, - 0.6219673839330705, - 0.5544139842534694, - 0.9965106495802344, - -0.06893129760118054, - 0.30199321209423885, - 1.7835146960952513, - 0.7403374643098577, - 1.5427172005378376, - 0.7966171611510633, - 1.4974960434659323, - 2.0137295594897338, - -0.35527474203586934, - 2.1573391244783724, - -0.026035889723002387, - 0.7185732716727131, - 1.5555096433975422, - 2.2534676479705995, - 0.4492691537460317, - -0.1750217850882944, - 2.730645874519063, - 1.8150218524624373, - 1.0839979397106765, - 0.7084748568910306, - 1.6513302029244321, - -0.04786952680948264, - 1.26745207583228, - 0.8628111749286197, - 1.247001323811258, - 0.3402026026708754, - 1.6258882297944637, - 0.5874809527489881, - 0.495144846412771, - 1.3330355409939436, - 1.1826515112373168, - 0.4150673293475587, - -0.08821422135718901, - 0.7930212904195799, - 2.3583883381335013, - 0.5469201714336109, - 1.7549849484925293, - 0.047415237960372, - 1.4198868709995598, - 0.12769721495585934, - 1.7532998335704464, - 0.5926653452903705, - 1.38330117482117, - -0.27039708231441456, - 2.229467488522225, - 3.023173842484077, - 0.2780816245255471, - -0.15957451590038646, - 0.6868657958466227, - 0.4413806794008475, - 0.31951244046391913, - 1.970102291048323, - 1.4495819348609282, - 0.18998965356374367, - 0.014319226529760462, - 0.027734536892010525, - 0.4314563048571381, - 0.14499195704924878, - 1.07883838903741, - 0.48371926719553804, - -0.22656128913687823, - 0.8651378855151438, - 1.4087472909536356, - 0.5492932131051853, - 0.4051122026484606, - 0.3340987638606818, - 0.21273411527508415, - 0.9934776995019708, - 1.1743639449794019, - 1.0127147372030256, - 0.48215044053286554, - 1.308100584997736, - 1.0106740903175286, - 0.29831162343818174, - 0.6580208387866686, - 0.960475599896778, - -0.08813660922281999, - 0.6014846074350846, - 0.5248166371161477, - 1.3193694568688028, - 1.1313459223367046, - 0.9128511545086413, - 1.3801082802587534, - -0.4623391237991351, - 0.4572093839771795, - 0.3652147054957546, - -0.10979372598736035 + 1.265929471529643, + 8.694561155437166, + 14.001403007791444, + 9.748742710522935, + 3.4645630543002266, + 3.458606814787849, + 4.720577430325107, + 3.07067774720589, + 0.5906588386478189, + 2.8561356439738455, + 12.810615341379208, + 1.7698934669732473, + 2.6652752947892124, + 3.258380402564378, + 2.4246531645049867, + 11.32396548183264, + 7.236964297743415, + 7.460567186562126, + 8.617960664434255, + 7.104539653403088, + 16.09901330545235, + 7.484138990719681, + 9.681717563115276, + 2.001393280247692, + 10.263973781556944, + 2.3413201248723268, + 7.462833084556626, + 9.939603495455666, + 6.399661064524305, + 1.620400631064451, + 4.242739862271615, + 3.010865464260581, + 6.248533468937351, + 2.381320486974768, + 0.8308852277275207, + 3.556867416800981, + 0.51630276636483, + 1.948719095440292, + 6.30264204621881, + 8.600952713627429, + 5.601195519451783, + 2.1942833111391407, + 3.8946151927027572, + 4.635183887917489, + 12.036012082261806, + 3.8288220906607657, + 1.4365815271131692, + 5.637853691092357, + 7.5383876833162615, + 12.221400040211847, + 1.7991157129239725, + 3.3970733364904837, + 3.200570745467585, + 4.835865097197437, + 3.100982661677124, + 14.518747141216663, + 0.36143300709220605, + -0.05875788804659948, + 3.84558565236586, + 6.3429859357301615, + 6.044358420828881, + 3.2790509190307753, + 3.661836726142834, + 6.027239323766707, + 3.6911205707117882, + 5.2983880594659505, + 2.020013027089809, + 2.238771401281311, + 4.057610475845288, + 0.9338547248594324, + 3.1322631895362214, + 7.978379801118601, + 1.544860532455904, + 2.8272043421838253, + 2.646174515498736, + 2.714126855473393, + 2.943333161825477, + 0.5677485344907051, + 15.513337028875254, + 10.516513554272974, + 0.8749519970640259, + 4.245026374790678, + 9.184765679426906, + 4.0282521403687825, + 2.873153778309327, + 8.526111855670262, + 7.930290760456417, + 12.740174353522601, + 5.255971423541705, + 9.861840580482127, + 2.4824345911784356, + 3.1606833199359152, + 7.3372099952734935, + 1.525660823074181, + 10.758696194494975, + 4.0114814973324, + 8.964967051348435, + 1.3060695154765898, + 4.563853505384101, + 16.628049600932172, + 1.6871766020875218, + 0.5396465065237206, + 1.9879917890238492, + 2.8391288043110663, + 5.914663671850868, + 2.0532649901547106, + 11.819285172419374, + 2.510958942199201, + 7.902461013836859, + 14.987379713113802, + 5.44432760117919, + 1.7231523458302642, + 12.654564132534047, + 1.6867551361260875, + 0.4447510137167535, + 3.184193644033716, + 1.3123531867413947, + 1.2197160949031356, + 1.3552451215543206, + 4.907226338887424, + 8.755776884038891, + 1.2079738117623608, + 1.2976490783801529, + 8.667867403640276, + 3.0875966628748115, + 2.6210946348391087, + 0.7662042158113374, + 2.6172598935433316, + 3.3902681930418512, + 1.4763266658009067, + 10.076447482487703, + 1.6771273074590236, + 3.521164016793936, + 2.9790615945018963, + 2.8699549823091317, + 5.269105752749612, + 5.681577465665945, + 3.487802776844909, + 1.908206085100257, + 4.007461426415795, + 2.338940416336114, + 3.6400720160114726, + 2.1218223722428795, + 8.869888400801477, + 5.307738209931988, + 2.903746274695888, + 2.0856592384183767, + 2.670106787790936, + 5.122887292442154, + 3.952098165720182, + 5.421845648941789, + 6.00091245254906, + 7.294504633413678, + 1.9281350171251979, + 16.485468447411897, + 6.531354353045948, + 17.184456808988877, + 9.813496038550447, + 10.227216864967803, + 1.144175815597039, + 18.011448878519992, + 7.190505279202194, + 13.509762242844465, + 5.046114345093919, + 10.091717008532877, + 2.544852768481243, + 8.866525617443083, + 11.551249053912088, + 13.147775772480772, + 1.654741728524375, + 5.265064763923753, + 6.308070628222554, + 5.950585492608078, + 1.573817644256974, + 3.423405333839633, + 2.7891548279849387, + 6.628517620276847, + 1.2020926001030658, + 9.418298407825423, + 9.16406881190855, + 7.976670952867432, + 4.134771415941696, + 0.026575862646723403, + 9.618572668452142, + 11.154706893256707, + 1.9590841736079028, + 1.5765816250505442, + 2.203390528077207, + 1.3635302870548887, + 2.500852809076819, + 17.77166976434441, + 10.9569132635667, + 3.4334313245502894, + 11.468809201993695, + 10.611429868963665, + 2.8637685911784025, + 6.1068830221501, + 6.001435101935673, + 7.369174521358374, + 14.217050945628085, + 12.603820025465769, + 5.658213969381527, + 1.970389713710068, + 11.394596021181313, + 3.3488782763418348, + 3.2131428606397328, + 13.91323011942871, + 6.9492001745411365, + 2.4085004716874194, + 5.2663586180489155, + 2.5283967843946575, + 10.496296186991868, + 2.6321862632085935, + 4.607037732401054, + 6.899498460269936, + 14.511067704191701, + 1.5608665881374613, + 8.731651246426887, + 10.84023714538772, + 1.8732879832270275, + 3.877125463354468, + 1.6956300173141827, + 0.2133795212480425, + 9.231373497595118, + 6.091572264058836, + 2.7324465944061935, + 0.572300015216746, + 1.7319163875792771, + 7.173741895691831, + 8.72395855428605, + 1.4875526365435794, + 3.978081921739523, + 1.277176305974415, + 5.6339700137369, + 7.140580358652747, + 3.6406166270359526, + 0.8377549423898604, + 5.342573084839112, + 9.855949418171228, + 3.263313964754971, + 7.04651848454491, + 5.8025687454395705, + 3.36570374652826, + 2.6977943889433376, + 18.085287142725683, + 2.972984645526237, + 0.6426550754256278, + 10.208286605796419, + 2.584062116190693, + 10.546673655801067, + 10.952633574770253, + 1.39730823672077, + 13.671836195629043, + 7.5306591370037435, + 9.141716452962367, + 15.010875697096775, + 4.188713804683356, + 9.716622199946908, + 10.861472590823428, + 0.8039268941832941, + 9.40288304422664, + 2.500208734545565, + 4.297098100050996, + 2.074774356414138, + 12.012572481931103, + 2.7846499729219025, + -1.7598574267134772, + 11.424871923769345, + 3.2833135797555872, + 3.814606437723484, + 0.4098298865217034, + 2.947546558909086, + 0.9945304991518853, + 5.546133143596889, + 5.487369383152597, + 15.256389831013331, + 2.7995193097475872, + 3.9633575643244816, + 8.199846271814256, + 8.816627223980333, + 2.025112405354149, + 0.6760337811953564, + 8.270906507890658, + 9.851786931249737, + 16.044317060137793, + 2.1073986708814494, + 9.658459208235294, + 7.9024491221299815, + 9.958092102214838, + 18.54071816474041, + 8.806679996607663, + 7.301841904208959, + 1.8959520678532464, + 3.833954303426043, + 10.095742608750829, + 0.17608518818079189, + 1.512564357382991, + 3.496852522553875, + 16.201070405665643, + 10.655181721121407, + 7.458668947695023, + 5.789125404106795, + 8.187651303946337, + 7.090996981895237, + 11.70118691914138, + 6.182585257102322, + 0.8381018734017056, + 2.062039859234129, + 6.095788044645277, + 5.954448421794118, + 3.385438408594497, + 5.590367019049524, + 9.87411606476611, + 6.44274037363752, + 7.225006373432191, + 9.410356026338688, + 7.092928912418812, + 6.2279781627067194, + 2.115857209972452, + 3.6959547760257974, + 3.282548417419812, + 13.506884332057322, + 3.224684124764207, + 7.921462959631633, + 2.2777888910561184, + 4.572925949158813, + 13.656807361191017, + 2.218124759032054, + 4.506818285663842, + -0.2876756672935018, + 6.476384536900452, + 5.663232799363023, + 0.4229833078605427, + 3.0366851227981435, + 5.2566415961307165, + 9.72206032966684, + 1.2110296394109732, + 2.6637708586232267, + 3.2348947786879796, + 5.084959782991081, + 5.258356272014977, + 2.3793809666939514, + 2.0993170207247682, + 0.6472462881020166, + 10.264043112573114, + 1.1632436682309997, + 2.528084599887016, + 1.0429433035735227, + 11.68556134281856, + 3.484170364411881, + 2.2201818077648126, + 7.1427584045082275, + 6.661445440033579, + 13.4752145699751, + 4.145156625312843, + 1.6543586694441952, + 12.879051236600745, + 4.099931116909535, + 6.45682004663257, + 4.347351369089084, + 8.141745153929424, + 7.300043464836314, + 4.31576547034449, + 1.1398487127891446, + 8.752660083201123, + 3.527300075464674, + 5.897328712791664, + 1.3383308652065322, + 4.02936560189911, + 9.322939743368408, + 4.392449167791411, + 2.8839303549256052, + 7.681671014828841, + 3.6528989976894994, + 16.917205292427912, + 3.297245511251533, + 8.23135357094443, + 5.493175338396726, + 7.50990937761974, + 0.8757453096462516, + 4.531646458900818, + 1.3943898694921013, + 9.781361555333927, + 1.154134614445248, + 7.013136736112865, + 2.568654362308105, + 6.4422908265758725, + 16.227895549922852, + 1.6317679540729098, + 9.558916997021942, + 11.453784287346103, + 2.3062936042446442, + 3.947169977729538, + 11.347672582990297, + 3.282706463206077, + 1.2917544377913477, + 8.29015465213362, + 0.5717542687400685, + 2.5201550487419118, + 10.832308202021872, + 4.099030109770507, + 2.082022967226665, + 6.26008928972419, + 2.2338611620324182, + 13.394201595285786, + 7.123966577481741, + 9.788541878471024, + 1.4395500188098314, + 6.385012991957169, + 2.2595052918257976, + 3.5510943644870325, + 7.683203534724593, + 0.869819037499602, + 5.289082660734713, + 3.7882238731868836, + 2.6330481899665306, + 5.677261752418803, + 0.8469640870385587, + 12.645123193561433, + 4.4817511509321575, + 9.313632395816134, + 0.8366444709316733, + 3.1405111006684114, + 8.202789285333695, + 1.4470119467939568, + 9.73135266063922, + 6.574194175314418, + 0.35056355133905254, + 3.7551030628053486, + 2.1486714708117454, + 6.496146584414306, + 0.8908363200219358, + 5.133489598125723, + 0.6236894726215128, + 13.997907268596855, + 4.904399986686302, + 9.17983249026187, + 5.4106108238588435, + 10.97078302652149, + 11.186651231469241, + 3.539902667427348, + 2.856974473907083, + 1.0881366955685468, + 2.889966063019122, + 4.112886606965867, + 8.704875635951035, + 9.799089667366115, + 3.7024009314204016, + 5.127085315063862, + 4.895177962193958, + 2.805952128761161, + 2.0980465678831446, + 5.34465527074354, + 3.492431190958235, + 4.977163204512254, + 7.562762070357182, + 11.635811069085616, + 1.6299896045787312, + 0.265747092234916, + 5.942637664055524, + 2.2373690084810773, + 0.9488870521864202, + 2.9231622333029788, + 7.431169321816414, + 6.476758283389478, + 2.6965208088994963, + 9.375372377939263, + 2.348774115542101, + 3.8891238610918997, + 10.746368023752337, + 0.6184490045922734, + 4.402157484675704, + 9.116117235217184, + 15.01960213541709, + 10.705763971904396, + 6.299053052365139, + 3.4613547432564773, + 6.531671178472615, + 0.5823907366088681, + 8.534542269263813, + 0.959614387956564, + 14.489472594917014, + 4.822830547230848, + 6.499318869571259, + 8.985216608333925, + 9.032703049730282, + 3.0831880206839086, + 7.190469660155882, + 1.9821676416870053, + 8.242591839213503, + 8.998569948100528, + 3.729218380691533, + 6.593892036137035, + 0.14701638808235667, + 2.593338126565563, + 0.5426314453879982, + 3.513639508012342, + 9.118913464563223, + -0.48947405694846785, + 14.775099197228867, + 11.05679949241901, + 6.8535085774225974, + 2.8655532959460177, + 2.2977205841009107, + 2.8546112806651625, + 8.993921914076, + 12.662304944150975, + 2.730133386249415, + 5.930689831586816, + 2.833114948129331, + 6.843459588109378, + 8.651382866988321, + 3.3248724033470287, + 5.9954149907923355, + 2.6732751826267678, + 5.506224292866516, + 1.8368308317944675, + 3.3174584761957835, + 1.2745894543814298, + 0.36728127917324405, + 6.07526394073255, + 3.0034554117243952, + 5.252880061722262, + 3.156564963752938, + 4.681035169088436, + 11.792242512055923, + 1.9604221983391767, + 1.0462505871181245, + 5.711606376048099, + 3.068431613494066, + 6.858383748838975, + 2.8490213170428658, + 3.580154835089165, + 6.501941096065977, + 9.7780201322668, + 3.0676947050276424, + 3.403959339305843, + 1.69010583288503, + 2.264179673326793, + 1.387978957119129, + 2.0930389945578867, + 17.30115733900274, + 5.471707350070127, + 5.680905291971551, + 4.742366537822185, + 1.0208994161105056, + 9.207668213067246, + 3.8606197895306593, + 1.6754162996313244, + 2.585152771900879, + 4.644030250207612, + 5.374779432437628, + 10.720995085266173, + 8.937184334004515, + 4.590718960449072, + 7.701223834117853, + 10.128463987492674, + 3.587884587512182, + 11.894044239488057, + 2.046242353652768, + 11.477953973674333, + 1.221756539602425, + 5.228476809017635, + -0.816414716423785, + 2.4441544833538806, + 9.965190200526736, + 3.9808450031235285, + 0.3932772724703332, + 2.2720936360102066, + 3.266746562229977, + 6.872279730973945, + 2.8243847518725254, + 9.670256218445862, + 16.284779647497007, + 1.6443761053106767, + 3.9270580938911173, + 4.30569605379481, + 0.9263924032944642, + 6.845102420161203, + 1.982656548934253, + 0.4997244182188926, + 3.746157409358521, + 1.8483087547703183, + 11.047151352512428, + 2.4880649403573276, + 10.732943752874196, + 5.9813129049237475, + 2.238459321206564, + 0.9256466820771712, + 4.7124412355837615, + 7.418832968509168, + 1.7527514786002814, + 3.171197545881602, + 7.616904364240285, + 5.284160109950633, + 3.181047705918116, + 6.4242033037320105, + 0.9692343390160645, + -0.26887827327987335, + 5.935912510464833, + 9.787539601288069, + 11.895746374184167, + 8.301229136757724, + 9.965974552589072, + 9.062736049997376, + 3.1959767936832493, + 6.098242051931191, + 4.019460485585374, + 3.005491424762978, + 1.533722689314001, + 0.36479165491872, + 8.121321684423284, + 0.8181368638728819, + 6.744568721567811, + 8.401422362119996, + 4.36004998386494, + 4.590598935913978, + 12.76757142388392, + 16.320957993486164, + 7.0913596958688565, + 2.056244034539619, + 10.46875965833262, + 0.08959655165547539, + 1.4096590522968548, + 4.310917476297208, + 4.0474420794264265, + 9.065747029572861, + 7.399995484071186, + 4.999303540119944, + 9.570025627681863, + 15.684623947529222, + 9.52366169287394, + 6.319113255288522, + -1.071882414549458, + 3.1206722178148527, + 2.850016635488781, + 13.561860000216685, + 1.7809199910271896, + 10.597484092134568, + 5.473066959556585, + 6.602216633263769, + 5.362604379349994, + 5.265031461356174, + 1.1327429654368624, + 0.9203431272301328, + 4.387341322372937, + 2.2949214206204025, + 1.8302969183486257, + 9.377576340374638, + 11.695367528603342, + 7.089813178847362, + 7.618589782571491, + 13.31462998390479, + 5.229088516361773, + 2.6173224162494, + 7.5733289120723954, + 13.068835777185974, + 18.519186032954707, + 1.645542358212573, + 10.057659219487391, + 6.116304508486813, + 11.203057597332762, + 3.4789516811077896, + 12.201334815401738, + 1.2535400933557803, + 16.589185003221452, + 9.917238694141234, + 4.944176212265241, + 1.9149264197762228, + 9.427571072431162, + 6.305542662732612, + 6.136485673917394, + 2.4730061492537447, + -1.8948036838159843, + 5.201274413655002, + 3.6200547532319867, + 7.522818690465862, + 0.7236331316200587, + 6.381441868078257, + 2.098334928618128, + 3.853399636918509, + 8.404158761029409, + 2.199212957368143, + 5.869418523046383, + 3.0751559793026533, + 10.3952442006207, + 4.981905469483399, + 10.939881048529527, + 0.23272164849107474, + 8.520996289253404, + 2.5448227286349776, + 10.366415461847787, + 5.393261931006413, + 2.7689547564428887, + 7.03951458366662, + 2.7843861480103103, + 6.333510258233163, + 1.3747919230315948, + -0.11910075956786537, + 15.192679799545468, + 5.045912993968392, + 5.976194046073316, + 6.562195090630139, + 5.80072117939065, + 1.480441393050849, + 9.909191504815636, + 0.7295384349042683, + 0.8707473024376744, + -0.37541410634386446, + 9.40459783669121, + 2.3411429792009937, + 10.066438850385445, + 4.808740731181803, + 12.650547610477856, + 1.9671275700332773, + 2.8169200310697162, + 10.49549251788382, + 7.896877285673233, + 2.8388305599419104, + 1.8170253237765002, + 6.634432948206113, + 7.981233283470713, + 0.7326646640660937, + 8.386419189514582, + 0.5785057335161181, + 4.879091645985078, + 4.465699169142491, + 3.4336848149227843, + 2.817753618939716, + 1.4048289956555169, + 9.325611392051854, + 6.6074803442300984, + 2.037523061843616, + 2.4273699234055215, + 1.572549951305657, + 4.069830743631792, + 6.058062632929909, + 2.4135514271495384, + 3.9666086806103293, + 1.9159320923666834, + 2.325309229205214, + 11.436111994293643, + 3.6747587303809506, + 2.6570824054501503, + 5.37197924529851, + 15.562328372379785, + 1.4184801906818312, + 4.727536425813394, + 1.4067812717509782, + 2.7479395372103377, + 3.357959643164211, + 6.165247823105613, + 2.1157143634746034, + 3.5546653081564776, + 4.376398009703256, + 3.3811870689190684, + 1.0932624617665345, + 4.842986192059503, + 19.390985540233196, + 1.9795020691022842, + 7.754246686289934, + 12.775377927488867, + 4.559315982479618, + 4.057133610748745, + 9.52804827793297, + 2.0287108774118243, + 2.9188253218804037, + 3.249590936570091, + 8.05470715769896, + 9.103443000619613, + 0.42573784013526383, + 9.234732460655913, + 17.51017035543307, + 2.742531403422764, + 4.682302063107567, + 11.052165270043073, + 3.24690827055626, + 2.1962885130444167, + 4.631753203632753, + 2.828289353783408, + 1.33682969366254, + 12.114802646740193, + 3.6819579463944265, + 3.434738013245069, + 5.819121063304491, + 4.088701749783405, + 6.159051819363544, + 6.733015419190123, + 6.742955730548548, + 9.542708203338568, + 8.712064503322658, + 3.3735338946581126, + 3.3012288114262556, + 2.1217097116431196, + 1.2179477278952395, + 9.84119574001116, + 6.114318566169389, + 3.096600466653107, + 8.642091012688123, + 2.0947128735013534, + 2.1434429230266305, + 4.680906971592573, + 8.285082770663648, + 9.636217269201904, + 2.6790083186093123, + 5.420833606247791, + 4.481767881878449, + 8.402526274613027, + 6.57750145845892, + 16.423540501737804, + 11.111981679281225, + 1.115230798899664, + 1.3487689578263442, + 1.758855452517031, + 2.6692564484876717, + 3.077931749222288, + 4.881245329861467, + 19.71532564835613, + 16.34422736518518, + 8.611104553639624, + -0.14101190326756194, + 11.449212352595664, + 7.980197224567005, + 3.8875616041211565, + 7.846735256556087, + 15.957494350302662, + 3.8055648247878975, + 7.964989170975489, + 3.2911895405364904, + 0.930967355657544, + 1.1676659305603234, + -0.07662067433000817, + 1.1125321223819782, + 5.9371029470728205, + 5.768823511173059, + 1.0408554481784802, + 2.670871516056362, + -0.6036402304209916, + 2.6025896704276534, + 8.584272616464322, + 10.15412511310908, + 4.738400719657727, + 12.280705656341215, + 8.155549718844648, + 2.4778830553806603, + 5.184206312746016, + 0.6382341393030234, + 1.8484947110270162, + 2.7857375699307556, + 8.57791145430953, + 3.21649053438879, + 4.057159291263697, + 3.5876684071552964, + 1.229396331836379, + 13.030088066682668, + 3.2999120644958038, + 5.197549969436092, + 8.636493224325857, + 10.41559220076361, + 1.91287781057633, + 8.473267442479868, + 11.18169314797878, + 7.420632293781813, + 6.114443764932338, + 2.6829951311847617, + 7.965626018208414, + 9.961085374384197, + 6.950627443018606, + 3.221227283607655 ], "yaxis": "y" } @@ -9472,14 +9524,14 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 11, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "The oracle ATE on compliers is estimated as 0.9087280080883967 at the cutoff c=0.\n" + "The oracle ATE on compliers is estimated as 0.9884384827229661 at the cutoff c=0.\n" ] }, { @@ -9497,1210 +9549,1188 @@ "name": "ITE", "type": "scatter", "x": [ - 0.4967141530112327, - 0.6476885381006925, - 1.5230298564080254, - 1.5792128155073915, - 0.7674347291529088, - 0.5425600435859647, - -0.46572975357025687, - 0.24196227156603412, - 0.3142473325952739, - 1.465648768921554, - 0.06752820468792384, - 0.11092258970986608, - 0.37569801834567196, - -0.2916937497932768, - 1.8522781845089378, - -0.013497224737933921, - 0.822544912103189, - -1.2208436499710222, - 0.2088635950047554, - -1.3281860488984305, - 0.19686123586912352, - 0.7384665799954104, - 0.1713682811899705, - -0.4606387709597875, - 1.0571222262189157, - 0.3436182895684614, - 0.324083969394795, - 0.6116762888408679, - 1.030999522495951, - 0.9312801191161986, - 0.33126343140356396, - 0.9755451271223592, - -0.18565897666381712, - -1.1962066240806708, - 0.812525822394198, - 1.356240028570823, - 1.0035328978920242, - 0.36163602504763415, - -0.6451197546051243, - 1.5380365664659692, - 1.5646436558140062, - 0.8219025043752238, - 0.08704706823817122, - 0.0917607765355023, - -0.21967188783751193, - 0.3571125715117464, - 1.477894044741516, - 0.9154021177020741, - 0.32875110965968446, - 0.5132674331133561, - 0.09707754934804039, - -0.39210815313215763, - 0.29612027706457605, - 0.26105527217988933, - 0.00511345664246089, - -1.4153707420504142, - -0.3427145165267695, - 0.4040508568145384, - 1.8861859012105302, - 0.17457781283183896, - 0.25755039072276437, - 0.06023020994102644, - 0.30154734233361247, - 1.1428228145150205, - 0.7519330326867741, - 0.7910319470430469, - -0.9093874547947389, - 1.4027943109360992, - 0.5868570938002703, - 2.1904556258099785, - 0.09965136508764122, - 0.06856297480602733, - 0.4735924306351816, - 1.5499344050175394, - -0.7832532923362371, - -0.3220615162056756, - 0.8135172173696698, - 0.22745993460412942, - 1.307142754282428, - 0.1846338585323042, - 0.25988279424842353, - 0.7818228717773104, - 0.5219415656168976, - 0.29698467323318606, - 0.25049285034587654, - 0.3464482094969757, - 0.23225369716100355, - 0.29307247329868125, - 1.8657745111447566, - 0.4738329209117875, - 0.6565536086338297, - -0.9746816702273214, - 0.787084603742452, - 1.158595579007404, - 0.9633761292443218, - 0.4127809269364983, - 0.82206015999449, - 1.8967929826539474, - -0.7537361643574896, - -0.0771017094141042, - 0.3411519748166439, - 0.27669079933001905, - 0.8271832490360238, - 0.01300189187790702, - 1.4535340771573169, - 2.720169166589619, - 0.6256673477650062, - -0.8571575564162826, - 0.4824724152431853, - 0.714000494092092, - 0.47323762457354485, - -0.4465149520670211, - 0.8563987943234723, - 0.21409374413020396, - -1.245738778711988, - 0.3853173797288368, - -0.883857436201133, - 0.1537251059455279, - 0.058208718445999896, - 0.5607845263682344, - 1.083051243175277, - 1.053802052034903, - -1.377669367957091, - 0.5150352672086598, - 0.5137859509122088, - 0.5150476863060479, - 3.852731490654721, - 1.135565640180599, - 0.9540017634932023, - 0.651391251305798, - 0.7589692204932674, - -0.23681860674000887, - -0.48536354782910346, - 0.08187413938632256, - 2.3146585666735087, - 0.6862601903745135, - -1.6127158711896517, - 1.088950596967366, - 0.06428001909546277, - 0.6795977489346758, - 0.21645858958197486, - 0.045571839903813784, - 2.1439440893253257, - 0.6339190223180112, - -2.025142586657607, - 0.18645431476942764, - 0.852433334796224, - 0.5049872789804571, - 0.8657551941701215, - -1.2002964070557762, - -0.6533292325737119, - 1.7654542402810969, - 0.40498171096095553, - 0.9178619470547761, - 2.1221561970126332, - 1.0324652605511468, - 1.2669111491866227, - -0.7076694656187807, - 0.44381942814622843, - 0.7746340534293368, - 1.6324113039316352, - 0.13074057728609134, - 1.4412732890661155, - 1.1631637521549596, - 0.46210347426327075, - 0.19905969557347003, - 0.06980208499001891, - 0.11351734525124804, - 0.6621306745210467, - 1.586016816145352, - 2.1330333746562666, - 0.5883172064845765, - 0.28099186773503265, - -0.20812225035727522, - 0.8496020970210246, - -0.6929095952606542, - 0.8995998754332507, - 0.30729952087660933, - 0.8128621188389601, - 0.6296288419236122, - 0.7472936051232618, - 0.6103702654334648, - 0.117327383308782, - 1.277664895788425, - 0.5470973811700379, - 1.09877685198719, - 0.8254163489880298, - 0.8135096360006385, - 1.305478807154329, - 0.02100384163275905, - 0.6819529712949639, - 0.3241663524884421, - 0.09699596499271819, - 0.5951570254369136, - 2.0923872756854602, - -1.006017381499702, - -1.2141886127877322, - 1.1581108735000678, - 0.7916626939629359, - 0.6241198170521551, - 0.6283455092642799, - -0.8972543714858315, - 0.07580455819372633, - 0.9751197334177512, - -0.32138584165299344, - 0.41293145427562433, - -0.8222203955664315, - 0.2436872114919123, - 0.24496657110872277, - -0.4710383056183228, - 0.2320499373576363, - -1.4480843414973241, - 0.3109075655980046, - 1.475356216949552, - 0.8576596232020194, - -0.01901620790268883, - -1.0025293646378088, - 0.3227185603380895, - 0.5193465142411723, - 1.5327389130025777, - 0.40171172209894146, - 0.6901439917111125, - -0.40122047188583626, - 0.22409248181041677, - 0.01259240078179486, - 0.024510174258942714, - 0.49799829124544975, - 1.4511436077950417, - 0.9592708260852069, - 2.1531824575115563, - -0.7673475628880495, - 0.8723206367206782, - 0.18334200573835174, - 2.1898029332176723, - -0.8397218421807761, - -0.5993926454440222, - -0.525755021680761, - -0.759132661553698, - 0.15039378647620763, - 0.34175597577715944, - 0.9504238381860503, - -0.5769036556624031, - -0.898414671348358, - 0.4919191715065057, - 1.8314587658543537, - 1.179440120721287, - 1.3538723741654128, - 0.005243699718183166, - 0.046980593764742055, - 0.6228499323474987, - 0.12029563171189886, - 0.514438834058749, - 0.7116148780888898, - 1.277676821898509, - 0.33231401197959165, - 1.551151975522523, - 0.11567463429285867, - 1.1792971840638264, - 0.06751848141010895, - 2.060747924881987, - 1.7553408424432044, - 0.9715709509543554, - 0.6453759495851475, - 1.3686315575323487, - 0.6860514599984393, - 1.0584244868495878, - -0.26940683444455776, - 0.7175422557959623, - 1.502357052096028, - 0.07409478041977519, - 1.6286155455712918, - -0.05554769889661878, - 0.3840654489393073, - -1.3044695005048532, - 0.6696725488300385, - 0.36659824609684827, - -1.0592135218889516, - 0.9551423205012383, - 0.5040465155178444, - -0.5302576183724408, - -0.553649305347182, - 0.03526355197172861, - 0.213979910734222, - -0.11232804969082982, - -0.22096959953322298, - 0.6141667000434252, - 0.7575077100473051, - 1.3668742674445247, - 1.6449677135012837, - 0.5765569630557664, - 3.0788808084552377, - 1.1195749114345768, - 0.2034636358672231, - -1.4222537095976742, - 1.6871416350725648, - 0.8816397569494505, - 1.4799441388900259, - 0.0773683076476183, - 1.5231240772696573, - 0.5389100436846587, - 0.9261775475316414, - 1.9094166404701305, - 0.5629692366905709, - -0.48712538376469605, - -0.5923939242388692, - 0.04852162794482699, - 0.2704568257798388, - -0.23894804686640975, - 0.755391225825756, - 0.5009171876243808, - -0.977555244798551, - 0.09933230542922587, - 0.751387123371789, - 0.543360192379935, - 0.5705986685931593, - 0.048084946661381994, - 0.25972250172148187, - 0.6385924587773739, - -0.06607979864731657, - -0.6518361078021592, - 0.047398671316414016, - 1.0062928092144405, - 0.8356921120651418, - -1.129706854657618, - 0.5298041779152828, - 1.4415686206579004, - 0.57707212718054, - 0.37114587337130883, - 0.08658978747289992, - 1.1677820616598074, - 0.2544208433012131, - 0.3376026620752022, - 0.39445214237829684, - 0.2897748568964129, - 2.075400798645439, - 0.8711247034316923, - 1.2012139221639448, - 0.0184183791895517, - 1.6764373122752827, - 0.32692737376416264, - 0.8294055811834892, - -2.211135309007885, - 0.23561455810856594, - 0.7708651938869668, - -1.4785862457798415, - 1.143754043206929, - 0.3384964074944141, - 0.6327818661062848, - 2.270692857804396, - 0.18186625505849516, - 0.8303358165442456, - -0.8560838259088672, - 0.07156623721939247, - 0.47897982574639186, - 0.3336621052869483, - 1.0375399442578992, - 0.3773004930448522, - 0.7569886166453519, - 0.8696059201056602, - 1.355637858804951, - 0.41343490322370086, - 1.876795812558066, - -1.7787202489042786, - 1.496044311489183, - 0.6543656563540577, - 0.2799686263198203, - 2.4457519796168263, - 0.1292211819752275, - 0.10939479460489289, - 0.725766623898692, - 0.4810092317367132, - 0.22388402427913137, - 0.4714683571359957, - 1.3454200461549777, - 1.593186626639397, - -0.5112156764311852, - -0.9896048202585809, - 1.0941915184709485, - 1.5295503194606137, - -1.0121043752601675, - 0.8231705839619146, - 0.07331796718840389, - -1.2899608997410539, - -1.295078772063616, - 1.669021525289393, - -2.6968866429415717, - -0.23093453020867796, - 0.6962063648134184, - 1.8489560949453452, - 1.1265650295477574, - -0.26888869055483056, - 2.5733598032498604, - 0.05921843401448826, - 0.013929291912946203, - 0.19808476076785494, - -0.5468589412403921, - 0.10643022769189683, - 1.5039929885826886, - 1.0915068519224618, - 1.246085192497629, - 1.7522704434236227, - 0.9356783931474612, - 1.2715550949941588, - 0.7216720640432351, - -0.5245202662797737, - 0.48937456122791806, - 0.7129984301723881, - -0.24032539815813503, - 0.7109599682034915, - 0.44426331148603976, - -0.3609661658190799, - 1.159329803364248, - 0.6159356069442637, - 0.5931012579683838, - 0.326133022242118, - 0.924027019206901, - 1.0490092258368893, - -1.5566291735239037, - 0.6060099513456396, - 1.7547941819843647, - 1.6964563682900382, - 0.2110174672026184, - 1.1033018820165215, - 0.11422764866203965, - 0.1503017614618776, - -0.36361221221385587, - 0.3078017688920592, - -1.7101683926566256, - -1.348185422105713, - 0.743264094022715, - 0.17086543812794186, - 0.01843393306539316, - 0.19584525509768155, - 0.40825275571447184, - 1.0291556373256436, - 0.472597482413043, - 0.25602973431387566, - 0.9826909839455139, - 1.6654744444625766, - 1.0143700650181304, - 0.026091050210833786, - 0.517659020469123, - -0.7257438131534656, - 0.18676676447707832, - -0.6115178029919482, - -0.9758732529773327, - -0.949398888831943, - 2.632382064837391, - 0.4933179008808892, - 0.1848361236948739, - 0.7003098794089914, - 0.12200981464536144, - 2.5600845382687947, - 1.1492733262856758, - -0.7031764251258874, - -0.0349884904969617, - 1.77080063563551, - 1.8124485579969287, - 0.7077519354554754, - 0.632407739055521, - 0.9725544496267299, - 0.6218099622171964, - -0.7271371758248686, - -0.07443342910004629, - 0.620672097550678, - 0.17770100093325383, - 0.3801978510059632, - 0.5597904479310398, - 1.0807807255546218, - 0.8339221545489041, - 0.4591800792284367, - 0.42961821913258585, - 0.20768768716311115, - 0.27157883719537346, - -1.2767485758203094, - 1.0531528533329035, - 0.6815006973726244, - 0.028318376130461172, - 0.02975613949574519, - 0.9382838059759977, - 0.09612077694098337, - 0.22213377163371284, - 1.2557561255735208, - 0.19655477651157463, - 1.0318445394686349, - 0.26705026586925884, - 0.889630795623437, - 0.08228398927542419, - 1.0654803750653512, - 1.40934744018558, - -0.36283856043965906, - -0.4455025214007718, - 1.453384477117701, - 1.5795721457307124, - -0.03468488738678118, - 0.23421473253652075, - 1.5505004928140769, - 0.9843223984765838, - 0.3824097461840506, - 0.1664522082130561, - 0.4924512640081491, - 0.2891686439078181, - 2.4553001399108942, - -0.5309969550018176, - -0.5554771191602547, - 1.1890165311075518, - 1.4205042479898549, - -0.5707462937494763, - -0.8323555731042287, - 0.4714155563864041, - -0.5522230442809712, - 0.6329318177555108, - 0.2029230208512997, - 1.5475052013300616, - 1.7958776730955217, - 0.28586539072490497, - 0.334456789987025, - 0.6585442726728304, - 2.0102045387663496, - -0.1769472274940494, - -0.7982972445384537, - -0.7309300399419191, - 1.7945578635177877, - 0.2237879516388985, - 1.188393273448084, - 2.5269324258736217, - 1.044160877069072, - 0.6818914896263114, - 1.8467073257360336, - 0.5839281853259639, - 0.5906548306923093, - 1.1087035805829077, - 0.820482181197364, - 0.5072740311072977, - 1.066674689589154, - 1.1692955904456728, - 1.3821589910375272, - 0.6487098875896427, - 0.14671368643332283, - 1.2065089665083568, - -0.8169356709872361, - 0.3686733088729012, - 0.028744822934817487, - 1.2784518626072987, - 0.19109906801990334, - 0.04643654815614881, - 0.7462535660272207, - 2.16325472330546, - -0.30777823495300083, - 0.21915032766393897, - 0.24938368371075526, - 1.5774532797634744, - 0.27902152577033923, - 0.6078965097165392, - 0.1866091231563581, - 0.19408999289830758, - 1.073631749859772, - 0.132969674146876, - 1.1950466289248425, - -0.5589218472715883, - 0.37721187506452086, - 1.5655240292343404, - 1.8811570694405901, - 0.4400144500533324, - -0.5020542243526112, - 0.7083564472993533, - 0.24380071377119883, - 0.8724573282801447, - 0.650201177958661, - 1.8466369960476658, - -0.6919080698812444, - -0.045586016355497805, - 0.24333944932269183, - 0.3520553965142968, - 1.4437646040732595, - 1.1172958315881276, - 0.4567532191537839, - 0.5697672802322039, - 0.44770856001731496, - 0.6427227598675439, - 1.3291525301324314, - 0.19652116970147013, - 0.7090037575885123, - 1.4401172154494728, - 0.12810441491078928, - 0.8406435489887241, - -0.4461834332147797, - -0.4523063192490767, - -2.4238793266289567, - -1.5839028234857233, - 0.7604146561442974, - 0.7858001586508322, - 0.42545756178496474, - -1.1583646891925428, - 1.5033983017671506, - 0.20838280794755248, - -0.24717738252059693, - -0.6819842479977986, - 1.7976865268495226, - 0.6408428612670098, - 0.5725827813561586 + -1.1909756947064645, + 1.4327069684260973, + 0.8871629403077386, + 0.8595884137174165, + 0.015696372114428918, + 1.150035724719818, + 0.9533241281124304, + 0.002118364683486495, + 0.405453411570191, + 0.2890919409800353, + 1.3211581921293856, + -1.5469055532292402, + -0.6559693441389339, + 0.19342137647035826, + 0.5534389109567419, + 1.3181515541801367, + 0.6755540851223808, + 1.0589691875711504, + 0.3374376536139724, + 1.0475785728927218, + 1.0459382556276653, + 0.8637172916848387, + 0.12471295376821585, + 0.8416747129961416, + 2.390960515463033, + 0.07619958783723642, + 0.036141936684072715, + 0.24779219974854666, + -0.8971567844396987, + 0.018289191349219306, + 0.7554139823981354, + 0.2152685809694434, + 0.841008794931391, + -1.4019732815008439, + -0.10091819994891389, + -0.14461950836938436, + 0.35402033219923795, + 0.5657383060625951, + 1.5456588046255575, + 0.30796885521603423, + 1.0338007325554992, + 2.0306036208387996, + 0.21188338677770105, + 0.7047206243171088, + -0.785435211763197, + 0.4620597371620487, + 0.7042282254621743, + 0.5235079678938094, + 2.0078429507780005, + 0.2269625418708953, + 0.6319794458091295, + 0.0395126866933667, + 0.46439232505089606, + 1.3211056154702059, + 0.15263055220453448, + 0.16452954293239852, + 0.7673687357524115, + 1.3919861934464073, + 0.07984231300862901, + 0.8165939265478418, + -0.3447660142546443, + 0.5282881452973941, + 0.2912053597430635, + 0.503591759111203, + 0.2852956847818571, + 0.48428811274975, + 1.3634815124261457, + 1.2245743551261743, + -1.2811082751440426, + 0.8754755042743244, + -1.710715324029529, + 0.7491638059190651, + -0.20393286610125122, + 0.6806560043814565, + 0.047071635325711084, + 0.3948442093272043, + 0.4362576043409168, + 0.6941032876787643, + 0.6786296737098565, + 0.2395559950038969, + 0.15122662929444983, + 0.8161272333600409, + 1.8935344675962007, + 0.6396327631937027, + 1.9302467674655757, + 1.2103837049045143, + 0.7974354194278735, + 0.7025622240016004, + 1.1768124501049289, + 0.7009077309156047, + 0.9841880707224154, + 2.365768628840039, + 0.4961429262475947, + 0.7965948666649523, + -0.4740208901256851, + -0.05669571649092953, + 1.3577972581070583, + 0.33419793089900884, + 0.5367838249027502, + -0.9161988612665409, + -0.8596682999817407, + 0.22598548673375538, + 0.6287758265382943, + 0.18649434877307466, + 0.9524783451091219, + 0.9881375825933089, + 0.13968327403129469, + -0.22301898188247601, + 2.123691888593553, + 0.12227343425882888, + 1.4229859527722433, + 0.3635645568066484, + -0.014752111804594866, + 1.2723950785462097, + -1.4257947334380214, + 0.2093947875359238, + -0.5928860038389254, + 1.1043515698603126, + 0.8891574940728737, + 0.2883768477152654, + -0.31956139984023146, + 0.156998376446689, + 1.0576331832046142, + -0.5246273459284702, + 0.07187803937036874, + 1.9107594272771828, + 0.5130821444669919, + 1.0439446554953231, + 2.10778515279337, + 1.4599274815852936, + 1.0154054578125205, + 0.7491846009241975, + 0.4402663916687296, + 0.6889718563269422, + 1.92453332001529, + 0.4112040207072239, + 0.8907649561731171, + 0.22636322725170696, + -0.387886231967176, + -0.08710696996399898, + 1.126385822137273, + 0.2471117161577363, + 0.1211718053315409, + 0.2989839355420466, + 0.24945521515244942, + 0.5810733206206065, + 2.7638440798495663, + 0.3993254369795763, + 0.6684881692058056, + 0.5004829001543722, + 0.8630648605906245, + 1.1539222406122254, + 1.181944105999232, + 0.39137144842193117, + 0.2950799597862399, + -1.7122739244712557, + 0.12678118632697175, + 0.0037598477954959237, + -1.2689942560733918, + 0.5539212514397202, + -0.5040427180819637, + 1.5294006744839312, + 0.20545485392597962, + 0.3130131289808603, + 0.8665207121682993, + 0.2990705295943764, + 1.076540643846122, + 0.3631773475444523, + 1.8936798255518426, + 0.3876744557775985, + 0.023557610392553562, + 0.17738671938459905, + 0.9835127293431644, + 0.0235045858853947, + 0.553776977863366, + 0.3537692939966397, + -0.37443660019278063, + 1.5410299832779386, + 0.06308453895730506, + 1.7879796324557498, + 0.3862536891890525, + 0.8227753737653734, + 1.0572033312141293, + 0.03187997356903155, + 1.3431824575289413, + -1.5533423394310608, + 0.5270464509549642, + 0.7111123993648228, + 2.6377912107038637, + -0.09443480774144415, + 1.4311837522545638, + 0.5927584465506688, + 0.170296895326288, + 0.2885813223432078, + 0.17160238198599498, + 0.9828178292431048, + 0.9244428673433661, + -0.06124629986631457, + -0.7310333425852061, + 0.9959929702457525, + 0.955557932627455, + 0.7138407711950433, + 0.13337096219412198, + 1.9087796580911864, + 0.15592326145312668, + 0.7596525320929627, + 0.18167274532368163, + 0.27449257074640343, + 0.06791235738075722, + -0.1708010306976224, + 1.3829972488529256, + 0.13139536722591508, + 0.4344371851022324, + 0.2645340683169988, + 0.5656583442738247, + 0.5850842795017246, + 0.4151005583815808, + 0.4255305913978583, + 1.498569955138537, + -0.36015657086902797, + -1.3379684019509706, + 0.8210479561079149, + 2.0978007807716916, + 1.2829332468745234, + 0.2703379257393719, + 1.0031403620449315, + 1.0786735513204067, + 0.34075268512976414, + 2.4814584228756535, + 1.3852548761892063, + -1.154600965389669, + -1.2680690503770815, + 0.6078621862094797, + -0.6112816747957622, + 0.10203511229233127, + 0.21071705250565526, + 1.7923391966469424, + -1.3127127065922315, + 0.555877426385625, + -0.10465157484776595, + 1.850397801609901, + 0.1934642338198724, + 1.0327232157358608, + -0.7558621756229088, + -0.8811117326479355, + 0.3938922629126754, + 0.33250662216224913, + 0.5289444088560467, + 0.04826420692565666, + 0.06198845052177757, + 1.9321781695813465, + 0.35583899747282033, + -0.4634193992174632, + 0.9894148472858507, + 1.388647381631717, + 1.0877137365241412, + 0.43880126303439065, + 1.2456099371478462, + 0.5029255176706321, + 0.5855993109298576, + 0.35280056010840655, + -0.7485279533390595, + 0.27477883705216777, + 0.23734976450942513, + -0.2598436943633885, + 0.44850974251240683, + -0.47001481339778667, + 0.3495667716276656, + 1.4061761394942678, + -1.5601488888852328, + 1.5573976506490226, + 1.6726268084547062, + -0.5407998076498752, + 0.599962085981993, + 0.3315265183521529, + 0.26623740682783636, + 0.2794280245327373, + 0.27166078437402447, + 0.09911201694909029, + -0.5882267282885189, + 0.025941713524132055, + 1.1055869627971613, + 2.0751854067317823, + 0.4190598246739658, + 0.4134052764244962, + 0.7175769325882829, + 1.384580160839074, + 0.5000695850282261, + 1.951103236540061, + 0.03678625863071046, + 0.44585250626100126, + 0.4500013006954749, + 0.5154795307938983, + -0.41327907241887124, + -1.7193166679275491, + 0.09988207650262723, + 0.7257141531219552, + 0.9169762830692352, + -0.5638902404112554, + -0.24672080681888428, + 0.11911398259834126, + 0.523546018063799, + 0.8215173089989222, + -0.045370411959291965, + -0.704492925529761, + 1.7303155195063402, + 0.22892725550405343, + 1.0927410572908394, + -0.2001718506206763, + -0.48131023935727413, + 1.7114259970115762, + 1.4353870862526215, + 0.040843424766001724, + 0.36201819567044535, + 0.5725921910432455, + 1.1044602367331493, + -0.4256720265205931, + 0.75568884284869, + 0.010281457155327522, + 0.22458577076489658, + 0.028944498401123394, + 2.1040773666293053, + 1.5675141434637165, + -0.40064420205997625, + 0.16495455703336395, + 1.2073482032456735, + 1.7119870129859922, + 0.6575858924331783, + 0.20007988155239426, + 1.091259859221752, + 1.368220262225958, + 0.8916251175268084, + 0.8375662124501372, + 0.5141447133892467, + 0.7439528461648938, + 0.0899015732727284, + 0.3227395618852, + 1.0501136937792215, + 0.7978764964211627, + 0.5525243131579977, + 1.6415521890288047, + 2.0277395138175196, + 0.07214886239228502, + 0.6131516784246442, + 1.4891664262942452, + 0.22129657503462105, + 0.801888214216484, + -0.42446671286333926, + 1.118854972135864, + 1.569548064582847, + 1.4277317710676356, + -1.3718378731166938, + 0.7792145652142417, + 0.24025265459504974, + 0.1911699128232047, + 0.7189049215428981, + -0.1665595772769085, + 0.7646112966882201, + -1.1051915914797859, + 1.0213556589900556, + 1.7096560949798731, + 0.12384201643823771, + 0.28943005670297534, + -0.3014922439465465, + 0.4144350112798109, + 0.9498579011377821, + 0.5218485421095229, + 0.502810027757784, + 1.0557521639658634, + 0.5397352373427955, + 0.3469912503733692, + 0.8741928933305493, + 1.699458930621629, + 1.2828372246866984, + -0.45255766631820826, + 0.3938001271158281, + 0.4257406105857961, + -0.3937331661815619, + 0.17196425471545257, + 0.8649983085249567, + -0.2048613320814621, + 0.7978708863196311, + 0.6769776126657561, + 0.4872101346078452, + 0.765665358162811, + -2.200564435744119, + 0.4756748381165133, + -0.9984064955184256, + 1.5528072078665365, + 0.18853062859763994, + 0.9889637830869817, + 0.21112708032840474, + 1.6117222924558978, + 0.5667304418132302, + 1.5387739411600052, + 1.769100570312561, + 0.2682004879637708, + 1.700769505670963, + 0.3533910559483136, + 0.3364890211021921, + 1.0571054344422781, + 1.1986787224676672, + -0.7147453741565917, + 0.8043460416389878, + 1.1916553458718568, + 1.4482691251839777, + 0.5017557989907293, + 1.6133349220114617, + 1.2990825737762788, + 0.5531844259723022, + 0.5456699950930499, + 0.26228661897316985, + 0.21907020968038537, + 0.9323529322684813, + 0.9540316671351478, + 0.7120509492248905, + 1.6615021287437646, + 2.547691702457717, + -0.356409207238252, + 2.6519991181342113, + 0.10374933997096626, + 0.11543222568465579, + 0.2586704644560386, + 1.4877433319614572, + 1.4543434763906329, + 0.7043082981680985, + 1.4663513758566715, + 0.3536221825367628, + 0.36320976100296887, + 0.4328745920492785, + 0.29563065498089497, + 2.0798442368337016, + 1.0627364666653065, + 0.01805510965628009, + 0.02279839968937127, + 0.8124230006825046, + 0.615135458353951, + -0.12139461101379515, + 0.3246098059252541, + 0.6705693906174532, + 0.1491613231433755, + 0.3270638038828972, + 1.6761854255764614, + 0.6809960077267706, + 1.1950561396844794, + -0.2779593857816089, + -0.052165291629840356, + 0.353683601249814, + 1.0540450911893136, + 0.35207889140437837, + 0.6659818403106037, + 1.0655015019548215, + 0.3644839042458271, + -0.7274143817732619, + 2.1158507289245674, + 0.6855615854791441, + 1.3812877674130073, + 0.06842655874188228, + 0.31253629248338644, + 0.45425318515036217, + -0.5553548562130987, + -0.5019177788520144, + 0.6931185215037656, + -0.2453604968501647, + 2.337598482195056, + 0.0800997455382507, + 0.4134509638251659, + 0.20445196734865428, + 0.47845329452970037, + 0.02958097097523698, + 0.01746667513481011, + 2.054289530002812, + -2.5318833133900305, + 0.4238146840382535, + 1.2499025106911574, + 0.5711487534631029, + 0.2970484291574556, + 0.8718652175016266, + -0.16371119657423003, + 0.6895231987879346, + 1.9845899031898866, + 0.9551299189232728, + -1.1805528861977703, + 1.4704739392964385, + 0.7108614710694785, + -0.8118350520747238, + -2.251213065289845, + 0.6708259593192185, + 0.06338342659156378, + 0.20024796080692478, + 2.6429226847057117, + -0.14550836017250823, + 0.8933687076816909, + 1.288554738453981, + 0.33119818801148354, + -0.061147655522904056, + 1.8560568664485682, + 2.1225899596034625, + 0.020305520730884315, + -0.866260054447336, + 1.591464114097166, + 0.0005873380366202194, + -1.5237107863092993, + 0.15487036534807186, + 0.010685782511001917, + -0.5437403904555086, + 0.6754553436625048, + 0.8183481023464054, + -0.11601728545379246, + -0.6908582143577912, + 1.0389554757038926, + 0.981271848028589, + 0.6166208035641588, + 0.020856736754465456, + 0.5993399050363709, + -0.05546876687944298, + 1.983488054493826, + 0.07788802802787388, + 0.4045844144487453, + -0.24268793363602895, + 1.1069498460085399, + -0.6289509748030468, + 0.2685148227050607, + 0.488360812855723, + 0.5868386021149908, + 0.043672011407345696, + -0.2627338282699097, + 0.23058049991323532, + 0.3285638932885436, + 0.8380485839532836, + -1.9943356434051311, + 0.10816425581928157, + 2.039686037158919, + -0.6587570839399224, + 0.866452901845807, + 1.0771702093251387, + 0.06543853933530658, + 1.3120365067494253, + 0.21537592656166116, + 0.2597174736789681, + 0.46954942686078716, + 0.51217052768379, + -0.11489386424404562, + 1.265974917971162, + 1.001555629245316, + 1.122267866057918, + 2.0118420191461803, + 0.30201074703431263, + 2.2035145562945293, + 1.3460983256762604, + 0.626820481067724, + -1.8438652086995353, + 0.10997254269648227, + 2.0065611269776644, + -0.7578505995039082, + 1.0159978401232488, + -1.59249315299401, + 0.2923665381528412, + 1.3370321440963355, + -0.23102356637828622, + 0.3186160154286117, + 1.3970387291415345, + 0.11182047780156927, + 0.4315681264740078, + 1.6137850971757342, + 1.638962314523427, + 0.13409659216509714, + 0.17203736635766856, + 0.8806401486464327, + -1.47256655193283, + 0.7577097291811645, + -0.015838160674877966, + 0.8896634154552829, + 1.1341571652425653, + 1.7316301950572073, + -1.2858104335854346, + 0.8811405230322151, + 0.16270221119589887, + 0.7436871197925536, + 0.6167126196705511, + 0.9718668340412515, + -0.7119035172923535, + 0.45913770322630687, + 0.6562382063047018, + 0.7515034769028561, + -1.8721836112668646, + -0.5562800612192723, + 0.9315457527732457, + 0.32753233118239405, + 0.7408138005017622 ], "y": [ - 0.9563001398210165, - 0.56367411633477, - -0.1541158912437135, - -0.4852352955880883, - 0.9749591557098078, - 0.9532482011546275, - 0.9810359625397511, - 0.8584971659926595, - 0.7164857012727133, - -0.684061944089911, - 1.1478349536558663, - 0.5623752445244916, - 0.5921896601207891, - 0.7556906707867606, - -0.6099344588446286, - 1.174993192764655, - 0.6812702078645214, - -0.1910008257926794, - 0.9098452623143523, - -0.331579835427364, - 0.26528407184059866, - 0.6682202776103048, - 0.892587956123454, - 1.0834477434550638, - 0.48273180961138795, - 0.6404718820434585, - 1.0296654448326752, - 0.8888567068236917, - 0.3151691071704559, - 0.7473293569218145, - 0.9416682899545545, - 0.6756684272067461, - 1.1542022872675948, - -0.06830394804560314, - 0.22072363938532744, - -0.11105903351945545, - 0.8632020978394257, - 0.8331844817491016, - 0.7823249404317661, - -0.1549166532232853, - -0.18799296041309432, - 0.7193886937443557, - 1.108609822572437, - 1.078706987938265, - 1.2244175497108465, - 1.2572003893815236, - 0.2204784005969529, - 0.07140239901804157, - 0.8794697849553703, - 1.4460663459770196, - 0.8985192954145158, - 0.7012264845546696, - 1.3172985577938938, - 1.2857100440995097, - 1.1444745868801451, - -0.2187434524843057, - 1.01031396105705, - 1.1433587829514091, - -1.1761540162971702, - 0.817258040250942, - 0.5389500243914918, - 1.0557294599219649, - 1.019858793171351, - -0.13458493011177497, - 1.1042159495837627, - 0.22690374601883906, - 0.7489152707441404, - -0.10645352746960057, - 0.9034247129184405, - -1.4151159275807998, - 0.7969447666301743, - 1.0868292941323938, - 1.3514897114163125, - -0.46195752723456285, - 1.0489722291240455, - 1.0482038115098697, - 0.40321159999213485, - 1.0949835521338436, - 0.2178046902003904, - 0.536549182376703, - 0.8737776928672263, - 0.7961869548749969, - 0.5895794961543963, - 1.0547387791614082, - 0.4285260438764187, - 1.0359284978141503, - 1.0272655153619539, - 0.7995459594111727, - -0.4361311962504941, - 0.8486924017798583, - 1.26591038741436, - 0.6302206955415824, - -0.005293741715174605, - 0.6809660061722591, - 0.206724354648266, - 0.9622231496366394, - 0.5772050056221016, - -0.407987770863417, - 1.211101815241379, - 0.9637223613119166, - 0.8173473836291141, - 1.0863998918285072, - 0.1971836141539085, - 1.245471083884693, - -0.2343543146878968, - -3.021893249632707, - 0.901896893662359, - 0.4769390146479713, - 0.7819116938876144, - 1.2368669741121874, - 0.9378192827642735, - 0.5150477565188947, - 1.0346701123139135, - 0.9251789173627163, - 0.721391561817607, - 1.2931736260544318, - 0.2695498604930684, - 0.8514617419650712, - 0.6619124847370745, - 0.7043349211688326, - 0.16003071404853308, - 0.24708028854800634, - 0.19018047263865126, - 0.8844963590105799, - 1.1755456319294797, - 0.9889579337397474, - -6.0904525807500525, - 0.617447464483649, - 0.1700859986338914, - 0.8952893796861678, - 0.593436806337198, - 0.8872226925267676, - 0.8889733337883141, - 0.5703883258506366, - -1.3546144819739214, - 0.637125112358905, - -0.5092836924829768, - -0.1035769700115079, - 0.7556593987319742, - 1.0440227788781469, - 1.121545094533149, - 0.6906587580959118, - -1.2648213369336845, - 0.49967360043236475, - -0.5228269636097231, - 1.194232661894962, - 0.6556748715093209, - 0.652338576688055, - -0.010980905338740854, - 0.45211336060591156, - 0.12855414995033726, - -0.2962317602001088, - 0.9802321918504715, - 0.8635711176682073, - -0.9621083529291781, - 1.013077041454308, - -0.28244935194600185, - 0.7899506112593409, - 0.7701784174792903, - 0.7151342546316997, - -0.31526453433330515, - 1.0804252625074673, - -0.2264193324048076, - 0.22866149444744277, - 1.1082161608113221, - 0.8373829580548566, - 0.9221335684678982, - 1.318212868859485, - 0.4057383124819651, - -0.08023039337461557, - -1.151001280529317, - 0.8939483538945547, - 1.1381708222240827, - 1.2368105592544372, - 0.9422689811247142, - 0.5169703847090368, - 0.0515610320264841, - 0.8865444210578453, - 0.5464127341579301, - 0.6825084053374243, - 0.5081622899457074, - 0.8371022805002184, - 1.1811096730838315, - 0.022423432463402726, - 0.4387346343984566, - 0.6793245602557278, - 0.8028916422140373, - 0.5818466131588043, - 0.5341628939672147, - 0.6325151846279411, - 0.8737105476087352, - 1.1129698397950074, - 1.0210212650680033, - 1.320807734620895, - -1.164990103194113, - 0.3230203187153826, - 0.03814108520431381, - 0.5102447951870595, - 0.7302623216406139, - 0.80755236430032, - 0.5655553937883895, - 0.894029524442537, - 1.1053503280568655, - 0.4673162025076554, - 1.4154531571486249, - 0.5053482840674874, - 0.8564501664225174, - 1.0359770054282649, - 0.8695500247437793, - 0.8224547762176948, - 1.0117504789609697, - -0.24736193665003992, - 0.8876563408230493, - -0.0389953664814513, - 1.1521075033968797, - 1.4629612379490884, - 0.24454684390609577, - 1.2858986094105873, - 0.5673877663248503, - -0.16637641335700692, - 1.3720927657891322, - 0.4417114804551756, - 0.7672837737744502, - 0.7863351277791972, - 1.1487572086456468, - 1.2966914216938221, - 0.7881832822239443, - -0.29694689420451437, - 0.5862867286437865, - -1.3596353791589806, - 0.3943346214586967, - 0.6924704245000584, - 1.2531174073535283, - -1.594946825392661, - 0.9329518548193081, - 0.9761810993294707, - 0.9240083177683936, - 1.0732412099749309, - 1.4748698703444418, - 1.1376649245574466, - 0.6342281276272601, - 0.9572430640153451, - 0.4668067525658358, - 0.9177546058661825, - -0.6281323420014395, - 0.3873806317844921, - -0.21119245958653998, - 0.9683868246169265, - 0.8112173887449838, - 0.37373595920803826, - 1.3718770456888314, - 1.1762514908920725, - 0.7111689701343504, - -0.23813071716937895, - 0.7900352173658547, - -0.04857026957020749, - 0.7472630098405544, - 0.654699281659755, - 0.530870304637542, - -0.8201511092481458, - -0.7209344948697729, - 0.8370957504897982, - 1.132391181727895, - -0.08671751054972798, - 0.9455713161022101, - 0.48818751964288687, - 1.0852033744437637, - 0.5564710223117348, - 0.12359734045819493, - 1.0593418322623762, - -0.37787079302075677, - 0.86684935048427, - 0.8366005128838205, - -0.19205031304815345, - 0.548062759876486, - 1.3965824808212073, - 0.5961301439715276, - 0.7898704824444307, - 0.8135177494530543, - 0.20559883101196785, - 0.4267052934828295, - 1.2505849650951975, - 1.4760969535101167, - 1.4469983739825047, - 1.0470789889837078, - 0.9823357035202829, - 0.7238639541714589, - -0.12541382261021283, - -0.37868101855866954, - 0.8352006472854678, - -2.8463370572701963, - 0.6137469010204342, - 0.5380254622156477, - 0.026439586508798296, - -0.2848070072719229, - 0.8510313006096251, - 0.1780193646249062, - 1.136313468644075, - 0.12491769536214181, - 1.2091169106590662, - 0.6171957216661017, - -0.4661398035054569, - 0.6392374924982285, - 0.5152351252925174, - 0.8728488043574649, - 1.031671222085576, - 0.4241319372240784, - 0.777399855636452, - 0.7653565646752813, - 0.8109288729115778, - 0.504839904747777, - 1.1744694571616545, - 0.9390571050207512, - 1.0529630008374093, - 0.8978568460609795, - 1.2692760131104261, - 0.9279180145196091, - 0.9828634769589168, - 1.1398274215823938, - 0.5057853177207998, - 0.9540909489200962, - 0.5786905803618954, - 0.7802049737921424, - 0.4341867241481321, - 0.7556836444426276, - -0.008044279543092614, - 1.099918374013043, - 0.9727472292873347, - 1.1322124758005339, - 0.7502140910618458, - 0.9929526348239843, - 0.6875320078952991, - 0.8671860581509376, - 0.6791798639154116, - -1.0738318740293842, - 0.8020716161683996, - 0.25799169169309355, - 0.9652999025407496, - -0.4971794775816354, - 0.9370670037384968, - 0.4059285443250036, - -0.8427808354386479, - 0.5102967163939187, - 0.7353056432675316, - 0.292079990232716, - 0.5501580994707236, - 0.6715080217865079, - 0.43425235064552004, - -1.8911054714604973, - 1.157908060266615, - 0.14316535949595766, - 0.48285328410021777, - 0.4243826124192296, - 0.9496812323539475, - 1.6879141016127015, - 0.3069171080514046, - 1.159719520072322, - 1.085621221626294, - 0.903434870310913, - 0.06563847547904222, - 1.4723802702625428, - -0.07453965990164879, - -0.49397607734260335, - -0.20351641485852578, - 0.4231707849572679, - 1.3807462731588114, - -1.240276516369139, - 1.2151828177540924, - 0.9448244935527788, - 0.58166011113553, - 1.1994532504848616, - 1.402760145308721, - 0.8015861288080641, - 0.1083945600408569, - -0.5939049568927177, - 1.1385312487605914, - 0.644944664274214, - 0.5390856276849869, - -0.6463589752796155, - 0.4376603856464, - 0.5991026174011083, - 0.8397883459725874, - -0.2516714230138626, - 0.6954985703850953, - 0.28268629740071005, - -2.307361727132489, - 1.0322020081258416, - 0.266018526571854, - -0.42021911611331486, - 0.14293136146524787, - 0.9429742248335828, - -2.866127731118459, - 0.43090872684107095, - 1.2451438469696305, - 1.2738053595085224, - 0.7572411855250314, - 0.9085008015175964, - -0.16837306931488838, - 0.5578351873574814, - 0.34676917608291435, - -0.6881862730608398, - 0.21206701837873299, - 0.2885856168491827, - 1.1690168843213433, - 0.9917970065262716, - 0.8777863925298479, - 1.3547397711665061, - 1.1156789421300028, - 0.421817853732426, - 1.068139903399608, - 0.6160101361704124, - 0.4964544148950425, - 1.3201101193952862, - 0.6487972595326825, - 0.7358112138595834, - 0.42865906336296256, - 0.7462985429415265, - -0.15281460650314593, - 0.7100047001564285, - -0.5404926497902216, - -0.18287768715806862, - 0.7571862642882445, - 0.12926164573043408, - 0.8188088059158538, - 0.9585527804039233, - 0.6085574624384116, - 0.6328923218837383, - -0.4370935969245155, - -0.261566434547124, - 0.9021861091862688, - 1.3686150398222336, - 0.77430344372668, - 0.7377398980310823, - 0.992962404460414, - 0.5918243045676179, - 0.525726735548286, - 1.1441841860299906, - 0.2054829995662244, - -0.25108916775827517, - 0.6538370002972034, - 1.087353779086893, - 0.973100168568239, - 0.8148446921024002, - 0.6658281956226718, - 0.5744255936506004, - 1.0092103248051427, - 0.4467885736638151, - -2.488029667346201, - 1.1305975322386166, - 0.9993273262088715, - 0.35878205767483706, - 1.0361012576168327, - -2.64890706673106, - 0.26174856989107553, - 1.4318883098241673, - 1.0925241167292188, - -0.8107368375176389, - -1.1533783022752133, - 0.7848813930706093, - 1.0455050790980622, - 0.5630296777124313, - 0.7654374775108019, - 0.38513629646339576, - 1.3677694318409113, - 0.5847921878467996, - 0.9981205872690344, - 1.0727371254830136, - 0.5848574429554798, - -0.016043399481949105, - 0.2646280033031587, - 0.9662921589229478, - 1.0368581771069802, - 1.168916525092093, - 1.2669603604271096, - -0.27794837650267584, - 0.6314049798017622, - 1.1266369287160227, - 0.79335728899897, - 0.9385885862887411, - 0.414197010300434, - 1.1034517625983824, - 1.4075679013968454, - 0.09665185259713738, - 1.2713933866833282, - 0.6008036326669455, - 0.9305388295812436, - 0.8419555858452394, - 1.0693167912808779, - 0.3242827886004076, - 0.45860077109701436, - 0.9233643755635512, - 0.587627210427875, - -0.061211756798662975, - -0.4151959279844366, - 0.5398653260634977, - 0.9717979751171804, - -0.1372995970776998, - 1.1912527009076874, - 1.5764185342144459, - 0.41956825566119216, - 1.1887216351250016, - 0.7035185263910311, - -1.8310371496656286, - 0.5121210709177894, - 0.8368710277624276, - 0.5990825628893295, - -0.1617395170166951, - 0.08612230665029008, - 0.7188694618861549, - 0.9851651336883385, - 0.43929964771835683, - 0.6498502293364057, - 0.8441525153614444, - -0.40769225855074254, - -1.0464430630061532, - 0.6520807098485237, - 1.526141276237392, - 0.8341414512867047, - -1.1189061809947596, - 0.886926141174585, - 0.8232054990971224, - 0.47043759215637837, - -0.3206936675078027, - 0.9339047912553697, - 0.9161887690720951, - -2.1609239924323207, - 0.6317919172442861, - 0.5931016040575645, - -0.7644003504062162, - 0.6879636575912578, - 0.27870759574025983, - 0.8195757378966464, - 0.6369072101602864, - 0.7966317247281332, - 0.9106786291024548, - 0.3588920460560159, - -0.10703443045344851, - 1.0251253274956365, - 1.0502000005174228, - 0.4851932255318019, - 0.8437075208713256, - 0.9296195660142904, - 1.0228141299814673, - 0.4543894516873306, - 1.2086731537247348, - 1.125433159483579, - 0.9358174594959632, - -1.1292457072601332, - 1.31904041334615, - 0.946014889798491, - 1.1789178454720606, - 0.29181746457932434, - 0.644349958709548, - 0.7028211385559339, - 0.8797565659385773, - 1.5770508795675369, - 0.16369726588541234, - 0.9416833585722975, - 0.20942275474124195, - 0.7741633752412149, - 1.104223707437928, - -0.17680183333032562, - -0.5119795264145526, - 0.9187491394644596, - 0.7374246303882759, - 0.4800954389039349, - 0.7262559731980465, - 0.8181865091532075, - 0.5396633947391862, - -0.47532423660184886, - 0.9782621538627065, - 0.5999574851995548, - 1.0175762880576382, - 0.6207390690877848, - 0.28728114262511806, - 0.25201167033693916, - 1.014646347061636, - 1.3676808949175694, - 0.9653710005187328, - 0.8767821170649297, - 0.6837074755847263, - 0.7919288977266905, - 0.784464398129858, - -0.15314472866279072, - 0.9488511469153731, - 0.7279368546115244, - 1.2782321537858627, - 0.934429392176205, - -1.6644615965248577, - -0.1543790453058138, - 0.5949757123174262, - 0.6904392304281637, - 0.8688509856416419, - -0.5292047980097969, - -0.06741209717746699, - 0.9299041119046647, - 1.2594055937119752, - 0.8529603369909182, - -0.9111467447174117, - 0.24200677983935082, - 0.7044291340611268 + 0.3674541627572123, + -0.023391631597180496, + 0.5560235974818095, + 0.73312405967597, + 1.5700467204699695, + 0.08994761840418508, + 0.6829559391798075, + 1.1091898871809014, + 0.7835309834346851, + 1.220959323757619, + 0.2929234869021542, + -0.31877747330475303, + 0.7065154654934978, + 0.7434226276928895, + 0.9356572710092532, + -0.09846520992104768, + 0.8308391399150388, + 0.6663290255792003, + 1.3350908968463981, + 0.196160329233507, + 0.42371070189836413, + 0.5142103699263001, + 0.9218491509907478, + -0.04717370403844212, + -1.824797912023624, + 1.1610846308647669, + 0.7159444498343988, + 0.9936550613038433, + 0.4858409378315942, + 0.583114459965931, + 1.2434576483002848, + 1.1139677044118366, + 0.7772495604045666, + 0.5492197832788176, + 1.1147061596279384, + 0.6156674181699291, + 0.8260235551521671, + 0.8866663097214627, + -0.8116862208258475, + 1.41537438363338, + 0.2502952033932111, + -1.0616004211523646, + 0.8837708514196176, + 0.4657337507448194, + 0.5664492302729459, + 1.0275505614553366, + 0.9459280227177453, + 1.0399424146272755, + -1.4725357408394864, + 1.7081314327345591, + 0.9848071851117401, + 0.8960380587199943, + 0.7653321119235867, + 0.5292232913595694, + 1.2533250217233234, + 0.7090701940491229, + 0.9268593413643367, + -0.06865180811357285, + 1.7483678891210843, + 0.7299674824819249, + 0.8125706941535307, + 0.8454778335173283, + 0.8876107107044895, + 0.9420314367179579, + 1.1001838841496578, + 1.0684291760588647, + -0.03352261955559088, + 0.22989452310761926, + 0.175886878743244, + 0.7807462967153294, + -0.21125521801407277, + 0.4446318901723939, + 1.0859868710321336, + 1.0144567172486205, + 0.8244356059548068, + 1.0024644358110986, + 1.0069344249530978, + 1.1187878006143377, + 0.27548259920571816, + 1.2221722106834942, + 0.8664340686135295, + 0.8447606298628383, + -1.0759429136200045, + 1.203622408704389, + -0.820783641706444, + 0.28814778733959834, + 1.1623911707692047, + 0.6791768956895652, + 0.7252948647064561, + 0.9716995843503802, + 0.29088598763266904, + -1.9071241822918585, + 0.5509665174582685, + 0.5326361773517014, + 1.2628236169923905, + 1.0374737176698787, + 0.27984211388799807, + 0.812558945704251, + 1.2058119649559491, + 0.7956575832526951, + 0.2649867410670015, + 1.4869728448081716, + 1.0851235856574686, + 1.0410477482847715, + -0.13413053730062208, + 0.2850323457979278, + 0.8745910132052526, + 0.9801961852324268, + -1.3372196026898622, + 0.848649457991355, + 0.03229242088357154, + 1.1725796239764252, + 0.9760350384032893, + 0.08276993814819988, + 0.1627216400502146, + 1.125061549429784, + 0.3356436116541825, + 0.1123896080026281, + 0.62173417331024, + 0.8377554044728583, + 1.0517568006693931, + 1.3254871797580048, + -0.1181460439931683, + 1.0869130338742077, + 0.9036567321575841, + -0.7945393440283395, + 0.8446970406339753, + 0.2960895590542112, + -0.9984993227458432, + 0.22254309441209807, + 0.3048644077468854, + 0.775415475359795, + 1.008474075200239, + 0.6842148532283758, + -0.9748028612119368, + 0.7736739466522344, + 0.24214814842054544, + 1.0503196453808843, + 0.6953386819958086, + 0.9367600093332686, + 0.3488927617485338, + 1.2546813598534703, + 1.347358806198681, + 1.3324479079622193, + 1.5348875840679699, + 0.10720806230977908, + -3.057530235554813, + 0.8932610797452627, + 0.8624698359806784, + 0.5967249081597903, + 0.7789981073143739, + 0.43563119485654944, + 0.5640088112892698, + 0.8894251661793642, + 1.1406726339525264, + -0.6014749511402573, + 1.6771769213164225, + 1.2594374619420963, + 0.6539287305683448, + 0.7574142489773337, + 1.0513418030731958, + -0.1828782057133731, + 0.8372007620155084, + 0.9425051968670588, + 0.5205876025521379, + 1.1656679492073048, + 0.24770268687242414, + 0.9599661053186033, + -1.6866201336819966, + 1.100541647678872, + 0.734537863219249, + 1.3094297274693096, + 0.4815418914507701, + 1.0980291416997652, + 0.31575078535435663, + 0.9485282136497757, + 1.124124703686389, + -0.6664962737532907, + 1.2580545597716748, + -0.7164383636241201, + 0.8130765752641089, + 0.7650449834383721, + 0.5502192392122272, + 0.9159385696803586, + -0.2231384661751462, + -0.10869572505558067, + 1.0877039127506227, + 0.7241791482978286, + -2.4491689222815025, + 1.1380010582188511, + -0.2822404141812229, + 0.8497576029516201, + 0.28452404434960826, + 0.5842716429981081, + 0.904809952729229, + 0.3121441260623552, + 0.6650273737788623, + 0.4303474431335601, + 1.016314439525379, + 0.6925905179184375, + 0.7779624521377506, + 0.807394962371724, + 1.187123381820177, + -0.32621698855167125, + 1.0272898258991408, + 1.223874572494271, + 1.092178416330853, + 1.0823905403654193, + 1.1274690826678548, + 0.7378907989212902, + 0.2838982234082117, + 0.6961088942097999, + 0.6595623683014566, + 1.0672353335035254, + 1.2440940753167578, + 0.79790249213357, + 1.2003344037866253, + 0.7050234949530617, + -0.25473703551972715, + 0.8718808363591878, + -0.028324676465634413, + 0.7896650689024654, + -1.3325256723295684, + 0.03427975551809048, + 1.0132945793425918, + 0.7406251566296547, + 0.8055528478006115, + 0.9829037022370208, + -2.2262969762889435, + -0.002234034975419519, + 0.4544799744448893, + 0.21407478390590629, + 0.7539126006794707, + 0.7165491648924673, + 1.1293767425969852, + 0.9809433304226793, + -1.1450102060861846, + 0.21946926088627983, + 0.11769218233539025, + 0.8638548753219488, + -0.5076307331279614, + 1.202213701429181, + 0.501199496768719, + 0.130882878271797, + 0.19220062193681275, + 1.1325131640327992, + 1.3053043476988724, + 0.9530549370710424, + 1.0454823932886028, + 1.0281971783192905, + -1.1588738212757714, + 1.6817215198384439, + 0.8877420873427165, + 0.01981904430214243, + -0.06494948940197176, + 0.433968581575672, + 0.8637928702498332, + 0.20722542443904857, + 0.5935731169244276, + 0.7407473099274123, + 1.0659859796073547, + 0.5600612140164987, + 0.6191468948037087, + 1.047499079144675, + 1.2420489137952773, + 0.6912268525478238, + 0.4030690812076303, + 1.1789793640442827, + -0.20393415653476765, + -0.08452462652788051, + -0.07754001564664925, + -0.484449407741373, + 0.7688497706958819, + 1.0057876046638259, + 0.7283537648046503, + 0.6581642669079171, + 1.011231394448389, + 0.7367333100339408, + 0.6402789959557857, + 1.205857788515331, + 1.06017477038157, + 0.4308107384258837, + -1.0946911764483045, + 1.3124149607795772, + 1.267939612992003, + 0.8769984183254671, + 0.2138438386564232, + 1.2822157143756778, + -0.7142163078288419, + 1.0364165666142344, + 0.955281240457099, + 1.2773440584839495, + 0.836936946522755, + 1.3919601024982087, + -0.9772650405244125, + 0.9014692608943022, + 1.028528685235845, + 0.4813385225392828, + 1.092976023742592, + 0.982250838207039, + 0.5105233701987179, + 0.9545003511069741, + 0.05175104440473799, + 0.9243300886776311, + 0.41534931134763253, + -0.11627934209637125, + 1.0021106284755539, + 0.25233754105047135, + 0.5464667464032057, + 1.1255256244638014, + 0.03208780194075711, + 0.3602942184260698, + 0.4651000205531357, + 0.5782926395387689, + 0.6463442629346687, + 0.4688036106544158, + 0.8223796319246084, + 0.3132607783394379, + 0.8857624949435747, + 0.6116490442665672, + 0.9517055733367893, + -1.0888567456648204, + -0.24093211631351874, + 1.6397855274670798, + 0.9535102730934735, + -0.046590091773542675, + -0.5190895878344488, + 0.7383896831820604, + 0.6685149816801514, + 0.7654702246605805, + -0.06592390603421605, + 0.750808619053263, + 0.8133907229260542, + 0.5313907149026234, + 0.309810693319184, + 1.0172815281529148, + 1.329046362080612, + 0.9743172559333342, + 0.39150366654981117, + 1.4597993568685315, + -0.5674849208831008, + -1.0557136654639683, + 1.0410207186463403, + 0.40350284940130887, + 0.048115541792572714, + 0.8928504517334668, + 0.977240952247934, + 0.6103757483296097, + 0.27953440655959305, + 0.09366835085451086, + -0.1260185075799347, + 0.016082760589946177, + 0.5851871343191108, + 0.7800095990720255, + 0.9767199975113785, + 0.5991140636055827, + 1.0728599516037967, + 1.2389190630445737, + 0.22291532373101086, + 0.22693356797984077, + -0.20308475869224285, + 1.278898223658345, + 0.9504439290454223, + 1.403019650408344, + 1.16441728401304, + 0.6417054290055209, + 1.18499698852263, + 1.2279036676785435, + 0.3869686694998222, + 0.779069790064336, + 1.2262953217201638, + 1.0986823729457458, + -0.6240637739739252, + 0.020920767872437906, + 0.7236620213835784, + 1.250308869073411, + 1.1392314139114712, + 1.3493973505410408, + 0.9092404569642625, + 0.5730027600070979, + 0.9595307268923402, + 1.1339155310960614, + 0.15923590165804757, + 1.1397649253966786, + 1.096356126090404, + -1.3001591804144226, + 1.413262262071131, + 0.1594653350543025, + 0.10908004110144276, + 0.5194996829950984, + 0.6370302742152205, + 0.7598328995172867, + -0.2903862340827885, + 0.4170907718188147, + 0.027824948421097728, + -0.3988914053239969, + 1.1451996280614747, + -0.008386537811543526, + 1.3252128333404283, + 0.9407709927169314, + 0.1925234589136, + 0.5582567057046112, + 1.084070192697005, + 0.20886825788753693, + 0.39421212962310426, + 0.18396791012046876, + 1.1736069785381338, + 0.02994776534352389, + -0.11911482003243812, + 1.4217046267538773, + 0.7040028936744722, + 1.2180288065748144, + 1.3102801344181707, + 0.5313970636873826, + 0.4724059063883721, + 0.3733023686345569, + -0.5101370402457472, + -2.179362889646386, + 1.2937960725099433, + -2.6977372492600136, + 0.7315890161433654, + 0.773604492051911, + 1.2846492314688054, + 0.14010592537457, + 0.2497272430991999, + 1.1075304049182204, + -0.1931876036272282, + 1.0428471951443088, + 1.2072801905522228, + 0.875483656229056, + 1.0720351290707484, + -1.4732423506150343, + 0.3449351374203631, + 1.1595577767322478, + 1.1961882067086016, + 0.3875000620829443, + 0.6908422060599094, + 0.832292223538802, + 1.4688005709204608, + 0.9006351789908946, + 0.37542743958199587, + 1.3820095068564768, + -0.11345286339473226, + 0.5333828214285514, + 0.3592127124846787, + 1.1587767152935324, + 1.2467783756959607, + 0.6231485680371485, + 0.5345314420720051, + 1.3537466616873068, + 1.0242641913676653, + 0.8434663478127316, + 1.0630231081839554, + 1.1380386827365738, + -1.1111907659734168, + 0.657983948520477, + 0.2086666381257094, + 1.0434366055914372, + 0.3942983122758761, + 0.7154656536000039, + 1.156974467332099, + 1.0856475487617494, + 0.6221468438707607, + 0.8508246112932334, + -1.9063350357607098, + 1.0490786939381278, + 1.2003566964934613, + 1.3591426180802884, + 0.7140229804433806, + 0.898362783143384, + 1.4796912301951264, + -0.7898039636904367, + -2.4922315147130605, + 0.6493861887006744, + 0.15935005520569412, + 1.3342402320372548, + 0.7641305154883522, + 0.567082337951735, + 1.084329812776839, + 0.8505914150421289, + -0.45018183005418094, + 0.20037048521084877, + -0.03961586628042843, + -0.07985403932254975, + 0.32323796210586053, + 0.6300880585720403, + -1.995157599106793, + 1.150188098754663, + 1.1481420335830113, + 0.5751283915587924, + -3.3562201698516407, + 0.9213869736771481, + 0.11336292878064391, + 0.37173792857789545, + 1.099911403757408, + 0.7767743261101843, + -0.49541955923468173, + -0.9652581204393016, + 1.446791897155296, + 0.9205539652873374, + -0.32004796937714497, + 1.0126381244531792, + -0.022991835044264053, + 0.806514921647906, + 0.9768634364823114, + 0.7308309542048764, + 0.8044147735834635, + 0.19567130496838647, + 1.0974866598111257, + 0.8286917284455846, + 0.25915217509330524, + 0.8143355093593969, + 0.3589735924631432, + 0.8263139337896113, + 0.9064912411441903, + 0.8331517301230172, + -1.3514242496876188, + 0.6105774869780544, + 0.7126829296414909, + 1.1756538616448613, + 0.598255242614222, + 0.7089998240509748, + 0.8227225992859104, + 0.883670202033817, + 0.9965755930220763, + 1.010772704009085, + 0.7905975112218961, + 0.7836985270532781, + 1.0454751649991756, + 0.5414941342765198, + -0.9298230386584695, + 1.4624184142794228, + -1.3708252252874873, + 0.7580461486912569, + 0.5890576196622366, + 1.056842639048055, + 0.768675650101617, + 0.24353360605791963, + 1.5077522629437499, + 0.8514810065943896, + 1.0628758998589092, + 0.8250022688956753, + 0.251168263504123, + 0.14429219259917403, + 0.05932474456792658, + 0.5042219761039783, + -1.3187360514789983, + 0.7798207301817166, + -1.4994697421093548, + 0.059351869855618855, + 0.8480440388290589, + -0.2610423496672727, + 0.46172149833075204, + -0.6900953514682104, + 0.4000700038119507, + 0.6807261125038817, + -0.4040782291165981, + 1.1626204379005296, + -0.4707891288691446, + 1.3067768460192837, + 0.3681313001595171, + 0.09278244997784159, + 1.5809329381180826, + 0.691504248073886, + -0.650344314954445, + -0.4332506278946785, + 1.0248409962624374, + 1.0944985925065307, + 0.6612681538152856, + -0.4407654177267446, + 0.48971207550798024, + 1.3135607446117255, + 0.2623681398482898, + 0.22573245672240483, + -0.9096968715144604, + 0.23354006938514804, + 0.42231558594066154, + 0.4013196900484277, + 1.157390429705159, + 0.6622784646313722, + 0.5085152764663021, + 0.2834456369433478, + 1.1906682875308254, + 0.4522053120452272, + 0.7993344724517644, + -0.6907541313236318, + 0.8157812339098632, + 0.6233913944202731, + 0.9659848374199349, + 0.6922351384957883 ] }, { @@ -10813,106 +10843,106 @@ 1 ], "y": [ - 0.4146135659480194, - 0.43183999953506297, - 0.44873313587293795, - 0.46529582031500805, - 0.4815311994405609, - 0.49744267731294384, - 0.5130338716186418, - 0.5283085700445329, - 0.5432706871701727, - 0.5579242220749304, - 0.5722732167880488, - 0.5863217156451277, - 0.6000737255583131, - 0.6135331771607767, - 0.6267038867496892, - 0.6395895189261416, - 0.6521935498158709, - 0.6645192307510381, - 0.6765695523007661, - 0.6883472085563256, - 0.6998545616054654, - 0.7110936061689092, - 0.7220659344198483, - 0.7327727010637071, - 0.7432145888194539, - 0.7533917745143877, - 0.7633038960801019, - 0.772950020816786, - 0.7823286153740556, - 0.791437517976994, - 0.800273913503281, - 0.8088343120881626, - 0.817114531995241, - 0.8251096875388393, - 0.8328141828741906, - 0.8402217124807976, - 0.8473252691480929, - 0.8541171602273652, - 0.8605890328365611, - 0.8667319085928793, - 0.8725362283006876, - 0.8779919068396554, - 0.8830883982818141, - 0.8878147710205349, - 0.8921597924248734, - 0.8961120222472901, - 0.8996599137210285, - 0.9027919209969528, - 0.9054966113006203, - 0.9077627799519513, - 0.9095795661948431, - 0.9109365676441488, - 0.9118239510827995, - 0.9122325573396685, - 0.9121539980534535, - 0.9115807422795954, - 0.9105061911227122, - 0.9089247388686711, - 0.9068318194372105, - 0.9042239373639538, - 0.9010986829334873, - 0.8974547315054748, - 0.8932918274860597, - 0.888610753780354, - 0.8834132879039636, - 0.8777021462201569, - 0.8714809179955335, - 0.8647539911257813, - 0.8575264714723587, - 0.8498040977727087, - 0.841593154045315, - 0.8329003813139498, - 0.82373289033152, - 0.8140980768033322, - 0.8040035404026006, - 0.7934570086481527, - 0.782466266485187, - 0.7710390921832351, - 0.7591831999485428, - 0.7469061894468714, - 0.7342155022515247, - 0.7211183850732384, - 0.7076218594951315, - 0.6937326978275089, - 0.6794574046136038, - 0.6648022032569367, - 0.6497730272020931, - 0.6343755150810946, - 0.618615009234737, - 0.6024965570297082, - 0.5860249144154868, - 0.5692045511975362, - 0.5520396575428543, - 0.5345341512785668, - 0.5166916855920632, - 0.4985156567906399, - 0.4800092118284397, - 0.4611752553575035, - 0.4420164561071319, - 0.42253525244080065 + 0.42242310865738003, + 0.4396594391379667, + 0.4569456518932469, + 0.47433730287828296, + 0.4918971522132785, + 0.509692274247641, + 0.5277892265773426, + 0.5462473790469377, + 0.5651109531519677, + 0.5844008046462434, + 0.6041073302461039, + 0.6241859227678901, + 0.6445560521528719, + 0.6651043759331705, + 0.6856914844716869, + 0.7061612165435083, + 0.7263511254831765, + 0.7461026821054385, + 0.7652700843649078, + 0.7837269592474082, + 0.8013706563838572, + 0.8181241668170237, + 0.8339359319671383, + 0.8487779489434225, + 0.86264265033854, + 0.8755390562353024, + 0.8874886727432495, + 0.8985215511052983, + 0.9086728320219621, + 0.9179799928098014, + 0.9264809043503499, + 0.9342127039628759, + 0.9412114092566081, + 0.9475121414002471, + 0.9531497937120162, + 0.958159968963783, + 0.9625800105528155, + 0.9664499631673973, + 0.9698133138034063, + 0.9727173823794621, + 0.9752132535895316, + 0.9773551707356922, + 0.9791993514865398, + 0.9808022371450661, + 0.982218250408719, + 0.9834972064559379, + 0.9846815880892924, + 0.9858039435323166, + 0.9868846811196533, + 0.9879305090824342, + 0.9889337005957788, + 0.9898722648589265, + 0.9907109937151997, + 0.9914032529376355, + 0.991893316861943, + 0.9921190144781108, + 0.9920144633885329, + 0.9915127053112588, + 0.9905481087991167, + 0.9890584578014342, + 0.9869866887936732, + 0.9842822698681638, + 0.9809022325360706, + 0.9768118742264491, + 0.9719851509852031, + 0.9664047797736514, + 0.960062070915105, + 0.9529565149508876, + 0.9450951543243631, + 0.9364917777673409, + 0.927165982370651, + 0.9171421534370584, + 0.9064484140971063, + 0.8951155947055123, + 0.8831762663056397, + 0.8706638736267615, + 0.8576119922388763, + 0.8440537228713334, + 0.8300212246819556, + 0.8155453793897439, + 0.800655570281213, + 0.7853795544559168, + 0.7697434032930385, + 0.7537714848073108, + 0.7374864620440953, + 0.7209092836815427, + 0.7040591463933273, + 0.6869534132273147, + 0.6696074783194629, + 0.6520345757525686, + 0.6342455392459303, + 0.6162485293217472, + 0.5980487549168523, + 0.5796482258482777, + 0.5610455793328332, + 0.5422360258072025, + 0.5232114545807244, + 0.5039607270670245, + 0.4844701645823362, + 0.4647242110300381 ] } ], @@ -11796,6 +11826,65 @@ "fig.show()" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### RDD without Adjustment\n", + "\n", + "The standard RDD estimator for the fuzzy design takes the form \n", + "\n", + "$$\\hat{\\theta}_{base}(h) = \\frac{\\hat{\\tau}_{\\text{Y}, base}(h)}{\\hat{\\tau}_{\\text{D}, base}(h)} = \\frac{\\sum_{i=1}^n w_i(h)Y_i}{\\sum_{i=1}^n w_i(h)D_i}$$\n", + "\n", + "The packages ``rdrobust`` implements this estimation." + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Call: rdrobust\n", + "Number of Observations: 1000\n", + "Polynomial Order Est. (p): 1\n", + "Polynomial Order Bias (q): 2\n", + "Kernel: Triangular\n", + "Bandwidth Selection: mserd\n", + "Var-Cov Estimator: NN\n", + "\n", + " Left Right\n", + "------------------------------------------------\n", + "Number of Observations 493 507\n", + "Number of Unique Obs. 493 507\n", + "Number of Effective Obs. 213 224\n", + "Bandwidth Estimation 0.542 0.542\n", + "Bandwidth Bias 0.864 0.864\n", + "rho (h/b) 0.628 0.628\n", + "\n", + "Method Coef. S.E. t-stat P>|t| 95% CI \n", + "-------------------------------------------------------------------------\n", + "Conventional 3.64 3.052 1.192 2.331e-01 [-2.343, 9.622]\n", + "Robust - - 1.134 2.569e-01 [-2.952, 11.054]\n" + ] + }, + { + "data": { + "text/plain": [] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "rdrobust_fuzzy_noadj = rdrobust(y=df['y'], x=df['score'], fuzzy=df['d'], c=0.0)\n", + "rdrobust_fuzzy_noadj" + ] + }, { "cell_type": "markdown", "metadata": {}, @@ -11811,7 +11900,7 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 13, "metadata": {}, "outputs": [ { @@ -11828,24 +11917,24 @@ "\n", " Left Right\n", "------------------------------------------------\n", - "Number of Observations 490 510\n", - "Number of Unique Obs. 490 510\n", - "Number of Effective Obs. 244 263\n", - "Bandwidth Estimation 0.653 0.653\n", - "Bandwidth Bias 1.023 1.023\n", - "rho (h/b) 0.638 0.638\n", + "Number of Observations 493 507\n", + "Number of Unique Obs. 493 507\n", + "Number of Effective Obs. 211 223\n", + "Bandwidth Estimation 0.54 0.54\n", + "Bandwidth Bias 0.88 0.88\n", + "rho (h/b) 0.614 0.614\n", "\n", "Method Coef. S.E. t-stat P>|t| 95% CI \n", "-------------------------------------------------------------------------\n", - "Conventional 2.798 3.98 0.703 4.821e-01 [-5.003, 10.598]\n", - "Robust - - 0.717 4.735e-01 [-5.806, 12.502]\n" + "Conventional 1.802 2.326 0.775 4.385e-01 [-2.757, 6.361]\n", + "Robust - - 0.732 4.642e-01 [-3.367, 7.381]\n" ] }, { "data": { "text/plain": [] }, - "execution_count": 11, + "execution_count": 13, "metadata": {}, "output_type": "execute_result" } @@ -11885,11 +11974,11 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 14, "metadata": {}, "outputs": [], "source": [ - "dml_data = dml.DoubleMLData(df, y_col='y', d_cols='d', x_cols=cov_names, s_col='score')" + "dml_data_fuzzy = dml.DoubleMLData(df, y_col='y', d_cols='d', x_cols=cov_names, s_col='score')" ] }, { @@ -11901,7 +11990,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 15, "metadata": {}, "outputs": [ { @@ -11910,8 +11999,8 @@ "text": [ "Method Coef. S.E. t-stat P>|t| 95% CI\n", "-------------------------------------------------------------------------\n", - "Conventional 3.475 2.231 1.558 1.193e-01 [-0.897, 7.847]\n", - "Robust - - 2.021 4.330e-02 [0.185, 12.112]\n" + "Conventional 0.156 0.716 0.218 8.275e-01 [-1.247, 1.559]\n", + "Robust - - 0.024 9.805e-01 [-1.640, 1.682]\n" ] } ], @@ -11919,7 +12008,7 @@ "ml_g = LGBMRegressor(n_estimators=500, learning_rate=0.01, verbose=-1)\n", "ml_m = LGBMClassifier(n_estimators=500, learning_rate=0.01, verbose=-1)\n", "\n", - "rdflex_fuzzy = RDFlex(dml_data,\n", + "rdflex_fuzzy = RDFlex(dml_data_fuzzy,\n", " ml_g,\n", " ml_m,\n", " cutoff=0,\n", @@ -11953,7 +12042,7 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 16, "metadata": {}, "outputs": [], "source": [ @@ -11966,7 +12055,7 @@ }, { "cell_type": "code", - "execution_count": 19, + "execution_count": 17, "metadata": {}, "outputs": [], "source": [ @@ -11997,7 +12086,34 @@ }, { "cell_type": "code", - "execution_count": 20, + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Method Coef. S.E. t-stat P>|t| 95% CI\n", + "-------------------------------------------------------------------------\n", + "Conventional 0.916 0.100 9.155 5.451e-20 [0.720, 1.112]\n", + "Robust - - 7.733 1.050e-14 [0.665, 1.117]\n" + ] + } + ], + "source": [ + "rdflex_sharp_stack = RDFlex(dml_data_sharp,\n", + " ml_g,\n", + " fuzzy=False,\n", + " n_folds=5,\n", + " n_rep=1)\n", + "rdflex_sharp_stack.fit(n_iterations=2)\n", + "\n", + "print(rdflex_sharp_stack)" + ] + }, + { + "cell_type": "code", + "execution_count": 19, "metadata": {}, "outputs": [ { @@ -12006,13 +12122,13 @@ "text": [ "Method Coef. S.E. t-stat P>|t| 95% CI\n", "-------------------------------------------------------------------------\n", - "Conventional 3.622 2.036 1.779 7.527e-02 [-0.369, 7.613]\n", - "Robust - - 1.725 8.453e-02 [-0.689, 10.806]\n" + "Conventional 0.795 0.598 1.330 1.835e-01 [-0.377, 1.967]\n", + "Robust - - 1.355 1.755e-01 [-0.421, 2.303]\n" ] } ], "source": [ - "rdflex_fuzzy_stack = RDFlex(dml_data,\n", + "rdflex_fuzzy_stack = RDFlex(dml_data_fuzzy,\n", " ml_g,\n", " ml_m,\n", " fuzzy=True,\n", @@ -12032,28 +12148,28 @@ }, { "cell_type": "code", - "execution_count": 21, + "execution_count": 20, "metadata": {}, "outputs": [], "source": [ - "df_sharp = pd.DataFrame({\"coef\": [rdrobust_sharp.coef.values[0][0], rdflex_sharp.coef[0]],\n", - " \"CI lower\": [rdrobust_sharp.ci.values[0][0], rdflex_sharp.confint().values[0][0]],\n", - " \"CI upper\": [rdrobust_sharp.ci.values[0][1], rdflex_sharp.confint().values[0][1]],\n", - " \"method\": [\"Linear Adj.\", \"Flexible Adj.\"]})\n", - "df_fuzzy = pd.DataFrame({\"coef\": [rdrobust_fuzzy.coef.values[0][0], rdflex_fuzzy.coef[0], rdflex_fuzzy_stack.coef[0]],\n", - " \"CI lower\": [rdrobust_fuzzy.ci.values[0][0], rdflex_fuzzy.confint().values[0][0], rdflex_fuzzy_stack.confint().values[0][0]],\n", - " \"CI upper\": [rdrobust_fuzzy.ci.values[0][1], rdflex_fuzzy.confint().values[0][1], rdflex_fuzzy_stack.confint().values[0][1]],\n", - " \"method\": [\"Linear Adj.\", \"Flexible Adj.\", \"Flexible Adj. (Stacked)\"]})" + "df_sharp = pd.DataFrame({\"coef\": [rdrobust_sharp_noadj.coef.values[0][0], rdrobust_sharp.coef.values[0][0], rdflex_sharp.coef[0], rdflex_sharp_stack.coef[0]],\n", + " \"CI lower\": [rdrobust_sharp_noadj.ci.values[0][0], rdrobust_sharp.ci.values[0][0], rdflex_sharp.confint().values[0][0], rdflex_sharp_stack.confint().values[0][0]],\n", + " \"CI upper\": [rdrobust_sharp_noadj.ci.values[0][1], rdrobust_sharp.ci.values[0][1], rdflex_sharp.confint().values[0][1], rdflex_sharp_stack.confint().values[0][1]],\n", + " \"method\": [\"No Adj.\", \"Linear Adj.\", \"Flexible Adj.\", \"Flexible Adj. (Stacked)\"]})\n", + "df_fuzzy = pd.DataFrame({\"coef\": [rdrobust_fuzzy_noadj.coef.values[0][0], rdrobust_fuzzy.coef.values[0][0], rdflex_fuzzy.coef[0], rdflex_fuzzy_stack.coef[0]],\n", + " \"CI lower\": [rdrobust_fuzzy_noadj.ci.values[0][0], rdrobust_fuzzy.ci.values[0][0], rdflex_fuzzy.confint().values[0][0], rdflex_fuzzy_stack.confint().values[0][0]],\n", + " \"CI upper\": [rdrobust_fuzzy_noadj.ci.values[0][1], rdrobust_fuzzy.ci.values[0][1], rdflex_fuzzy.confint().values[0][1], rdflex_fuzzy_stack.confint().values[0][1]],\n", + " \"method\": [\"No Adj.\", \"Linear Adj.\", \"Flexible Adj.\", \"Flexible Adj. (Stacked)\"]})" ] }, { "cell_type": "code", - "execution_count": 22, + "execution_count": 21, "metadata": {}, "outputs": [ { "data": { - "image/png": "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rL4Xn5SUpA8//DDPxwEAKJ7q1q2rH374wartgw8+SDdOLlmyRO+//77mzZuntm3bZrivZ555Rn/88YfWr1+fZQE9cOBAmUwmPf/88/rzzz/T/a52XjCeAqUPV7iBXBo9erSuXLmihx56SA0bNlRKSop++uknrV27VrVr19aQIUNyvc8HHnhAK1askJubm3x9fRUREaHvvvvO8rNhuREZGakHH3xQAQEBioiI0MqVK/XYY4+pefPm2fa9fv265RPypKQknTp1Sl988YX279+vrl276oMPPrDEurq6av78+XriiSd09913a8CAAapatapOnz6tr7/+Wh07dtS7776rP/74Q/fdd58effRR+fr6qmzZslq/fr1iY2M1YMCATHN5+umn9e6772rgwIF6/vnn5enpqVWrVsnJyUlSwU2VBwAUfcOGDdMzzzyjvn37qlu3bvrtt9+0ceNGq58NO3/+vEaMGCFfX1+ZzeZ0V3wfeughhYeHa/ny5erbt6/279+v/fv3W7aXL19effr0saxXrVpVAQEB+uSTT1SxYkX17Nkzx/kyngK4iYIbyKWZM2fqk08+0TfffKMPPvhAKSkpqlmzpkaMGKFXX31VFStWzPU+58yZIwcHB61atUpJSUnq2LGjvvvuO/n7++d6X2vXrtWkSZM0YcIElS1bVqNGjdJbb72Vo77JycmWG8K4uLioWrVqatWqlSZNmqSHHnoo3bS7xx57TF5eXpo+fbreeustJScnq3r16urcubPlgwdvb28NHDhQW7Zs0YoVK1S2bFk1bNhQH3/8cbqb1NyufPny+v777zV69GjNmTNH5cuX1+DBg9WhQwf17dvX8kYBAFDyDR8+XJGRkVq0aJHCwsLUuXNnbd68Wffdd58lJiEhQUlJSTp06FCGNzeLjIy0XC3+7LPP9Nlnn1ltr1WrllXBLd2YVv7VV1/p0UcfldlsznG+jKcAbjIZ3AEBKBGmTJmiqVOn6ty5c1af+Jc0s2fP1tixY/XXX3+pevXq9k4HAFCCff755+rTp49++OEHde7c2d7pFCjGU6Bw8B1uAEXW1atXrdaTkpL0/vvv66677uLNAQDA5j788EPVqVNHnTp1sncq+cJ4CtgPU8oBFFkPP/ywatasqRYtWiguLk4rV67UkSNHtGrVKnunBgAowdasWaP9+/fr66+/1pw5c4r995wZ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lsE9ISFBTz/9tJ577rl0/WrWrKnExET5+/vL399fq1atUtWqVXX69Gn5+/srJSXFKj6z/+A3paamatmyZYqJiVHZsmWt2hcvXpztiwsAClK5cuUynKb1bwkJCXJwcNCePXvSfS+ufPnylr/Pnj2rP/74Qw4ODjp27JgCAgIKLNeEhARJ0tdff231xkZSljf0WrRokf755x85Oztb2tLS0rR//35NnTq1wPIrbRhXUVg4T3Geyg6vEdu+RqpUqaKLFy+may9TpozatGmjNm3aaMyYMVq5cqWeeOIJvfLKK5netG7NmjUaN26c3n77bbVv314VKlTQW2+9pV27dkmS1fFlpVu3bvroo4+0ceNGDRo0yNKe3fiTmzvM//PPP6patWqO40t9wZ2Vu+++W4cOHcr0P+rvv/+uCxcuaPr06fL29pakXP8u203ffPONLl++rF9//dXqP/qBAwc0ZMgQXbp0SQ0bNtT169e1Z88etWnTRpJ09OjREnPXPwDFT8uWLZWamqqzZ8+qc+fOmcY9+eSTatq0qYYOHarhw4fLz89PjRo1yjT+9OnT+vvvv+Xl5SVJ2rlzp8qUKaMGDRqki/X19ZXZbNbp06d177335ijvCxcu6PPPP9eaNWvUuHFjS3tqaqo6deqkTZs2KSAgQJ6entq1a5fuueceSbKcg+++++4cPQ6sMa7CHjhPITu8RvKmZcuWOnToULZxN2cn3bxBmaOjY7rf7f7xxx/VoUMHq++4nzhxwvJ3hQoVVLt2bW3ZskVdu3bN9LEefPBB9erVS4899pgcHBw0YMAASdmPP7kZDw4cOJDlrIN/K3EFd1xcnPbt22fVduedd1oG7tx46aWX9H//938aNWqUhg0bpnLlyunQoUPavHmz3n33XdWsWVOOjo6aO3eunnnmGR04cEDTpk3LU96LFi1Sz5491bx5c6t2X19fjR07VqtWrdLIkSMVEBCgp59+WvPnz1fZsmU1ZsyYbD/xGTx4sKpXr67Q0NA85QYAmalfv74GDRqkwYMH6+2331bLli117tw5bdmyRc2aNVPPnj01b948RUREaP/+/fL29tbXX3+tQYMGaefOnXJ0dMxwv05OTgoMDNTMmTMVHx+v5557To8++mi6KXjSjUF43LhxGjt2rNLS0tSpUyfFxcXpxx9/lKurqwIDA9P1WbFihe688049+uijlquwN91///1atGiRAgIC9Pzzz2v69Om666671LBhQ82aNSvbYuzdd9/V+vXrtWXLlpw/kUUY42p6jKvFC+ep9EraeSq/eI2kl5PXiL+/v5YtW2bV1q9fP3Xs2FEdOnSQh4eHIiMjFRISovr166thw4aSbvzyw65du3Ty5EmVL19elStX1l133aXly5dr48aN8vHx0YoVK/Tzzz9bXRGfMmWKnnnmGVWrVk09evTQ5cuX9eOPP2r06NFWOTz00ENasWKFnnjiCZUtW1b9+vXLdvxp0KBBjseD7du352psKnF3KQ8PD1fLli2tlrxOp2jWrJm2bdumP/74Q507d1bLli01adIky6dUVatW1dKlSy0/OTJ9+nTNnDkz148TGxurr7/+2uo37G4qU6aMHnroIcvdBpcsWSIvLy/de++9evjhh/XUU09l+5t/p0+fVnR0dK7zAoCcWLJkiQYPHqwXXnhBDRo0UJ8+ffTzzz+rZs2aOnLkiF588UW99957lgLtvffe0/nz5zVx4sRM91mvXj09/PDDuv/++9W9e3c1a9ZM7733Xqbx06ZN08SJExUaGqpGjRopICBAX3/9daZT1xYvXqyHHnoo3RsUSerbt6+++OILnT9/Xi+88IKeeOIJBQYGWqa4PfTQQ1k+H+fPn7f6VL64Y1xNj3G1+OE8Za2knacKAq8Razl5jQwaNEgHDx7U0aNHLW3+/v768ssv1atXL9WvX1+BgYFq2LChNm3aZPl6z7hx4+Tg4CBfX1/LV4eefvppPfzww+rfv7/atWunCxcupLuje2BgoGbPnq333ntPjRs31gMPPKBjx45lmFu/fv20bNkyPfHEE1q3bl2244+Us/EgIiJCcXFx6tevX5bPze1MBndUKHE8PT01bdo0DRs2zN6pAECJN3DgQDk4OGjlypX2TgU2wriK4o7zFLKT19fIiy++qPj4eL3//vs2yqxo6d+/v5o3b66XX345x31K3BXu0uzKlSvavHmzYmNjrb7HAQAoeNevX9ehQ4cUERHBObeEYlxFccd5CtnJ72vklVdeUa1atSw3xyzJUlJS1LRpU40dOzZX/Si4S5APPvhAAwYM0JgxY9S+fXt7pwMAJdqBAwfUunVrNW7cWM8884y904ENMK6iuOM8hezk9zVSsWJFvfzyyypTpuSXlY6Ojnr11VdzfMf0m5hSDgAAAACADZT8jyIAAAAAALADCm4AAAAAAGyAghsAAAAAABug4AYAAAAAwAYouAEAAAAAsAEKbgAWXbp00ZgxYwp8v1OmTFGLFi0KfL8AABRVjKkAJApuoNgICgqSyWTK8DcSR44cKZPJpKCgoBztKzw8XCaTSZcuXSrYJAEAKAYYUwEUFgpuoBjx9vbWmjVrdPXqVUtbUlKSVq9erZo1a9oxMwAAihfGVACFgYIbKEbuvvtueXt7a926dZa2devWqWbNmmrZsqWlLS0tTaGhofLx8ZGzs7OaN2+uTz/9VJJ08uRJde3aVZJUqVKldJ/ip6Wlafz48apcubI8PDw0ZcoUqxxOnz6t3r17q3z58nJ1ddWjjz6q2NhYq5jp06fL3d1dFSpU0NChQ5WUlFTAzwQAAPnDmAqgMFBwA8XMk08+qSVLlljWFy9erCFDhljFhIaGavny5VqwYIEOHjyosWPH6vHHH9e2bdvk7e2tzz77TJJ09OhRRUdHa86cOZa+y5YtU7ly5bRr1y7NmDFDr732mjZv3izpxhuH3r17659//tG2bdu0efNm/fnnn+rfv7+l/8cff6wpU6bojTfe0C+//CJPT0+99957tnxKAADIE8ZUALZmMgzDsHcSALIXFBSkS5cu6cMPP5S3t7eOHj0qSWrYsKGioqI0bNgwVaxYUe+//74qV66s7777Tu3bt7f0HzZsmK5cuaLVq1crPDxcXbt21cWLF1WxYkVLTJcuXZSamqrt27db2tq2bav//Oc/mj59ujZv3qwePXooMjJS3t7ekqRDhw6pcePG2r17t9q0aaMOHTqoZcuWmjdvnmUf//d//6ekpCTt27fPtk8SAAA5wJgKoLCUtXcCAHKnatWq6tmzp5YuXSrDMNSzZ09VqVLFsv348eO6cuWKunXrZtUvJSXFaopcZpo1a2a17unpqbNnz0qSDh8+LG9vb8sbA0ny9fVVxYoVdfjwYbVp00aHDx9OdxOa9u3ba+vWrbk+VgAAbIkxFYCtUXADxdCTTz6pUaNGSZLVp96SlJCQIEn6+uuvVb16dattZrM5233fcccdVusmk0lpaWn5SRcAgCKLMRWALfEdbqAYCggIUEpKiq5duyZ/f3+rbb6+vjKbzTp9+rTq1atntdz8FN3R0VGSlJqamqvHbdSokaKiohQVFWVpO3TokC5duiRfX19LzK5du6z67dy5M9fHCABAYWBMBWBLXOEGiiEHBwcdPnzY8vftKlSooHHjxmns2LFKS0tTp06dFBcXpx9//FGurq4KDAxUrVq1ZDKZ9NVXX+n++++Xs7Ozypcvn+3j+vn5qWnTpho0aJBmz56t69eva8SIEbr33nvVunVrSdLzzz+voKAgtW7dWh07dtSqVat08OBB1alTp+CfCAAA8okxFYAtcYUbKKZcXV3l6uqa4bZp06Zp4sSJCg0NVaNGjRQQEKCvv/5aPj4+kqTq1atr6tSpmjBhgtzd3S1T6bJjMpn0+eefq1KlSrrnnnvk5+enOnXqaO3atZaY/v37a+LEiRo/frxatWqlU6dO6dlnn83/AQMAYCOMqQBshbuUAwAAAABgA1zhBgAAAADABii4AQAAAACwAQpuAAAAAABsgIIbAAAAAAAboOAGAAAAAMAGKLgBAAAAALABCm4AAAAAAGyAghsAAAAAABug4AYAAAAAwAYouAEAAAAAsAEKbgAAAAAAbICCGwAAAAAAG/h/YTas5OuJg3IAAAAASUVORK5CYII=", + "image/png": "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jRrw8PDAzJkzceDAAbRo0QIBAQFwdnYGAPj7+6NcuXI4e/Ysqlevjjp16qBKlSqYN2+eso9atWohMjISly5dMuwPiYiIyIiYq4lIHyyMHQBRdlewYEG0atUKy5cvh4igVatWKFCggLL+zp07CA8PR9OmTXW2i46O1unWlpSKFSvqPC9UqBCePn0KALh+/TqcnZ2VJA4Abm5uyJs3L65fv47q1avj+vXrCQaQqV27No4cOZLq90pERJQVMVcTUXqw6CbKBPr164dhw4YBgM5ZagB48+YNAGDPnj1wcnLSWadWqz+67xw5cug8V6lU0Gq16QmXiIgo22GuJqK04j3dRJlA8+bNER0djbdv38LT01NnnZubG9RqNR48eICSJUvqPOLPeltaWgIAYmNjU/W6ZcuWxcOHD/Hw4UNlmb+/P16/fg03NzelzT///KOz3ZkzZ1L9HomIiLIy5moiSite6SbKBMzNzXH9+nXl/++ztrbGmDFj4OXlBa1Wi3r16iEkJAR///03bGxs0Lt3b7i4uEClUmH37t1o2bIlcubMiTx58nz0dZs0aYIKFSqge/fumD17NmJiYjBkyBA0bNgQ1apVAwCMHDkSffr0QbVq1VC3bl2sWbMG165dQ/HixfX/gyAiIsqkmKuJKK14pZsok7CxsYGNjU2i66ZNm4ZJkybB19cXZcuWRfPmzbFnzx64uroCAJycnDB16lR8/fXXcHBwULq/fYxKpcKOHTuQL18+NGjQAE2aNEHx4sWxYcMGpU2XLl0wadIkjBs3Du7u7rh//z4GDx6c/jdMRESUxTBXE1FacPRyIiIiIiIiIgPhlW4iIiIiIiIiA2HRTURERERERGQgLLqJiIiIiIiIDIRFNxEREREREZGBsOgmIiIiIiIiMhAW3UREREREREQGwqKbiIiIiIiIyEBYdBMREREREREZCItuIiIiIiIiIgNh0U1ERERERERkICy6iYiIiIiIiAyERTcRERERERGRgfwfzOY6tacbrpoAAAAASUVORK5CYII=", "text/plain": [ "
" ] @@ -12078,6 +12194,7 @@ "axes[0].set_ylabel('Coefficient')\n", "axes[0].set_xlabel('Method')\n", "axes[0].axhline(oracle_effects_sharp[49:51].mean(), linestyle=\"--\", color=\"r\")\n", + "axes[0].tick_params(axis='x', rotation=30)\n", "\n", "axes[1].errorbar(\n", " df_fuzzy['method'],\n", @@ -12091,9 +12208,17 @@ "axes[1].set_ylabel('Coefficient') \n", "axes[1].set_xlabel('Method')\n", "axes[1].axhline(oracle_effects_fuzzy[49:51].mean(), linestyle=\"--\", color=\"r\")\n", + "axes[1].tick_params(axis='x', rotation=30)\n", "\n", "plt.tight_layout()" ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] } ], "metadata": { From 95999a94caba9c57e3d284d31070a7efe88c4ab1 Mon Sep 17 00:00:00 2001 From: Oliver Schacht Date: Thu, 14 Nov 2024 17:04:05 +0100 Subject: [PATCH 53/71] typos --- doc/examples/py_double_ml_rdflex.ipynb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/examples/py_double_ml_rdflex.ipynb b/doc/examples/py_double_ml_rdflex.ipynb index c5341e3a..35e9dcf5 100644 --- a/doc/examples/py_double_ml_rdflex.ipynb +++ b/doc/examples/py_double_ml_rdflex.ipynb @@ -6313,7 +6313,7 @@ "\n", "where $w_i(h)$ are local linear regression weights that depend on the data through the realizations of the running variable $S_i$ only and $h>0$ is a bandwidth. $\\hat{\\gamma}_h$ is a minimizer from the regression\n", "\n", - "$$\\argmin_{\\beta,\\gamma} \\sum K_h(S_i) (S_i - Q_i^\\top\\beta- X_i^{\\top}\\gamma )^2.$$\n", + "$$\\underset{\\beta,\\gamma}{\\mathrm{arg\\,min}} \\, \\sum K_h(S_i) (Y_i - Q_i^\\top\\beta- X_i^{\\top}\\gamma )^2.$$\n", "\n", "with $Q_i =(D_i, S_i, D_i S_i,1)^T$ (for more details, see our [User Guide](https://docs.doubleml.org/stable/guide/models.html#regression-discontinuity-designs-rdd)), $K_h(v)=K(v/h)/h$ with $K(\\cdot)$ a kernel function.\n", "\n", @@ -11969,7 +11969,7 @@ " - `y_col` refers to the observed outcome, on which we want to estimate the effect at the cutoff\n", " - `s_col` refers to the score\n", " - `x_cols` refers to the covariates to be adjusted for\n", - " - `d_cols` is an indicator whether an observation is treated or not. In the fuzzy design, this should __not__ be identical to an indicator whether an observation is left or right of the cutoff ($D_i \\neq \\mathbb{I}[S_i > c]$)" + " - `d_cols` is an indicator whether an observation is treated or not. In the fuzzy design, this should __not__ be identical to an indicator whether an observation is left or right of the cutoff ($D_i \\neq \\mathbb{I}[S_i \\geq c]$)" ] }, { From f563a7e14e8df868c5d7449277f7b1c31eed5c33 Mon Sep 17 00:00:00 2001 From: Sven Klaassen <47529404+SvenKlaassen@users.noreply.github.com> Date: Fri, 15 Nov 2024 08:12:09 +0100 Subject: [PATCH 54/71] Update test_build_docu_dev.yml --- .github/workflows/test_build_docu_dev.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/test_build_docu_dev.yml b/.github/workflows/test_build_docu_dev.yml index 023916f8..a9a69e5c 100644 --- a/.github/workflows/test_build_docu_dev.yml +++ b/.github/workflows/test_build_docu_dev.yml @@ -27,7 +27,7 @@ on: jobs: build: - runs-on: ubuntu-latest + runs-on: ubuntu-22.04 env: GITHUB_PAT: ${{ secrets.GITHUB_TOKEN }} @@ -69,7 +69,7 @@ jobs: run: | sudo apt install dirmngr gnupg apt-transport-https ca-certificates software-properties-common sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys E298A3A825C0D65DFD57CBB651716619E084DAB9 - sudo add-apt-repository 'deb https://cloud.r-project.org/bin/linux/ubuntu noble-cran40/' + sudo add-apt-repository 'deb https://cloud.r-project.org/bin/linux/ubuntu jammy-cran40/' - name: Install R run: | sudo apt-get update From 13b0ae34d7f2d4d3b07cd68168f3f9cc85156ebc Mon Sep 17 00:00:00 2001 From: Sven Klaassen <47529404+SvenKlaassen@users.noreply.github.com> Date: Fri, 15 Nov 2024 08:16:10 +0100 Subject: [PATCH 55/71] set runner to 22.04 version --- .github/workflows/deploy_docu_dev.yml | 4 ++-- .github/workflows/deploy_docu_stable.yml | 4 ++-- .github/workflows/test_build_docu_released.yml | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/deploy_docu_dev.yml b/.github/workflows/deploy_docu_dev.yml index cf5501cc..b2bd991d 100644 --- a/.github/workflows/deploy_docu_dev.yml +++ b/.github/workflows/deploy_docu_dev.yml @@ -9,7 +9,7 @@ on: jobs: build: - runs-on: ubuntu-latest + runs-on: ubuntu-22.04 env: GITHUB_PAT: ${{ secrets.GITHUB_TOKEN }} @@ -42,7 +42,7 @@ jobs: run: | sudo apt install dirmngr gnupg apt-transport-https ca-certificates software-properties-common sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys E298A3A825C0D65DFD57CBB651716619E084DAB9 - sudo add-apt-repository 'deb https://cloud.r-project.org/bin/linux/ubuntu noble-cran40/' + sudo add-apt-repository 'deb https://cloud.r-project.org/bin/linux/ubuntu jammy-cran40/' - name: Install R run: | sudo apt-get update diff --git a/.github/workflows/deploy_docu_stable.yml b/.github/workflows/deploy_docu_stable.yml index dff63f43..9260259b 100644 --- a/.github/workflows/deploy_docu_stable.yml +++ b/.github/workflows/deploy_docu_stable.yml @@ -9,7 +9,7 @@ on: jobs: build: - runs-on: ubuntu-latest + runs-on: ubuntu-22.04 steps: - name: Check out the repo containing the docu source @@ -31,7 +31,7 @@ jobs: run: | sudo apt install dirmngr gnupg apt-transport-https ca-certificates software-properties-common sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys E298A3A825C0D65DFD57CBB651716619E084DAB9 - sudo add-apt-repository 'deb https://cloud.r-project.org/bin/linux/ubuntu noble-cran40/' + sudo add-apt-repository 'deb https://cloud.r-project.org/bin/linux/ubuntu jammy-cran40/' - name: Install R run: | sudo apt-get update diff --git a/.github/workflows/test_build_docu_released.yml b/.github/workflows/test_build_docu_released.yml index 4b4fe289..518fe29c 100644 --- a/.github/workflows/test_build_docu_released.yml +++ b/.github/workflows/test_build_docu_released.yml @@ -18,7 +18,7 @@ on: jobs: build: - runs-on: ubuntu-latest + runs-on: ubuntu-22.04 steps: - name: Check out the repo containing the docu source @@ -40,7 +40,7 @@ jobs: run: | sudo apt install dirmngr gnupg apt-transport-https ca-certificates software-properties-common sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys E298A3A825C0D65DFD57CBB651716619E084DAB9 - sudo add-apt-repository 'deb https://cloud.r-project.org/bin/linux/ubuntu noble-cran40/' + sudo add-apt-repository 'deb https://cloud.r-project.org/bin/linux/ubuntu jammy-cran40/' - name: Install R run: | sudo apt-get update From ce1a72c2e25b3f86915d738343c777a6c90354a8 Mon Sep 17 00:00:00 2001 From: Oliver Schacht Date: Fri, 15 Nov 2024 14:13:16 +0100 Subject: [PATCH 56/71] Update py_double_ml_rdflex.ipynb --- doc/examples/py_double_ml_rdflex.ipynb | 10375 ++++++----------------- 1 file changed, 2469 insertions(+), 7906 deletions(-) diff --git a/doc/examples/py_double_ml_rdflex.ipynb b/doc/examples/py_double_ml_rdflex.ipynb index 35e9dcf5..93a72646 100644 --- a/doc/examples/py_double_ml_rdflex.ipynb +++ b/doc/examples/py_double_ml_rdflex.ipynb @@ -17,7 +17,7 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": 20, "metadata": {}, "outputs": [], "source": [ @@ -48,12 +48,12 @@ "### Generate Data\n", "\n", "The function ``make_simple_rdd_data()`` can be used to generate data of a rather standard RDD setting. If we set ``fuzzy = False``, the generated data follows a sharp RDD. We also generate covariates $X$ that can be used to adjust the estimation at a later stage.\n", - "Without loss of generality, the cutoff is normalized to $c = 0$ for this example." + "By default, the cutoff is normalized to ``c = 0``. The true RDD effect can be controlled by ``tau`` and is set to a value of $2.0$ in this example." ] }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 21, "metadata": {}, "outputs": [ { @@ -88,7 +88,7 @@ " \n", " \n", " 0\n", - " 0.563067\n", + " 1.563067\n", " 1.0\n", " 0.471435\n", " -0.198503\n", @@ -106,7 +106,7 @@ " \n", " \n", " 2\n", - " 1.265929\n", + " 2.265929\n", " 1.0\n", " 1.432707\n", " -0.266147\n", @@ -137,14 +137,14 @@ ], "text/plain": [ " y d score x0 x1 x2\n", - "0 0.563067 1.0 0.471435 -0.198503 -0.193849 -0.493426\n", + "0 1.563067 1.0 0.471435 -0.198503 -0.193849 -0.493426\n", "1 1.348622 0.0 -1.190976 0.013677 -0.630880 -0.885832\n", - "2 1.265929 1.0 1.432707 -0.266147 0.439675 -0.051651\n", + "2 2.265929 1.0 1.432707 -0.266147 0.439675 -0.051651\n", "3 7.477357 0.0 -0.312652 0.845241 -0.659755 0.436764\n", "4 13.185130 0.0 -0.720589 0.739595 -0.741380 0.948112" ] }, - "execution_count": 2, + "execution_count": 21, "metadata": {}, "output_type": "execute_result" } @@ -152,7 +152,8 @@ "source": [ "np.random.seed(1234)\n", "\n", - "data_dict = make_simple_rdd_data(n_obs=1000, fuzzy=False)\n", + "true_tau = 2.0\n", + "data_dict = make_simple_rdd_data(n_obs=1000, fuzzy=False, tau=true_tau)\n", "\n", "cov_names = ['x' + str(i) for i in range(data_dict['X'].shape[1])]\n", "df = pd.DataFrame(\n", @@ -171,14 +172,17 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 22, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ - "C:\\Users\\BAQ7040\\AppData\\Roaming\\Python\\Python311\\site-packages\\plotly\\express\\_core.py:1979: FutureWarning: When grouping with a length-1 list-like, you will need to pass a length-1 tuple to get_group in a future version of pandas. Pass `(name,)` instead of `name` to silence this warning.\n" + "C:\\Users\\BAQ7040\\AppData\\Roaming\\Python\\Python311\\site-packages\\plotly\\express\\_core.py:1979: FutureWarning:\n", + "\n", + "When grouping with a length-1 list-like, you will need to pass a length-1 tuple to get_group in a future version of pandas. Pass `(name,)` instead of `name` to silence this warning.\n", + "\n" ] }, { @@ -711,513 +715,513 @@ ], "xaxis": "x", "y": [ - 0.5630670750871645, - 1.265929471529643, - 9.748742710522935, - 3.4645630543002266, - 4.720577430325107, - 0.5906588386478189, - 1.094457274340711, - 2.8561356439738455, - 2.6652752947892124, - 3.258380402564378, - 2.4246531645049867, - 11.32396548183264, - 7.460567186562126, - 8.617960664434255, - 7.104539653403088, - 7.484138990719681, - 10.263973781556944, - 7.462833084556626, - 9.939603495455666, - 6.399661064524305, - 1.620400631064451, - 3.010865464260581, - 2.381320486974768, - 0.8308852277275207, - 3.556867416800981, - 1.948719095440292, - 8.600952713627429, - 2.1942833111391407, - 3.8946151927027572, - 4.635183887917489, - 12.036012082261806, - 5.637853691092357, - 12.221400040211847, - 1.7991157129239725, - 4.835865097197437, - 14.518747141216663, - -0.05875788804659948, - 6.3429859357301615, - 6.044358420828881, - 3.2790509190307753, - 3.661836726142834, - 6.027239323766707, - 5.2983880594659505, - 2.020013027089809, - 4.057610475845288, - 0.9338547248594324, - 3.1322631895362214, - 1.544860532455904, - 2.8272043421838253, - 2.646174515498736, - 2.943333161825477, - 0.25674709373115784, - 0.9564278707373953, - 0.5677485344907051, - 15.513337028875254, - 9.184765679426906, - 2.873153778309327, - 12.740174353522601, - 0.6039867353606898, - 5.255971423541705, - 9.861840580482127, - 2.4824345911784356, - 3.1606833199359152, - 10.758696194494975, - 4.0114814973324, - 1.3060695154765898, - 16.628049600932172, - 0.5396465065237206, - 1.9879917890238492, - 11.819285172419374, - 0.9107010782331554, - 5.44432760117919, - 1.7231523458302642, - 12.654564132534047, - 1.6867551361260875, - 0.4447510137167535, - 3.184193644033716, - 1.3123531867413947, - 4.907226338887424, - 1.2079738117623608, - 1.2976490783801529, - 3.0875966628748115, - 0.7662042158113374, - 3.3902681930418512, - 1.4763266658009067, - 1.6771273074590236, - 3.521164016793936, - 2.9790615945018963, - 2.8699549823091317, - 4.007461426415795, - 2.338940416336114, - 8.869888400801477, - 5.307738209931988, - 2.903746274695888, - 2.0856592384183767, - 2.670106787790936, - 7.294504633413678, - 1.9281350171251979, - 16.485468447411897, - 17.184456808988877, - 1.144175815597039, - 18.011448878519992, - 2.544852768481243, - 13.147775772480772, - 6.308070628222554, - 5.950585492608078, - 2.7891548279849387, - 1.2020926001030658, - 9.16406881190855, - 7.976670952867432, - 1.4702041620939958, - 4.134771415941696, - 9.618572668452142, - 11.154706893256707, - 1.9590841736079028, - 1.5765816250505442, - 2.203390528077207, - 2.500852809076819, - 17.77166976434441, - 3.4334313245502894, - 11.468809201993695, - 10.611429868963665, - 2.8637685911784025, - 6.001435101935673, - 7.369174521358374, - 14.217050945628085, - 12.603820025465769, - 3.3488782763418348, - 3.2131428606397328, - 13.91323011942871, - 6.9492001745411365, - 2.4085004716874194, - 2.5283967843946575, - 10.496296186991868, - 6.899498460269936, - 14.511067704191701, - 1.5608665881374613, - 10.84023714538772, - -0.6965244914717429, - 3.877125463354468, - 1.6956300173141827, - 9.231373497595118, - 2.7324465944061935, - 0.572300015216746, - 1.7319163875792771, - 7.173741895691831, - 8.72395855428605, - 1.4875526365435794, - 3.978081921739523, - 1.277176305974415, - 7.140580358652747, - 3.6406166270359526, - 3.263313964754971, - 7.04651848454491, - 5.8025687454395705, - 3.36570374652826, - 2.6977943889433376, - 10.208286605796419, - 2.584062116190693, - 1.39730823672077, - 9.141716452962367, - 15.010875697096775, - 9.716622199946908, - 10.861472590823428, - 0.8039268941832941, - 2.074774356414138, - 12.012572481931103, - -1.7598574267134772, - 3.2833135797555872, - 3.814606437723484, - 0.4098298865217034, - 0.9945304991518853, - 5.487369383152597, - 15.256389831013331, - 8.199846271814256, - 2.025112405354149, - 0.6760337811953564, - 8.270906507890658, - 9.851786931249737, - 9.658459208235294, - 7.9024491221299815, - 9.958092102214838, - 8.806679996607663, - 7.301841904208959, - 1.8959520678532464, - 1.4492962315955902, - 10.095742608750829, - 1.512564357382991, - 3.496852522553875, - 16.201070405665643, - 10.655181721121407, - 7.458668947695023, - 6.182585257102322, - 0.8381018734017056, - 5.954448421794118, - 9.87411606476611, - 6.44274037363752, - 7.225006373432191, - 9.410356026338688, - 7.092928912418812, - 6.2279781627067194, - 2.115857209972452, - 3.282548417419812, - 13.506884332057322, - 3.224684124764207, - 2.2777888910561184, - 13.656807361191017, - -0.2876756672935018, - 6.476384536900452, - 1.4078354924710546, - 0.4229833078605427, - 5.2566415961307165, - 1.2110296394109732, - 3.2348947786879796, - 5.258356272014977, - 2.3793809666939514, - 0.6472462881020166, - 10.264043112573114, - 1.0429433035735227, - 2.2201818077648126, - 13.4752145699751, - 4.145156625312843, - 1.6543586694441952, - 12.879051236600745, - 6.45682004663257, - 4.347351369089084, - 1.1398487127891446, - 8.752660083201123, - 4.02936560189911, - 9.322939743368408, - 2.8839303549256052, - 3.6528989976894994, - 8.23135357094443, - 7.50990937761974, - 1.3943898694921013, - 1.154134614445248, - 2.568654362308105, - 1.6317679540729098, - 9.558916997021942, - 11.347672582990297, - 3.282706463206077, - 8.29015465213362, - 2.5201550487419118, - 2.082022967226665, - 13.394201595285786, - 7.123966577481741, - 9.788541878471024, - 0.8422694533861999, - 3.5510943644870325, - 0.869819037499602, - 5.289082660734713, - 2.6330481899665306, - 5.677261752418803, - 12.645123193561433, - 4.4817511509321575, - 9.73135266063922, - 3.7551030628053486, - 2.1486714708117454, - 0.6236894726215128, - 9.17983249026187, - 5.4106108238588435, - 11.186651231469241, - 3.539902667427348, - 2.856974473907083, - 4.112886606965867, - 8.704875635951035, - 3.7024009314204016, - 5.127085315063862, - 4.895177962193958, - 2.805952128761161, - 2.0980465678831446, - 5.34465527074354, - 3.492431190958235, - 1.6299896045787312, - 0.265747092234916, - 5.942637664055524, - 2.348774115542101, - 4.402157484675704, - 9.116117235217184, - 3.4613547432564773, - 6.531671178472615, - 0.5823907366088681, - 0.959614387956564, - 14.489472594917014, - 4.822830547230848, - 6.499318869571259, - 9.032703049730282, - 7.190469660155882, - 1.9821676416870053, - 3.729218380691533, - 0.14701638808235667, - 2.593338126565563, - 3.513639508012342, - -0.48947405694846785, - 11.05679949241901, - 6.8535085774225974, - 2.8655532959460177, - 2.2977205841009107, - 8.993921914076, - 12.662304944150975, - 2.730133386249415, - 5.930689831586816, - 6.843459588109378, - 5.9954149907923355, - 5.506224292866516, - 0.6342150915008665, - 3.3174584761957835, - 1.2745894543814298, - 3.156564963752938, - 4.681035169088436, - 0.8682305274854047, - 11.792242512055923, - 1.9604221983391767, - 1.0462505871181245, - 5.711606376048099, - 3.068431613494066, - 2.8490213170428658, - 3.403959339305843, - 2.264179673326793, - 1.387978957119129, - 2.0930389945578867, - 1.0208994161105056, - 9.207668213067246, - 3.8606197895306593, - 1.6754162996313244, - 5.374779432437628, - 8.937184334004515, - 3.587884587512182, - 2.046242353652768, - 1.221756539602425, - 5.228476809017635, - 2.4441544833538806, - 2.2720936360102066, - 6.872279730973945, - 2.8243847518725254, - 3.9270580938911173, - 4.30569605379481, - 0.9263924032944642, - 1.982656548934253, - 0.41273184273741137, - 3.746157409358521, - 1.8483087547703183, - -0.10663683587216477, - 2.4880649403573276, - 10.732943752874196, - 5.9813129049237475, - 2.238459321206564, - 0.9256466820771712, - 7.418832968509168, - 1.7527514786002814, - 5.284160109950633, - 1.1634444861365167, - 0.9692343390160645, - -0.26887827327987335, - 9.787539601288069, - 11.895746374184167, - 9.965974552589072, - 9.062736049997376, - 3.1959767936832493, - 6.098242051931191, - -0.18547642092121291, - 3.005491424762978, - 1.533722689314001, - 0.8181368638728819, - 6.744568721567811, - 4.590598935913978, - 16.320957993486164, - 7.0913596958688565, - 2.056244034539619, - 10.46875965833262, - 0.08959655165547539, - 1.4096590522968548, - 4.310917476297208, - 4.0474420794264265, - 7.399995484071186, - 15.684623947529222, - 6.319113255288522, - -1.071882414549458, - 1.7809199910271896, - 10.597484092134568, - 5.473066959556585, - 5.362604379349994, - 0.9203431272301328, - 2.2949214206204025, - 1.8302969183486257, - 9.377576340374638, - 11.695367528603342, - 13.31462998390479, - 5.229088516361773, - 1.1612625683247135, - 7.5733289120723954, - 13.068835777185974, - 6.116304508486813, - 3.4789516811077896, - 12.201334815401738, - 1.2535400933557803, - 9.917238694141234, - 5.201274413655002, - 3.6200547532319867, - 0.7236331316200587, - 6.381441868078257, - 2.098334928618128, - 3.853399636918509, - 10.3952442006207, - 0.23272164849107474, - 2.5448227286349776, - 5.393261931006413, - 2.7689547564428887, - 7.03951458366662, - 2.7843861480103103, - 1.3747919230315948, - -0.11910075956786537, - 15.192679799545468, - 5.80072117939065, - 1.480441393050849, - 9.909191504815636, - 0.7295384349042683, - 0.8707473024376744, - -0.37541410634386446, - 2.3411429792009937, - 10.066438850385445, - 12.650547610477856, - 7.896877285673233, - 2.8388305599419104, - 0.7326646640660937, - 0.5785057335161181, - 4.465699169142491, - 3.4336848149227843, - 2.817753618939716, - 9.325611392051854, - 4.069830743631792, - 6.058062632929909, - 1.9159320923666834, - 2.325309229205214, - 3.6747587303809506, - 5.37197924529851, - 15.562328372379785, - 4.727536425813394, - 1.4067812717509782, - 2.7479395372103377, - 3.357959643164211, - 2.1157143634746034, - 3.5546653081564776, - 3.3811870689190684, - 1.0932624617665345, - 4.842986192059503, - 12.775377927488867, - 9.52804827793297, - 2.0287108774118243, - 2.9188253218804037, - 9.103443000619613, - 3.24690827055626, - 2.1962885130444167, - 4.631753203632753, - 12.114802646740193, - 4.088701749783405, - 6.733015419190123, - 1.0922488953952154, - 3.3012288114262556, - 9.84119574001116, - 8.642091012688123, - 2.1434429230266305, - 8.285082770663648, - 9.636217269201904, - 0.9518078384347449, - 2.6790083186093123, - 4.481767881878449, - 0.7560951420608685, - 6.57750145845892, - 1.3487689578263442, - 1.758855452517031, - 2.6692564484876717, - 16.34422736518518, - -0.14101190326756194, - 11.449212352595664, - 3.8875616041211565, - 7.846735256556087, - 15.957494350302662, - 3.8055648247878975, - 7.964989170975489, - 1.1676659305603234, - -0.07662067433000817, - 5.9371029470728205, - 5.768823511173059, - 1.0408554481784802, - -0.6036402304209916, - 2.6025896704276534, - 8.584272616464322, - 12.280705656341215, - 8.155549718844648, - 0.6382341393030234, - 1.8484947110270162, - 2.7857375699307556, - 0.36573864392377353, - 4.057159291263697, - 3.2999120644958038, - 2.4124649768137942, - 8.636493224325857, - 10.41559220076361, - 1.91287781057633, - 7.420632293781813, - 6.114443764932338, - 2.6829951311847617, - 1.3490980265992172, - 7.965626018208414, - 9.961085374384197, - 6.950627443018606 + 1.5630670750871647, + 2.265929471529643, + 10.748742710522935, + 4.464563054300227, + 5.720577430325107, + 1.590658838647819, + 2.0944572743407113, + 3.8561356439738455, + 3.6652752947892124, + 4.258380402564378, + 3.4246531645049862, + 12.32396548183264, + 8.460567186562127, + 9.617960664434255, + 8.104539653403087, + 8.484138990719682, + 11.263973781556944, + 8.462833084556626, + 10.939603495455666, + 7.399661064524305, + 2.620400631064451, + 4.010865464260581, + 3.381320486974768, + 1.8308852277275207, + 4.55686741680098, + 2.948719095440292, + 9.600952713627429, + 3.1942833111391407, + 4.894615192702758, + 5.635183887917489, + 13.036012082261806, + 6.637853691092357, + 13.221400040211847, + 2.7991157129239728, + 5.835865097197437, + 15.518747141216663, + 0.9412421119534005, + 7.3429859357301615, + 7.044358420828881, + 4.279050919030776, + 4.661836726142834, + 7.027239323766707, + 6.2983880594659505, + 3.020013027089809, + 5.057610475845288, + 1.9338547248594324, + 4.132263189536221, + 2.5448605324559037, + 3.8272043421838253, + 3.6461745154987355, + 3.943333161825477, + 1.2567470937311578, + 1.9564278707373952, + 1.5677485344907052, + 16.513337028875252, + 10.184765679426906, + 3.8731537783093266, + 13.740174353522601, + 1.6039867353606896, + 6.255971423541705, + 10.861840580482127, + 3.482434591178435, + 4.160683319935916, + 11.758696194494975, + 5.0114814973324, + 2.3060695154765902, + 17.628049600932172, + 1.5396465065237206, + 2.987991789023849, + 12.819285172419374, + 1.910701078233155, + 6.44432760117919, + 2.7231523458302638, + 13.654564132534047, + 2.6867551361260875, + 1.4447510137167534, + 4.184193644033716, + 2.3123531867413947, + 5.907226338887424, + 2.207973811762361, + 2.297649078380153, + 4.0875966628748115, + 1.7662042158113374, + 4.390268193041852, + 2.4763266658009067, + 2.677127307459024, + 4.521164016793937, + 3.9790615945018963, + 3.8699549823091317, + 5.007461426415795, + 3.338940416336114, + 9.869888400801477, + 6.307738209931988, + 3.903746274695888, + 3.0856592384183767, + 3.670106787790936, + 8.294504633413677, + 2.928135017125198, + 17.485468447411897, + 18.184456808988877, + 2.1441758155970394, + 19.011448878519992, + 3.544852768481243, + 14.147775772480772, + 7.308070628222553, + 6.950585492608079, + 3.7891548279849387, + 2.2020926001030663, + 10.16406881190855, + 8.976670952867433, + 2.4702041620939954, + 5.134771415941695, + 10.618572668452142, + 12.154706893256707, + 2.959084173607903, + 2.5765816250505438, + 3.2033905280772075, + 3.500852809076819, + 18.77166976434441, + 4.433431324550289, + 12.468809201993697, + 11.611429868963665, + 3.863768591178403, + 7.001435101935673, + 8.369174521358374, + 15.217050945628085, + 13.603820025465769, + 4.348878276341836, + 4.213142860639733, + 14.91323011942871, + 7.9492001745411365, + 3.408500471687419, + 3.528396784394658, + 11.496296186991868, + 7.899498460269936, + 15.511067704191701, + 2.560866588137461, + 11.84023714538772, + 0.30347550852825705, + 4.877125463354467, + 2.695630017314183, + 10.231373497595118, + 3.7324465944061935, + 1.572300015216746, + 2.731916387579277, + 8.17374189569183, + 9.72395855428605, + 2.4875526365435787, + 4.978081921739523, + 2.2771763059744146, + 8.140580358652747, + 4.640616627035953, + 4.263313964754971, + 8.04651848454491, + 6.8025687454395705, + 4.3657037465282595, + 3.6977943889433376, + 11.208286605796419, + 3.5840621161906934, + 2.39730823672077, + 10.141716452962367, + 16.010875697096775, + 10.716622199946908, + 11.861472590823427, + 1.8039268941832942, + 3.0747743564141383, + 13.012572481931103, + -0.7598574267134771, + 4.283313579755587, + 4.8146064377234845, + 1.4098298865217036, + 1.9945304991518857, + 6.487369383152597, + 16.256389831013333, + 9.199846271814256, + 3.025112405354149, + 1.6760337811953563, + 9.270906507890658, + 10.851786931249737, + 10.658459208235294, + 8.902449122129982, + 10.958092102214838, + 9.806679996607661, + 8.301841904208958, + 2.8959520678532464, + 2.4492962315955906, + 11.095742608750829, + 2.512564357382991, + 4.4968525225538745, + 17.201070405665643, + 11.655181721121407, + 8.458668947695022, + 7.182585257102322, + 1.8381018734017056, + 6.954448421794118, + 10.874116064766108, + 7.44274037363752, + 8.225006373432192, + 10.410356026338688, + 8.092928912418811, + 7.2279781627067194, + 3.115857209972452, + 4.282548417419812, + 14.506884332057322, + 4.224684124764206, + 3.2777888910561184, + 14.656807361191017, + 0.7123243327064984, + 7.476384536900452, + 2.4078354924710546, + 1.4229833078605425, + 6.2566415961307165, + 2.211029639410973, + 4.23489477868798, + 6.258356272014977, + 3.379380966693951, + 1.6472462881020162, + 11.264043112573113, + 2.042943303573523, + 3.220181807764813, + 14.4752145699751, + 5.145156625312843, + 2.654358669444195, + 13.879051236600745, + 7.45682004663257, + 5.347351369089084, + 2.139848712789145, + 9.752660083201123, + 5.02936560189911, + 10.322939743368408, + 3.8839303549256052, + 4.652898997689499, + 9.23135357094443, + 8.509909377619739, + 2.3943898694921013, + 2.154134614445248, + 3.568654362308105, + 2.6317679540729095, + 10.558916997021942, + 12.347672582990297, + 4.282706463206077, + 9.290154652133618, + 3.5201550487419118, + 3.082022967226665, + 14.394201595285786, + 8.12396657748174, + 10.788541878471024, + 1.8422694533861999, + 4.5510943644870325, + 1.8698190374996018, + 6.289082660734713, + 3.6330481899665306, + 6.677261752418803, + 13.645123193561433, + 5.4817511509321575, + 10.73135266063922, + 4.755103062805348, + 3.148671470811746, + 1.6236894726215128, + 10.17983249026187, + 6.4106108238588435, + 12.186651231469241, + 4.539902667427349, + 3.856974473907083, + 5.112886606965867, + 9.704875635951035, + 4.702400931420402, + 6.127085315063862, + 5.895177962193958, + 3.805952128761161, + 3.0980465678831446, + 6.34465527074354, + 4.492431190958236, + 2.6299896045787308, + 1.2657470922349159, + 6.942637664055524, + 3.348774115542101, + 5.402157484675704, + 10.116117235217182, + 4.461354743256478, + 7.531671178472615, + 1.582390736608868, + 1.9596143879565644, + 15.489472594917014, + 5.822830547230848, + 7.499318869571259, + 10.03270304973028, + 8.190469660155882, + 2.9821676416870058, + 4.729218380691532, + 1.1470163880823563, + 3.593338126565563, + 4.513639508012342, + 0.5105259430515321, + 12.05679949241901, + 7.8535085774225974, + 3.8655532959460177, + 3.2977205841009107, + 9.993921914076, + 13.662304944150975, + 3.730133386249415, + 6.930689831586816, + 7.843459588109377, + 6.9954149907923355, + 6.506224292866517, + 1.6342150915008669, + 4.3174584761957835, + 2.2745894543814305, + 4.156564963752937, + 5.681035169088436, + 1.868230527485405, + 12.792242512055923, + 2.9604221983391765, + 2.0462505871181245, + 6.711606376048099, + 4.068431613494066, + 3.8490213170428658, + 4.4039593393058425, + 3.264179673326793, + 2.3879789571191288, + 3.0930389945578867, + 2.020899416110505, + 10.207668213067246, + 4.860619789530659, + 2.6754162996313244, + 6.374779432437629, + 9.937184334004515, + 4.587884587512182, + 3.0462423536527674, + 2.221756539602425, + 6.228476809017635, + 3.4441544833538806, + 3.272093636010206, + 7.872279730973945, + 3.8243847518725254, + 4.927058093891117, + 5.30569605379481, + 1.926392403294464, + 2.982656548934253, + 1.4127318427374114, + 4.7461574093585215, + 2.8483087547703185, + 0.8933631641278355, + 3.4880649403573276, + 11.732943752874197, + 6.9813129049237475, + 3.2384593212065633, + 1.9256466820771712, + 8.418832968509168, + 2.752751478600281, + 6.284160109950633, + 2.163444486136517, + 1.9692343390160645, + 0.7311217267201264, + 10.787539601288069, + 12.895746374184167, + 10.965974552589072, + 10.062736049997376, + 4.195976793683249, + 7.098242051931191, + 0.8145235790787874, + 4.005491424762978, + 2.5337226893140006, + 1.818136863872882, + 7.744568721567811, + 5.590598935913978, + 17.320957993486164, + 8.091359695868857, + 3.056244034539619, + 11.46875965833262, + 1.0895965516554755, + 2.409659052296855, + 5.310917476297208, + 5.0474420794264265, + 8.399995484071185, + 16.68462394752922, + 7.319113255288522, + -0.07188241454945812, + 2.7809199910271896, + 11.597484092134568, + 6.473066959556584, + 6.362604379349993, + 1.9203431272301326, + 3.294921420620403, + 2.8302969183486257, + 10.377576340374638, + 12.695367528603342, + 14.31462998390479, + 6.229088516361773, + 2.1612625683247133, + 8.573328912072396, + 14.068835777185974, + 7.116304508486813, + 4.478951681107789, + 13.201334815401736, + 2.2535400933557805, + 10.917238694141234, + 6.201274413655002, + 4.620054753231987, + 1.7236331316200588, + 7.381441868078257, + 3.0983349286181285, + 4.8533996369185095, + 11.3952442006207, + 1.2327216484910748, + 3.5448227286349776, + 6.393261931006413, + 3.7689547564428887, + 8.039514583666621, + 3.7843861480103103, + 2.3747919230315953, + 0.8808992404321346, + 16.19267979954547, + 6.800721179390649, + 2.480441393050849, + 10.909191504815636, + 1.729538434904268, + 1.8707473024376742, + 0.6245858936561355, + 3.3411429792009937, + 11.066438850385445, + 13.650547610477856, + 8.896877285673233, + 3.838830559941911, + 1.7326646640660939, + 1.5785057335161181, + 5.465699169142491, + 4.433684814922784, + 3.8177536189397165, + 10.325611392051856, + 5.069830743631792, + 7.058062632929908, + 2.915932092366684, + 3.3253092292052147, + 4.67475873038095, + 6.37197924529851, + 16.56232837237978, + 5.727536425813394, + 2.4067812717509782, + 3.7479395372103377, + 4.357959643164212, + 3.115714363474604, + 4.554665308156477, + 4.381187068919068, + 2.0932624617665345, + 5.842986192059503, + 13.775377927488867, + 10.52804827793297, + 3.0287108774118243, + 3.9188253218804037, + 10.103443000619611, + 4.2469082705562595, + 3.1962885130444167, + 5.631753203632753, + 13.114802646740193, + 5.088701749783405, + 7.733015419190123, + 2.0922488953952154, + 4.301228811426256, + 10.84119574001116, + 9.642091012688123, + 3.14344292302663, + 9.285082770663648, + 10.636217269201904, + 1.9518078384347444, + 3.6790083186093123, + 5.481767881878449, + 1.7560951420608684, + 7.57750145845892, + 2.348768957826344, + 2.758855452517031, + 3.6692564484876717, + 17.34422736518518, + 0.8589880967324383, + 12.449212352595664, + 4.8875616041211565, + 8.846735256556087, + 16.957494350302664, + 4.805564824787897, + 8.964989170975489, + 2.1676659305603234, + 0.9233793256699923, + 6.9371029470728205, + 6.768823511173058, + 2.04085544817848, + 0.3963597695790085, + 3.6025896704276534, + 9.584272616464322, + 13.280705656341217, + 9.155549718844648, + 1.6382341393030238, + 2.8484947110270165, + 3.785737569930755, + 1.3657386439237735, + 5.057159291263697, + 4.299912064495803, + 3.412464976813795, + 9.636493224325857, + 11.415592200763612, + 2.91287781057633, + 8.420632293781814, + 7.114443764932338, + 3.6829951311847617, + 2.3490980265992176, + 8.965626018208413, + 10.961085374384197, + 7.950627443018606 ], "yaxis": "y" }, @@ -3104,6528 +3108,765 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Oracle Values and Comparisons\n", + "### RDD without Adjustment\n", + "\n", + "The standard RDD estimator for the sharp design takes the form \n", + "\n", + "$$\\hat{\\tau}_{\\text{base}}(h) = \\sum_{i=1}^n w_i(h)Y_i,$$\n", + "\n", + "where the $w_i(h)$ are local linear regression weights that depend on the data through the realizations of the running variable only and $h > 0$ is a bandwidth.\n", + "\n", + "The packages ``rdrobust`` implements this estimation." + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Call: rdrobust\n", + "Number of Observations: 1000\n", + "Polynomial Order Est. (p): 1\n", + "Polynomial Order Bias (q): 2\n", + "Kernel: Triangular\n", + "Bandwidth Selection: mserd\n", + "Var-Cov Estimator: NN\n", + "\n", + " Left Right\n", + "------------------------------------------------\n", + "Number of Observations 493 507\n", + "Number of Unique Obs. 493 507\n", + "Number of Effective Obs. 291 299\n", + "Bandwidth Estimation 0.78 0.78\n", + "Bandwidth Bias 1.282 1.282\n", + "rho (h/b) 0.608 0.608\n", + "\n", + "Method Coef. S.E. t-stat P>|t| 95% CI \n", + "-------------------------------------------------------------------------\n", + "Conventional 2.407 0.634 3.795 1.475e-04 [1.164, 3.65]\n", + "Robust - - 3.122 1.796e-03 [0.869, 3.802]\n" + ] + }, + { + "data": { + "text/plain": [] + }, + "execution_count": 23, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "rdrobust_sharp_noadj = rdrobust(y=df['y'], x=df['score'], fuzzy=df['d'], c=0.0)\n", + "rdrobust_sharp_noadj" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### RDD with Linear Adjustment\n", "\n", - "As the data is generated we have access to the \"true\" potential outcomes. This enables us to observe the individual treatment effect (ITE)\n", + "The linearly adjusted RDD estimator for the sharp design takes the form \n", + "\n", + "$$\\hat{\\tau}_{lin}(h) = \\sum_{i=1}^n w_i(h)(Y_i-X_i^T\\hat{\\gamma}_h)$$\n", "\n", - "$$Y_i(1) - Y_i(0)$$\n", + "where $w_i(h)$ are local linear regression weights that depend on the data through the realizations of the running variable $S_i$ only and $h>0$ is a bandwidth. $\\hat{\\gamma}_h$ is a minimizer from the regression\n", "\n", - "for all individuals. As the effect at the cutoff is the average of these ITEs\n", + "$$\\underset{\\beta,\\gamma}{\\mathrm{arg\\,min}} \\, \\sum K_h(S_i) (Y_i - Q_i^\\top\\beta- X_i^{\\top}\\gamma )^2.$$\n", "\n", - "$$\\tau_{0} = \\mathbb{E}[Y_i(1)-Y_i(0)\\mid S_i = c],$$\n", + "with $Q_i =(D_i, S_i, D_i S_i,1)^T$ (for more details, see our [User Guide](https://docs.doubleml.org/stable/guide/models.html#regression-discontinuity-designs-rdd)), $K_h(v)=K(v/h)/h$ with $K(\\cdot)$ a kernel function.\n", "\n", - "the ITEs can be used in a kernel regression to get an oracle estimator at the cutoff, as a local weighted average." + "The packages ``rdrobust`` implements this estimation with a linear adjustment." ] }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 24, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "The oracle ATE is estimated as 0.9491168185471476 at the cutoff c=0.\n" + "Call: rdrobust\n", + "Number of Observations: 1000\n", + "Polynomial Order Est. (p): 1\n", + "Polynomial Order Bias (q): 2\n", + "Kernel: Triangular\n", + "Bandwidth Selection: mserd\n", + "Var-Cov Estimator: NN\n", + "\n", + " Left Right\n", + "------------------------------------------------\n", + "Number of Observations 493 507\n", + "Number of Unique Obs. 493 507\n", + "Number of Effective Obs. 281 285\n", + "Bandwidth Estimation 0.732 0.732\n", + "Bandwidth Bias 1.22 1.22\n", + "rho (h/b) 0.6 0.6\n", + "\n", + "Method Coef. S.E. t-stat P>|t| 95% CI \n", + "-------------------------------------------------------------------------\n", + "Conventional 2.207 0.433 5.099 3.416e-07 [1.359, 3.056]\n", + "Robust - - 4.311 1.629e-05 [1.189, 3.172]\n" ] }, { "data": { - "application/vnd.plotly.v1+json": { - "config": { - "plotlyServerURL": "https://plot.ly" - }, - "data": [ - { - "marker": { - "color": "blue" - }, - "mode": "markers", - "name": "ITE", - "type": "scatter", - "x": [ - 0.47143516373249306, - -1.1909756947064645, - 1.4327069684260973, - -0.3126518960917129, - -0.7205887333650116, - 0.8871629403077386, - 0.8595884137174165, - -0.6365235044173491, - 0.015696372114428918, - -2.2426849541854055, - 1.150035724719818, - 0.9919460223426778, - 0.9533241281124304, - -2.0212548201949705, - -0.334077365808097, - 0.002118364683486495, - 0.405453411570191, - 0.2890919409800353, - 1.3211581921293856, - -1.5469055532292402, - -0.2026463246291819, - -0.6559693441389339, - 0.19342137647035826, - 0.5534389109567419, - 1.3181515541801367, - -0.4693052847058996, - 0.6755540851223808, - -1.8170272265901968, - -0.1831085401789987, - 1.0589691875711504, - -0.3978402281999914, - 0.3374376536139724, - 1.0475785728927218, - 1.0459382556276653, - 0.8637172916848387, - -0.12209157484767426, - 0.12471295376821585, - -0.32279480560829565, - 0.8416747129961416, - 2.390960515463033, - 0.07619958783723642, - -0.5664459304649568, - 0.036141936684072715, - -2.0749776006900293, - 0.24779219974854666, - -0.8971567844396987, - -0.1367948332613474, - 0.018289191349219306, - 0.7554139823981354, - 0.2152685809694434, - 0.841008794931391, - -1.4458100770443063, - -1.4019732815008439, - -0.10091819994891389, - -0.5482424491868549, - -0.14461950836938436, - 0.35402033219923795, - -0.03551302527814021, - 0.5657383060625951, - 1.5456588046255575, - -0.9742363337673154, - -0.07034487710410242, - 0.30796885521603423, - -0.20849876310587975, - 1.0338007325554992, - -2.4004536338122957, - 2.0306036208387996, - -1.1426312890227635, - 0.21188338677770105, - 0.7047206243171088, - -0.785435211763197, - 0.4620597371620487, - 0.7042282254621743, - 0.5235079678938094, - -0.9262543135302259, - 2.0078429507780005, - 0.2269625418708953, - -1.1526591092509524, - 0.6319794458091295, - 0.0395126866933667, - 0.46439232505089606, - -3.5635166606247353, - 1.3211056154702059, - 0.15263055220453448, - 0.16452954293239852, - -0.4300956908764876, - 0.7673687357524115, - 0.9849198419098969, - 0.270835848826804, - 1.3919861934464073, - 0.07984231300862901, - -0.3999645806965225, - -1.0278505586819058, - -0.5847182112607883, - 0.8165939265478418, - -0.08194705182666534, - -0.3447660142546443, - 0.5282881452973941, - -1.0689887834801322, - -0.5118813091268151, - 0.2912053597430635, - 0.5665336963535724, - 0.503591759111203, - 0.2852956847818571, - 0.48428811274975, - 1.3634815124261457, - -0.781105283625392, - -0.4680176663374855, - 1.2245743551261743, - -1.2811082751440426, - 0.8754755042743244, - -1.710715324029529, - -0.4507651031362744, - 0.7491638059190651, - -0.20393286610125122, - -0.18217541166573417, - 0.6806560043814565, - -1.8184989903916142, - 0.047071635325711084, - 0.3948442093272043, - -0.24843205438084665, - -0.6177066479970167, - -0.682883996449334, - 0.4362576043409168, - -1.703012774113238, - 0.3937105991386652, - -0.47932400357549726, - -0.2990162929660804, - 0.6941032876787643, - 0.6786296737098565, - 0.2395559950038969, - 0.15122662929444983, - 0.8161272333600409, - 1.8935344675962007, - 0.6396327631937027, - -0.9620288319051914, - -2.0852656421201097, - 1.9302467674655757, - -1.7353488744703927, - 1.2103837049045143, - 0.7974354194278735, - -0.379810784047379, - 0.7025622240016004, - -0.850346271655115, - 1.1768124501049289, - -0.524336102632456, - 0.7009077309156047, - 0.9841880707224154, - -0.12172840866682022, - 2.365768628840039, - 0.4961429262475947, - 0.7965948666649523, - -0.4740208901256851, - -0.05669571649092953, - 1.3577972581070583, - -0.8048337241667037, - -2.12362024909293, - -0.33350244043324745, - -0.886719352485378, - 0.33419793089900884, - 0.5367838249027502, - -0.7438303679362013, - -0.3202038822408791, - -0.9161988612665409, - -0.8596682999817407, - 0.22598548673375538, - 0.6287758265382943, - 0.18649434877307466, - 0.9524783451091219, - 0.9881375825933089, - -0.07260831396267549, - -0.5506029235634193, - -0.9381526140931042, - -1.2390715625947926, - 0.13968327403129469, - -0.22301898188247601, - 2.123691888593553, - 0.12227343425882888, - -1.4094317399227687, - 1.4229859527722433, - -2.14785503764361, - -1.347532513457755, - 0.3635645568066484, - -0.014752111804594866, - 1.2723950785462097, - -1.4495666088633876, - -1.1955237416669708, - -0.591862973147249, - -0.4145048435321895, - -1.4257947334380214, - 0.2093947875359238, - -0.5928860038389254, - -1.4731164134656474, - -0.896580615301871, - 1.1043515698603126, - -0.43154951551604476, - -0.16113690824405888, - 0.8891574940728737, - 0.2883768477152654, - -1.0515389375700381, - -0.31956139984023146, - -0.6199930877212022, - 0.156998376446689, - -0.5714553510797893, - 1.0576331832046142, - -0.7914888094778855, - -0.5246273459284702, - 0.07187803937036874, - 1.9107594272771828, - 0.7879646831376144, - 0.5130821444669919, - -0.5464162802735939, - 1.0439446554953231, - 2.10778515279337, - 1.4599274815852936, - 1.0154054578125205, - 0.7491846009241975, - -0.6755214784366882, - 0.4402663916687296, - 0.6889718563269422, - -0.2766461272769873, - 1.92453332001529, - 0.4112040207072239, - 0.8907649561731171, - 0.22636322725170696, - -2.0786178937021753, - -0.387886231967176, - -0.08710696996399898, - 1.126385822137273, - 0.2471117161577363, - 0.1211718053315409, - 0.2989839355420466, - -0.1570991368466517, - -0.7404690227807179, - -1.2476529230512328, - 0.24945521515244942, - 0.5810733206206065, - 2.7638440798495663, - 0.3993254369795763, - 0.6684881692058056, - -0.2757737286563052, - 0.5004829001543722, - 0.8630648605906245, - -1.0516278594652122, - -1.392054077493087, - 1.1539222406122254, - 1.181944105999232, - 0.39137144842193117, - -0.8810470922015694, - 0.2950799597862399, - 1.8638010621325043, - -1.7122739244712557, - -1.4070845457432255, - 0.12678118632697175, - 0.0037598477954959237, - -1.2689942560733918, - -0.8388429214202899, - 0.5539212514397202, - -0.5040427180819637, - -0.7884401845178787, - 1.5294006744839312, - 0.20545485392597962, - 0.3130131289808603, - 0.8665207121682993, - 0.2990705295943764, - 1.076540643846122, - 0.3631773475444523, - 1.8936798255518426, - -0.48575274428280835, - 0.3876744557775985, - 0.023557610392553562, - -0.6602295020442799, - -0.31868492957801425, - -0.7226621936743727, - 0.17738671938459905, - 0.9835127293431644, - 0.0235045858853947, - 0.553776977863366, - 0.3537692939966397, - -0.27559363376768226, - -0.4904835914786814, - -0.37443660019278063, - -2.397503976138816, - 1.5410299832779386, - 0.06308453895730506, - -0.28444068392629274, - -1.2656005376012107, - 1.7879796324557498, - -0.35450870806937423, - -0.10476112306710425, - 0.3862536891890525, - 0.8227753737653734, - -0.6837898224310078, - 1.0572033312141293, - 0.03187997356903155, - 1.3431824575289413, - -0.0505396895487724, - -0.3640099563071088, - -1.5533423394310608, - -0.3192978018201611, - 0.5270464509549642, - 0.7111123993648228, - -0.21754548049047615, - 2.6377912107038637, - -1.7421376305949654, - -0.09443480774144415, - 1.4311837522545638, - 0.5927584465506688, - 0.170296895326288, - -1.7517059477920245, - 0.2885813223432078, - -0.5425795169067793, - 0.17160238198599498, - 0.9828178292431048, - -0.025348902062768783, - -0.28755244928410806, - 0.9244428673433661, - -0.06124629986631457, - -0.7310333425852061, - -1.0227737046951428, - 0.9959929702457525, - 0.955557932627455, - 0.7138407711950433, - 0.13337096219412198, - -0.8070383084728134, - -0.3420107818792151, - 1.9087796580911864, - 0.15592326145312668, - 0.7596525320929627, - -0.42300622841924834, - 0.18167274532368163, - 0.27449257074640343, - 0.06791235738075722, - -0.036982814875919444, - -0.1708010306976224, - 0.26697323153986774, - 1.3829972488529256, - -0.022460873511426515, - 0.13139536722591508, - 0.4344371851022324, - 0.2645340683169988, - 0.5656583442738247, - 0.5850842795017246, - -0.17429815275208735, - -1.0713686714550896, - -0.04846050255238326, - -0.8452903895662435, - 0.4151005583815808, - 0.4255305913978583, - -0.9807243575005858, - -0.42782610997202053, - 1.498569955138537, - -0.36015657086902797, - -0.45824038933749284, - -1.3379684019509706, - -0.04138653961487197, - 0.8210479561079149, - 2.0978007807716916, - 1.2829332468745234, - 0.2703379257393719, - 1.0031403620449315, - 1.0786735513204067, - 0.34075268512976414, - -0.1980749596235683, - 2.4814584228756535, - 1.3852548761892063, - -1.154600965389669, - -1.2680690503770815, - 0.6078621862094797, - -1.080096483157591, - -0.6112816747957622, - 0.10203511229233127, - -1.4365739367721186, - 0.21071705250565526, - -0.8969041706975123, - -1.7243930789918331, - 1.7923391966469424, - -1.3127127065922315, - 0.555877426385625, - -0.6818813054911307, - 1.5727427457558043, - -0.10465157484776595, - 1.850397801609901, - -0.3333504267494006, - 0.1934642338198724, - -0.49674493786490903, - 1.0327232157358608, - -1.7398037975225593, - -0.7558621756229088, - -0.8811117326479355, - 0.3938922629126754, - -0.9500255347962833, - 0.33250662216224913, - 0.5289444088560467, - -1.120520993992725, - 0.04826420692565666, - 0.06198845052177757, - -1.0275156732178674, - -0.23833536546732603, - 1.9321781695813465, - -0.22663229367683593, - -0.923830720176923, - 0.35583899747282033, - -1.2700634783862885, - -0.19547241269675866, - -0.4634193992174632, - 0.9894148472858507, - 1.388647381631717, - 1.0877137365241412, - 0.43880126303439065, - -0.961602240881236, - 1.2456099371478462, - 0.5029255176706321, - -0.6313987783785193, - -0.70425204708826, - -0.24048253675834233, - 0.5855993109298576, - 0.35280056010840655, - -1.8155576924320858, - -0.9101238456951419, - -0.7485279533390595, - -0.10812492648026306, - 0.27477883705216777, - 0.23734976450942513, - -0.2598436943633885, - -0.31244217715639994, - 0.44850974251240683, - -0.05953196470440051, - -0.47001481339778667, - 0.3495667716276656, - -1.0274688471736129, - -0.3066384838696108, - 1.4061761394942678, - -1.2496967727943529, - -1.5601488888852328, - 1.5573976506490226, - -0.5933563949764882, - -0.17028851232950049, - 1.6726268084547062, - -0.5407998076498752, - -0.6841283287665846, - 0.599962085981993, - -0.2171991251446381, - 0.3315265183521529, - -0.38336458015082797, - -0.781816088073111, - 0.26623740682783636, - 0.2794280245327373, - -1.21962569517377, - -0.7239489167555044, - -1.7347783075439347, - 0.27166078437402447, - 0.09911201694909029, - -0.3630899064372582, - -0.5882267282885189, - 0.025941713524132055, - -0.5723023507451587, - 1.1055869627971613, - -1.2080155928296474, - -1.3397010399749156, - 2.0751854067317823, - -1.4894097013310104, - -1.1509530656259641, - 0.4190598246739658, - 0.4134052764244962, - 0.7175769325882829, - 0.26172483967990484, - -0.2427712711003623, - -0.5012681327516669, - -0.6981289789688551, - 1.384580160839074, - -0.2864254139357557, - 0.5000695850282261, - 1.951103236540061, - -0.2783674615930086, - 0.03678625863071046, - 0.44585250626100126, - -1.4103507576806693, - 0.4500013006954749, - 0.5154795307938983, - -1.1540839403826029, - -1.3801733950718382, - -0.4958330052131627, - -0.41327907241887124, - -1.7193166679275491, - -0.029560902753084674, - -0.7660398835228289, - 0.09988207650262723, - -0.7130239566297442, - -2.226117620977587, - 0.7257141531219552, - 0.9169762830692352, - -0.5638902404112554, - -1.5221795568231706, - -0.014278788627562308, - -0.24672080681888428, - -0.1653294765172792, - 0.11911398259834126, - -2.0749804861700474, - -1.002755217016917, - 0.523546018063799, - 0.8215173089989222, - -0.14874184933286258, - -0.045370411959291965, - -0.704492925529761, - 1.7303155195063402, - 0.22892725550405343, - 1.0927410572908394, - -0.35357152666142744, - -0.03065886493678412, - -0.2001718506206763, - -0.48131023935727413, - 1.7114259970115762, - 1.4353870862526215, - -1.167520333241006, - 0.040843424766001724, - 0.36201819567044535, - 0.5725921910432455, - 1.1044602367331493, - -0.4256720265205931, - 0.75568884284869, - 0.010281457155327522, - 0.22458577076489658, - -1.1347082265682895, - -0.9515209412315562, - -0.12713045607576656, - 0.028944498401123394, - 2.1040773666293053, - 1.5675141434637165, - -0.6242296327908734, - -0.40064420205997625, - -1.1370615382091245, - -0.9031590369968799, - -1.0972780624190317, - -0.07130920963109931, - -1.3193390866508534, - -0.5600929458770713, - 0.16495455703336395, - -0.6315857879244524, - -0.8670697795627686, - -1.0025626707106647, - 1.2073482032456735, - 1.7119870129859922, - -0.6245894793017125, - -0.21214580398595856, - -1.1935641822743448, - 0.6575858924331783, - 0.20007988155239426, - 1.091259859221752, - -0.48902205827370954, - 1.368220262225958, - 0.8916251175268084, - 0.8375662124501372, - 0.5141447133892467, - -0.050049692409833806, - 0.7439528461648938, - -1.7240502035381267, - 0.0899015732727284, - 0.3227395618852, - -0.37714942561155657, - -0.0002208983015993693, - 1.0501136937792215, - -0.1686991122175147, - 0.7978764964211627, - 0.5525243131579977, - -1.153093261804181, - 1.6415521890288047, - -1.4389778344742428, - 2.0277395138175196, - -1.365317321173664, - 0.07214886239228502, - 0.6131516784246442, - 1.4891664262942452, - 0.22129657503462105, - -1.530892108386614, - 0.801888214216484, - -0.42446671286333926, - 1.118854972135864, - 1.569548064582847, - 1.4277317710676356, - -1.3718378731166938, - -0.26641789264219634, - 0.7792145652142417, - -0.10281429468501402, - -0.5864646217583874, - 0.24025265459504974, - -0.9980556587715391, - 0.1911699128232047, - -0.9528030215809088, - 1.470996579505006, - 0.7189049215428981, - -0.1665595772769085, - 0.7646112966882201, - -1.1894434708478612, - -0.5348572637202641, - -0.02159784664665048, - -1.1051915914797859, - -1.0559463385249355, - 1.0213556589900556, - 1.7096560949798731, - 0.029561951937617355, - 0.12384201643823771, - 0.28943005670297534, - -0.3014922439465465, - 0.4144350112798109, - 0.9498579011377821, - 0.5218485421095229, - -1.9692628740518392, - 0.502810027757784, - -0.35442243933376033, - -0.44699048181139484, - -1.1169783859357703, - -0.7882663825810968, - 1.0557521639658634, - -1.3045412108969867, - 0.5397352373427955, - 0.3469912503733692, - 0.8741928933305493, - -1.5751793626207562, - -0.15998365617495094, - -0.643333236166963, - -0.7153708866312951, - 1.699458930621629, - 1.2828372246866984, - -0.45255766631820826, - 0.3938001271158281, - 0.4257406105857961, - -0.13004743219159512, - -0.3937331661815619, - -0.6410597741081536, - 0.17196425471545257, - -0.8401490192933458, - 0.8649983085249567, - -0.2048613320814621, - -0.1070733343325384, - -0.24210668506471908, - -0.9024827749371497, - 0.7978708863196311, - -0.289095787657148, - 0.6769776126657561, - -0.34318403393053737, - 0.4872101346078452, - 0.765665358162811, - -2.200564435744119, - -2.5960623967791756, - 0.4756748381165133, - -1.594885645232233, - -1.1100767316660405, - -0.9984064955184256, - -2.275806602546662, - 1.5528072078665365, - -1.149298768674316, - 0.18853062859763994, - 0.9889637830869817, - -1.5861363032929552, - -0.4723808755437636, - -0.18884634787574245, - 0.21112708032840474, - 1.6117222924558978, - 0.5667304418132302, - -0.6411772534653856, - 1.5387739411600052, - 0.3096639858949537, - -0.44884868035202796, - 1.769100570312561, - 0.2682004879637708, - -1.4622250619252337, - 1.850810168972202, - 1.700769505670963, - 0.3533910559483136, - 0.3364890211021921, - 1.0571054344422781, - 1.1986787224676672, - -2.594654269661883, - -0.7147453741565917, - 0.8043460416389878, - 1.1916553458718568, - -0.12736538411633605, - -1.0749752659886933, - 1.4482691251839777, - -0.27835427971563803, - -1.0368186639409402, - 0.20145146638225445, - 0.5017557989907293, - 1.6133349220114617, - -1.8977106282505025, - 1.2990825737762788, - 0.5531844259723022, - -0.20036229600666147, - 0.5456699950930499, - 0.26228661897316985, - 0.21907020968038537, - 0.9323529322684813, - 1.7430524278808484, - -0.12470367976984963, - 0.9540316671351478, - 0.7120509492248905, - -0.5793366572156923, - -0.7618194555160586, - 1.6615021287437646, - 2.547691702457717, - -0.038912324029113265, - -0.356409207238252, - -1.8625686534341959, - 2.6519991181342113, - -0.1362303703563351, - 0.10374933997096626, - 0.11543222568465579, - 0.2586704644560386, - 1.4877433319614572, - 1.4543434763906329, - 0.7043082981680985, - 1.4663513758566715, - 0.3536221825367628, - -1.0855234635679416, - 0.36320976100296887, - -1.813277132405328, - -0.19791075971583402, - 0.4328745920492785, - -0.5405657877076904, - 0.29563065498089497, - 2.0798442368337016, - -1.8424329199610465, - -0.5111660166205718, - -0.58093512839474, - 1.0627364666653065, - 0.01805510965628009, - 0.02279839968937127, - -1.6797914849149362, - 0.8124230006825046, - -0.625888706466102, - -1.2502708184687266, - 0.615135458353951, - -0.12139461101379515, - -1.2808952713375565, - 0.3246098059252541, - 0.6705693906174532, - 0.1491613231433755, - 0.3270638038828972, - -0.35296169014182177, - -0.9055276404436707, - 1.6761854255764614, - 0.6809960077267706, - -0.7037176105934078, - 0.1020797487098907, - 1.1950561396844794, - -0.2779593857816089, - -0.052165291629840356, - 0.353683601249814, - -0.40831076211055395, - -1.8104296677951879, - -0.9033080622801077, - 1.0540450911893136, - -0.9808768767289832, - 0.35207889140437837, - 0.6659818403106037, - 1.0655015019548215, - -0.22843361310270258, - 0.3644839042458271, - -1.514846657215433, - -0.07526128723722576, - -0.29705808175737614, - -0.7274143817732619, - -0.24587534038557923, - -0.12794894211963254, - -0.3693106199094617, - -2.6230042844775308, - 2.1158507289245674, - 0.6855615854791441, - -0.15744398471175033, - 1.3812877674130073, - 0.06842655874188228, - 0.31253629248338644, - 0.45425318515036217, - -0.7884718753018505, - -0.06584033431115952, - -1.418479846109691, - -0.1397533402109211, - -0.5553548562130987, - -0.5019177788520144, - 0.6931185215037656, - -0.2453604968501647, - -1.2694318590858544, - -0.2623238551840711, - 2.337598482195056, - -0.7817174376760302, - 0.0800997455382507, - -1.3394111207653079, - 0.4134509638251659, - 0.20445196734865428, - 0.47845329452970037, - 0.02958097097523698, - -0.1824419843989386, - 0.01746667513481011, - 2.054289530002812, - -2.5318833133900305, - 0.4238146840382535, - -0.955683515590636, - -0.1336742103217792, - -1.077403324709461, - 1.2499025106911574, - 0.5711487534631029, - 0.2970484291574556, - 0.8718652175016266, - -0.16371119657423003, - 0.6895231987879346, - 1.9845899031898866, - -0.11828188509401265, - 0.9551299189232728, - -1.1805528861977703, - 1.4704739392964385, - -0.021557883623027695, - 0.7108614710694785, - -0.8118350520747238, - -2.251213065289845, - -1.12610018599184, - -0.3078667459168953, - -0.9618845356398223, - 0.6708259593192185, - 0.06338342659156378, - -0.6567958804642327, - -0.2883631824527201, - -0.21979349574451643, - 0.20024796080692478, - -0.8455002410306656, - 2.6429226847057117, - -0.3337447706635678, - -0.14550836017250823, - 0.8933687076816909, - 1.288554738453981, - 0.33119818801148354, - -0.07536789810631976, - -0.061147655522904056, - 1.8560568664485682, - -0.7530412824561289, - -0.34022586976460656, - -0.5509960393063006, - -0.6040373262522097, - 2.1225899596034625, - 0.020305520730884315, - -0.866260054447336, - -0.35588838632283426, - -0.9543423107689742, - 1.591464114097166, - 0.0005873380366202194, - -0.4640317318179717, - -1.5237107863092993, - 0.15487036534807186, - -0.8406493439809086, - 0.010685782511001917, - -0.5437403904555086, - 0.6754553436625048, - -0.9733422132310651, - 0.8183481023464054, - -0.11601728545379246, - -0.6908582143577912, - 1.0389554757038926, - 0.981271848028589, - 0.6166208035641588, - -0.7874870323351537, - 0.020856736754465456, - 0.5993399050363709, - -0.3781952626733465, - -0.05546876687944298, - 1.983488054493826, - 0.07788802802787388, - 0.4045844144487453, - -0.8490095099068151, - -0.0780897990873757, - -0.5273122406197597, - -0.24268793363602895, - 1.1069498460085399, - -0.03552991507180546, - -0.9599149837120845, - -0.6289509748030468, - 0.2685148227050607, - 0.488360812855723, - 0.5868386021149908, - -0.17539274109078976, - -0.433426256842158, - 0.043672011407345696, - -2.368892931279029, - -1.5927211354658712, - -2.441670740242832, - -0.2627338282699097, - -0.822618318710863, - -0.042268338331824626, - -0.39127020083745107, - 0.23058049991323532, - 0.3285638932885436, - 0.8380485839532836, - -0.9078816127611445, - -0.04174551326063229, - -1.9943356434051311, - 0.10816425581928157, - -0.5892856890062176, - -0.9849802336244897, - -1.0361773997113255, - 2.039686037158919, - -0.6587570839399224, - -0.6079835611701924, - 0.866452901845807, - -0.7414694894279271, - -1.470561473204019, - 0.7084741210544878, - -0.12851239742110507, - -0.16063982952151423, - 1.0771702093251387, - -0.6133974021549207, - -0.711763631312299, - 0.06543853933530658, - -0.42147083331107177, - -0.341216883674434, - 1.3120365067494253, - -1.8229324878347437, - 0.21537592656166116, - -0.6707133283158744, - 0.2597174736789681, - 0.46954942686078716, - 0.4922331098465613, - 0.51217052768379, - -1.1420202563413573, - -0.11489386424404562, - 1.265974917971162, - -0.9292300251800608, - 0.19091532051019103, - 1.001555629245316, - -0.09742149039769883, - -2.119596982319414, - -2.1969217399884924, - 1.122267866057918, - 2.0118420191461803, - 0.30201074703431263, - -0.48966164024190245, - -0.5135490947661565, - -1.0739210599237325, - 2.2035145562945293, - -0.29882845731838414, - 1.3460983256762604, - 0.626820481067724, - -0.06581075463628752, - -1.8438652086995353, - 0.10997254269648227, - 2.0065611269776644, - -0.7578505995039082, - 1.0159978401232488, - -1.59249315299401, - 0.2923665381528412, - 1.3370321440963355, - -0.24325392379441643, - -0.23102356637828622, - -0.3389292822418378, - 0.3186160154286117, - 1.3970387291415345, - -0.8798130487131584, - 0.11182047780156927, - 0.4315681264740078, - 1.6137850971757342, - -0.2973845710076038, - 1.638962314523427, - 0.13409659216509714, - 0.17203736635766856, - -1.3650171542843021, - -0.4212656827400207, - 0.8806401486464327, - -1.47256655193283, - 0.7577097291811645, - -0.6366050127557136, - -0.015838160674877966, - -0.3878147409362679, - 0.8896634154552829, - 1.1341571652425653, - 1.7316301950572073, - -0.7055198448961673, - -1.2858104335854346, - -0.6382100575533082, - 0.7007847957258879, - 0.8811405230322151, - -0.6532038099890327, - -1.31996590252498, - -0.8187126044465817, - 0.16270221119589887, - 0.6697599912207146, - -0.5740804187646116, - 0.7436871197925536, - 0.6167126196705511, - 0.9718668340412515, - -0.7119035172923535, - -0.7356927851492516, - -0.9634637827705722, - 0.45913770322630687, - 0.6562382063047018, - 0.7515034769028561, - -1.8721836112668646, - -0.5562800612192723, - 0.2721639657384405, - 0.9315457527732457, - 0.32753233118239405, - 0.7408138005017622, - -0.8019050477600198 - ], - "y": [ - 0.7466196239929676, - 0.3674541627572123, - -0.023391631597180496, - 1.2172038524582725, - 0.8162725665960586, - 0.5560235974818095, - 0.73312405967597, - 0.24472214395976177, - 1.5700467204699695, - -1.780347944032468, - 0.08994761840418508, - 0.6532895805010861, - 0.6829559391798075, - -0.8990102310343691, - 0.8603718700812693, - 1.1091898871809014, - 0.7835309834346851, - 1.220959323757619, - 0.2929234869021542, - -0.31877747330475303, - 0.9063532065246322, - 0.7065154654934978, - 0.7434226276928895, - 0.9356572710092532, - -0.09846520992104768, - 0.9397408654205144, - 0.8308391399150388, - -0.4776990933514824, - 0.8103026793417463, - 0.6663290255792003, - 1.138155478996723, - 1.3350908968463981, - 0.196160329233507, - 0.42371070189836413, - 0.5142103699263001, - 0.5402250774349149, - 0.9218491509907478, - 1.7331948275278748, - -0.04717370403844212, - -1.824797912023624, - 1.1610846308647669, - 1.0724156145151023, - 0.7159444498343988, - -1.262924449581658, - 0.9936550613038433, - 0.4858409378315942, - 0.81703056042792, - 0.583114459965931, - 1.2434576483002848, - 1.1139677044118366, - 0.7772495604045666, - -0.6488331461453525, - 0.5492197832788176, - 1.1147061596279384, - 0.9068177547129841, - 0.6156674181699291, - 0.8260235551521671, - 1.1216314035585686, - 0.8866663097214627, - -0.8116862208258475, - 0.0916934390473001, - 1.2104679506240623, - 1.41537438363338, - 1.184604075993108, - 0.2502952033932111, - -1.656583010787054, - -1.0616004211523646, - 0.4776611411927383, - 0.8837708514196176, - 0.4657337507448194, - 0.5664492302729459, - 1.0275505614553366, - 0.9459280227177453, - 1.0399424146272755, - 0.8447952456003769, - -1.4725357408394864, - 1.7081314327345591, - 0.4652298782855253, - 0.9848071851117401, - 0.8960380587199943, - 0.7653321119235867, - -5.680106695316049, - 0.5292232913595694, - 1.2533250217233234, - 0.7090701940491229, - 1.3249999102286125, - 0.9268593413643367, - 0.770362416707852, - 1.1062114447175215, - -0.06865180811357285, - 1.7483678891210843, - 1.396206342167277, - 0.22888850689421847, - 1.0553431611451551, - 0.7299674824819249, - 1.5806513601007932, - 0.8125706941535307, - 0.8454778335173283, - 0.18562019211153924, - 1.0081757174433044, - 0.8876107107044895, - 0.4678174700437445, - 0.9420314367179579, - 1.1001838841496578, - 1.0684291760588647, - -0.03352261955559088, - 0.3143084241802647, - 1.4584159241246637, - 0.22989452310761926, - 0.175886878743244, - 0.7807462967153294, - -0.21125521801407277, - 0.923232305462399, - 0.4446318901723939, - 1.0859868710321336, - 1.044649571842617, - 1.0144567172486205, - -0.6336996947617075, - 0.8244356059548068, - 1.0024644358110986, - 1.2444742066040104, - 1.006530898602036, - 0.8378428945000782, - 1.0069344249530978, - 0.002409096856232029, - 1.2516891295727877, - 1.0604198368932751, - 1.0681027806425476, - 1.1187878006143377, - 0.27548259920571816, - 1.2221722106834942, - 0.8664340686135295, - 0.8447606298628383, - -1.0759429136200045, - 1.203622408704389, - 0.5066511393064095, - -1.4237344178778006, - -0.820783641706444, - -0.44519520609239294, - 0.28814778733959834, - 1.1623911707692047, - 1.19486795965995, - 0.6791768956895652, - 0.8923567889219208, - 0.7252948647064561, - 0.2316616676333223, - 0.9716995843503802, - 0.29088598763266904, - 0.6490953682459466, - -1.9071241822918585, - 0.5509665174582685, - 0.5326361773517014, - 1.2628236169923905, - 1.0374737176698787, - 0.27984211388799807, - 0.562038268492139, - -1.244223245620705, - 1.1189974129232692, - 0.48536332423563455, - 0.812558945704251, - 1.2058119649559491, - 0.9587136838678543, - 1.0169676030349264, - 0.7956575832526951, - 0.2649867410670015, - 1.4869728448081716, - 1.0851235856574686, - 1.0410477482847715, - -0.13413053730062208, - 0.2850323457979278, - 1.1041952967194968, - 0.8703731297861435, - 0.6865128383298993, - 0.7384515060534058, - 0.8745910132052526, - 0.9801961852324268, - -1.3372196026898622, - 0.848649457991355, - -0.12376612939790821, - 0.03229242088357154, - -1.074079448242454, - 0.34567519618697773, - 1.1725796239764252, - 0.9760350384032893, - 0.08276993814819988, - -0.5806263223063839, - 0.5161463701660605, - 0.584304719460599, - 1.0454834117173313, - 0.1627216400502146, - 1.125061549429784, - 0.3356436116541825, - -0.15888018966298745, - 0.42047285289117653, - 0.1123896080026281, - 0.8964103700561123, - 1.0975454182530777, - 0.62173417331024, - 0.8377554044728583, - 0.2779289401604166, - 1.0517568006693931, - 0.9266006043580304, - 1.3254871797580048, - 1.1435229661384527, - -0.1181460439931683, - 0.5666091951562446, - 1.0869130338742077, - 0.9036567321575841, - -0.7945393440283395, - 0.9785959402871571, - 0.8446970406339753, - 0.7064303578676414, - 0.2960895590542112, - -0.9984993227458432, - 0.22254309441209807, - 0.3048644077468854, - 0.775415475359795, - 0.34566279245967224, - 1.008474075200239, - 0.6842148532283758, - 0.89432204181443, - -0.9748028612119368, - 0.7736739466522344, - 0.24214814842054544, - 1.0503196453808843, - -1.3867321751239698, - 0.6953386819958086, - 0.9367600093332686, - 0.3488927617485338, - 1.2546813598534703, - 1.347358806198681, - 1.3324479079622193, - 1.349117080542369, - 1.0698634084257366, - 0.6041392925600135, - 1.5348875840679699, - 0.10720806230977908, - -3.057530235554813, - 0.8932610797452627, - 0.8624698359806784, - 1.31475280011174, - 0.5967249081597903, - 0.7789981073143739, - 0.5872096659896244, - 0.31561073457817024, - 0.43563119485654944, - 0.5640088112892698, - 0.8894251661793642, - 0.5950580640624654, - 1.1406726339525264, - -0.9759278477643247, - -0.6014749511402573, - -0.41421520742559026, - 1.6771769213164225, - 1.2594374619420963, - 0.6539287305683448, - -0.14773219140583527, - 0.7574142489773337, - 1.0513418030731958, - 0.36359026294787, - -0.1828782057133731, - 0.8372007620155084, - 0.9425051968670588, - 0.5205876025521379, - 1.1656679492073048, - 0.24770268687242414, - 0.9599661053186033, - -1.6866201336819966, - 0.2448943048665866, - 1.100541647678872, - 0.734537863219249, - 0.5786362352212261, - 0.9933762773179691, - 1.0084495294827445, - 1.3094297274693096, - 0.4815418914507701, - 1.0980291416997652, - 0.31575078535435663, - 0.9485282136497757, - 0.9992764668736065, - 0.6153020454531464, - 1.124124703686389, - -2.0319340624983595, - -0.6664962737532907, - 1.2580545597716748, - 1.0363578475605895, - 0.29231191105181864, - -0.7164383636241201, - 1.158174573880597, - 0.9701872699670524, - 0.8130765752641089, - 0.7650449834383721, - 0.25515693047514487, - 0.5502192392122272, - 0.9159385696803586, - -0.2231384661751462, - 1.320327023134503, - 0.8607631084264407, - -0.10869572505558067, - 0.5192409439841477, - 1.0877039127506227, - 0.7241791482978286, - 0.983753353274271, - -2.4491689222815025, - -0.5494173641478515, - 1.1380010582188511, - -0.2822404141812229, - 0.8497576029516201, - 0.28452404434960826, - -0.531940677928787, - 0.5842716429981081, - 0.9874947839024522, - 0.904809952729229, - 0.3121441260623552, - 1.3215473002604354, - 1.086799393763811, - 0.6650273737788623, - 0.4303474431335601, - 1.016314439525379, - 0.25892558311841185, - 0.6925905179184375, - 0.7779624521377506, - 0.807394962371724, - 1.187123381820177, - 0.7705801139281707, - 0.5668427642805653, - -0.32621698855167125, - 1.0272898258991408, - 1.223874572494271, - 1.1629215306141916, - 1.092178416330853, - 1.0823905403654193, - 1.1274690826678548, - 0.9286335067410039, - 0.7378907989212902, - 0.8292360912823269, - 0.2838982234082117, - 0.6185594887982608, - 0.6961088942097999, - 0.6595623683014566, - 1.0672353335035254, - 1.2440940753167578, - 0.79790249213357, - 0.9868658865558162, - 0.13731233249794172, - 1.1631258295506228, - 0.5491137138131315, - 1.2003344037866253, - 0.7050234949530617, - 0.7070643307603088, - 0.5408882951752991, - -0.25473703551972715, - 0.8718808363591878, - 0.6332916367013381, - -0.028324676465634413, - 1.2448301189942033, - 0.7896650689024654, - -1.3325256723295684, - 0.03427975551809048, - 1.0132945793425918, - 0.7406251566296547, - 0.8055528478006115, - 0.9829037022370208, - 1.072582799520704, - -2.2262969762889435, - -0.002234034975419519, - 0.4544799744448893, - 0.21407478390590629, - 0.7539126006794707, - -0.07682645581016789, - 0.7165491648924673, - 1.1293767425969852, - -0.13565082660919447, - 0.9809433304226793, - 0.6174806755553994, - -0.18596542639506097, - -1.1450102060861846, - 0.21946926088627983, - 0.11769218233539025, - 1.1140195611951267, - 0.156829189200979, - 0.8638548753219488, - -0.5076307331279614, - 1.0569606828984057, - 1.202213701429181, - 0.5937806693105276, - 0.501199496768719, - -0.6059541775965465, - 0.130882878271797, - 0.19220062193681275, - 1.1325131640327992, - 0.0414761901416405, - 1.3053043476988724, - 0.9530549370710424, - 0.9885031255269816, - 1.0454823932886028, - 1.0281971783192905, - 0.8176598228275609, - 1.418277212655708, - -1.1588738212757714, - 0.2882325989754282, - 1.1730310205544838, - 1.6817215198384439, - -0.18300622579711412, - 0.7968617828147799, - 0.8877420873427165, - 0.01981904430214243, - -0.06494948940197176, - 0.433968581575672, - 0.8637928702498332, - 0.9547090760345132, - 0.20722542443904857, - 0.5935731169244276, - 0.49026824210127273, - 1.122416742104832, - 0.9373145827632205, - 0.7407473099274123, - 1.0659859796073547, - -0.8107539743908267, - 0.1437715486274289, - 0.5600612140164987, - 1.3985017243066211, - 0.6191468948037087, - 1.047499079144675, - 1.2420489137952773, - 1.3879372785221378, - 0.6912268525478238, - 0.7874567711692135, - 0.4030690812076303, - 1.1789793640442827, - 0.46407913937219547, - 0.7731292454645371, - -0.20393415653476765, - 0.40678192660420187, - -0.08452462652788051, - -0.07754001564664925, - 0.6720031867637988, - 0.743079730460023, - -0.484449407741373, - 0.7688497706958819, - 1.0473813327369967, - 1.0057876046638259, - 0.8486811747163214, - 0.7283537648046503, - 0.6442655710593934, - 0.5948259624902157, - 0.6581642669079171, - 1.011231394448389, - 0.7055579510375249, - 0.9313108808710848, - -0.6742303975445143, - 0.7367333100339408, - 0.6402789959557857, - 1.146609796531028, - 1.205857788515331, - 1.06017477038157, - 0.8785461392095179, - 0.4308107384258837, - 0.46728002541848035, - -0.1300236453453545, - -1.0946911764483045, - -0.5786301335231006, - 0.5603502475106024, - 1.3124149607795772, - 1.267939612992003, - 0.8769984183254671, - 1.021389835488774, - 1.344298546762421, - 0.7517388220978978, - 0.8720917405004638, - 0.2138438386564232, - 1.6314534892820811, - 1.2822157143756778, - -0.7142163078288419, - 0.7528768961420282, - 1.0364165666142344, - 0.955281240457099, - -0.1260548304167073, - 1.2773440584839495, - 0.836936946522755, - 0.4171848533117899, - -0.30180780738791724, - 0.5247321175275097, - 1.3919601024982087, - -0.9772650405244125, - 0.6755477988680036, - 0.6030173446289315, - 0.9014692608943022, - 0.8878260407744687, - -1.0767507695930536, - 1.028528685235845, - 0.4813385225392828, - 1.092976023742592, - 0.09476538071458762, - 1.3231263888721627, - 0.982250838207039, - 1.3189320483129419, - 0.5105233701987179, - -0.9833164653420514, - 0.5496882124825877, - 0.9545003511069741, - 0.05175104440473799, - 1.026207899005163, - 0.9243300886776311, - 0.41534931134763253, - -0.11627934209637125, - 1.0021106284755539, - 0.25233754105047135, - 0.7447582421511274, - 0.7262898404089251, - 0.5464667464032057, - 1.1255256244638014, - 0.03208780194075711, - 0.3602942184260698, - 0.1650860859509855, - 0.4651000205531357, - 0.5782926395387689, - 0.6463442629346687, - 0.4688036106544158, - 0.8223796319246084, - 0.3132607783394379, - 0.8857624949435747, - 0.6116490442665672, - 0.9198297346769264, - 0.7807799615783999, - 0.8767379224668375, - 0.9517055733367893, - -1.0888567456648204, - -0.24093211631351874, - 0.890230372838009, - 1.6397855274670798, - 0.38306422285608843, - 0.6280097990916786, - 0.07455892516078144, - 0.9129955324751782, - -0.258113980769628, - 0.9667456592341814, - 0.9535102730934735, - 1.1689341355435219, - 0.4242612053044805, - 0.5626919641375845, - -0.046590091773542675, - -0.5190895878344488, - 1.426189165894808, - 0.7184696563323492, - 0.2591539696464613, - 0.7383896831820604, - 0.6685149816801514, - 0.7654702246605805, - 0.3533014561970287, - -0.06592390603421605, - 0.750808619053263, - 0.8133907229260542, - 0.5313907149026234, - 1.482470172373831, - 0.309810693319184, - -0.9808646070130163, - 1.0172815281529148, - 1.329046362080612, - 0.4169700301245438, - 1.3544628233451297, - 0.9743172559333342, - 1.8803420180492942, - 0.39150366654981117, - 1.4597993568685315, - 0.22329612464414167, - -0.5674849208831008, - -0.1738920355169551, - -1.0557136654639683, - 0.03454286053033151, - 1.0410207186463403, - 0.40350284940130887, - 0.048115541792572714, - 0.8928504517334668, - -0.7934104106204991, - 0.977240952247934, - 0.6103757483296097, - 0.27953440655959305, - 0.09366835085451086, - -0.1260185075799347, - 0.016082760589946177, - 0.8114466783586001, - 0.5851871343191108, - 0.9552813709238412, - 1.4208633343651438, - 0.7800095990720255, - 0.569203453986737, - 0.9767199975113785, - 0.408588559248072, - -0.04405464133866499, - 0.5991140636055827, - 1.0728599516037967, - 1.2389190630445737, - 0.2208976537172647, - 0.475023203018087, - 1.5141545373524892, - 0.22291532373101086, - 0.8905036589889903, - 0.22693356797984077, - -0.20308475869224285, - 0.8597031430274347, - 1.278898223658345, - 0.9504439290454223, - 1.403019650408344, - 1.16441728401304, - 0.6417054290055209, - 1.18499698852263, - -0.8509236700301397, - 1.2279036676785435, - 1.0896640349479654, - 0.946659232125163, - 0.35601703952907826, - 0.642261646941213, - 0.3869686694998222, - 0.351898770486168, - 0.779069790064336, - 1.2262953217201638, - 1.0986823729457458, - -0.00818511017169854, - 0.7716691108577027, - 0.9733642175302828, - 0.7541295118022182, - -0.6240637739739252, - 0.020920767872437906, - 0.7236620213835784, - 1.250308869073411, - 1.1392314139114712, - 1.0318183032814185, - 1.3493973505410408, - 0.09862194951735859, - 0.9092404569642625, - 0.7882746695603284, - 0.5730027600070979, - 0.9595307268923402, - 0.5025401645114638, - 1.0212848426216938, - -0.04578743528913343, - 1.1339155310960614, - 0.8439921067965432, - 0.15923590165804757, - 0.683760020822243, - 1.1397649253966786, - 1.096356126090404, - -1.3001591804144226, - -1.9287940237152816, - 1.413262262071131, - -0.6688116525423116, - 0.6382059796042245, - 0.1594653350543025, - -2.0190651191431432, - 0.10908004110144276, - 0.003163374954938458, - 0.5194996829950984, - 0.6370302742152205, - -0.1948781494342242, - 1.1142578715400155, - 0.657912298262189, - 0.7598328995172867, - -0.2903862340827885, - 0.4170907718188147, - 0.8928245489289264, - 0.027824948421097728, - 0.9047133468198408, - 0.7240214079044142, - -0.3988914053239969, - 1.1451996280614747, - 0.393725070617192, - -0.752618249021575, - -0.008386537811543526, - 1.3252128333404283, - 0.9407709927169314, - 0.1925234589136, - 0.5582567057046112, - -2.3662188486769056, - 1.084070192697005, - 0.20886825788753693, - 0.39421212962310426, - 0.7548859772797325, - 0.8018417183049147, - 0.18396791012046876, - 1.427547672935444, - 0.2900175240099605, - 0.6388653731993501, - 1.1736069785381338, - 0.02994776534352389, - -1.0911242203444544, - -0.11911482003243812, - 1.4217046267538773, - 1.06180432990989, - 0.7040028936744722, - 1.2180288065748144, - 1.3102801344181707, - 0.5313970636873826, - -0.35536332064750786, - 1.3398142296519242, - 0.4724059063883721, - 0.3733023686345569, - 0.6572201249213482, - 0.7744154987459702, - -0.5101370402457472, - -2.179362889646386, - 1.3162994281085165, - 1.2937960725099433, - -0.8244693023020959, - -2.6977372492600136, - 1.085974032333196, - 0.7315890161433654, - 0.773604492051911, - 1.2846492314688054, - 0.14010592537457, - 0.2497272430991999, - 1.1075304049182204, - -0.1931876036272282, - 1.0428471951443088, - 0.4668138725479931, - 1.2072801905522228, - -1.0196063279007168, - 0.48087319481327206, - 0.875483656229056, - 0.9360486796465892, - 1.0720351290707484, - -1.4732423506150343, - -0.5321971167554858, - 1.1478970571239244, - 1.1190190727757852, - 0.3449351374203631, - 1.1595577767322478, - 1.1961882067086016, - -0.02822262551322474, - 0.3875000620829443, - 0.5499045448066777, - 0.40340364050959776, - 0.6908422060599094, - 0.832292223538802, - 0.39706052503913014, - 1.4688005709204608, - 0.9006351789908946, - 0.37542743958199587, - 1.3820095068564768, - 1.1399458290684255, - 0.4179273323928694, - -0.11345286339473226, - 0.5333828214285514, - 0.29819889989692916, - 0.6526944422618903, - 0.3592127124846787, - 1.1587767152935324, - 1.2467783756959607, - 0.6231485680371485, - 0.9020459790101505, - -0.942293413892995, - 0.4041671957638915, - 0.5345314420720051, - 0.9369014297881595, - 1.3537466616873068, - 1.0242641913676653, - 0.8434663478127316, - 1.0542971768938294, - 1.0630231081839554, - 0.3584211708458973, - 1.5544873057203763, - 0.20368574221117974, - 1.1380386827365738, - 0.7924910974026549, - 0.7597458196462838, - 1.2541328217135002, - -2.167081208473392, - -1.1111907659734168, - 0.657983948520477, - 1.5653092804304434, - 0.2086666381257094, - 1.0434366055914372, - 0.3942983122758761, - 0.7154656536000039, - 0.423715959938483, - 0.9873569222132792, - 0.0264773453967333, - 0.7305976771783032, - 1.156974467332099, - 1.0856475487617494, - 0.6221468438707607, - 0.8508246112932334, - 0.4412911798720778, - 0.8438313516186664, - -1.9063350357607098, - 0.9535606866876485, - 1.0490786939381278, - 0.5464336361187101, - 1.2003566964934613, - 1.3591426180802884, - 0.7140229804433806, - 0.898362783143384, - 1.1425131603868097, - 1.4796912301951264, - -0.7898039636904367, - -2.4922315147130605, - 0.6493861887006744, - 0.7248491692050747, - 1.3083915517308462, - 0.06412032868933792, - 0.15935005520569412, - 1.3342402320372548, - 0.7641305154883522, - 0.567082337951735, - 1.084329812776839, - 0.8505914150421289, - -0.45018183005418094, - 0.7505905430218434, - 0.20037048521084877, - -0.03961586628042843, - -0.07985403932254975, - 1.1157439132977807, - 0.32323796210586053, - 0.6300880585720403, - -1.995157599106793, - 0.552578844365943, - 0.5895188424751385, - 0.7506740748956418, - 1.150188098754663, - 1.1481420335830113, - 1.0317901269247791, - 0.7688831731708348, - 1.0863911634890204, - 0.5751283915587924, - 0.8377546448439519, - -3.3562201698516407, - 0.5957333915550276, - 0.9213869736771481, - 0.11336292878064391, - 0.37173792857789545, - 1.099911403757408, - 1.0567225005401286, - 0.7767743261101843, - -0.49541955923468173, - 0.5072846075811173, - 1.0302852076867095, - 0.6419783716495913, - 1.3379132026815865, - -0.9652581204393016, - 1.446791897155296, - 0.9205539652873374, - 0.7809196739184605, - 0.6423310668631284, - -0.32004796937714497, - 1.0126381244531792, - 0.3977499404064755, - -0.022991835044264053, - 0.806514921647906, - 0.20413048903288278, - 0.9768634364823114, - 0.7308309542048764, - 0.8044147735834635, - 0.39794125106793055, - 0.19567130496838647, - 1.0974866598111257, - 0.8286917284455846, - 0.25915217509330524, - 0.8143355093593969, - 0.3589735924631432, - 0.8676286654382199, - 0.8263139337896113, - 0.9064912411441903, - 1.1256366769661628, - 0.8331517301230172, - -1.3514242496876188, - 0.6105774869780544, - 0.7126829296414909, - 0.34443595876017596, - 1.0436887830717578, - 0.8891511445088378, - 1.1756538616448613, - 0.598255242614222, - 1.0091507497934131, - 0.4422475286727736, - 0.7089998240509748, - 0.8227225992859104, - 0.883670202033817, - 0.9965755930220763, - 0.5625613895735335, - 0.3775864166613516, - 1.010772704009085, - -2.1739915155169904, - -0.489111012820139, - -2.386782111765111, - 0.7905975112218961, - 0.6432093723241961, - 1.041439300470873, - 0.9255765577425503, - 0.7836985270532781, - 1.0454751649991756, - 0.5414941342765198, - 0.9317333742281835, - 0.8530301120693473, - -0.9298230386584695, - 1.4624184142794228, - 0.5537194159220005, - 0.40601989744790945, - 0.6735920802162783, - -1.3708252252874873, - 0.7580461486912569, - 0.9073927438415197, - 0.5890576196622366, - 0.7612034822172795, - -0.3627614132899737, - 0.9436085235689212, - 0.5990252107352259, - 0.9843508377999894, - 1.056842639048055, - 0.5935676107705441, - 0.4928364877507396, - 0.768675650101617, - 0.6030862272958597, - 0.5243455187873716, - 0.24353360605791963, - -0.6650883945974271, - 1.5077522629437499, - 0.9722119914036855, - 0.8514810065943896, - 1.0628758998589092, - 0.5299071673882576, - 0.8250022688956753, - 0.3923271907093637, - 0.251168263504123, - 0.14429219259917403, - 0.4935177797314667, - 0.9050566290857452, - 0.05932474456792658, - 1.1844573978510606, - -1.224201610910841, - -1.5296462301345504, - 0.5042219761039783, - -1.3187360514789983, - 0.7798207301817166, - 0.7796297966063519, - 0.6115851744864065, - 0.35464661583426604, - -1.4994697421093548, - 0.991074618236258, - 0.059351869855618855, - 0.8480440388290589, - 0.37124998881617177, - -0.2610423496672727, - 0.46172149833075204, - -0.6900953514682104, - 0.4000700038119507, - 0.6807261125038817, - -0.4040782291165981, - 1.1626204379005296, - -0.4707891288691446, - 0.7689106401425425, - 1.3067768460192837, - 1.029173429223011, - 0.3681313001595171, - 0.09278244997784159, - 0.5933090768546788, - 1.5809329381180826, - 0.691504248073886, - -0.650344314954445, - 0.5948274052750087, - -0.4332506278946785, - 1.0248409962624374, - 1.0944985925065307, - 0.07564621498351798, - 0.7119130105831939, - 0.6612681538152856, - -0.4407654177267446, - 0.48971207550798024, - 0.8042716403667189, - 1.3135607446117255, - 0.8195404810122922, - 0.2623681398482898, - 0.22573245672240483, - -0.9096968715144604, - 0.5202101753166133, - 0.23354006938514804, - 0.49892024005543245, - 0.49052185042361107, - 0.42231558594066154, - 0.9905130437446417, - 0.3232474264268622, - 0.5266988835362589, - 0.4013196900484277, - 1.3279671151174706, - 0.609665923886884, - 1.157390429705159, - 0.6622784646313722, - 0.5085152764663021, - 0.2834456369433478, - 0.6580848395007823, - 0.7153811489855233, - 1.1906682875308254, - 0.4522053120452272, - 0.7993344724517644, - -0.6907541313236318, - 0.8157812339098632, - 1.0703813545088223, - 0.6233913944202731, - 0.9659848374199349, - 0.6922351384957883, - 1.0678789162625058 - ] - }, - { - "line": { - "color": "red" - }, - "mode": "lines", - "name": "Average Effect Estimate", - "type": "scatter", - "x": [ - -1, - -0.9797979797979798, - -0.9595959595959596, - -0.9393939393939394, - -0.9191919191919192, - -0.898989898989899, - -0.8787878787878788, - -0.8585858585858586, - -0.8383838383838383, - -0.8181818181818181, - -0.797979797979798, - -0.7777777777777778, - -0.7575757575757576, - -0.7373737373737373, - -0.7171717171717171, - -0.696969696969697, - -0.6767676767676767, - -0.6565656565656566, - -0.6363636363636364, - -0.6161616161616161, - -0.5959595959595959, - -0.5757575757575757, - -0.5555555555555556, - -0.5353535353535352, - -0.5151515151515151, - -0.4949494949494949, - -0.4747474747474747, - -0.4545454545454545, - -0.43434343434343425, - -0.41414141414141414, - -0.3939393939393939, - -0.3737373737373737, - -0.3535353535353535, - -0.33333333333333326, - -0.31313131313131304, - -0.2929292929292928, - -0.2727272727272727, - -0.2525252525252525, - -0.23232323232323226, - -0.21212121212121204, - -0.19191919191919182, - -0.1717171717171716, - -0.1515151515151515, - -0.13131313131313127, - -0.11111111111111105, - -0.09090909090909083, - -0.07070707070707061, - -0.050505050505050386, - -0.030303030303030276, - -0.010101010101010055, - 0.010101010101010166, - 0.030303030303030498, - 0.05050505050505061, - 0.07070707070707072, - 0.09090909090909105, - 0.11111111111111116, - 0.1313131313131315, - 0.1515151515151516, - 0.1717171717171717, - 0.19191919191919204, - 0.21212121212121215, - 0.2323232323232325, - 0.2525252525252526, - 0.27272727272727293, - 0.29292929292929304, - 0.31313131313131315, - 0.3333333333333335, - 0.3535353535353536, - 0.3737373737373739, - 0.39393939393939403, - 0.41414141414141437, - 0.4343434343434345, - 0.4545454545454546, - 0.4747474747474749, - 0.49494949494949503, - 0.5151515151515154, - 0.5353535353535355, - 0.5555555555555556, - 0.5757575757575759, - 0.595959595959596, - 0.6161616161616164, - 0.6363636363636365, - 0.6565656565656568, - 0.6767676767676769, - 0.696969696969697, - 0.7171717171717173, - 0.7373737373737375, - 0.7575757575757578, - 0.7777777777777779, - 0.7979797979797982, - 0.8181818181818183, - 0.8383838383838385, - 0.8585858585858588, - 0.8787878787878789, - 0.8989898989898992, - 0.9191919191919193, - 0.9393939393939394, - 0.9595959595959598, - 0.9797979797979799, - 1 - ], - "y": [ - 0.4423243302610737, - 0.461573183312013, - 0.48040471193674533, - 0.49882656302188466, - 0.516846146649365, - 0.5344705581267839, - 0.5517065086339948, - 0.5685602652892019, - 0.5850376012095782, - 0.6011437559130133, - 0.6168834061842725, - 0.6322606473152198, - 0.6472789844288953, - 0.6619413334145188, - 0.6762500308376129, - 0.6902068520483747, - 0.703813036593544, - 0.71706931994293, - 0.7299759704717057, - 0.7425328305931973, - 0.7547393609134111, - 0.766594686277071, - 0.7780976425941397, - 0.7892468233743454, - 0.8000406249536653, - 0.810477289469492, - 0.8205549447287154, - 0.8302716402136737, - 0.8396253785830496, - 0.8486141421467495, - 0.8572359139236069, - 0.8654886930265543, - 0.8733705042596359, - 0.8808794019526369, - 0.8880134681999372, - 0.8947708058080052, - 0.9011495263883249, - 0.9071477341569448, - 0.9127635061158604, - 0.9179948693926759, - 0.9228397766011961, - 0.927296080154659, - 0.9313615065132872, - 0.9350336313770977, - 0.9383098568418399, - 0.9411873915194594, - 0.9436632345836296, - 0.9457341646350121, - 0.9473967341899292, - 0.9486472704801863, - 0.9494818831118853, - 0.9498964789686085, - 0.9498867845617479, - 0.9494483758312728, - 0.9485767151880207, - 0.9472671953690416, - 0.9455151894567835, - 0.9433161061982295, - 0.940665449559269, - 0.9375588812708407, - 0.9339922849749642, - 0.9299618304683933, - 0.9254640364759408, - 0.9204958303699577, - 0.9150546032899189, - 0.9091382592077267, - 0.9027452566282164, - 0.8958746418060577, - 0.8885260725927075, - 0.8806998322911191, - 0.8723968331803921, - 0.8636186096655308, - 0.8543673012964158, - 0.84464562617308, - 0.8344568455005289, - 0.8238047202665987, - 0.8126934611839032, - 0.8011276731574716, - 0.7891122956116123, - 0.7766525400336018, - 0.763753826071158, - 0.7504217174601948, - 0.736661858965304, - 0.7224799153948932, - 0.7078815136133808, - 0.6928721883215996, - 0.6774573322204069, - 0.6616421510175764, - 0.645431623589404, - 0.6288304674702124, - 0.6118431097181418, - 0.5944736630962812, - 0.5767259074154734, - 0.5586032758094147, - 0.5401088456535679, - 0.5212453337961618, - 0.5020150957407455, - 0.4824201284038636, - 0.4624620760663869, - 0.44214223914082296 - ] - } - ], - "layout": { - "legend": { - "x": 0.8, - "y": 0.2 - }, - "template": { - "data": { - "bar": [ - { - "error_x": { - "color": "#2a3f5f" - }, - "error_y": { - "color": "#2a3f5f" - }, - "marker": { - "line": { - "color": "#E5ECF6", - "width": 0.5 - }, - "pattern": { - "fillmode": "overlay", - "size": 10, - "solidity": 0.2 - } - }, - "type": "bar" - } - ], - "barpolar": [ - { - "marker": { - "line": { - "color": "#E5ECF6", - "width": 0.5 - }, - "pattern": { - "fillmode": "overlay", - "size": 10, - "solidity": 0.2 - } - }, - "type": "barpolar" - } - ], - "carpet": [ - { - "aaxis": { - "endlinecolor": "#2a3f5f", - "gridcolor": "white", - "linecolor": "white", - "minorgridcolor": "white", - "startlinecolor": "#2a3f5f" - }, - "baxis": { - "endlinecolor": "#2a3f5f", - "gridcolor": "white", - "linecolor": "white", - "minorgridcolor": "white", - "startlinecolor": "#2a3f5f" - }, - "type": "carpet" - } - ], - "choropleth": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "type": "choropleth" - } - ], - "contour": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "colorscale": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ], - "type": "contour" - } - ], - "contourcarpet": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "type": "contourcarpet" - } - ], - "heatmap": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "colorscale": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ], - "type": "heatmap" - } - ], - "heatmapgl": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "colorscale": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ], - "type": "heatmapgl" - } - ], - "histogram": [ - { - "marker": { - "pattern": { - "fillmode": "overlay", - "size": 10, - "solidity": 0.2 - } - }, - "type": "histogram" - } - ], - "histogram2d": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "colorscale": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ], - "type": "histogram2d" - } - ], - "histogram2dcontour": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "colorscale": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ], - "type": "histogram2dcontour" - } - ], - "mesh3d": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "type": "mesh3d" - } - ], - "parcoords": [ - { - "line": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "parcoords" - } - ], - "pie": [ - { - "automargin": true, - "type": "pie" - } - ], - "scatter": [ - { - "fillpattern": { - "fillmode": "overlay", - "size": 10, - "solidity": 0.2 - }, - "type": "scatter" - } - ], - "scatter3d": [ - { - "line": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scatter3d" - } - ], - "scattercarpet": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scattercarpet" - } - ], - "scattergeo": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scattergeo" - } - ], - "scattergl": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scattergl" - } - ], - "scattermapbox": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scattermapbox" - } - ], - "scatterpolar": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scatterpolar" - } - ], - "scatterpolargl": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scatterpolargl" - } - ], - "scatterternary": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scatterternary" - } - ], - "surface": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "colorscale": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ], - "type": "surface" - } - ], - "table": [ - { - "cells": { - "fill": { - "color": "#EBF0F8" - }, - "line": { - "color": "white" - } - }, - "header": { - "fill": { - "color": "#C8D4E3" - }, - "line": { - "color": "white" - } - }, - "type": "table" - } - ] - }, - "layout": { - "annotationdefaults": { - "arrowcolor": "#2a3f5f", - "arrowhead": 0, - "arrowwidth": 1 - }, - "autotypenumbers": "strict", - "coloraxis": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "colorscale": { - "diverging": [ - [ - 0, - "#8e0152" - ], - [ - 0.1, - "#c51b7d" - ], - [ - 0.2, - "#de77ae" - ], - [ - 0.3, - "#f1b6da" - ], - [ - 0.4, - "#fde0ef" - ], - [ - 0.5, - "#f7f7f7" - ], - [ - 0.6, - "#e6f5d0" - ], - [ - 0.7, - "#b8e186" - ], - [ - 0.8, - "#7fbc41" - ], - [ - 0.9, - "#4d9221" - ], - [ - 1, - "#276419" - ] - ], - "sequential": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ], - "sequentialminus": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ] - }, - "colorway": [ - "#636efa", - "#EF553B", - "#00cc96", - "#ab63fa", - "#FFA15A", - "#19d3f3", - "#FF6692", - "#B6E880", - "#FF97FF", - "#FECB52" - ], - "font": { - "color": "#2a3f5f" - }, - "geo": { - "bgcolor": "white", - "lakecolor": "white", - "landcolor": "#E5ECF6", - "showlakes": true, - "showland": true, - "subunitcolor": "white" - }, - "hoverlabel": { - "align": "left" - }, - "hovermode": "closest", - "mapbox": { - "style": "light" - }, - "paper_bgcolor": "white", - "plot_bgcolor": "#E5ECF6", - "polar": { - "angularaxis": { - "gridcolor": "white", - "linecolor": "white", - "ticks": "" - }, - "bgcolor": "#E5ECF6", - "radialaxis": { - "gridcolor": "white", - "linecolor": "white", - "ticks": "" - } - }, - "scene": { - "xaxis": { - "backgroundcolor": "#E5ECF6", - "gridcolor": "white", - "gridwidth": 2, - "linecolor": "white", - "showbackground": true, - "ticks": "", - "zerolinecolor": "white" - }, - "yaxis": { - "backgroundcolor": "#E5ECF6", - "gridcolor": "white", - "gridwidth": 2, - "linecolor": "white", - "showbackground": true, - "ticks": "", - "zerolinecolor": "white" - }, - "zaxis": { - "backgroundcolor": "#E5ECF6", - "gridcolor": "white", - "gridwidth": 2, - "linecolor": "white", - "showbackground": true, - "ticks": "", - "zerolinecolor": "white" - } - }, - "shapedefaults": { - "line": { - "color": "#2a3f5f" - } - }, - "ternary": { - "aaxis": { - "gridcolor": "white", - "linecolor": "white", - "ticks": "" - }, - "baxis": { - "gridcolor": "white", - "linecolor": "white", - "ticks": "" - }, - "bgcolor": "#E5ECF6", - "caxis": { - "gridcolor": "white", - "linecolor": "white", - "ticks": "" - } - }, - "title": { - "x": 0.05 - }, - "xaxis": { - "automargin": true, - "gridcolor": "white", - "linecolor": "white", - "ticks": "", - "title": { - "standoff": 15 - }, - "zerolinecolor": "white", - "zerolinewidth": 2 - }, - "yaxis": { - "automargin": true, - "gridcolor": "white", - "linecolor": "white", - "ticks": "", - "title": { - "standoff": 15 - }, - "zerolinecolor": "white", - "zerolinewidth": 2 - } - } - }, - "title": { - "text": "Locally Linear Kernel Regression of ITE on Score" - }, - "xaxis": { - "title": { - "text": "Score" - } - }, - "yaxis": { - "title": { - "text": "Effect" - } - } - } - } - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "ite = data_dict['oracle_values']['Y1'] - data_dict['oracle_values']['Y0']\n", - "score = data_dict['score']\n", - "\n", - "oracle_model = KernelReg(endog=ite, exog=score, reg_type='ll', var_type='c', ckertype='gaussian')\n", - "\n", - "score_grid = np.linspace(-1, 1, 100)\n", - "oracle_effects_sharp, _ = oracle_model.fit(score_grid)\n", - "\n", - "scatter = go.Scatter(\n", - " x=score,\n", - " y=ite,\n", - " mode='markers',\n", - " name='ITE',\n", - " marker=dict(color='blue')\n", - ")\n", - "line = go.Scatter(\n", - " x=score_grid,\n", - " y=oracle_effects_sharp,\n", - " mode='lines',\n", - " name='Average Effect Estimate',\n", - " line=dict(color='red')\n", - ")\n", - "\n", - "\n", - "fig = go.Figure(data=[scatter, line])\n", - "fig.update_layout(\n", - " title='Locally Linear Kernel Regression of ITE on Score',\n", - " xaxis_title='Score',\n", - " yaxis_title='Effect',\n", - " legend=dict(x=0.8, y=0.2)\n", - ")\n", - "\n", - "print(f\"The oracle ATE is estimated as {oracle_model.fit([0])[0][0]} at the cutoff c={0}.\")\n", - "\n", - "fig.show()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### RDD without Adjustment\n", - "\n", - "The standard RDD estimator for the sharp design takes the form \n", - "\n", - "$$\\hat{\\tau}_{\\text{base}}(h) = \\sum_{i=1}^n w_i(h)Y_i,$$\n", - "\n", - "where the $w_i(h)$ are local linear regression weights that depend on the data through the realizations of the running variable only and $h > 0$ is a bandwidth.\n", - "\n", - "The packages ``rdrobust`` implements this estimation." - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Call: rdrobust\n", - "Number of Observations: 1000\n", - "Polynomial Order Est. (p): 1\n", - "Polynomial Order Bias (q): 2\n", - "Kernel: Triangular\n", - "Bandwidth Selection: mserd\n", - "Var-Cov Estimator: NN\n", - "\n", - " Left Right\n", - "------------------------------------------------\n", - "Number of Observations 493 507\n", - "Number of Unique Obs. 493 507\n", - "Number of Effective Obs. 291 299\n", - "Bandwidth Estimation 0.78 0.78\n", - "Bandwidth Bias 1.282 1.282\n", - "rho (h/b) 0.608 0.608\n", - "\n", - "Method Coef. S.E. t-stat P>|t| 95% CI \n", - "-------------------------------------------------------------------------\n", - "Conventional 1.407 0.634 2.219 2.652e-02 [0.164, 2.65]\n", - "Robust - - 1.786 7.417e-02 [-0.131, 2.802]\n" - ] - }, - { - "data": { - "text/plain": [] - }, - "execution_count": 5, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "rdrobust_sharp_noadj = rdrobust(y=df['y'], x=df['score'], fuzzy=df['d'], c=0.0)\n", - "rdrobust_sharp_noadj" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### RDD with Linear Adjustment\n", - "\n", - "The linearly adjusted RDD estimator for the sharp design takes the form \n", - "\n", - "$$\\hat{\\tau}_{lin}(h) = \\sum_{i=1}^n w_i(h)(Y_i-X_i^T\\hat{\\gamma}_h)$$\n", - "\n", - "where $w_i(h)$ are local linear regression weights that depend on the data through the realizations of the running variable $S_i$ only and $h>0$ is a bandwidth. $\\hat{\\gamma}_h$ is a minimizer from the regression\n", - "\n", - "$$\\underset{\\beta,\\gamma}{\\mathrm{arg\\,min}} \\, \\sum K_h(S_i) (Y_i - Q_i^\\top\\beta- X_i^{\\top}\\gamma )^2.$$\n", - "\n", - "with $Q_i =(D_i, S_i, D_i S_i,1)^T$ (for more details, see our [User Guide](https://docs.doubleml.org/stable/guide/models.html#regression-discontinuity-designs-rdd)), $K_h(v)=K(v/h)/h$ with $K(\\cdot)$ a kernel function.\n", - "\n", - "The packages ``rdrobust`` implements this estimation with a linear adjustment." - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Call: rdrobust\n", - "Number of Observations: 1000\n", - "Polynomial Order Est. (p): 1\n", - "Polynomial Order Bias (q): 2\n", - "Kernel: Triangular\n", - "Bandwidth Selection: mserd\n", - "Var-Cov Estimator: NN\n", - "\n", - " Left Right\n", - "------------------------------------------------\n", - "Number of Observations 493 507\n", - "Number of Unique Obs. 493 507\n", - "Number of Effective Obs. 281 285\n", - "Bandwidth Estimation 0.732 0.732\n", - "Bandwidth Bias 1.22 1.22\n", - "rho (h/b) 0.6 0.6\n", - "\n", - "Method Coef. S.E. t-stat P>|t| 95% CI \n", - "-------------------------------------------------------------------------\n", - "Conventional 1.207 0.433 2.789 5.286e-03 [0.359, 2.056]\n", - "Robust - - 2.334 1.961e-02 [0.189, 2.172]\n" - ] - }, - { - "data": { - "text/plain": [] - }, - "execution_count": 6, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "rdrobust_sharp = rdrobust(y=df['y'], x=df['score'], fuzzy=df['d'], covs=df[cov_names], c=0.0)\n", - "rdrobust_sharp" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### RDD with flexible adjustment\n", - "\n", - "[Noack, Olma and Rothe (2024)](https://arxiv.org/abs/2107.07942) propose an estimator that reduces the variance of the above esimator, using a flexible adjustment of the outcome by machine learning. For more details, see our [User Guide](https://docs.doubleml.org/stable/guide/models.html#regression-discontinuity-designs-rdd). The estimator here takes the form \n", - "\n", - "$$\\hat{\\tau}_{\\text{RDFlex}}(h;\\eta) = \\sum_{i=1}^n w_i(h)M_i(\\eta),\\quad M_i(\\eta) = Y_i - \\eta(X_i),$$\n", - "\n", - "with $\\eta(\\cdot)$ being potentially nonlinear adjustment functions.\n", - "\n", - "We initialize a `DoubleMLData` object using the usual package syntax:\n", - "\n", - " - `y_col` refers to the observed outcome, on which we want to estimate the effect at the cutoff\n", - " - `s_col` refers to the score\n", - " - `x_cols` refers to the covariates to be adjusted for\n", - " - `d_cols` is an indicator whether an observation is treated or not. In the sharp design, this should be identical to an indicator whether an observation is left or right of the cutoff ($D_i = \\mathbb{I}[S_i \\geq c]$)" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [], - "source": [ - "dml_data_sharp = dml.DoubleMLData(df, y_col='y', d_cols='d', x_cols=cov_names, s_col='score')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The ``RDFlex`` object is intialized with only one learner, that adjusts the outcome based on the covariates." - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Method Coef. S.E. t-stat P>|t| 95% CI\n", - "-------------------------------------------------------------------------\n", - "Conventional 0.983 0.103 9.549 1.304e-21 [0.781, 1.185]\n", - "Robust - - 8.229 1.891e-16 [0.740, 1.203]\n" - ] - } - ], - "source": [ - "ml_g = LGBMRegressor(n_estimators=500, learning_rate=0.01, verbose=-1)\n", - "\n", - "rdflex_sharp = RDFlex(dml_data_sharp,\n", - " ml_g,\n", - " cutoff=0,\n", - " fuzzy=False,\n", - " n_folds=5,\n", - " n_rep=1)\n", - "rdflex_sharp.fit(n_iterations=2)\n", - "\n", - "print(rdflex_sharp)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "It is visible that the flexible adjustment decreases the standard error in the estimation and therefore provides tighter confidence intervals. For coverage simulations, see the [DoubleML Coverage Repository](https://docs.doubleml.org/doubleml-coverage/dev/rdd/rdd.html).\n", - "\n", - "`RDFlex` uses a iterative fitting approach to determine a preliminary bandwidth selections for the local adjustments. The default number of iterations is `n_iterations=2`, according to [Noack, Olma and Rothe (2024)](https://arxiv.org/abs/2107.07942)." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Fuzzy RDD\n", - "\n", - "In the fuzzy RDDs, the treatment assignment is still deterministic given the score $\\left(T_i = \\mathbb{I}[S_i \\geq c]\\right)$.\n", - "However, in the neighborhood of the cutoff, there is a probability of non-complianc. Thus, the treatment received might differ from the assigned one $(D_i \\neq T_i)$ for some units. These observations cause the probability jump of treatment at the cutoff to be smaller than 1 but larger than 0. In other words, around the cutoff there can be treatment randomization on both sides.\n", - "\n", - "The parameter of interest in the Fuzzy RDD is the average treatment effect at the cutoff, for all individuals that comply with the assignment:\n", - "\n", - "$$\\theta_{0} = \\mathbb{E}[Y_i(1, 1)-Y_i(0, 0)\\mid S_i = c, \\{i\\in \\text{compliers}\\}]$$\n", - "\n", - "### Generate Data\n", - "\n", - "The function ``make_simple_rdd_data()`` with ``fuzzy = True`` generates basic data for the fuzzy case. The cutoff is still set to $c = 0$." - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
ydscorex0x1x2
0-0.1835530.00.471435-0.198503-0.193849-0.493426
11.3486220.0-1.1909760.013677-0.630880-0.885832
21.2659291.01.432707-0.2661470.439675-0.051651
38.6945611.0-0.3126520.845241-0.6597550.436764
414.0014031.0-0.7205890.739595-0.7413800.948112
\n", - "
" - ], - "text/plain": [ - " y d score x0 x1 x2\n", - "0 -0.183553 0.0 0.471435 -0.198503 -0.193849 -0.493426\n", - "1 1.348622 0.0 -1.190976 0.013677 -0.630880 -0.885832\n", - "2 1.265929 1.0 1.432707 -0.266147 0.439675 -0.051651\n", - "3 8.694561 1.0 -0.312652 0.845241 -0.659755 0.436764\n", - "4 14.001403 1.0 -0.720589 0.739595 -0.741380 0.948112" - ] - }, - "execution_count": 9, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "np.random.seed(1234)\n", - "\n", - "data_dict = make_simple_rdd_data(n_obs=1000, fuzzy=True)\n", - "\n", - "cov_names = ['x' + str(i) for i in range(data_dict['X'].shape[1])]\n", - "df = pd.DataFrame(\n", - " np.column_stack((data_dict['Y'], data_dict['D'], data_dict['score'], data_dict['X'])),\n", - " columns=['y', 'd', 'score'] + cov_names,\n", - ")\n", - "df.head()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Comparing the observed outcomes, the discontinuity is much less pronounced than in the sharp case." - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "C:\\Users\\BAQ7040\\AppData\\Roaming\\Python\\Python311\\site-packages\\plotly\\express\\_core.py:1979: FutureWarning:\n", - "\n", - "When grouping with a length-1 list-like, you will need to pass a length-1 tuple to get_group in a future version of pandas. Pass `(name,)` instead of `name` to silence this warning.\n", - "\n" - ] - }, - { - "data": { - "application/vnd.plotly.v1+json": { - "config": { - "plotlyServerURL": "https://plot.ly" - }, - "data": [ - { - "hovertemplate": "Treatment=False
Score=%{x}
Outcome=%{y}", - "legendgroup": "False", - "marker": { - "color": "#636efa", - "symbol": "circle" - }, - "mode": "markers", - "name": "False", - "orientation": "v", - "showlegend": true, - "type": "scatter", - "x": [ - 0.47143516373249306, - -1.1909756947064645, - 0.9919460223426778, - -1.5469055532292402, - -0.6559693441389339, - -0.8971567844396987, - -1.4019732815008439, - -0.10091819994891389, - -0.14461950836938436, - -0.785435211763197, - 0.9849198419098969, - 0.270835848826804, - -0.3447660142546443, - 0.5665336963535724, - -1.2811082751440426, - -1.710715324029529, - -0.20393286610125122, - 0.3937105991386652, - -0.4740208901256851, - -0.05669571649092953, - -0.9161988612665409, - -0.8596682999817407, - -0.22301898188247601, - -0.014752111804594866, - -1.4257947334380214, - -0.5928860038389254, - -0.31956139984023146, - -0.5246273459284702, - 0.7879646831376144, - -0.387886231967176, - -0.08710696996399898, - 1.8638010621325043, - -1.7122739244712557, - -1.2689942560733918, - -0.5040427180819637, - -0.37443660019278063, - -1.5533423394310608, - -0.09443480774144415, - -0.06124629986631457, - -0.7310333425852061, - -0.1708010306976224, - 0.26697323153986774, - -0.36015657086902797, - -1.3379684019509706, - -1.154600965389669, - -1.2680690503770815, - -0.6112816747957622, - -1.3127127065922315, - 1.5727427457558043, - -0.10465157484776595, - -0.7558621756229088, - -0.8811117326479355, - -0.4634193992174632, - -0.7485279533390595, - -0.2598436943633885, - -0.47001481339778667, - -1.5601488888852328, - -0.5407998076498752, - -0.5882267282885189, - 0.26172483967990484, - -0.41327907241887124, - -1.7193166679275491, - -0.5638902404112554, - -0.24672080681888428, - -0.045370411959291965, - -0.704492925529761, - -0.2001718506206763, - -0.48131023935727413, - -0.4256720265205931, - -0.40064420205997625, - -0.42446671286333926, - -1.3718378731166938, - 1.470996579505006, - -0.1665595772769085, - -1.1051915914797859, - 0.029561951937617355, - -0.3014922439465465, - -0.45255766631820826, - -0.3937331661815619, - -0.2048613320814621, - -2.200564435744119, - -0.9984064955184256, - 0.3096639858949537, - 1.850810168972202, - -0.7147453741565917, - 0.20145146638225445, - 1.7430524278808484, - -0.356409207238252, - -0.12139461101379515, - 0.1020797487098907, - -0.2779593857816089, - -0.052165291629840356, - -0.7274143817732619, - -0.5553548562130987, - -0.5019177788520144, - -0.2453604968501647, - -2.5318833133900305, - -0.16371119657423003, - -1.1805528861977703, - -0.8118350520747238, - -2.251213065289845, - -0.14550836017250823, - -0.061147655522904056, - -0.866260054447336, - -1.5237107863092993, - -0.5437403904555086, - -0.11601728545379246, - -0.6908582143577912, - -0.05546876687944298, - -0.24268793363602895, - -0.6289509748030468, - -0.2627338282699097, - -1.9943356434051311, - -0.6587570839399224, - 0.7084741210544878, - 0.4922331098465613, - -0.11489386424404562, - 0.19091532051019103, - -1.8438652086995353, - -0.7578505995039082, - -1.59249315299401, - -0.23102356637828622, - -1.47256655193283, - -0.015838160674877966, - -1.2858104335854346, - 0.7007847957258879, - 0.6697599912207146, - -0.7119035172923535, - -1.8721836112668646, - -0.5562800612192723, - 0.2721639657384405 - ], - "xaxis": "x", - "y": [ - -0.1835525489058031, - 1.3486218401039956, - 0.4411676938396249, - 0.4585860711409128, - -0.3899856239234457, - 0.8914961577507419, - -0.41651759242783837, - 0.08806035597773143, - 1.7908939267943453, - -0.14581384197929406, - -0.5136153229766942, - -0.14978357398012626, - 2.440691459852534, - 0.13616926531694526, - 0.20282808173671818, - 0.821493754710078, - -0.2992694879926443, - -0.3409880513396322, - 1.3364200530683075, - 1.3210536706273739, - -0.07502604670082638, - 2.250307023533512, - -0.030953077101010695, - 0.3624775790859004, - 0.6153874717064401, - 0.06209084779627111, - 0.3231021368979874, - 0.22497260167637093, - 0.4916082218068387, - 0.7039466740923791, - 0.1923276664283496, - 0.27940335629258184, - 0.21645849306063691, - 1.0004089437269108, - 0.44487698164791045, - 0.11936442692347213, - 0.6787831612420692, - 0.6789358057649202, - 1.618984651084493, - -0.5967617898546517, - 1.6520725885832626, - 0.6200601403132633, - 0.7331132023276788, - 1.0359179974705544, - 1.7590213928451695, - 1.0450913975811487, - 0.1183953918038539, - 1.0360663945550246, - 1.2510063032700756, - 1.9233745949318444, - 0.6211616233500779, - 0.37517543140685394, - -0.12756523321898525, - 0.5226603330804618, - 2.2899617239460897, - 1.7029680839076393, - 2.067446896541806, - 0.8433810912004589, - 0.5142775354371905, - -0.17912038210257414, - -0.618778332438777, - 1.0481937278251565, - 1.7294988055854636, - 1.246765100289748, - 1.0349323282462257, - 2.250865405991169, - 0.14744314604060216, - -0.40229619520916193, - 2.24932445591205, - 0.7646496195873962, - 1.1014840130123558, - 0.8500635875769066, - 0.6782697328395315, - -0.1542287184063889, - 1.4954795451515095, - 0.008527384457970084, - 0.6213348206282769, - 0.5659620963183319, - 0.9200400636616757, - 0.6306143094905791, - 1.0932824737816762, - 2.1131210563570484, - -0.49198150408242947, - 0.6459814131494103, - 0.026152308571340682, - 0.5245791129371666, - 0.16988689972629495, - 1.1187963156683463, - 1.2932899904926258, - 0.5085681260628232, - 1.0725604118217094, - 0.0826444359382778, - 0.2538609094114361, - 1.1150603903826617, - 0.5233138627951399, - 0.014215309483299951, - 1.4552681482097538, - -0.20374752217212186, - 0.2674051948706437, - -0.30886086104336674, - 1.2340808958358562, - -0.09534686814461035, - 2.9850848814314466, - -0.3610901011561299, - 0.623055074210312, - 0.8928873362688777, - 0.3147848495708494, - 1.4150212059382248, - 0.3143949242786218, - 2.0022066056655534, - 0.2893192391838322, - 0.7525531876775715, - 0.38883834760001845, - 2.9839938774044934, - 0.1486403718262942, - 0.4219006710464874, - 1.0273216027632337, - -0.14896148702487677, - 0.4578952696239318, - 2.5636303602200265, - 1.2361366208392117, - -0.07875447360853444, - 1.4687740141322216, - 0.3284413774117222, - 0.6144847987536664, - -0.12478320649983757, - 1.0844978616963237, - 2.149740301840303, - 0.05084904692638065, - 0.23193727300348288, - 0.2787166720903948 - ], - "yaxis": "y" - }, - { - "hovertemplate": "Treatment=True
Score=%{x}
Outcome=%{y}", - "legendgroup": "True", - "marker": { - "color": "#EF553B", - "symbol": "circle" - }, - "mode": "markers", - "name": "True", - "orientation": "v", - "showlegend": true, - "type": "scatter", - "x": [ - 1.4327069684260973, - -0.3126518960917129, - -0.7205887333650116, - 0.8871629403077386, - 0.8595884137174165, - -0.6365235044173491, - 0.015696372114428918, - -2.2426849541854055, - 1.150035724719818, - 0.9533241281124304, - -2.0212548201949705, - -0.334077365808097, - 0.002118364683486495, - 0.405453411570191, - 0.2890919409800353, - 1.3211581921293856, - -0.2026463246291819, - 0.19342137647035826, - 0.5534389109567419, - 1.3181515541801367, - -0.4693052847058996, - 0.6755540851223808, - -1.8170272265901968, - -0.1831085401789987, - 1.0589691875711504, - -0.3978402281999914, - 0.3374376536139724, - 1.0475785728927218, - 1.0459382556276653, - 0.8637172916848387, - -0.12209157484767426, - 0.12471295376821585, - -0.32279480560829565, - 0.8416747129961416, - 2.390960515463033, - 0.07619958783723642, - -0.5664459304649568, - 0.036141936684072715, - -2.0749776006900293, - 0.24779219974854666, - -0.1367948332613474, - 0.018289191349219306, - 0.7554139823981354, - 0.2152685809694434, - 0.841008794931391, - -1.4458100770443063, - -0.5482424491868549, - 0.35402033219923795, - -0.03551302527814021, - 0.5657383060625951, - 1.5456588046255575, - -0.9742363337673154, - -0.07034487710410242, - 0.30796885521603423, - -0.20849876310587975, - 1.0338007325554992, - -2.4004536338122957, - 2.0306036208387996, - -1.1426312890227635, - 0.21188338677770105, - 0.7047206243171088, - 0.4620597371620487, - 0.7042282254621743, - 0.5235079678938094, - -0.9262543135302259, - 2.0078429507780005, - 0.2269625418708953, - -1.1526591092509524, - 0.6319794458091295, - 0.0395126866933667, - 0.46439232505089606, - -3.5635166606247353, - 1.3211056154702059, - 0.15263055220453448, - 0.16452954293239852, - -0.4300956908764876, - 0.7673687357524115, - 1.3919861934464073, - 0.07984231300862901, - -0.3999645806965225, - -1.0278505586819058, - -0.5847182112607883, - 0.8165939265478418, - -0.08194705182666534, - 0.5282881452973941, - -1.0689887834801322, - -0.5118813091268151, - 0.2912053597430635, - 0.503591759111203, - 0.2852956847818571, - 0.48428811274975, - 1.3634815124261457, - -0.781105283625392, - -0.4680176663374855, - 1.2245743551261743, - 0.8754755042743244, - -0.4507651031362744, - 0.7491638059190651, - -0.18217541166573417, - 0.6806560043814565, - -1.8184989903916142, - 0.047071635325711084, - 0.3948442093272043, - -0.24843205438084665, - -0.6177066479970167, - -0.682883996449334, - 0.4362576043409168, - -1.703012774113238, - -0.47932400357549726, - -0.2990162929660804, - 0.6941032876787643, - 0.6786296737098565, - 0.2395559950038969, - 0.15122662929444983, - 0.8161272333600409, - 1.8935344675962007, - 0.6396327631937027, - -0.9620288319051914, - -2.0852656421201097, - 1.9302467674655757, - -1.7353488744703927, - 1.2103837049045143, - 0.7974354194278735, - -0.379810784047379, - 0.7025622240016004, - -0.850346271655115, - 1.1768124501049289, - -0.524336102632456, - 0.7009077309156047, - 0.9841880707224154, - -0.12172840866682022, - 2.365768628840039, - 0.4961429262475947, - 0.7965948666649523, - 1.3577972581070583, - -0.8048337241667037, - -2.12362024909293, - -0.33350244043324745, - -0.886719352485378, - 0.33419793089900884, - 0.5367838249027502, - -0.7438303679362013, - -0.3202038822408791, - 0.22598548673375538, - 0.6287758265382943, - 0.18649434877307466, - 0.9524783451091219, - 0.9881375825933089, - -0.07260831396267549, - -0.5506029235634193, - -0.9381526140931042, - -1.2390715625947926, - 0.13968327403129469, - 2.123691888593553, - 0.12227343425882888, - -1.4094317399227687, - 1.4229859527722433, - -2.14785503764361, - -1.347532513457755, - 0.3635645568066484, - 1.2723950785462097, - -1.4495666088633876, - -1.1955237416669708, - -0.591862973147249, - -0.4145048435321895, - 0.2093947875359238, - -1.4731164134656474, - -0.896580615301871, - 1.1043515698603126, - -0.43154951551604476, - -0.16113690824405888, - 0.8891574940728737, - 0.2883768477152654, - -1.0515389375700381, - -0.6199930877212022, - 0.156998376446689, - -0.5714553510797893, - 1.0576331832046142, - -0.7914888094778855, - 0.07187803937036874, - 1.9107594272771828, - 0.5130821444669919, - -0.5464162802735939, - 1.0439446554953231, - 2.10778515279337, - 1.4599274815852936, - 1.0154054578125205, - 0.7491846009241975, - -0.6755214784366882, - 0.4402663916687296, - 0.6889718563269422, - -0.2766461272769873, - 1.92453332001529, - 0.4112040207072239, - 0.8907649561731171, - 0.22636322725170696, - -2.0786178937021753, - 1.126385822137273, - 0.2471117161577363, - 0.1211718053315409, - 0.2989839355420466, - -0.1570991368466517, - -0.7404690227807179, - -1.2476529230512328, - 0.24945521515244942, - 0.5810733206206065, - 2.7638440798495663, - 0.3993254369795763, - 0.6684881692058056, - -0.2757737286563052, - 0.5004829001543722, - 0.8630648605906245, - -1.0516278594652122, - -1.392054077493087, - 1.1539222406122254, - 1.181944105999232, - 0.39137144842193117, - -0.8810470922015694, - 0.2950799597862399, - -1.4070845457432255, - 0.12678118632697175, - 0.0037598477954959237, - -0.8388429214202899, - 0.5539212514397202, - -0.7884401845178787, - 1.5294006744839312, - 0.20545485392597962, - 0.3130131289808603, - 0.8665207121682993, - 0.2990705295943764, - 1.076540643846122, - 0.3631773475444523, - 1.8936798255518426, - -0.48575274428280835, - 0.3876744557775985, - 0.023557610392553562, - -0.6602295020442799, - -0.31868492957801425, - -0.7226621936743727, - 0.17738671938459905, - 0.9835127293431644, - 0.0235045858853947, - 0.553776977863366, - 0.3537692939966397, - -0.27559363376768226, - -0.4904835914786814, - -2.397503976138816, - 1.5410299832779386, - 0.06308453895730506, - -0.28444068392629274, - -1.2656005376012107, - 1.7879796324557498, - -0.35450870806937423, - -0.10476112306710425, - 0.3862536891890525, - 0.8227753737653734, - -0.6837898224310078, - 1.0572033312141293, - 0.03187997356903155, - 1.3431824575289413, - -0.0505396895487724, - -0.3640099563071088, - -0.3192978018201611, - 0.5270464509549642, - 0.7111123993648228, - -0.21754548049047615, - 2.6377912107038637, - -1.7421376305949654, - 1.4311837522545638, - 0.5927584465506688, - 0.170296895326288, - -1.7517059477920245, - 0.2885813223432078, - -0.5425795169067793, - 0.17160238198599498, - 0.9828178292431048, - -0.025348902062768783, - -0.28755244928410806, - 0.9244428673433661, - -1.0227737046951428, - 0.9959929702457525, - 0.955557932627455, - 0.7138407711950433, - 0.13337096219412198, - -0.8070383084728134, - -0.3420107818792151, - 1.9087796580911864, - 0.15592326145312668, - 0.7596525320929627, - -0.42300622841924834, - 0.18167274532368163, - 0.27449257074640343, - 0.06791235738075722, - -0.036982814875919444, - 1.3829972488529256, - -0.022460873511426515, - 0.13139536722591508, - 0.4344371851022324, - 0.2645340683169988, - 0.5656583442738247, - 0.5850842795017246, - -0.17429815275208735, - -1.0713686714550896, - -0.04846050255238326, - -0.8452903895662435, - 0.4151005583815808, - 0.4255305913978583, - -0.9807243575005858, - -0.42782610997202053, - 1.498569955138537, - -0.45824038933749284, - -0.04138653961487197, - 0.8210479561079149, - 2.0978007807716916, - 1.2829332468745234, - 0.2703379257393719, - 1.0031403620449315, - 1.0786735513204067, - 0.34075268512976414, - -0.1980749596235683, - 2.4814584228756535, - 1.3852548761892063, - 0.6078621862094797, - -1.080096483157591, - 0.10203511229233127, - -1.4365739367721186, - 0.21071705250565526, - -0.8969041706975123, - -1.7243930789918331, - 1.7923391966469424, - 0.555877426385625, - -0.6818813054911307, - 1.850397801609901, - -0.3333504267494006, - 0.1934642338198724, - -0.49674493786490903, - 1.0327232157358608, - -1.7398037975225593, - 0.3938922629126754, - -0.9500255347962833, - 0.33250662216224913, - 0.5289444088560467, - -1.120520993992725, - 0.04826420692565666, - 0.06198845052177757, - -1.0275156732178674, - -0.23833536546732603, - 1.9321781695813465, - -0.22663229367683593, - -0.923830720176923, - 0.35583899747282033, - -1.2700634783862885, - -0.19547241269675866, - 0.9894148472858507, - 1.388647381631717, - 1.0877137365241412, - 0.43880126303439065, - -0.961602240881236, - 1.2456099371478462, - 0.5029255176706321, - -0.6313987783785193, - -0.70425204708826, - -0.24048253675834233, - 0.5855993109298576, - 0.35280056010840655, - -1.8155576924320858, - -0.9101238456951419, - -0.10812492648026306, - 0.27477883705216777, - 0.23734976450942513, - -0.31244217715639994, - 0.44850974251240683, - -0.05953196470440051, - 0.3495667716276656, - -1.0274688471736129, - -0.3066384838696108, - 1.4061761394942678, - -1.2496967727943529, - 1.5573976506490226, - -0.5933563949764882, - -0.17028851232950049, - 1.6726268084547062, - -0.6841283287665846, - 0.599962085981993, - -0.2171991251446381, - 0.3315265183521529, - -0.38336458015082797, - -0.781816088073111, - 0.26623740682783636, - 0.2794280245327373, - -1.21962569517377, - -0.7239489167555044, - -1.7347783075439347, - 0.27166078437402447, - 0.09911201694909029, - -0.3630899064372582, - 0.025941713524132055, - -0.5723023507451587, - 1.1055869627971613, - -1.2080155928296474, - -1.3397010399749156, - 2.0751854067317823, - -1.4894097013310104, - -1.1509530656259641, - 0.4190598246739658, - 0.4134052764244962, - 0.7175769325882829, - -0.2427712711003623, - -0.5012681327516669, - -0.6981289789688551, - 1.384580160839074, - -0.2864254139357557, - 0.5000695850282261, - 1.951103236540061, - -0.2783674615930086, - 0.03678625863071046, - 0.44585250626100126, - -1.4103507576806693, - 0.4500013006954749, - 0.5154795307938983, - -1.1540839403826029, - -1.3801733950718382, - -0.4958330052131627, - -0.029560902753084674, - -0.7660398835228289, - 0.09988207650262723, - -0.7130239566297442, - -2.226117620977587, - 0.7257141531219552, - 0.9169762830692352, - -1.5221795568231706, - -0.014278788627562308, - -0.1653294765172792, - 0.11911398259834126, - -2.0749804861700474, - -1.002755217016917, - 0.523546018063799, - 0.8215173089989222, - -0.14874184933286258, - 1.7303155195063402, - 0.22892725550405343, - 1.0927410572908394, - -0.35357152666142744, - -0.03065886493678412, - 1.7114259970115762, - 1.4353870862526215, - -1.167520333241006, - 0.040843424766001724, - 0.36201819567044535, - 0.5725921910432455, - 1.1044602367331493, - 0.75568884284869, - 0.010281457155327522, - 0.22458577076489658, - -1.1347082265682895, - -0.9515209412315562, - -0.12713045607576656, - 0.028944498401123394, - 2.1040773666293053, - 1.5675141434637165, - -0.6242296327908734, - -1.1370615382091245, - -0.9031590369968799, - -1.0972780624190317, - -0.07130920963109931, - -1.3193390866508534, - -0.5600929458770713, - 0.16495455703336395, - -0.6315857879244524, - -0.8670697795627686, - -1.0025626707106647, - 1.2073482032456735, - 1.7119870129859922, - -0.6245894793017125, - -0.21214580398595856, - -1.1935641822743448, - 0.6575858924331783, - 0.20007988155239426, - 1.091259859221752, - -0.48902205827370954, - 1.368220262225958, - 0.8916251175268084, - 0.8375662124501372, - 0.5141447133892467, - -0.050049692409833806, - 0.7439528461648938, - -1.7240502035381267, - 0.0899015732727284, - 0.3227395618852, - -0.37714942561155657, - -0.0002208983015993693, - 1.0501136937792215, - -0.1686991122175147, - 0.7978764964211627, - 0.5525243131579977, - -1.153093261804181, - 1.6415521890288047, - -1.4389778344742428, - 2.0277395138175196, - -1.365317321173664, - 0.07214886239228502, - 0.6131516784246442, - 1.4891664262942452, - 0.22129657503462105, - -1.530892108386614, - 0.801888214216484, - 1.118854972135864, - 1.569548064582847, - 1.4277317710676356, - -0.26641789264219634, - 0.7792145652142417, - -0.10281429468501402, - -0.5864646217583874, - 0.24025265459504974, - -0.9980556587715391, - 0.1911699128232047, - -0.9528030215809088, - 0.7189049215428981, - 0.7646112966882201, - -1.1894434708478612, - -0.5348572637202641, - -0.02159784664665048, - -1.0559463385249355, - 1.0213556589900556, - 1.7096560949798731, - 0.12384201643823771, - 0.28943005670297534, - 0.4144350112798109, - 0.9498579011377821, - 0.5218485421095229, - -1.9692628740518392, - 0.502810027757784, - -0.35442243933376033, - -0.44699048181139484, - -1.1169783859357703, - -0.7882663825810968, - 1.0557521639658634, - -1.3045412108969867, - 0.5397352373427955, - 0.3469912503733692, - 0.8741928933305493, - -1.5751793626207562, - -0.15998365617495094, - -0.643333236166963, - -0.7153708866312951, - 1.699458930621629, - 1.2828372246866984, - 0.3938001271158281, - 0.4257406105857961, - -0.13004743219159512, - -0.6410597741081536, - 0.17196425471545257, - -0.8401490192933458, - 0.8649983085249567, - -0.1070733343325384, - -0.24210668506471908, - -0.9024827749371497, - 0.7978708863196311, - -0.289095787657148, - 0.6769776126657561, - -0.34318403393053737, - 0.4872101346078452, - 0.765665358162811, - -2.5960623967791756, - 0.4756748381165133, - -1.594885645232233, - -1.1100767316660405, - -2.275806602546662, - 1.5528072078665365, - -1.149298768674316, - 0.18853062859763994, - 0.9889637830869817, - -1.5861363032929552, - -0.4723808755437636, - -0.18884634787574245, - 0.21112708032840474, - 1.6117222924558978, - 0.5667304418132302, - -0.6411772534653856, - 1.5387739411600052, - -0.44884868035202796, - 1.769100570312561, - 0.2682004879637708, - -1.4622250619252337, - 1.700769505670963, - 0.3533910559483136, - 0.3364890211021921, - 1.0571054344422781, - 1.1986787224676672, - -2.594654269661883, - 0.8043460416389878, - 1.1916553458718568, - -0.12736538411633605, - -1.0749752659886933, - 1.4482691251839777, - -0.27835427971563803, - -1.0368186639409402, - 0.5017557989907293, - 1.6133349220114617, - -1.8977106282505025, - 1.2990825737762788, - 0.5531844259723022, - -0.20036229600666147, - 0.5456699950930499, - 0.26228661897316985, - 0.21907020968038537, - 0.9323529322684813, - -0.12470367976984963, - 0.9540316671351478, - 0.7120509492248905, - -0.5793366572156923, - -0.7618194555160586, - 1.6615021287437646, - 2.547691702457717, - -0.038912324029113265, - -1.8625686534341959, - 2.6519991181342113, - -0.1362303703563351, - 0.10374933997096626, - 0.11543222568465579, - 0.2586704644560386, - 1.4877433319614572, - 1.4543434763906329, - 0.7043082981680985, - 1.4663513758566715, - 0.3536221825367628, - -1.0855234635679416, - 0.36320976100296887, - -1.813277132405328, - -0.19791075971583402, - 0.4328745920492785, - -0.5405657877076904, - 0.29563065498089497, - 2.0798442368337016, - -1.8424329199610465, - -0.5111660166205718, - -0.58093512839474, - 1.0627364666653065, - 0.01805510965628009, - 0.02279839968937127, - -1.6797914849149362, - 0.8124230006825046, - -0.625888706466102, - -1.2502708184687266, - 0.615135458353951, - -1.2808952713375565, - 0.3246098059252541, - 0.6705693906174532, - 0.1491613231433755, - 0.3270638038828972, - -0.35296169014182177, - -0.9055276404436707, - 1.6761854255764614, - 0.6809960077267706, - -0.7037176105934078, - 1.1950561396844794, - 0.353683601249814, - -0.40831076211055395, - -1.8104296677951879, - -0.9033080622801077, - 1.0540450911893136, - -0.9808768767289832, - 0.35207889140437837, - 0.6659818403106037, - 1.0655015019548215, - -0.22843361310270258, - 0.3644839042458271, - -1.514846657215433, - -0.07526128723722576, - -0.29705808175737614, - -0.24587534038557923, - -0.12794894211963254, - -0.3693106199094617, - -2.6230042844775308, - 2.1158507289245674, - 0.6855615854791441, - -0.15744398471175033, - 1.3812877674130073, - 0.06842655874188228, - 0.31253629248338644, - 0.45425318515036217, - -0.7884718753018505, - -0.06584033431115952, - -1.418479846109691, - -0.1397533402109211, - 0.6931185215037656, - -1.2694318590858544, - -0.2623238551840711, - 2.337598482195056, - -0.7817174376760302, - 0.0800997455382507, - -1.3394111207653079, - 0.4134509638251659, - 0.20445196734865428, - 0.47845329452970037, - 0.02958097097523698, - -0.1824419843989386, - 0.01746667513481011, - 2.054289530002812, - 0.4238146840382535, - -0.955683515590636, - -0.1336742103217792, - -1.077403324709461, - 1.2499025106911574, - 0.5711487534631029, - 0.2970484291574556, - 0.8718652175016266, - 0.6895231987879346, - 1.9845899031898866, - -0.11828188509401265, - 0.9551299189232728, - 1.4704739392964385, - -0.021557883623027695, - 0.7108614710694785, - -1.12610018599184, - -0.3078667459168953, - -0.9618845356398223, - 0.6708259593192185, - 0.06338342659156378, - -0.6567958804642327, - -0.2883631824527201, - -0.21979349574451643, - 0.20024796080692478, - -0.8455002410306656, - 2.6429226847057117, - -0.3337447706635678, - 0.8933687076816909, - 1.288554738453981, - 0.33119818801148354, - -0.07536789810631976, - 1.8560568664485682, - -0.7530412824561289, - -0.34022586976460656, - -0.5509960393063006, - -0.6040373262522097, - 2.1225899596034625, - 0.020305520730884315, - -0.35588838632283426, - -0.9543423107689742, - 1.591464114097166, - 0.0005873380366202194, - -0.4640317318179717, - 0.15487036534807186, - -0.8406493439809086, - 0.010685782511001917, - 0.6754553436625048, - -0.9733422132310651, - 0.8183481023464054, - 1.0389554757038926, - 0.981271848028589, - 0.6166208035641588, - -0.7874870323351537, - 0.020856736754465456, - 0.5993399050363709, - -0.3781952626733465, - 1.983488054493826, - 0.07788802802787388, - 0.4045844144487453, - -0.8490095099068151, - -0.0780897990873757, - -0.5273122406197597, - 1.1069498460085399, - -0.03552991507180546, - -0.9599149837120845, - 0.2685148227050607, - 0.488360812855723, - 0.5868386021149908, - -0.17539274109078976, - -0.433426256842158, - 0.043672011407345696, - -2.368892931279029, - -1.5927211354658712, - -2.441670740242832, - -0.822618318710863, - -0.042268338331824626, - -0.39127020083745107, - 0.23058049991323532, - 0.3285638932885436, - 0.8380485839532836, - -0.9078816127611445, - -0.04174551326063229, - 0.10816425581928157, - -0.5892856890062176, - -0.9849802336244897, - -1.0361773997113255, - 2.039686037158919, - -0.6079835611701924, - 0.866452901845807, - -0.7414694894279271, - -1.470561473204019, - -0.12851239742110507, - -0.16063982952151423, - 1.0771702093251387, - -0.6133974021549207, - -0.711763631312299, - 0.06543853933530658, - -0.42147083331107177, - -0.341216883674434, - 1.3120365067494253, - -1.8229324878347437, - 0.21537592656166116, - -0.6707133283158744, - 0.2597174736789681, - 0.46954942686078716, - 0.51217052768379, - -1.1420202563413573, - 1.265974917971162, - -0.9292300251800608, - 1.001555629245316, - -0.09742149039769883, - -2.119596982319414, - -2.1969217399884924, - 1.122267866057918, - 2.0118420191461803, - 0.30201074703431263, - -0.48966164024190245, - -0.5135490947661565, - -1.0739210599237325, - 2.2035145562945293, - -0.29882845731838414, - 1.3460983256762604, - 0.626820481067724, - -0.06581075463628752, - 0.10997254269648227, - 2.0065611269776644, - 1.0159978401232488, - 0.2923665381528412, - 1.3370321440963355, - -0.24325392379441643, - -0.3389292822418378, - 0.3186160154286117, - 1.3970387291415345, - -0.8798130487131584, - 0.11182047780156927, - 0.4315681264740078, - 1.6137850971757342, - -0.2973845710076038, - 1.638962314523427, - 0.13409659216509714, - 0.17203736635766856, - -1.3650171542843021, - -0.4212656827400207, - 0.8806401486464327, - 0.7577097291811645, - -0.6366050127557136, - -0.3878147409362679, - 0.8896634154552829, - 1.1341571652425653, - 1.7316301950572073, - -0.7055198448961673, - -0.6382100575533082, - 0.8811405230322151, - -0.6532038099890327, - -1.31996590252498, - -0.8187126044465817, - 0.16270221119589887, - -0.5740804187646116, - 0.7436871197925536, - 0.6167126196705511, - 0.9718668340412515, - -0.7356927851492516, - -0.9634637827705722, - 0.45913770322630687, - 0.6562382063047018, - 0.7515034769028561, - 0.9315457527732457, - 0.32753233118239405, - 0.7408138005017622, - -0.8019050477600198 - ], - "xaxis": "x", - "y": [ - 1.265929471529643, - 8.694561155437166, - 14.001403007791444, - 9.748742710522935, - 3.4645630543002266, - 3.458606814787849, - 4.720577430325107, - 3.07067774720589, - 0.5906588386478189, - 2.8561356439738455, - 12.810615341379208, - 1.7698934669732473, - 2.6652752947892124, - 3.258380402564378, - 2.4246531645049867, - 11.32396548183264, - 7.236964297743415, - 7.460567186562126, - 8.617960664434255, - 7.104539653403088, - 16.09901330545235, - 7.484138990719681, - 9.681717563115276, - 2.001393280247692, - 10.263973781556944, - 2.3413201248723268, - 7.462833084556626, - 9.939603495455666, - 6.399661064524305, - 1.620400631064451, - 4.242739862271615, - 3.010865464260581, - 6.248533468937351, - 2.381320486974768, - 0.8308852277275207, - 3.556867416800981, - 0.51630276636483, - 1.948719095440292, - 6.30264204621881, - 8.600952713627429, - 5.601195519451783, - 2.1942833111391407, - 3.8946151927027572, - 4.635183887917489, - 12.036012082261806, - 3.8288220906607657, - 1.4365815271131692, - 5.637853691092357, - 7.5383876833162615, - 12.221400040211847, - 1.7991157129239725, - 3.3970733364904837, - 3.200570745467585, - 4.835865097197437, - 3.100982661677124, - 14.518747141216663, - 0.36143300709220605, - -0.05875788804659948, - 3.84558565236586, - 6.3429859357301615, - 6.044358420828881, - 3.2790509190307753, - 3.661836726142834, - 6.027239323766707, - 3.6911205707117882, - 5.2983880594659505, - 2.020013027089809, - 2.238771401281311, - 4.057610475845288, - 0.9338547248594324, - 3.1322631895362214, - 7.978379801118601, - 1.544860532455904, - 2.8272043421838253, - 2.646174515498736, - 2.714126855473393, - 2.943333161825477, - 0.5677485344907051, - 15.513337028875254, - 10.516513554272974, - 0.8749519970640259, - 4.245026374790678, - 9.184765679426906, - 4.0282521403687825, - 2.873153778309327, - 8.526111855670262, - 7.930290760456417, - 12.740174353522601, - 5.255971423541705, - 9.861840580482127, - 2.4824345911784356, - 3.1606833199359152, - 7.3372099952734935, - 1.525660823074181, - 10.758696194494975, - 4.0114814973324, - 8.964967051348435, - 1.3060695154765898, - 4.563853505384101, - 16.628049600932172, - 1.6871766020875218, - 0.5396465065237206, - 1.9879917890238492, - 2.8391288043110663, - 5.914663671850868, - 2.0532649901547106, - 11.819285172419374, - 2.510958942199201, - 7.902461013836859, - 14.987379713113802, - 5.44432760117919, - 1.7231523458302642, - 12.654564132534047, - 1.6867551361260875, - 0.4447510137167535, - 3.184193644033716, - 1.3123531867413947, - 1.2197160949031356, - 1.3552451215543206, - 4.907226338887424, - 8.755776884038891, - 1.2079738117623608, - 1.2976490783801529, - 8.667867403640276, - 3.0875966628748115, - 2.6210946348391087, - 0.7662042158113374, - 2.6172598935433316, - 3.3902681930418512, - 1.4763266658009067, - 10.076447482487703, - 1.6771273074590236, - 3.521164016793936, - 2.9790615945018963, - 2.8699549823091317, - 5.269105752749612, - 5.681577465665945, - 3.487802776844909, - 1.908206085100257, - 4.007461426415795, - 2.338940416336114, - 3.6400720160114726, - 2.1218223722428795, - 8.869888400801477, - 5.307738209931988, - 2.903746274695888, - 2.0856592384183767, - 2.670106787790936, - 5.122887292442154, - 3.952098165720182, - 5.421845648941789, - 6.00091245254906, - 7.294504633413678, - 1.9281350171251979, - 16.485468447411897, - 6.531354353045948, - 17.184456808988877, - 9.813496038550447, - 10.227216864967803, - 1.144175815597039, - 18.011448878519992, - 7.190505279202194, - 13.509762242844465, - 5.046114345093919, - 10.091717008532877, - 2.544852768481243, - 8.866525617443083, - 11.551249053912088, - 13.147775772480772, - 1.654741728524375, - 5.265064763923753, - 6.308070628222554, - 5.950585492608078, - 1.573817644256974, - 3.423405333839633, - 2.7891548279849387, - 6.628517620276847, - 1.2020926001030658, - 9.418298407825423, - 9.16406881190855, - 7.976670952867432, - 4.134771415941696, - 0.026575862646723403, - 9.618572668452142, - 11.154706893256707, - 1.9590841736079028, - 1.5765816250505442, - 2.203390528077207, - 1.3635302870548887, - 2.500852809076819, - 17.77166976434441, - 10.9569132635667, - 3.4334313245502894, - 11.468809201993695, - 10.611429868963665, - 2.8637685911784025, - 6.1068830221501, - 6.001435101935673, - 7.369174521358374, - 14.217050945628085, - 12.603820025465769, - 5.658213969381527, - 1.970389713710068, - 11.394596021181313, - 3.3488782763418348, - 3.2131428606397328, - 13.91323011942871, - 6.9492001745411365, - 2.4085004716874194, - 5.2663586180489155, - 2.5283967843946575, - 10.496296186991868, - 2.6321862632085935, - 4.607037732401054, - 6.899498460269936, - 14.511067704191701, - 1.5608665881374613, - 8.731651246426887, - 10.84023714538772, - 1.8732879832270275, - 3.877125463354468, - 1.6956300173141827, - 0.2133795212480425, - 9.231373497595118, - 6.091572264058836, - 2.7324465944061935, - 0.572300015216746, - 1.7319163875792771, - 7.173741895691831, - 8.72395855428605, - 1.4875526365435794, - 3.978081921739523, - 1.277176305974415, - 5.6339700137369, - 7.140580358652747, - 3.6406166270359526, - 0.8377549423898604, - 5.342573084839112, - 9.855949418171228, - 3.263313964754971, - 7.04651848454491, - 5.8025687454395705, - 3.36570374652826, - 2.6977943889433376, - 18.085287142725683, - 2.972984645526237, - 0.6426550754256278, - 10.208286605796419, - 2.584062116190693, - 10.546673655801067, - 10.952633574770253, - 1.39730823672077, - 13.671836195629043, - 7.5306591370037435, - 9.141716452962367, - 15.010875697096775, - 4.188713804683356, - 9.716622199946908, - 10.861472590823428, - 0.8039268941832941, - 9.40288304422664, - 2.500208734545565, - 4.297098100050996, - 2.074774356414138, - 12.012572481931103, - 2.7846499729219025, - -1.7598574267134772, - 11.424871923769345, - 3.2833135797555872, - 3.814606437723484, - 0.4098298865217034, - 2.947546558909086, - 0.9945304991518853, - 5.546133143596889, - 5.487369383152597, - 15.256389831013331, - 2.7995193097475872, - 3.9633575643244816, - 8.199846271814256, - 8.816627223980333, - 2.025112405354149, - 0.6760337811953564, - 8.270906507890658, - 9.851786931249737, - 16.044317060137793, - 2.1073986708814494, - 9.658459208235294, - 7.9024491221299815, - 9.958092102214838, - 18.54071816474041, - 8.806679996607663, - 7.301841904208959, - 1.8959520678532464, - 3.833954303426043, - 10.095742608750829, - 0.17608518818079189, - 1.512564357382991, - 3.496852522553875, - 16.201070405665643, - 10.655181721121407, - 7.458668947695023, - 5.789125404106795, - 8.187651303946337, - 7.090996981895237, - 11.70118691914138, - 6.182585257102322, - 0.8381018734017056, - 2.062039859234129, - 6.095788044645277, - 5.954448421794118, - 3.385438408594497, - 5.590367019049524, - 9.87411606476611, - 6.44274037363752, - 7.225006373432191, - 9.410356026338688, - 7.092928912418812, - 6.2279781627067194, - 2.115857209972452, - 3.6959547760257974, - 3.282548417419812, - 13.506884332057322, - 3.224684124764207, - 7.921462959631633, - 2.2777888910561184, - 4.572925949158813, - 13.656807361191017, - 2.218124759032054, - 4.506818285663842, - -0.2876756672935018, - 6.476384536900452, - 5.663232799363023, - 0.4229833078605427, - 3.0366851227981435, - 5.2566415961307165, - 9.72206032966684, - 1.2110296394109732, - 2.6637708586232267, - 3.2348947786879796, - 5.084959782991081, - 5.258356272014977, - 2.3793809666939514, - 2.0993170207247682, - 0.6472462881020166, - 10.264043112573114, - 1.1632436682309997, - 2.528084599887016, - 1.0429433035735227, - 11.68556134281856, - 3.484170364411881, - 2.2201818077648126, - 7.1427584045082275, - 6.661445440033579, - 13.4752145699751, - 4.145156625312843, - 1.6543586694441952, - 12.879051236600745, - 4.099931116909535, - 6.45682004663257, - 4.347351369089084, - 8.141745153929424, - 7.300043464836314, - 4.31576547034449, - 1.1398487127891446, - 8.752660083201123, - 3.527300075464674, - 5.897328712791664, - 1.3383308652065322, - 4.02936560189911, - 9.322939743368408, - 4.392449167791411, - 2.8839303549256052, - 7.681671014828841, - 3.6528989976894994, - 16.917205292427912, - 3.297245511251533, - 8.23135357094443, - 5.493175338396726, - 7.50990937761974, - 0.8757453096462516, - 4.531646458900818, - 1.3943898694921013, - 9.781361555333927, - 1.154134614445248, - 7.013136736112865, - 2.568654362308105, - 6.4422908265758725, - 16.227895549922852, - 1.6317679540729098, - 9.558916997021942, - 11.453784287346103, - 2.3062936042446442, - 3.947169977729538, - 11.347672582990297, - 3.282706463206077, - 1.2917544377913477, - 8.29015465213362, - 0.5717542687400685, - 2.5201550487419118, - 10.832308202021872, - 4.099030109770507, - 2.082022967226665, - 6.26008928972419, - 2.2338611620324182, - 13.394201595285786, - 7.123966577481741, - 9.788541878471024, - 1.4395500188098314, - 6.385012991957169, - 2.2595052918257976, - 3.5510943644870325, - 7.683203534724593, - 0.869819037499602, - 5.289082660734713, - 3.7882238731868836, - 2.6330481899665306, - 5.677261752418803, - 0.8469640870385587, - 12.645123193561433, - 4.4817511509321575, - 9.313632395816134, - 0.8366444709316733, - 3.1405111006684114, - 8.202789285333695, - 1.4470119467939568, - 9.73135266063922, - 6.574194175314418, - 0.35056355133905254, - 3.7551030628053486, - 2.1486714708117454, - 6.496146584414306, - 0.8908363200219358, - 5.133489598125723, - 0.6236894726215128, - 13.997907268596855, - 4.904399986686302, - 9.17983249026187, - 5.4106108238588435, - 10.97078302652149, - 11.186651231469241, - 3.539902667427348, - 2.856974473907083, - 1.0881366955685468, - 2.889966063019122, - 4.112886606965867, - 8.704875635951035, - 9.799089667366115, - 3.7024009314204016, - 5.127085315063862, - 4.895177962193958, - 2.805952128761161, - 2.0980465678831446, - 5.34465527074354, - 3.492431190958235, - 4.977163204512254, - 7.562762070357182, - 11.635811069085616, - 1.6299896045787312, - 0.265747092234916, - 5.942637664055524, - 2.2373690084810773, - 0.9488870521864202, - 2.9231622333029788, - 7.431169321816414, - 6.476758283389478, - 2.6965208088994963, - 9.375372377939263, - 2.348774115542101, - 3.8891238610918997, - 10.746368023752337, - 0.6184490045922734, - 4.402157484675704, - 9.116117235217184, - 15.01960213541709, - 10.705763971904396, - 6.299053052365139, - 3.4613547432564773, - 6.531671178472615, - 0.5823907366088681, - 8.534542269263813, - 0.959614387956564, - 14.489472594917014, - 4.822830547230848, - 6.499318869571259, - 8.985216608333925, - 9.032703049730282, - 3.0831880206839086, - 7.190469660155882, - 1.9821676416870053, - 8.242591839213503, - 8.998569948100528, - 3.729218380691533, - 6.593892036137035, - 0.14701638808235667, - 2.593338126565563, - 0.5426314453879982, - 3.513639508012342, - 9.118913464563223, - -0.48947405694846785, - 14.775099197228867, - 11.05679949241901, - 6.8535085774225974, - 2.8655532959460177, - 2.2977205841009107, - 2.8546112806651625, - 8.993921914076, - 12.662304944150975, - 2.730133386249415, - 5.930689831586816, - 2.833114948129331, - 6.843459588109378, - 8.651382866988321, - 3.3248724033470287, - 5.9954149907923355, - 2.6732751826267678, - 5.506224292866516, - 1.8368308317944675, - 3.3174584761957835, - 1.2745894543814298, - 0.36728127917324405, - 6.07526394073255, - 3.0034554117243952, - 5.252880061722262, - 3.156564963752938, - 4.681035169088436, - 11.792242512055923, - 1.9604221983391767, - 1.0462505871181245, - 5.711606376048099, - 3.068431613494066, - 6.858383748838975, - 2.8490213170428658, - 3.580154835089165, - 6.501941096065977, - 9.7780201322668, - 3.0676947050276424, - 3.403959339305843, - 1.69010583288503, - 2.264179673326793, - 1.387978957119129, - 2.0930389945578867, - 17.30115733900274, - 5.471707350070127, - 5.680905291971551, - 4.742366537822185, - 1.0208994161105056, - 9.207668213067246, - 3.8606197895306593, - 1.6754162996313244, - 2.585152771900879, - 4.644030250207612, - 5.374779432437628, - 10.720995085266173, - 8.937184334004515, - 4.590718960449072, - 7.701223834117853, - 10.128463987492674, - 3.587884587512182, - 11.894044239488057, - 2.046242353652768, - 11.477953973674333, - 1.221756539602425, - 5.228476809017635, - -0.816414716423785, - 2.4441544833538806, - 9.965190200526736, - 3.9808450031235285, - 0.3932772724703332, - 2.2720936360102066, - 3.266746562229977, - 6.872279730973945, - 2.8243847518725254, - 9.670256218445862, - 16.284779647497007, - 1.6443761053106767, - 3.9270580938911173, - 4.30569605379481, - 0.9263924032944642, - 6.845102420161203, - 1.982656548934253, - 0.4997244182188926, - 3.746157409358521, - 1.8483087547703183, - 11.047151352512428, - 2.4880649403573276, - 10.732943752874196, - 5.9813129049237475, - 2.238459321206564, - 0.9256466820771712, - 4.7124412355837615, - 7.418832968509168, - 1.7527514786002814, - 3.171197545881602, - 7.616904364240285, - 5.284160109950633, - 3.181047705918116, - 6.4242033037320105, - 0.9692343390160645, - -0.26887827327987335, - 5.935912510464833, - 9.787539601288069, - 11.895746374184167, - 8.301229136757724, - 9.965974552589072, - 9.062736049997376, - 3.1959767936832493, - 6.098242051931191, - 4.019460485585374, - 3.005491424762978, - 1.533722689314001, - 0.36479165491872, - 8.121321684423284, - 0.8181368638728819, - 6.744568721567811, - 8.401422362119996, - 4.36004998386494, - 4.590598935913978, - 12.76757142388392, - 16.320957993486164, - 7.0913596958688565, - 2.056244034539619, - 10.46875965833262, - 0.08959655165547539, - 1.4096590522968548, - 4.310917476297208, - 4.0474420794264265, - 9.065747029572861, - 7.399995484071186, - 4.999303540119944, - 9.570025627681863, - 15.684623947529222, - 9.52366169287394, - 6.319113255288522, - -1.071882414549458, - 3.1206722178148527, - 2.850016635488781, - 13.561860000216685, - 1.7809199910271896, - 10.597484092134568, - 5.473066959556585, - 6.602216633263769, - 5.362604379349994, - 5.265031461356174, - 1.1327429654368624, - 0.9203431272301328, - 4.387341322372937, - 2.2949214206204025, - 1.8302969183486257, - 9.377576340374638, - 11.695367528603342, - 7.089813178847362, - 7.618589782571491, - 13.31462998390479, - 5.229088516361773, - 2.6173224162494, - 7.5733289120723954, - 13.068835777185974, - 18.519186032954707, - 1.645542358212573, - 10.057659219487391, - 6.116304508486813, - 11.203057597332762, - 3.4789516811077896, - 12.201334815401738, - 1.2535400933557803, - 16.589185003221452, - 9.917238694141234, - 4.944176212265241, - 1.9149264197762228, - 9.427571072431162, - 6.305542662732612, - 6.136485673917394, - 2.4730061492537447, - -1.8948036838159843, - 5.201274413655002, - 3.6200547532319867, - 7.522818690465862, - 0.7236331316200587, - 6.381441868078257, - 2.098334928618128, - 3.853399636918509, - 8.404158761029409, - 2.199212957368143, - 5.869418523046383, - 3.0751559793026533, - 10.3952442006207, - 4.981905469483399, - 10.939881048529527, - 0.23272164849107474, - 8.520996289253404, - 2.5448227286349776, - 10.366415461847787, - 5.393261931006413, - 2.7689547564428887, - 7.03951458366662, - 2.7843861480103103, - 6.333510258233163, - 1.3747919230315948, - -0.11910075956786537, - 15.192679799545468, - 5.045912993968392, - 5.976194046073316, - 6.562195090630139, - 5.80072117939065, - 1.480441393050849, - 9.909191504815636, - 0.7295384349042683, - 0.8707473024376744, - -0.37541410634386446, - 9.40459783669121, - 2.3411429792009937, - 10.066438850385445, - 4.808740731181803, - 12.650547610477856, - 1.9671275700332773, - 2.8169200310697162, - 10.49549251788382, - 7.896877285673233, - 2.8388305599419104, - 1.8170253237765002, - 6.634432948206113, - 7.981233283470713, - 0.7326646640660937, - 8.386419189514582, - 0.5785057335161181, - 4.879091645985078, - 4.465699169142491, - 3.4336848149227843, - 2.817753618939716, - 1.4048289956555169, - 9.325611392051854, - 6.6074803442300984, - 2.037523061843616, - 2.4273699234055215, - 1.572549951305657, - 4.069830743631792, - 6.058062632929909, - 2.4135514271495384, - 3.9666086806103293, - 1.9159320923666834, - 2.325309229205214, - 11.436111994293643, - 3.6747587303809506, - 2.6570824054501503, - 5.37197924529851, - 15.562328372379785, - 1.4184801906818312, - 4.727536425813394, - 1.4067812717509782, - 2.7479395372103377, - 3.357959643164211, - 6.165247823105613, - 2.1157143634746034, - 3.5546653081564776, - 4.376398009703256, - 3.3811870689190684, - 1.0932624617665345, - 4.842986192059503, - 19.390985540233196, - 1.9795020691022842, - 7.754246686289934, - 12.775377927488867, - 4.559315982479618, - 4.057133610748745, - 9.52804827793297, - 2.0287108774118243, - 2.9188253218804037, - 3.249590936570091, - 8.05470715769896, - 9.103443000619613, - 0.42573784013526383, - 9.234732460655913, - 17.51017035543307, - 2.742531403422764, - 4.682302063107567, - 11.052165270043073, - 3.24690827055626, - 2.1962885130444167, - 4.631753203632753, - 2.828289353783408, - 1.33682969366254, - 12.114802646740193, - 3.6819579463944265, - 3.434738013245069, - 5.819121063304491, - 4.088701749783405, - 6.159051819363544, - 6.733015419190123, - 6.742955730548548, - 9.542708203338568, - 8.712064503322658, - 3.3735338946581126, - 3.3012288114262556, - 2.1217097116431196, - 1.2179477278952395, - 9.84119574001116, - 6.114318566169389, - 3.096600466653107, - 8.642091012688123, - 2.0947128735013534, - 2.1434429230266305, - 4.680906971592573, - 8.285082770663648, - 9.636217269201904, - 2.6790083186093123, - 5.420833606247791, - 4.481767881878449, - 8.402526274613027, - 6.57750145845892, - 16.423540501737804, - 11.111981679281225, - 1.115230798899664, - 1.3487689578263442, - 1.758855452517031, - 2.6692564484876717, - 3.077931749222288, - 4.881245329861467, - 19.71532564835613, - 16.34422736518518, - 8.611104553639624, - -0.14101190326756194, - 11.449212352595664, - 7.980197224567005, - 3.8875616041211565, - 7.846735256556087, - 15.957494350302662, - 3.8055648247878975, - 7.964989170975489, - 3.2911895405364904, - 0.930967355657544, - 1.1676659305603234, - -0.07662067433000817, - 1.1125321223819782, - 5.9371029470728205, - 5.768823511173059, - 1.0408554481784802, - 2.670871516056362, - -0.6036402304209916, - 2.6025896704276534, - 8.584272616464322, - 10.15412511310908, - 4.738400719657727, - 12.280705656341215, - 8.155549718844648, - 2.4778830553806603, - 5.184206312746016, - 0.6382341393030234, - 1.8484947110270162, - 2.7857375699307556, - 8.57791145430953, - 3.21649053438879, - 4.057159291263697, - 3.5876684071552964, - 1.229396331836379, - 13.030088066682668, - 3.2999120644958038, - 5.197549969436092, - 8.636493224325857, - 10.41559220076361, - 1.91287781057633, - 8.473267442479868, - 11.18169314797878, - 7.420632293781813, - 6.114443764932338, - 2.6829951311847617, - 7.965626018208414, - 9.961085374384197, - 6.950627443018606, - 3.221227283607655 - ], - "yaxis": "y" - } - ], - "layout": { - "legend": { - "title": { - "text": "Treatment" - }, - "tracegroupgap": 0 - }, - "template": { - "data": { - "bar": [ - { - "error_x": { - "color": "#2a3f5f" - }, - "error_y": { - "color": "#2a3f5f" - }, - "marker": { - "line": { - "color": "#E5ECF6", - "width": 0.5 - }, - "pattern": { - "fillmode": "overlay", - "size": 10, - "solidity": 0.2 - } - }, - "type": "bar" - } - ], - "barpolar": [ - { - "marker": { - "line": { - "color": "#E5ECF6", - "width": 0.5 - }, - "pattern": { - "fillmode": "overlay", - "size": 10, - "solidity": 0.2 - } - }, - "type": "barpolar" - } - ], - "carpet": [ - { - "aaxis": { - "endlinecolor": "#2a3f5f", - "gridcolor": "white", - "linecolor": "white", - "minorgridcolor": "white", - "startlinecolor": "#2a3f5f" - }, - "baxis": { - "endlinecolor": "#2a3f5f", - "gridcolor": "white", - "linecolor": "white", - "minorgridcolor": "white", - "startlinecolor": "#2a3f5f" - }, - "type": "carpet" - } - ], - "choropleth": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "type": "choropleth" - } - ], - "contour": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "colorscale": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ], - "type": "contour" - } - ], - "contourcarpet": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "type": "contourcarpet" - } - ], - "heatmap": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "colorscale": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ], - "type": "heatmap" - } - ], - "heatmapgl": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "colorscale": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ], - "type": "heatmapgl" - } - ], - "histogram": [ - { - "marker": { - "pattern": { - "fillmode": "overlay", - "size": 10, - "solidity": 0.2 - } - }, - "type": "histogram" - } - ], - "histogram2d": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "colorscale": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ], - "type": "histogram2d" - } - ], - "histogram2dcontour": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "colorscale": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ], - "type": "histogram2dcontour" - } - ], - "mesh3d": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "type": "mesh3d" - } - ], - "parcoords": [ - { - "line": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "parcoords" - } - ], - "pie": [ - { - "automargin": true, - "type": "pie" - } - ], - "scatter": [ - { - "fillpattern": { - "fillmode": "overlay", - "size": 10, - "solidity": 0.2 - }, - "type": "scatter" - } - ], - "scatter3d": [ - { - "line": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scatter3d" - } - ], - "scattercarpet": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scattercarpet" - } - ], - "scattergeo": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scattergeo" - } - ], - "scattergl": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scattergl" - } - ], - "scattermapbox": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scattermapbox" - } - ], - "scatterpolar": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scatterpolar" - } - ], - "scatterpolargl": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scatterpolargl" - } - ], - "scatterternary": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scatterternary" - } - ], - "surface": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "colorscale": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ], - "type": "surface" - } - ], - "table": [ - { - "cells": { - "fill": { - "color": "#EBF0F8" - }, - "line": { - "color": "white" - } - }, - "header": { - "fill": { - "color": "#C8D4E3" - }, - "line": { - "color": "white" - } - }, - "type": "table" - } - ] - }, - "layout": { - "annotationdefaults": { - "arrowcolor": "#2a3f5f", - "arrowhead": 0, - "arrowwidth": 1 - }, - "autotypenumbers": "strict", - "coloraxis": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "colorscale": { - "diverging": [ - [ - 0, - "#8e0152" - ], - [ - 0.1, - "#c51b7d" - ], - [ - 0.2, - "#de77ae" - ], - [ - 0.3, - "#f1b6da" - ], - [ - 0.4, - "#fde0ef" - ], - [ - 0.5, - "#f7f7f7" - ], - [ - 0.6, - "#e6f5d0" - ], - [ - 0.7, - "#b8e186" - ], - [ - 0.8, - "#7fbc41" - ], - [ - 0.9, - "#4d9221" - ], - [ - 1, - "#276419" - ] - ], - "sequential": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ], - "sequentialminus": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ] - }, - "colorway": [ - "#636efa", - "#EF553B", - "#00cc96", - "#ab63fa", - "#FFA15A", - "#19d3f3", - "#FF6692", - "#B6E880", - "#FF97FF", - "#FECB52" - ], - "font": { - "color": "#2a3f5f" - }, - "geo": { - "bgcolor": "white", - "lakecolor": "white", - "landcolor": "#E5ECF6", - "showlakes": true, - "showland": true, - "subunitcolor": "white" - }, - "hoverlabel": { - "align": "left" - }, - "hovermode": "closest", - "mapbox": { - "style": "light" - }, - "paper_bgcolor": "white", - "plot_bgcolor": "#E5ECF6", - "polar": { - "angularaxis": { - "gridcolor": "white", - "linecolor": "white", - "ticks": "" - }, - "bgcolor": "#E5ECF6", - "radialaxis": { - "gridcolor": "white", - "linecolor": "white", - "ticks": "" - } - }, - "scene": { - "xaxis": { - "backgroundcolor": "#E5ECF6", - "gridcolor": "white", - "gridwidth": 2, - "linecolor": "white", - "showbackground": true, - "ticks": "", - "zerolinecolor": "white" - }, - "yaxis": { - "backgroundcolor": "#E5ECF6", - "gridcolor": "white", - "gridwidth": 2, - "linecolor": "white", - "showbackground": true, - "ticks": "", - "zerolinecolor": "white" - }, - "zaxis": { - "backgroundcolor": "#E5ECF6", - "gridcolor": "white", - "gridwidth": 2, - "linecolor": "white", - "showbackground": true, - "ticks": "", - "zerolinecolor": "white" - } - }, - "shapedefaults": { - "line": { - "color": "#2a3f5f" - } - }, - "ternary": { - "aaxis": { - "gridcolor": "white", - "linecolor": "white", - "ticks": "" - }, - "baxis": { - "gridcolor": "white", - "linecolor": "white", - "ticks": "" - }, - "bgcolor": "#E5ECF6", - "caxis": { - "gridcolor": "white", - "linecolor": "white", - "ticks": "" - } - }, - "title": { - "x": 0.05 - }, - "xaxis": { - "automargin": true, - "gridcolor": "white", - "linecolor": "white", - "ticks": "", - "title": { - "standoff": 15 - }, - "zerolinecolor": "white", - "zerolinewidth": 2 - }, - "yaxis": { - "automargin": true, - "gridcolor": "white", - "linecolor": "white", - "ticks": "", - "title": { - "standoff": 15 - }, - "zerolinecolor": "white", - "zerolinewidth": 2 - } - } - }, - "title": { - "text": "Scatter Plot of Outcome vs. Score by Treatment Status" - }, - "xaxis": { - "anchor": "y", - "domain": [ - 0, - 1 + "text/plain": [] + }, + "execution_count": 24, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "rdrobust_sharp = rdrobust(y=df['y'], x=df['score'], fuzzy=df['d'], covs=df[cov_names], c=0.0)\n", + "rdrobust_sharp" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### RDD with flexible adjustment\n", + "\n", + "[Noack, Olma and Rothe (2024)](https://arxiv.org/abs/2107.07942) propose an estimator that reduces the variance of the above esimator, using a flexible adjustment of the outcome by machine learning. For more details, see our [User Guide](https://docs.doubleml.org/stable/guide/models.html#regression-discontinuity-designs-rdd). The estimator here takes the form \n", + "\n", + "$$\\hat{\\tau}_{\\text{RDFlex}}(h;\\eta) = \\sum_{i=1}^n w_i(h)M_i(\\eta),\\quad M_i(\\eta) = Y_i - \\eta(X_i),$$\n", + "\n", + "with $\\eta(\\cdot)$ being potentially nonlinear adjustment functions.\n", + "\n", + "We initialize a `DoubleMLData` object using the usual package syntax:\n", + "\n", + " - `y_col` refers to the observed outcome, on which we want to estimate the effect at the cutoff\n", + " - `s_col` refers to the score\n", + " - `x_cols` refers to the covariates to be adjusted for\n", + " - `d_cols` is an indicator whether an observation is treated or not. In the sharp design, this should be identical to an indicator whether an observation is left or right of the cutoff ($D_i = \\mathbb{I}[S_i \\geq c]$)" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": {}, + "outputs": [], + "source": [ + "dml_data_sharp = dml.DoubleMLData(df, y_col='y', d_cols='d', x_cols=cov_names, s_col='score')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The ``RDFlex`` object is intialized with only one learner, that adjusts the outcome based on the covariates." + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Method Coef. S.E. t-stat P>|t| 95% CI\n", + "-------------------------------------------------------------------------\n", + "Conventional 2.014 0.103 19.494 1.231e-84 [1.812, 2.217]\n", + "Robust - - 16.872 7.173e-64 [1.779, 2.247]\n" + ] + } + ], + "source": [ + "ml_g = LGBMRegressor(n_estimators=500, learning_rate=0.01, verbose=-1)\n", + "\n", + "rdflex_sharp = RDFlex(dml_data_sharp,\n", + " ml_g,\n", + " cutoff=0,\n", + " fuzzy=False,\n", + " n_folds=5,\n", + " n_rep=1)\n", + "rdflex_sharp.fit(n_iterations=2)\n", + "\n", + "print(rdflex_sharp)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "It is visible that the flexible adjustment decreases the standard error in the estimation and therefore provides tighter confidence intervals. For coverage simulations, see the [DoubleML Coverage Repository](https://docs.doubleml.org/doubleml-coverage/dev/rdd/rdd.html).\n", + "\n", + "`RDFlex` uses a iterative fitting approach to determine a preliminary bandwidth selections for the local adjustments. The default number of iterations is `n_iterations=2`, according to [Noack, Olma and Rothe (2024)](https://arxiv.org/abs/2107.07942)." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Fuzzy RDD\n", + "\n", + "In the fuzzy RDDs, the treatment assignment is still deterministic given the score $\\left(T_i = \\mathbb{I}[S_i \\geq c]\\right)$.\n", + "However, in the neighborhood of the cutoff, there is a probability of non-complianc. Thus, the treatment received might differ from the assigned one $(D_i \\neq T_i)$ for some units. These observations cause the probability jump of treatment at the cutoff to be smaller than 1 but larger than 0. In other words, around the cutoff there can be treatment randomization on both sides.\n", + "\n", + "The parameter of interest in the Fuzzy RDD is the average treatment effect at the cutoff, for all individuals that comply with the assignment:\n", + "\n", + "$$\\theta_{0} = \\mathbb{E}[Y_i(1, 1)-Y_i(0, 0)\\mid S_i = c, \\{i\\in \\text{compliers}\\}]$$\n", + "\n", + "### Generate Data\n", + "\n", + "The function ``make_simple_rdd_data()`` with ``fuzzy = True`` generates basic data for the fuzzy case. The cutoff is still set to $c = 0$ and we set the true effect to be ``tau = 2.0`` again." + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
ydscorex0x1x2
0-0.1835530.00.471435-0.198503-0.193849-0.493426
11.3486220.0-1.1909760.013677-0.630880-0.885832
22.2659291.01.432707-0.2661470.439675-0.051651
39.6945611.0-0.3126520.845241-0.6597550.436764
415.0014031.0-0.7205890.739595-0.7413800.948112
\n", + "
" + ], + "text/plain": [ + " y d score x0 x1 x2\n", + "0 -0.183553 0.0 0.471435 -0.198503 -0.193849 -0.493426\n", + "1 1.348622 0.0 -1.190976 0.013677 -0.630880 -0.885832\n", + "2 2.265929 1.0 1.432707 -0.266147 0.439675 -0.051651\n", + "3 9.694561 1.0 -0.312652 0.845241 -0.659755 0.436764\n", + "4 15.001403 1.0 -0.720589 0.739595 -0.741380 0.948112" + ] + }, + "execution_count": 27, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "np.random.seed(1234)\n", + "\n", + "data_dict = make_simple_rdd_data(n_obs=1000, fuzzy=True, tau=true_tau)\n", + "\n", + "cov_names = ['x' + str(i) for i in range(data_dict['X'].shape[1])]\n", + "df = pd.DataFrame(\n", + " np.column_stack((data_dict['Y'], data_dict['D'], data_dict['score'], data_dict['X'])),\n", + " columns=['y', 'd', 'score'] + cov_names,\n", + ")\n", + "df.head()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Comparing the observed outcomes, the discontinuity is less pronounced than in the sharp case. We see some degree of randomization left and right of the cutoff." + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "C:\\Users\\BAQ7040\\AppData\\Roaming\\Python\\Python311\\site-packages\\plotly\\express\\_core.py:1979: FutureWarning:\n", + "\n", + "When grouping with a length-1 list-like, you will need to pass a length-1 tuple to get_group in a future version of pandas. Pass `(name,)` instead of `name` to silence this warning.\n", + "\n" + ] + }, + { + "data": { + "application/vnd.plotly.v1+json": { + "config": { + "plotlyServerURL": "https://plot.ly" + }, + "data": [ + { + "hovertemplate": "Treatment=False
Score=%{x}
Outcome=%{y}", + "legendgroup": "False", + "marker": { + "color": "#636efa", + "symbol": "circle" + }, + "mode": "markers", + "name": "False", + "orientation": "v", + "showlegend": true, + "type": "scatter", + "x": [ + 0.47143516373249306, + -1.1909756947064645, + 0.9919460223426778, + -1.5469055532292402, + -0.6559693441389339, + -0.8971567844396987, + -1.4019732815008439, + -0.10091819994891389, + -0.14461950836938436, + -0.785435211763197, + 0.9849198419098969, + 0.270835848826804, + -0.3447660142546443, + 0.5665336963535724, + -1.2811082751440426, + -1.710715324029529, + -0.20393286610125122, + 0.3937105991386652, + -0.4740208901256851, + -0.05669571649092953, + -0.9161988612665409, + -0.8596682999817407, + -0.22301898188247601, + -0.014752111804594866, + -1.4257947334380214, + -0.5928860038389254, + -0.31956139984023146, + -0.5246273459284702, + 0.7879646831376144, + -0.387886231967176, + -0.08710696996399898, + 1.8638010621325043, + -1.7122739244712557, + -1.2689942560733918, + -0.5040427180819637, + -0.37443660019278063, + -1.5533423394310608, + -0.09443480774144415, + -0.06124629986631457, + -0.7310333425852061, + -0.1708010306976224, + 0.26697323153986774, + -0.36015657086902797, + -1.3379684019509706, + -1.154600965389669, + -1.2680690503770815, + -0.6112816747957622, + -1.3127127065922315, + 1.5727427457558043, + -0.10465157484776595, + -0.7558621756229088, + -0.8811117326479355, + -0.4634193992174632, + -0.7485279533390595, + -0.2598436943633885, + -0.47001481339778667, + -1.5601488888852328, + -0.5407998076498752, + -0.5882267282885189, + 0.26172483967990484, + -0.41327907241887124, + -1.7193166679275491, + -0.5638902404112554, + -0.24672080681888428, + -0.045370411959291965, + -0.704492925529761, + -0.2001718506206763, + -0.48131023935727413, + -0.4256720265205931, + -0.40064420205997625, + -0.42446671286333926, + -1.3718378731166938, + 1.470996579505006, + -0.1665595772769085, + -1.1051915914797859, + 0.029561951937617355, + -0.3014922439465465, + -0.45255766631820826, + -0.3937331661815619, + -0.2048613320814621, + -2.200564435744119, + -0.9984064955184256, + 0.3096639858949537, + 1.850810168972202, + -0.7147453741565917, + 0.20145146638225445, + 1.7430524278808484, + -0.356409207238252, + -0.12139461101379515, + 0.1020797487098907, + -0.2779593857816089, + -0.052165291629840356, + -0.7274143817732619, + -0.5553548562130987, + -0.5019177788520144, + -0.2453604968501647, + -2.5318833133900305, + -0.16371119657423003, + -1.1805528861977703, + -0.8118350520747238, + -2.251213065289845, + -0.14550836017250823, + -0.061147655522904056, + -0.866260054447336, + -1.5237107863092993, + -0.5437403904555086, + -0.11601728545379246, + -0.6908582143577912, + -0.05546876687944298, + -0.24268793363602895, + -0.6289509748030468, + -0.2627338282699097, + -1.9943356434051311, + -0.6587570839399224, + 0.7084741210544878, + 0.4922331098465613, + -0.11489386424404562, + 0.19091532051019103, + -1.8438652086995353, + -0.7578505995039082, + -1.59249315299401, + -0.23102356637828622, + -1.47256655193283, + -0.015838160674877966, + -1.2858104335854346, + 0.7007847957258879, + 0.6697599912207146, + -0.7119035172923535, + -1.8721836112668646, + -0.5562800612192723, + 0.2721639657384405 ], - "title": { - "text": "Score" - } - }, - "yaxis": { - "anchor": "x", - "domain": [ - 0, - 1 + "xaxis": "x", + "y": [ + -0.1835525489058031, + 1.3486218401039956, + 0.4411676938396249, + 0.4585860711409128, + -0.3899856239234457, + 0.8914961577507419, + -0.41651759242783837, + 0.08806035597773143, + 1.7908939267943453, + -0.14581384197929406, + -0.5136153229766942, + -0.14978357398012626, + 2.440691459852534, + 0.13616926531694526, + 0.20282808173671818, + 0.821493754710078, + -0.2992694879926443, + -0.3409880513396322, + 1.3364200530683075, + 1.3210536706273739, + -0.07502604670082638, + 2.250307023533512, + -0.030953077101010695, + 0.3624775790859004, + 0.6153874717064401, + 0.06209084779627111, + 0.3231021368979874, + 0.22497260167637093, + 0.4916082218068387, + 0.7039466740923791, + 0.1923276664283496, + 0.27940335629258184, + 0.21645849306063691, + 1.0004089437269108, + 0.44487698164791045, + 0.11936442692347213, + 0.6787831612420692, + 0.6789358057649202, + 1.618984651084493, + -0.5967617898546517, + 1.6520725885832626, + 0.6200601403132633, + 0.7331132023276788, + 1.0359179974705544, + 1.7590213928451695, + 1.0450913975811487, + 0.1183953918038539, + 1.0360663945550246, + 1.2510063032700756, + 1.9233745949318444, + 0.6211616233500779, + 0.37517543140685394, + -0.12756523321898525, + 0.5226603330804618, + 2.2899617239460897, + 1.7029680839076393, + 2.067446896541806, + 0.8433810912004589, + 0.5142775354371905, + -0.17912038210257414, + -0.618778332438777, + 1.0481937278251565, + 1.7294988055854636, + 1.246765100289748, + 1.0349323282462257, + 2.250865405991169, + 0.14744314604060216, + -0.40229619520916193, + 2.24932445591205, + 0.7646496195873962, + 1.1014840130123558, + 0.8500635875769066, + 0.6782697328395315, + -0.1542287184063889, + 1.4954795451515095, + 0.008527384457970084, + 0.6213348206282769, + 0.5659620963183319, + 0.9200400636616757, + 0.6306143094905791, + 1.0932824737816762, + 2.1131210563570484, + -0.49198150408242947, + 0.6459814131494103, + 0.026152308571340682, + 0.5245791129371666, + 0.16988689972629495, + 1.1187963156683463, + 1.2932899904926258, + 0.5085681260628232, + 1.0725604118217094, + 0.0826444359382778, + 0.2538609094114361, + 1.1150603903826617, + 0.5233138627951399, + 0.014215309483299951, + 1.4552681482097538, + -0.20374752217212186, + 0.2674051948706437, + -0.30886086104336674, + 1.2340808958358562, + -0.09534686814461035, + 2.9850848814314466, + -0.3610901011561299, + 0.623055074210312, + 0.8928873362688777, + 0.3147848495708494, + 1.4150212059382248, + 0.3143949242786218, + 2.0022066056655534, + 0.2893192391838322, + 0.7525531876775715, + 0.38883834760001845, + 2.9839938774044934, + 0.1486403718262942, + 0.4219006710464874, + 1.0273216027632337, + -0.14896148702487677, + 0.4578952696239318, + 2.5636303602200265, + 1.2361366208392117, + -0.07875447360853444, + 1.4687740141322216, + 0.3284413774117222, + 0.6144847987536664, + -0.12478320649983757, + 1.0844978616963237, + 2.149740301840303, + 0.05084904692638065, + 0.23193727300348288, + 0.2787166720903948 ], - "title": { - "text": "Outcome" - } - } - } - } - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "fig = px.scatter(\n", - " x=df['score'],\n", - " y=df['y'],\n", - " color=df['d'].astype(bool),\n", - " labels={\n", - " \"x\": \"Score\", \n", - " \"y\": \"Outcome\",\n", - " \"color\": \"Treatment\"\n", - " },\n", - " title=\"Scatter Plot of Outcome vs. Score by Treatment Status\"\n", - ")\n", - "\n", - "fig.update_layout(\n", - " xaxis_title=\"Score\",\n", - " yaxis_title=\"Outcome\"\n", - ")\n", - "fig.show()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Oracle Values and Comparisons\n", - "\n", - "As in the sharp design, the ITEs can be used to obtain an oracle estimator at the cutoff.\n", - "\n", - "Remark that in the fuzzy design (ADD Assumptions), we can interpret the ratio as the treatment effect on compliers such that we have to restrict the oracle computation on the corresponding subpoipulation." - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "The oracle ATE on compliers is estimated as 0.9884384827229661 at the cutoff c=0.\n" - ] - }, - { - "data": { - "application/vnd.plotly.v1+json": { - "config": { - "plotlyServerURL": "https://plot.ly" - }, - "data": [ + "yaxis": "y" + }, { + "hovertemplate": "Treatment=True
Score=%{x}
Outcome=%{y}", + "legendgroup": "True", "marker": { - "color": "blue" + "color": "#EF553B", + "symbol": "circle" }, "mode": "markers", - "name": "ITE", + "name": "True", + "orientation": "v", + "showlegend": true, "type": "scatter", "x": [ - -1.1909756947064645, 1.4327069684260973, + -0.3126518960917129, + -0.7205887333650116, 0.8871629403077386, 0.8595884137174165, + -0.6365235044173491, 0.015696372114428918, + -2.2426849541854055, 1.150035724719818, 0.9533241281124304, + -2.0212548201949705, + -0.334077365808097, 0.002118364683486495, 0.405453411570191, 0.2890919409800353, 1.3211581921293856, - -1.5469055532292402, - -0.6559693441389339, + -0.2026463246291819, 0.19342137647035826, 0.5534389109567419, 1.3181515541801367, + -0.4693052847058996, 0.6755540851223808, + -1.8170272265901968, + -0.1831085401789987, 1.0589691875711504, + -0.3978402281999914, 0.3374376536139724, 1.0475785728927218, 1.0459382556276653, 0.8637172916848387, + -0.12209157484767426, 0.12471295376821585, + -0.32279480560829565, 0.8416747129961416, 2.390960515463033, 0.07619958783723642, + -0.5664459304649568, 0.036141936684072715, + -2.0749776006900293, 0.24779219974854666, - -0.8971567844396987, + -0.1367948332613474, 0.018289191349219306, 0.7554139823981354, 0.2152685809694434, 0.841008794931391, - -1.4019732815008439, - -0.10091819994891389, - -0.14461950836938436, + -1.4458100770443063, + -0.5482424491868549, 0.35402033219923795, + -0.03551302527814021, 0.5657383060625951, 1.5456588046255575, + -0.9742363337673154, + -0.07034487710410242, 0.30796885521603423, + -0.20849876310587975, 1.0338007325554992, + -2.4004536338122957, 2.0306036208387996, + -1.1426312890227635, 0.21188338677770105, 0.7047206243171088, - -0.785435211763197, 0.4620597371620487, 0.7042282254621743, 0.5235079678938094, + -0.9262543135302259, 2.0078429507780005, 0.2269625418708953, + -1.1526591092509524, 0.6319794458091295, 0.0395126866933667, 0.46439232505089606, + -3.5635166606247353, 1.3211056154702059, 0.15263055220453448, 0.16452954293239852, + -0.4300956908764876, 0.7673687357524115, 1.3919861934464073, 0.07984231300862901, + -0.3999645806965225, + -1.0278505586819058, + -0.5847182112607883, 0.8165939265478418, - -0.3447660142546443, + -0.08194705182666534, 0.5282881452973941, + -1.0689887834801322, + -0.5118813091268151, 0.2912053597430635, 0.503591759111203, 0.2852956847818571, 0.48428811274975, 1.3634815124261457, + -0.781105283625392, + -0.4680176663374855, 1.2245743551261743, - -1.2811082751440426, 0.8754755042743244, - -1.710715324029529, + -0.4507651031362744, 0.7491638059190651, - -0.20393286610125122, + -0.18217541166573417, 0.6806560043814565, + -1.8184989903916142, 0.047071635325711084, 0.3948442093272043, + -0.24843205438084665, + -0.6177066479970167, + -0.682883996449334, 0.4362576043409168, + -1.703012774113238, + -0.47932400357549726, + -0.2990162929660804, 0.6941032876787643, 0.6786296737098565, 0.2395559950038969, @@ -9633,83 +3874,114 @@ 0.8161272333600409, 1.8935344675962007, 0.6396327631937027, + -0.9620288319051914, + -2.0852656421201097, 1.9302467674655757, + -1.7353488744703927, 1.2103837049045143, 0.7974354194278735, + -0.379810784047379, 0.7025622240016004, + -0.850346271655115, 1.1768124501049289, + -0.524336102632456, 0.7009077309156047, 0.9841880707224154, + -0.12172840866682022, 2.365768628840039, 0.4961429262475947, 0.7965948666649523, - -0.4740208901256851, - -0.05669571649092953, 1.3577972581070583, + -0.8048337241667037, + -2.12362024909293, + -0.33350244043324745, + -0.886719352485378, 0.33419793089900884, 0.5367838249027502, - -0.9161988612665409, - -0.8596682999817407, + -0.7438303679362013, + -0.3202038822408791, 0.22598548673375538, 0.6287758265382943, 0.18649434877307466, 0.9524783451091219, 0.9881375825933089, + -0.07260831396267549, + -0.5506029235634193, + -0.9381526140931042, + -1.2390715625947926, 0.13968327403129469, - -0.22301898188247601, 2.123691888593553, 0.12227343425882888, + -1.4094317399227687, 1.4229859527722433, + -2.14785503764361, + -1.347532513457755, 0.3635645568066484, - -0.014752111804594866, 1.2723950785462097, - -1.4257947334380214, + -1.4495666088633876, + -1.1955237416669708, + -0.591862973147249, + -0.4145048435321895, 0.2093947875359238, - -0.5928860038389254, + -1.4731164134656474, + -0.896580615301871, 1.1043515698603126, + -0.43154951551604476, + -0.16113690824405888, 0.8891574940728737, 0.2883768477152654, - -0.31956139984023146, + -1.0515389375700381, + -0.6199930877212022, 0.156998376446689, + -0.5714553510797893, 1.0576331832046142, - -0.5246273459284702, + -0.7914888094778855, 0.07187803937036874, 1.9107594272771828, 0.5130821444669919, + -0.5464162802735939, 1.0439446554953231, 2.10778515279337, 1.4599274815852936, 1.0154054578125205, 0.7491846009241975, + -0.6755214784366882, 0.4402663916687296, 0.6889718563269422, + -0.2766461272769873, 1.92453332001529, 0.4112040207072239, 0.8907649561731171, 0.22636322725170696, - -0.387886231967176, - -0.08710696996399898, + -2.0786178937021753, 1.126385822137273, 0.2471117161577363, 0.1211718053315409, 0.2989839355420466, + -0.1570991368466517, + -0.7404690227807179, + -1.2476529230512328, 0.24945521515244942, 0.5810733206206065, 2.7638440798495663, 0.3993254369795763, 0.6684881692058056, + -0.2757737286563052, 0.5004829001543722, 0.8630648605906245, + -1.0516278594652122, + -1.392054077493087, 1.1539222406122254, 1.181944105999232, 0.39137144842193117, + -0.8810470922015694, 0.2950799597862399, - -1.7122739244712557, + -1.4070845457432255, 0.12678118632697175, 0.0037598477954959237, - -1.2689942560733918, + -0.8388429214202899, 0.5539212514397202, - -0.5040427180819637, + -0.7884401845178787, 1.5294006744839312, 0.20545485392597962, 0.3130131289808603, @@ -9718,58 +3990,85 @@ 1.076540643846122, 0.3631773475444523, 1.8936798255518426, + -0.48575274428280835, 0.3876744557775985, 0.023557610392553562, + -0.6602295020442799, + -0.31868492957801425, + -0.7226621936743727, 0.17738671938459905, 0.9835127293431644, 0.0235045858853947, 0.553776977863366, 0.3537692939966397, - -0.37443660019278063, + -0.27559363376768226, + -0.4904835914786814, + -2.397503976138816, 1.5410299832779386, 0.06308453895730506, + -0.28444068392629274, + -1.2656005376012107, 1.7879796324557498, + -0.35450870806937423, + -0.10476112306710425, 0.3862536891890525, 0.8227753737653734, + -0.6837898224310078, 1.0572033312141293, 0.03187997356903155, 1.3431824575289413, - -1.5533423394310608, + -0.0505396895487724, + -0.3640099563071088, + -0.3192978018201611, 0.5270464509549642, 0.7111123993648228, + -0.21754548049047615, 2.6377912107038637, - -0.09443480774144415, + -1.7421376305949654, 1.4311837522545638, 0.5927584465506688, 0.170296895326288, + -1.7517059477920245, 0.2885813223432078, + -0.5425795169067793, 0.17160238198599498, 0.9828178292431048, + -0.025348902062768783, + -0.28755244928410806, 0.9244428673433661, - -0.06124629986631457, - -0.7310333425852061, + -1.0227737046951428, 0.9959929702457525, 0.955557932627455, 0.7138407711950433, 0.13337096219412198, + -0.8070383084728134, + -0.3420107818792151, 1.9087796580911864, 0.15592326145312668, 0.7596525320929627, + -0.42300622841924834, 0.18167274532368163, 0.27449257074640343, 0.06791235738075722, - -0.1708010306976224, + -0.036982814875919444, 1.3829972488529256, + -0.022460873511426515, 0.13139536722591508, 0.4344371851022324, 0.2645340683169988, 0.5656583442738247, 0.5850842795017246, + -0.17429815275208735, + -1.0713686714550896, + -0.04846050255238326, + -0.8452903895662435, 0.4151005583815808, 0.4255305913978583, + -0.9807243575005858, + -0.42782610997202053, 1.498569955138537, - -0.36015657086902797, - -1.3379684019509706, + -0.45824038933749284, + -0.04138653961487197, 0.8210479561079149, 2.0978007807716916, 1.2829332468745234, @@ -9777,198 +4076,305 @@ 1.0031403620449315, 1.0786735513204067, 0.34075268512976414, + -0.1980749596235683, 2.4814584228756535, 1.3852548761892063, - -1.154600965389669, - -1.2680690503770815, 0.6078621862094797, - -0.6112816747957622, + -1.080096483157591, 0.10203511229233127, + -1.4365739367721186, 0.21071705250565526, + -0.8969041706975123, + -1.7243930789918331, 1.7923391966469424, - -1.3127127065922315, 0.555877426385625, - -0.10465157484776595, + -0.6818813054911307, 1.850397801609901, + -0.3333504267494006, 0.1934642338198724, + -0.49674493786490903, 1.0327232157358608, - -0.7558621756229088, - -0.8811117326479355, + -1.7398037975225593, 0.3938922629126754, + -0.9500255347962833, 0.33250662216224913, 0.5289444088560467, + -1.120520993992725, 0.04826420692565666, 0.06198845052177757, + -1.0275156732178674, + -0.23833536546732603, 1.9321781695813465, + -0.22663229367683593, + -0.923830720176923, 0.35583899747282033, - -0.4634193992174632, + -1.2700634783862885, + -0.19547241269675866, 0.9894148472858507, 1.388647381631717, 1.0877137365241412, 0.43880126303439065, + -0.961602240881236, 1.2456099371478462, 0.5029255176706321, + -0.6313987783785193, + -0.70425204708826, + -0.24048253675834233, 0.5855993109298576, 0.35280056010840655, - -0.7485279533390595, + -1.8155576924320858, + -0.9101238456951419, + -0.10812492648026306, 0.27477883705216777, 0.23734976450942513, - -0.2598436943633885, + -0.31244217715639994, 0.44850974251240683, - -0.47001481339778667, + -0.05953196470440051, 0.3495667716276656, + -1.0274688471736129, + -0.3066384838696108, 1.4061761394942678, - -1.5601488888852328, + -1.2496967727943529, 1.5573976506490226, + -0.5933563949764882, + -0.17028851232950049, 1.6726268084547062, - -0.5407998076498752, + -0.6841283287665846, 0.599962085981993, + -0.2171991251446381, 0.3315265183521529, + -0.38336458015082797, + -0.781816088073111, 0.26623740682783636, 0.2794280245327373, + -1.21962569517377, + -0.7239489167555044, + -1.7347783075439347, 0.27166078437402447, 0.09911201694909029, - -0.5882267282885189, + -0.3630899064372582, 0.025941713524132055, + -0.5723023507451587, 1.1055869627971613, + -1.2080155928296474, + -1.3397010399749156, 2.0751854067317823, + -1.4894097013310104, + -1.1509530656259641, 0.4190598246739658, 0.4134052764244962, 0.7175769325882829, + -0.2427712711003623, + -0.5012681327516669, + -0.6981289789688551, 1.384580160839074, + -0.2864254139357557, 0.5000695850282261, 1.951103236540061, + -0.2783674615930086, 0.03678625863071046, 0.44585250626100126, + -1.4103507576806693, 0.4500013006954749, 0.5154795307938983, - -0.41327907241887124, - -1.7193166679275491, + -1.1540839403826029, + -1.3801733950718382, + -0.4958330052131627, + -0.029560902753084674, + -0.7660398835228289, 0.09988207650262723, + -0.7130239566297442, + -2.226117620977587, 0.7257141531219552, 0.9169762830692352, - -0.5638902404112554, - -0.24672080681888428, + -1.5221795568231706, + -0.014278788627562308, + -0.1653294765172792, 0.11911398259834126, + -2.0749804861700474, + -1.002755217016917, 0.523546018063799, 0.8215173089989222, - -0.045370411959291965, - -0.704492925529761, + -0.14874184933286258, 1.7303155195063402, 0.22892725550405343, 1.0927410572908394, - -0.2001718506206763, - -0.48131023935727413, + -0.35357152666142744, + -0.03065886493678412, 1.7114259970115762, 1.4353870862526215, + -1.167520333241006, 0.040843424766001724, 0.36201819567044535, 0.5725921910432455, 1.1044602367331493, - -0.4256720265205931, 0.75568884284869, 0.010281457155327522, 0.22458577076489658, + -1.1347082265682895, + -0.9515209412315562, + -0.12713045607576656, 0.028944498401123394, 2.1040773666293053, 1.5675141434637165, - -0.40064420205997625, + -0.6242296327908734, + -1.1370615382091245, + -0.9031590369968799, + -1.0972780624190317, + -0.07130920963109931, + -1.3193390866508534, + -0.5600929458770713, 0.16495455703336395, + -0.6315857879244524, + -0.8670697795627686, + -1.0025626707106647, 1.2073482032456735, 1.7119870129859922, + -0.6245894793017125, + -0.21214580398595856, + -1.1935641822743448, 0.6575858924331783, 0.20007988155239426, 1.091259859221752, + -0.48902205827370954, 1.368220262225958, 0.8916251175268084, 0.8375662124501372, 0.5141447133892467, + -0.050049692409833806, 0.7439528461648938, + -1.7240502035381267, 0.0899015732727284, 0.3227395618852, + -0.37714942561155657, + -0.0002208983015993693, 1.0501136937792215, + -0.1686991122175147, 0.7978764964211627, 0.5525243131579977, + -1.153093261804181, 1.6415521890288047, + -1.4389778344742428, 2.0277395138175196, + -1.365317321173664, 0.07214886239228502, 0.6131516784246442, 1.4891664262942452, 0.22129657503462105, + -1.530892108386614, 0.801888214216484, - -0.42446671286333926, 1.118854972135864, 1.569548064582847, 1.4277317710676356, - -1.3718378731166938, + -0.26641789264219634, 0.7792145652142417, + -0.10281429468501402, + -0.5864646217583874, 0.24025265459504974, + -0.9980556587715391, 0.1911699128232047, + -0.9528030215809088, 0.7189049215428981, - -0.1665595772769085, 0.7646112966882201, - -1.1051915914797859, + -1.1894434708478612, + -0.5348572637202641, + -0.02159784664665048, + -1.0559463385249355, 1.0213556589900556, 1.7096560949798731, 0.12384201643823771, 0.28943005670297534, - -0.3014922439465465, 0.4144350112798109, 0.9498579011377821, 0.5218485421095229, + -1.9692628740518392, 0.502810027757784, + -0.35442243933376033, + -0.44699048181139484, + -1.1169783859357703, + -0.7882663825810968, 1.0557521639658634, + -1.3045412108969867, 0.5397352373427955, 0.3469912503733692, 0.8741928933305493, + -1.5751793626207562, + -0.15998365617495094, + -0.643333236166963, + -0.7153708866312951, 1.699458930621629, 1.2828372246866984, - -0.45255766631820826, 0.3938001271158281, 0.4257406105857961, - -0.3937331661815619, + -0.13004743219159512, + -0.6410597741081536, 0.17196425471545257, + -0.8401490192933458, 0.8649983085249567, - -0.2048613320814621, + -0.1070733343325384, + -0.24210668506471908, + -0.9024827749371497, 0.7978708863196311, + -0.289095787657148, 0.6769776126657561, + -0.34318403393053737, 0.4872101346078452, 0.765665358162811, - -2.200564435744119, + -2.5960623967791756, 0.4756748381165133, - -0.9984064955184256, + -1.594885645232233, + -1.1100767316660405, + -2.275806602546662, 1.5528072078665365, + -1.149298768674316, 0.18853062859763994, 0.9889637830869817, + -1.5861363032929552, + -0.4723808755437636, + -0.18884634787574245, 0.21112708032840474, 1.6117222924558978, 0.5667304418132302, + -0.6411772534653856, 1.5387739411600052, + -0.44884868035202796, 1.769100570312561, 0.2682004879637708, + -1.4622250619252337, 1.700769505670963, 0.3533910559483136, 0.3364890211021921, 1.0571054344422781, 1.1986787224676672, - -0.7147453741565917, + -2.594654269661883, 0.8043460416389878, 1.1916553458718568, + -0.12736538411633605, + -1.0749752659886933, 1.4482691251839777, + -0.27835427971563803, + -1.0368186639409402, 0.5017557989907293, 1.6133349220114617, + -1.8977106282505025, 1.2990825737762788, 0.5531844259723022, + -0.20036229600666147, 0.5456699950930499, 0.26228661897316985, 0.21907020968038537, 0.9323529322684813, + -0.12470367976984963, 0.9540316671351478, 0.7120509492248905, + -0.5793366572156923, + -0.7618194555160586, 1.6615021287437646, 2.547691702457717, - -0.356409207238252, + -0.038912324029113265, + -1.8625686534341959, 2.6519991181342113, + -0.1362303703563351, 0.10374933997096626, 0.11543222568465579, 0.2586704644560386, @@ -9977,979 +4383,1131 @@ 0.7043082981680985, 1.4663513758566715, 0.3536221825367628, + -1.0855234635679416, 0.36320976100296887, + -1.813277132405328, + -0.19791075971583402, 0.4328745920492785, + -0.5405657877076904, 0.29563065498089497, 2.0798442368337016, + -1.8424329199610465, + -0.5111660166205718, + -0.58093512839474, 1.0627364666653065, 0.01805510965628009, 0.02279839968937127, + -1.6797914849149362, 0.8124230006825046, + -0.625888706466102, + -1.2502708184687266, 0.615135458353951, - -0.12139461101379515, + -1.2808952713375565, 0.3246098059252541, 0.6705693906174532, 0.1491613231433755, 0.3270638038828972, + -0.35296169014182177, + -0.9055276404436707, 1.6761854255764614, 0.6809960077267706, + -0.7037176105934078, 1.1950561396844794, - -0.2779593857816089, - -0.052165291629840356, 0.353683601249814, + -0.40831076211055395, + -1.8104296677951879, + -0.9033080622801077, 1.0540450911893136, + -0.9808768767289832, 0.35207889140437837, 0.6659818403106037, 1.0655015019548215, + -0.22843361310270258, 0.3644839042458271, - -0.7274143817732619, + -1.514846657215433, + -0.07526128723722576, + -0.29705808175737614, + -0.24587534038557923, + -0.12794894211963254, + -0.3693106199094617, + -2.6230042844775308, 2.1158507289245674, 0.6855615854791441, + -0.15744398471175033, 1.3812877674130073, 0.06842655874188228, 0.31253629248338644, 0.45425318515036217, - -0.5553548562130987, - -0.5019177788520144, + -0.7884718753018505, + -0.06584033431115952, + -1.418479846109691, + -0.1397533402109211, 0.6931185215037656, - -0.2453604968501647, + -1.2694318590858544, + -0.2623238551840711, 2.337598482195056, + -0.7817174376760302, 0.0800997455382507, + -1.3394111207653079, 0.4134509638251659, 0.20445196734865428, 0.47845329452970037, 0.02958097097523698, + -0.1824419843989386, 0.01746667513481011, 2.054289530002812, - -2.5318833133900305, 0.4238146840382535, + -0.955683515590636, + -0.1336742103217792, + -1.077403324709461, 1.2499025106911574, 0.5711487534631029, 0.2970484291574556, 0.8718652175016266, - -0.16371119657423003, 0.6895231987879346, 1.9845899031898866, + -0.11828188509401265, 0.9551299189232728, - -1.1805528861977703, 1.4704739392964385, + -0.021557883623027695, 0.7108614710694785, - -0.8118350520747238, - -2.251213065289845, + -1.12610018599184, + -0.3078667459168953, + -0.9618845356398223, 0.6708259593192185, 0.06338342659156378, + -0.6567958804642327, + -0.2883631824527201, + -0.21979349574451643, 0.20024796080692478, + -0.8455002410306656, 2.6429226847057117, - -0.14550836017250823, + -0.3337447706635678, 0.8933687076816909, 1.288554738453981, 0.33119818801148354, - -0.061147655522904056, + -0.07536789810631976, 1.8560568664485682, + -0.7530412824561289, + -0.34022586976460656, + -0.5509960393063006, + -0.6040373262522097, 2.1225899596034625, 0.020305520730884315, - -0.866260054447336, + -0.35588838632283426, + -0.9543423107689742, 1.591464114097166, 0.0005873380366202194, - -1.5237107863092993, + -0.4640317318179717, 0.15487036534807186, + -0.8406493439809086, 0.010685782511001917, - -0.5437403904555086, 0.6754553436625048, + -0.9733422132310651, 0.8183481023464054, - -0.11601728545379246, - -0.6908582143577912, 1.0389554757038926, 0.981271848028589, 0.6166208035641588, + -0.7874870323351537, 0.020856736754465456, 0.5993399050363709, - -0.05546876687944298, + -0.3781952626733465, 1.983488054493826, 0.07788802802787388, 0.4045844144487453, - -0.24268793363602895, + -0.8490095099068151, + -0.0780897990873757, + -0.5273122406197597, 1.1069498460085399, - -0.6289509748030468, + -0.03552991507180546, + -0.9599149837120845, 0.2685148227050607, 0.488360812855723, 0.5868386021149908, + -0.17539274109078976, + -0.433426256842158, 0.043672011407345696, - -0.2627338282699097, + -2.368892931279029, + -1.5927211354658712, + -2.441670740242832, + -0.822618318710863, + -0.042268338331824626, + -0.39127020083745107, 0.23058049991323532, 0.3285638932885436, 0.8380485839532836, - -1.9943356434051311, + -0.9078816127611445, + -0.04174551326063229, 0.10816425581928157, + -0.5892856890062176, + -0.9849802336244897, + -1.0361773997113255, 2.039686037158919, - -0.6587570839399224, + -0.6079835611701924, 0.866452901845807, + -0.7414694894279271, + -1.470561473204019, + -0.12851239742110507, + -0.16063982952151423, 1.0771702093251387, + -0.6133974021549207, + -0.711763631312299, 0.06543853933530658, + -0.42147083331107177, + -0.341216883674434, 1.3120365067494253, + -1.8229324878347437, 0.21537592656166116, + -0.6707133283158744, 0.2597174736789681, 0.46954942686078716, 0.51217052768379, - -0.11489386424404562, + -1.1420202563413573, 1.265974917971162, + -0.9292300251800608, 1.001555629245316, + -0.09742149039769883, + -2.119596982319414, + -2.1969217399884924, 1.122267866057918, 2.0118420191461803, 0.30201074703431263, + -0.48966164024190245, + -0.5135490947661565, + -1.0739210599237325, 2.2035145562945293, + -0.29882845731838414, 1.3460983256762604, 0.626820481067724, - -1.8438652086995353, + -0.06581075463628752, 0.10997254269648227, 2.0065611269776644, - -0.7578505995039082, 1.0159978401232488, - -1.59249315299401, 0.2923665381528412, 1.3370321440963355, - -0.23102356637828622, + -0.24325392379441643, + -0.3389292822418378, 0.3186160154286117, 1.3970387291415345, + -0.8798130487131584, 0.11182047780156927, 0.4315681264740078, 1.6137850971757342, + -0.2973845710076038, 1.638962314523427, 0.13409659216509714, 0.17203736635766856, + -1.3650171542843021, + -0.4212656827400207, 0.8806401486464327, - -1.47256655193283, 0.7577097291811645, - -0.015838160674877966, + -0.6366050127557136, + -0.3878147409362679, 0.8896634154552829, 1.1341571652425653, 1.7316301950572073, - -1.2858104335854346, + -0.7055198448961673, + -0.6382100575533082, 0.8811405230322151, + -0.6532038099890327, + -1.31996590252498, + -0.8187126044465817, 0.16270221119589887, + -0.5740804187646116, 0.7436871197925536, 0.6167126196705511, 0.9718668340412515, - -0.7119035172923535, + -0.7356927851492516, + -0.9634637827705722, 0.45913770322630687, 0.6562382063047018, 0.7515034769028561, - -1.8721836112668646, - -0.5562800612192723, 0.9315457527732457, 0.32753233118239405, - 0.7408138005017622 + 0.7408138005017622, + -0.8019050477600198 ], + "xaxis": "x", "y": [ - 0.3674541627572123, - -0.023391631597180496, - 0.5560235974818095, - 0.73312405967597, - 1.5700467204699695, - 0.08994761840418508, - 0.6829559391798075, - 1.1091898871809014, - 0.7835309834346851, - 1.220959323757619, - 0.2929234869021542, - -0.31877747330475303, - 0.7065154654934978, - 0.7434226276928895, - 0.9356572710092532, - -0.09846520992104768, - 0.8308391399150388, - 0.6663290255792003, - 1.3350908968463981, - 0.196160329233507, - 0.42371070189836413, - 0.5142103699263001, - 0.9218491509907478, - -0.04717370403844212, - -1.824797912023624, - 1.1610846308647669, - 0.7159444498343988, - 0.9936550613038433, - 0.4858409378315942, - 0.583114459965931, - 1.2434576483002848, - 1.1139677044118366, - 0.7772495604045666, - 0.5492197832788176, - 1.1147061596279384, - 0.6156674181699291, - 0.8260235551521671, - 0.8866663097214627, - -0.8116862208258475, - 1.41537438363338, - 0.2502952033932111, - -1.0616004211523646, - 0.8837708514196176, - 0.4657337507448194, - 0.5664492302729459, - 1.0275505614553366, - 0.9459280227177453, - 1.0399424146272755, - -1.4725357408394864, - 1.7081314327345591, - 0.9848071851117401, - 0.8960380587199943, - 0.7653321119235867, - 0.5292232913595694, - 1.2533250217233234, - 0.7090701940491229, - 0.9268593413643367, - -0.06865180811357285, - 1.7483678891210843, - 0.7299674824819249, - 0.8125706941535307, - 0.8454778335173283, - 0.8876107107044895, - 0.9420314367179579, - 1.1001838841496578, - 1.0684291760588647, - -0.03352261955559088, - 0.22989452310761926, - 0.175886878743244, - 0.7807462967153294, - -0.21125521801407277, - 0.4446318901723939, - 1.0859868710321336, - 1.0144567172486205, - 0.8244356059548068, - 1.0024644358110986, - 1.0069344249530978, - 1.1187878006143377, - 0.27548259920571816, - 1.2221722106834942, - 0.8664340686135295, - 0.8447606298628383, - -1.0759429136200045, - 1.203622408704389, - -0.820783641706444, - 0.28814778733959834, - 1.1623911707692047, - 0.6791768956895652, - 0.7252948647064561, - 0.9716995843503802, - 0.29088598763266904, - -1.9071241822918585, - 0.5509665174582685, - 0.5326361773517014, - 1.2628236169923905, - 1.0374737176698787, - 0.27984211388799807, - 0.812558945704251, - 1.2058119649559491, - 0.7956575832526951, - 0.2649867410670015, - 1.4869728448081716, - 1.0851235856574686, - 1.0410477482847715, - -0.13413053730062208, - 0.2850323457979278, - 0.8745910132052526, - 0.9801961852324268, - -1.3372196026898622, - 0.848649457991355, - 0.03229242088357154, - 1.1725796239764252, - 0.9760350384032893, - 0.08276993814819988, - 0.1627216400502146, - 1.125061549429784, - 0.3356436116541825, - 0.1123896080026281, - 0.62173417331024, - 0.8377554044728583, - 1.0517568006693931, - 1.3254871797580048, - -0.1181460439931683, - 1.0869130338742077, - 0.9036567321575841, - -0.7945393440283395, - 0.8446970406339753, - 0.2960895590542112, - -0.9984993227458432, - 0.22254309441209807, - 0.3048644077468854, - 0.775415475359795, - 1.008474075200239, - 0.6842148532283758, - -0.9748028612119368, - 0.7736739466522344, - 0.24214814842054544, - 1.0503196453808843, - 0.6953386819958086, - 0.9367600093332686, - 0.3488927617485338, - 1.2546813598534703, - 1.347358806198681, - 1.3324479079622193, - 1.5348875840679699, - 0.10720806230977908, - -3.057530235554813, - 0.8932610797452627, - 0.8624698359806784, - 0.5967249081597903, - 0.7789981073143739, - 0.43563119485654944, - 0.5640088112892698, - 0.8894251661793642, - 1.1406726339525264, - -0.6014749511402573, - 1.6771769213164225, - 1.2594374619420963, - 0.6539287305683448, - 0.7574142489773337, - 1.0513418030731958, - -0.1828782057133731, - 0.8372007620155084, - 0.9425051968670588, - 0.5205876025521379, - 1.1656679492073048, - 0.24770268687242414, - 0.9599661053186033, - -1.6866201336819966, - 1.100541647678872, - 0.734537863219249, - 1.3094297274693096, - 0.4815418914507701, - 1.0980291416997652, - 0.31575078535435663, - 0.9485282136497757, - 1.124124703686389, - -0.6664962737532907, - 1.2580545597716748, - -0.7164383636241201, - 0.8130765752641089, - 0.7650449834383721, - 0.5502192392122272, - 0.9159385696803586, - -0.2231384661751462, - -0.10869572505558067, - 1.0877039127506227, - 0.7241791482978286, - -2.4491689222815025, - 1.1380010582188511, - -0.2822404141812229, - 0.8497576029516201, - 0.28452404434960826, - 0.5842716429981081, - 0.904809952729229, - 0.3121441260623552, - 0.6650273737788623, - 0.4303474431335601, - 1.016314439525379, - 0.6925905179184375, - 0.7779624521377506, - 0.807394962371724, - 1.187123381820177, - -0.32621698855167125, - 1.0272898258991408, - 1.223874572494271, - 1.092178416330853, - 1.0823905403654193, - 1.1274690826678548, - 0.7378907989212902, - 0.2838982234082117, - 0.6961088942097999, - 0.6595623683014566, - 1.0672353335035254, - 1.2440940753167578, - 0.79790249213357, - 1.2003344037866253, - 0.7050234949530617, - -0.25473703551972715, - 0.8718808363591878, - -0.028324676465634413, - 0.7896650689024654, - -1.3325256723295684, - 0.03427975551809048, - 1.0132945793425918, - 0.7406251566296547, - 0.8055528478006115, - 0.9829037022370208, - -2.2262969762889435, - -0.002234034975419519, - 0.4544799744448893, - 0.21407478390590629, - 0.7539126006794707, - 0.7165491648924673, - 1.1293767425969852, - 0.9809433304226793, - -1.1450102060861846, - 0.21946926088627983, - 0.11769218233539025, - 0.8638548753219488, - -0.5076307331279614, - 1.202213701429181, - 0.501199496768719, - 0.130882878271797, - 0.19220062193681275, - 1.1325131640327992, - 1.3053043476988724, - 0.9530549370710424, - 1.0454823932886028, - 1.0281971783192905, - -1.1588738212757714, - 1.6817215198384439, - 0.8877420873427165, - 0.01981904430214243, - -0.06494948940197176, - 0.433968581575672, - 0.8637928702498332, - 0.20722542443904857, - 0.5935731169244276, - 0.7407473099274123, - 1.0659859796073547, - 0.5600612140164987, - 0.6191468948037087, - 1.047499079144675, - 1.2420489137952773, - 0.6912268525478238, - 0.4030690812076303, - 1.1789793640442827, - -0.20393415653476765, - -0.08452462652788051, - -0.07754001564664925, - -0.484449407741373, - 0.7688497706958819, - 1.0057876046638259, - 0.7283537648046503, - 0.6581642669079171, - 1.011231394448389, - 0.7367333100339408, - 0.6402789959557857, - 1.205857788515331, - 1.06017477038157, - 0.4308107384258837, - -1.0946911764483045, - 1.3124149607795772, - 1.267939612992003, - 0.8769984183254671, - 0.2138438386564232, - 1.2822157143756778, - -0.7142163078288419, - 1.0364165666142344, - 0.955281240457099, - 1.2773440584839495, - 0.836936946522755, - 1.3919601024982087, - -0.9772650405244125, - 0.9014692608943022, - 1.028528685235845, - 0.4813385225392828, - 1.092976023742592, - 0.982250838207039, - 0.5105233701987179, - 0.9545003511069741, - 0.05175104440473799, - 0.9243300886776311, - 0.41534931134763253, - -0.11627934209637125, - 1.0021106284755539, - 0.25233754105047135, - 0.5464667464032057, - 1.1255256244638014, - 0.03208780194075711, - 0.3602942184260698, - 0.4651000205531357, - 0.5782926395387689, - 0.6463442629346687, - 0.4688036106544158, - 0.8223796319246084, - 0.3132607783394379, - 0.8857624949435747, - 0.6116490442665672, - 0.9517055733367893, - -1.0888567456648204, - -0.24093211631351874, - 1.6397855274670798, - 0.9535102730934735, - -0.046590091773542675, - -0.5190895878344488, - 0.7383896831820604, - 0.6685149816801514, - 0.7654702246605805, - -0.06592390603421605, - 0.750808619053263, - 0.8133907229260542, - 0.5313907149026234, - 0.309810693319184, - 1.0172815281529148, - 1.329046362080612, - 0.9743172559333342, - 0.39150366654981117, - 1.4597993568685315, - -0.5674849208831008, - -1.0557136654639683, - 1.0410207186463403, - 0.40350284940130887, - 0.048115541792572714, - 0.8928504517334668, - 0.977240952247934, - 0.6103757483296097, - 0.27953440655959305, - 0.09366835085451086, - -0.1260185075799347, - 0.016082760589946177, - 0.5851871343191108, - 0.7800095990720255, - 0.9767199975113785, - 0.5991140636055827, - 1.0728599516037967, - 1.2389190630445737, - 0.22291532373101086, - 0.22693356797984077, - -0.20308475869224285, - 1.278898223658345, - 0.9504439290454223, - 1.403019650408344, - 1.16441728401304, - 0.6417054290055209, - 1.18499698852263, - 1.2279036676785435, - 0.3869686694998222, - 0.779069790064336, - 1.2262953217201638, - 1.0986823729457458, - -0.6240637739739252, - 0.020920767872437906, - 0.7236620213835784, - 1.250308869073411, - 1.1392314139114712, - 1.3493973505410408, - 0.9092404569642625, - 0.5730027600070979, - 0.9595307268923402, - 1.1339155310960614, - 0.15923590165804757, - 1.1397649253966786, - 1.096356126090404, - -1.3001591804144226, - 1.413262262071131, - 0.1594653350543025, - 0.10908004110144276, - 0.5194996829950984, - 0.6370302742152205, - 0.7598328995172867, - -0.2903862340827885, - 0.4170907718188147, - 0.027824948421097728, - -0.3988914053239969, - 1.1451996280614747, - -0.008386537811543526, - 1.3252128333404283, - 0.9407709927169314, - 0.1925234589136, - 0.5582567057046112, - 1.084070192697005, - 0.20886825788753693, - 0.39421212962310426, - 0.18396791012046876, - 1.1736069785381338, - 0.02994776534352389, - -0.11911482003243812, - 1.4217046267538773, - 0.7040028936744722, - 1.2180288065748144, - 1.3102801344181707, - 0.5313970636873826, - 0.4724059063883721, - 0.3733023686345569, - -0.5101370402457472, - -2.179362889646386, - 1.2937960725099433, - -2.6977372492600136, - 0.7315890161433654, - 0.773604492051911, - 1.2846492314688054, - 0.14010592537457, - 0.2497272430991999, - 1.1075304049182204, - -0.1931876036272282, - 1.0428471951443088, - 1.2072801905522228, - 0.875483656229056, - 1.0720351290707484, - -1.4732423506150343, - 0.3449351374203631, - 1.1595577767322478, - 1.1961882067086016, - 0.3875000620829443, - 0.6908422060599094, - 0.832292223538802, - 1.4688005709204608, - 0.9006351789908946, - 0.37542743958199587, - 1.3820095068564768, - -0.11345286339473226, - 0.5333828214285514, - 0.3592127124846787, - 1.1587767152935324, - 1.2467783756959607, - 0.6231485680371485, - 0.5345314420720051, - 1.3537466616873068, - 1.0242641913676653, - 0.8434663478127316, - 1.0630231081839554, - 1.1380386827365738, - -1.1111907659734168, - 0.657983948520477, - 0.2086666381257094, - 1.0434366055914372, - 0.3942983122758761, - 0.7154656536000039, - 1.156974467332099, - 1.0856475487617494, - 0.6221468438707607, - 0.8508246112932334, - -1.9063350357607098, - 1.0490786939381278, - 1.2003566964934613, - 1.3591426180802884, - 0.7140229804433806, - 0.898362783143384, - 1.4796912301951264, - -0.7898039636904367, - -2.4922315147130605, - 0.6493861887006744, - 0.15935005520569412, - 1.3342402320372548, - 0.7641305154883522, - 0.567082337951735, - 1.084329812776839, - 0.8505914150421289, - -0.45018183005418094, - 0.20037048521084877, - -0.03961586628042843, - -0.07985403932254975, - 0.32323796210586053, - 0.6300880585720403, - -1.995157599106793, - 1.150188098754663, - 1.1481420335830113, - 0.5751283915587924, - -3.3562201698516407, - 0.9213869736771481, - 0.11336292878064391, - 0.37173792857789545, - 1.099911403757408, - 0.7767743261101843, - -0.49541955923468173, - -0.9652581204393016, - 1.446791897155296, - 0.9205539652873374, - -0.32004796937714497, - 1.0126381244531792, - -0.022991835044264053, - 0.806514921647906, - 0.9768634364823114, - 0.7308309542048764, - 0.8044147735834635, - 0.19567130496838647, - 1.0974866598111257, - 0.8286917284455846, - 0.25915217509330524, - 0.8143355093593969, - 0.3589735924631432, - 0.8263139337896113, - 0.9064912411441903, - 0.8331517301230172, - -1.3514242496876188, - 0.6105774869780544, - 0.7126829296414909, - 1.1756538616448613, - 0.598255242614222, - 0.7089998240509748, - 0.8227225992859104, - 0.883670202033817, - 0.9965755930220763, - 1.010772704009085, - 0.7905975112218961, - 0.7836985270532781, - 1.0454751649991756, - 0.5414941342765198, - -0.9298230386584695, - 1.4624184142794228, - -1.3708252252874873, - 0.7580461486912569, - 0.5890576196622366, - 1.056842639048055, - 0.768675650101617, - 0.24353360605791963, - 1.5077522629437499, - 0.8514810065943896, - 1.0628758998589092, - 0.8250022688956753, - 0.251168263504123, - 0.14429219259917403, - 0.05932474456792658, - 0.5042219761039783, - -1.3187360514789983, - 0.7798207301817166, - -1.4994697421093548, - 0.059351869855618855, - 0.8480440388290589, - -0.2610423496672727, - 0.46172149833075204, - -0.6900953514682104, - 0.4000700038119507, - 0.6807261125038817, - -0.4040782291165981, - 1.1626204379005296, - -0.4707891288691446, - 1.3067768460192837, - 0.3681313001595171, - 0.09278244997784159, - 1.5809329381180826, - 0.691504248073886, - -0.650344314954445, - -0.4332506278946785, - 1.0248409962624374, - 1.0944985925065307, - 0.6612681538152856, - -0.4407654177267446, - 0.48971207550798024, - 1.3135607446117255, - 0.2623681398482898, - 0.22573245672240483, - -0.9096968715144604, - 0.23354006938514804, - 0.42231558594066154, - 0.4013196900484277, - 1.157390429705159, - 0.6622784646313722, - 0.5085152764663021, - 0.2834456369433478, - 1.1906682875308254, - 0.4522053120452272, - 0.7993344724517644, - -0.6907541313236318, - 0.8157812339098632, - 0.6233913944202731, - 0.9659848374199349, - 0.6922351384957883 - ] - }, - { - "line": { - "color": "red" - }, - "mode": "lines", - "name": "Average Effect Estimate", - "type": "scatter", - "x": [ - -1, - -0.9797979797979798, - -0.9595959595959596, - -0.9393939393939394, - -0.9191919191919192, - -0.898989898989899, - -0.8787878787878788, - -0.8585858585858586, - -0.8383838383838383, - -0.8181818181818181, - -0.797979797979798, - -0.7777777777777778, - -0.7575757575757576, - -0.7373737373737373, - -0.7171717171717171, - -0.696969696969697, - -0.6767676767676767, - -0.6565656565656566, - -0.6363636363636364, - -0.6161616161616161, - -0.5959595959595959, - -0.5757575757575757, - -0.5555555555555556, - -0.5353535353535352, - -0.5151515151515151, - -0.4949494949494949, - -0.4747474747474747, - -0.4545454545454545, - -0.43434343434343425, - -0.41414141414141414, - -0.3939393939393939, - -0.3737373737373737, - -0.3535353535353535, - -0.33333333333333326, - -0.31313131313131304, - -0.2929292929292928, - -0.2727272727272727, - -0.2525252525252525, - -0.23232323232323226, - -0.21212121212121204, - -0.19191919191919182, - -0.1717171717171716, - -0.1515151515151515, - -0.13131313131313127, - -0.11111111111111105, - -0.09090909090909083, - -0.07070707070707061, - -0.050505050505050386, - -0.030303030303030276, - -0.010101010101010055, - 0.010101010101010166, - 0.030303030303030498, - 0.05050505050505061, - 0.07070707070707072, - 0.09090909090909105, - 0.11111111111111116, - 0.1313131313131315, - 0.1515151515151516, - 0.1717171717171717, - 0.19191919191919204, - 0.21212121212121215, - 0.2323232323232325, - 0.2525252525252526, - 0.27272727272727293, - 0.29292929292929304, - 0.31313131313131315, - 0.3333333333333335, - 0.3535353535353536, - 0.3737373737373739, - 0.39393939393939403, - 0.41414141414141437, - 0.4343434343434345, - 0.4545454545454546, - 0.4747474747474749, - 0.49494949494949503, - 0.5151515151515154, - 0.5353535353535355, - 0.5555555555555556, - 0.5757575757575759, - 0.595959595959596, - 0.6161616161616164, - 0.6363636363636365, - 0.6565656565656568, - 0.6767676767676769, - 0.696969696969697, - 0.7171717171717173, - 0.7373737373737375, - 0.7575757575757578, - 0.7777777777777779, - 0.7979797979797982, - 0.8181818181818183, - 0.8383838383838385, - 0.8585858585858588, - 0.8787878787878789, - 0.8989898989898992, - 0.9191919191919193, - 0.9393939393939394, - 0.9595959595959598, - 0.9797979797979799, - 1 + 2.265929471529643, + 9.694561155437166, + 15.001403007791444, + 10.748742710522935, + 4.464563054300227, + 4.458606814787848, + 5.720577430325107, + 4.07067774720589, + 1.590658838647819, + 3.8561356439738455, + 13.810615341379208, + 2.7698934669732473, + 3.6652752947892124, + 4.258380402564378, + 3.4246531645049862, + 12.32396548183264, + 8.236964297743414, + 8.460567186562127, + 9.617960664434255, + 8.104539653403087, + 17.09901330545235, + 8.484138990719682, + 10.681717563115276, + 3.001393280247692, + 11.263973781556944, + 3.3413201248723268, + 8.462833084556626, + 10.939603495455666, + 7.399661064524305, + 2.620400631064451, + 5.242739862271615, + 4.010865464260581, + 7.248533468937351, + 3.381320486974768, + 1.8308852277275207, + 4.55686741680098, + 1.51630276636483, + 2.948719095440292, + 7.30264204621881, + 9.600952713627429, + 6.601195519451783, + 3.1942833111391407, + 4.894615192702758, + 5.635183887917489, + 13.036012082261806, + 4.828822090660765, + 2.4365815271131694, + 6.637853691092357, + 8.53838768331626, + 13.221400040211847, + 2.7991157129239728, + 4.397073336490484, + 4.2005707454675845, + 5.835865097197437, + 4.100982661677124, + 15.518747141216663, + 1.3614330070922058, + 0.9412421119534005, + 4.84558565236586, + 7.3429859357301615, + 7.044358420828881, + 4.279050919030776, + 4.661836726142834, + 7.027239323766707, + 4.691120570711789, + 6.2983880594659505, + 3.020013027089809, + 3.238771401281311, + 5.057610475845288, + 1.9338547248594324, + 4.132263189536221, + 8.978379801118601, + 2.5448605324559037, + 3.8272043421838253, + 3.6461745154987355, + 3.7141268554733924, + 3.943333161825477, + 1.5677485344907052, + 16.513337028875252, + 11.516513554272976, + 1.8749519970640258, + 5.245026374790678, + 10.184765679426906, + 5.0282521403687825, + 3.8731537783093266, + 9.526111855670262, + 8.930290760456417, + 13.740174353522601, + 6.255971423541705, + 10.861840580482127, + 3.482434591178435, + 4.160683319935916, + 8.337209995273493, + 2.525660823074181, + 11.758696194494975, + 5.0114814973324, + 9.964967051348433, + 2.3060695154765902, + 5.563853505384101, + 17.628049600932172, + 2.6871766020875216, + 1.5396465065237206, + 2.987991789023849, + 3.839128804311066, + 6.914663671850868, + 3.0532649901547106, + 12.819285172419374, + 3.510958942199201, + 8.90246101383686, + 15.9873797131138, + 6.44432760117919, + 2.7231523458302638, + 13.654564132534047, + 2.6867551361260875, + 1.4447510137167534, + 4.184193644033716, + 2.3123531867413947, + 2.219716094903136, + 2.3552451215543204, + 5.907226338887424, + 9.755776884038891, + 2.207973811762361, + 2.297649078380153, + 9.667867403640276, + 4.0875966628748115, + 3.621094634839108, + 1.7662042158113374, + 3.6172598935433316, + 4.390268193041852, + 2.4763266658009067, + 11.076447482487703, + 2.677127307459024, + 4.521164016793937, + 3.9790615945018963, + 3.8699549823091317, + 6.269105752749612, + 6.681577465665945, + 4.48780277684491, + 2.908206085100257, + 5.007461426415795, + 3.338940416336114, + 4.640072016011472, + 3.1218223722428795, + 9.869888400801477, + 6.307738209931988, + 3.903746274695888, + 3.0856592384183767, + 3.670106787790936, + 6.122887292442154, + 4.952098165720181, + 6.421845648941789, + 7.00091245254906, + 8.294504633413677, + 2.928135017125198, + 17.485468447411897, + 7.531354353045948, + 18.184456808988877, + 10.813496038550449, + 11.227216864967803, + 2.1441758155970394, + 19.011448878519992, + 8.190505279202194, + 14.509762242844465, + 6.046114345093918, + 11.091717008532877, + 3.544852768481243, + 9.866525617443084, + 12.551249053912088, + 14.147775772480772, + 2.654741728524375, + 6.2650647639237524, + 7.308070628222553, + 6.950585492608079, + 2.573817644256974, + 4.423405333839632, + 3.7891548279849387, + 7.628517620276847, + 2.2020926001030663, + 10.418298407825423, + 10.16406881190855, + 8.976670952867433, + 5.134771415941695, + 1.0265758626467236, + 10.618572668452142, + 12.154706893256707, + 2.959084173607903, + 2.5765816250505438, + 3.2033905280772075, + 2.3635302870548887, + 3.500852809076819, + 18.77166976434441, + 11.956913263566697, + 4.433431324550289, + 12.468809201993697, + 11.611429868963665, + 3.863768591178403, + 7.1068830221501, + 7.001435101935673, + 8.369174521358374, + 15.217050945628085, + 13.603820025465769, + 6.658213969381527, + 2.970389713710068, + 12.394596021181313, + 4.348878276341836, + 4.213142860639733, + 14.91323011942871, + 7.9492001745411365, + 3.408500471687419, + 6.2663586180489155, + 3.528396784394658, + 11.496296186991868, + 3.6321862632085935, + 5.607037732401054, + 7.899498460269936, + 15.511067704191701, + 2.560866588137461, + 9.731651246426889, + 11.84023714538772, + 2.8732879832270277, + 4.877125463354467, + 2.695630017314183, + 1.2133795212480423, + 10.231373497595118, + 7.091572264058836, + 3.7324465944061935, + 1.572300015216746, + 2.731916387579277, + 8.17374189569183, + 9.72395855428605, + 2.4875526365435787, + 4.978081921739523, + 2.2771763059744146, + 6.6339700137369, + 8.140580358652747, + 4.640616627035953, + 1.8377549423898605, + 6.342573084839112, + 10.855949418171228, + 4.263313964754971, + 8.04651848454491, + 6.8025687454395705, + 4.3657037465282595, + 3.6977943889433376, + 19.085287142725683, + 3.972984645526237, + 1.642655075425628, + 11.208286605796419, + 3.5840621161906934, + 11.546673655801067, + 11.952633574770253, + 2.39730823672077, + 14.671836195629043, + 8.530659137003743, + 10.141716452962367, + 16.010875697096775, + 5.188713804683356, + 10.716622199946908, + 11.861472590823427, + 1.8039268941832942, + 10.40288304422664, + 3.5002087345455655, + 5.297098100050996, + 3.0747743564141383, + 13.012572481931103, + 3.7846499729219025, + -0.7598574267134771, + 12.424871923769345, + 4.283313579755587, + 4.8146064377234845, + 1.4098298865217036, + 3.947546558909086, + 1.9945304991518857, + 6.546133143596889, + 6.487369383152597, + 16.256389831013333, + 3.7995193097475877, + 4.963357564324481, + 9.199846271814256, + 9.816627223980333, + 3.025112405354149, + 1.6760337811953563, + 9.270906507890658, + 10.851786931249737, + 17.044317060137793, + 3.1073986708814494, + 10.658459208235294, + 8.902449122129982, + 10.958092102214838, + 19.54071816474041, + 9.806679996607661, + 8.301841904208958, + 2.8959520678532464, + 4.833954303426042, + 11.095742608750829, + 1.1760851881807914, + 2.512564357382991, + 4.4968525225538745, + 17.201070405665643, + 11.655181721121407, + 8.458668947695022, + 6.789125404106795, + 9.187651303946337, + 8.090996981895236, + 12.70118691914138, + 7.182585257102322, + 1.8381018734017056, + 3.062039859234129, + 7.095788044645277, + 6.954448421794118, + 4.385438408594497, + 6.590367019049524, + 10.874116064766108, + 7.44274037363752, + 8.225006373432192, + 10.410356026338688, + 8.092928912418811, + 7.2279781627067194, + 3.115857209972452, + 4.695954776025797, + 4.282548417419812, + 14.506884332057322, + 4.224684124764206, + 8.921462959631633, + 3.2777888910561184, + 5.572925949158813, + 14.656807361191017, + 3.218124759032054, + 5.506818285663842, + 0.7123243327064984, + 7.476384536900452, + 6.663232799363023, + 1.4229833078605425, + 4.0366851227981435, + 6.2566415961307165, + 10.72206032966684, + 2.211029639410973, + 3.6637708586232267, + 4.23489477868798, + 6.084959782991081, + 6.258356272014977, + 3.379380966693951, + 3.0993170207247682, + 1.6472462881020162, + 11.264043112573113, + 2.163243668231, + 3.528084599887016, + 2.042943303573523, + 12.68556134281856, + 4.484170364411881, + 3.220181807764813, + 8.142758404508227, + 7.661445440033579, + 14.4752145699751, + 5.145156625312843, + 2.654358669444195, + 13.879051236600745, + 5.099931116909535, + 7.45682004663257, + 5.347351369089084, + 9.141745153929424, + 8.300043464836314, + 5.31576547034449, + 2.139848712789145, + 9.752660083201123, + 4.527300075464674, + 6.897328712791664, + 2.338330865206532, + 5.02936560189911, + 10.322939743368408, + 5.392449167791411, + 3.8839303549256052, + 8.68167101482884, + 4.652898997689499, + 17.917205292427912, + 4.297245511251533, + 9.23135357094443, + 6.493175338396726, + 8.509909377619739, + 1.875745309646252, + 5.531646458900818, + 2.3943898694921013, + 10.781361555333927, + 2.154134614445248, + 8.013136736112866, + 3.568654362308105, + 7.4422908265758725, + 17.227895549922852, + 2.6317679540729095, + 10.558916997021942, + 12.453784287346103, + 3.3062936042446442, + 4.947169977729538, + 12.347672582990297, + 4.282706463206077, + 2.291754437791348, + 9.290154652133618, + 1.5717542687400683, + 3.5201550487419118, + 11.832308202021874, + 5.099030109770507, + 3.082022967226665, + 7.26008928972419, + 3.233861162032418, + 14.394201595285786, + 8.12396657748174, + 10.788541878471024, + 2.439550018809831, + 7.385012991957169, + 3.2595052918257976, + 4.5510943644870325, + 8.683203534724592, + 1.8698190374996018, + 6.289082660734713, + 4.788223873186884, + 3.6330481899665306, + 6.677261752418803, + 1.846964087038559, + 13.645123193561433, + 5.4817511509321575, + 10.313632395816132, + 1.8366444709316732, + 4.140511100668412, + 9.202789285333695, + 2.447011946793957, + 10.73135266063922, + 7.574194175314418, + 1.3505635513390526, + 4.755103062805348, + 3.148671470811746, + 7.496146584414306, + 1.8908363200219356, + 6.133489598125723, + 1.6236894726215128, + 14.997907268596853, + 5.904399986686302, + 10.17983249026187, + 6.4106108238588435, + 11.97078302652149, + 12.186651231469241, + 4.539902667427349, + 3.856974473907083, + 2.0881366955685468, + 3.889966063019122, + 5.112886606965867, + 9.704875635951035, + 10.799089667366115, + 4.702400931420402, + 6.127085315063862, + 5.895177962193958, + 3.805952128761161, + 3.0980465678831446, + 6.34465527074354, + 4.492431190958236, + 5.977163204512254, + 8.562762070357183, + 12.635811069085616, + 2.6299896045787308, + 1.2657470922349159, + 6.942637664055524, + 3.2373690084810773, + 1.9488870521864206, + 3.9231622333029783, + 8.431169321816414, + 7.476758283389479, + 3.6965208088994967, + 10.375372377939263, + 3.348774115542101, + 4.889123861091899, + 11.74636802375234, + 1.6184490045922735, + 5.402157484675704, + 10.116117235217182, + 16.019602135417088, + 11.705763971904398, + 7.299053052365139, + 4.461354743256478, + 7.531671178472615, + 1.582390736608868, + 9.534542269263813, + 1.9596143879565644, + 15.489472594917014, + 5.822830547230848, + 7.499318869571259, + 9.985216608333925, + 10.03270304973028, + 4.083188020683909, + 8.190469660155882, + 2.9821676416870058, + 9.242591839213503, + 9.998569948100528, + 4.729218380691532, + 7.593892036137035, + 1.1470163880823563, + 3.593338126565563, + 1.5426314453879986, + 4.513639508012342, + 10.118913464563223, + 0.5105259430515321, + 15.775099197228867, + 12.05679949241901, + 7.8535085774225974, + 3.8655532959460177, + 3.2977205841009107, + 3.8546112806651625, + 9.993921914076, + 13.662304944150975, + 3.730133386249415, + 6.930689831586816, + 3.833114948129331, + 7.843459588109377, + 9.651382866988321, + 4.32487240334703, + 6.9954149907923355, + 3.6732751826267678, + 6.506224292866517, + 2.836830831794468, + 4.3174584761957835, + 2.2745894543814305, + 1.3672812791732438, + 7.07526394073255, + 4.003455411724395, + 6.252880061722262, + 4.156564963752937, + 5.681035169088436, + 12.792242512055923, + 2.9604221983391765, + 2.0462505871181245, + 6.711606376048099, + 4.068431613494066, + 7.858383748838975, + 3.8490213170428658, + 4.580154835089165, + 7.501941096065977, + 10.7780201322668, + 4.067694705027642, + 4.4039593393058425, + 2.6901058328850302, + 3.264179673326793, + 2.3879789571191288, + 3.0930389945578867, + 18.30115733900274, + 6.471707350070127, + 6.680905291971551, + 5.742366537822184, + 2.020899416110505, + 10.207668213067246, + 4.860619789530659, + 2.6754162996313244, + 3.585152771900879, + 5.644030250207612, + 6.374779432437629, + 11.720995085266173, + 9.937184334004515, + 5.590718960449072, + 8.701223834117853, + 11.128463987492674, + 4.587884587512182, + 12.894044239488057, + 3.0462423536527674, + 12.477953973674333, + 2.221756539602425, + 6.228476809017635, + 0.18358528357621517, + 3.4441544833538806, + 10.965190200526736, + 4.980845003123529, + 1.3932772724703333, + 3.272093636010206, + 4.266746562229977, + 7.872279730973945, + 3.8243847518725254, + 10.670256218445862, + 17.284779647497007, + 2.644376105310677, + 4.927058093891117, + 5.30569605379481, + 1.926392403294464, + 7.845102420161203, + 2.982656548934253, + 1.4997244182188925, + 4.7461574093585215, + 2.8483087547703185, + 12.047151352512428, + 3.4880649403573276, + 11.732943752874197, + 6.9813129049237475, + 3.2384593212065633, + 1.9256466820771712, + 5.7124412355837615, + 8.418832968509168, + 2.752751478600281, + 4.171197545881602, + 8.616904364240284, + 6.284160109950633, + 4.1810477059181155, + 7.4242033037320105, + 1.9692343390160645, + 0.7311217267201264, + 6.935912510464833, + 10.787539601288069, + 12.895746374184167, + 9.301229136757724, + 10.965974552589072, + 10.062736049997376, + 4.195976793683249, + 7.098242051931191, + 5.019460485585374, + 4.005491424762978, + 2.5337226893140006, + 1.3647916549187198, + 9.121321684423284, + 1.818136863872882, + 7.744568721567811, + 9.401422362119996, + 5.36004998386494, + 5.590598935913978, + 13.76757142388392, + 17.320957993486164, + 8.091359695868857, + 3.056244034539619, + 11.46875965833262, + 1.0895965516554755, + 2.409659052296855, + 5.310917476297208, + 5.0474420794264265, + 10.065747029572861, + 8.399995484071185, + 5.999303540119944, + 10.570025627681863, + 16.68462394752922, + 10.523661692873938, + 7.319113255288522, + -0.07188241454945812, + 4.120672217814852, + 3.850016635488781, + 14.561860000216683, + 2.7809199910271896, + 11.597484092134568, + 6.473066959556584, + 7.602216633263769, + 6.362604379349993, + 6.265031461356174, + 2.1327429654368624, + 1.9203431272301326, + 5.387341322372937, + 3.294921420620403, + 2.8302969183486257, + 10.377576340374638, + 12.695367528603342, + 8.089813178847363, + 8.618589782571492, + 14.31462998390479, + 6.229088516361773, + 3.6173224162494, + 8.573328912072396, + 14.068835777185974, + 19.519186032954707, + 2.645542358212573, + 11.057659219487391, + 7.116304508486813, + 12.203057597332762, + 4.478951681107789, + 13.201334815401736, + 2.2535400933557805, + 17.589185003221452, + 10.917238694141234, + 5.944176212265241, + 2.914926419776223, + 10.427571072431162, + 7.305542662732612, + 7.136485673917394, + 3.473006149253745, + -0.8948036838159846, + 6.201274413655002, + 4.620054753231987, + 8.522818690465863, + 1.7236331316200588, + 7.381441868078257, + 3.0983349286181285, + 4.8533996369185095, + 9.404158761029409, + 3.199212957368143, + 6.869418523046383, + 4.075155979302653, + 11.3952442006207, + 5.9819054694834, + 11.939881048529529, + 1.2327216484910748, + 9.520996289253404, + 3.5448227286349776, + 11.366415461847787, + 6.393261931006413, + 3.7689547564428887, + 8.039514583666621, + 3.7843861480103103, + 7.333510258233163, + 2.3747919230315953, + 0.8808992404321346, + 16.19267979954547, + 6.045912993968392, + 6.976194046073316, + 7.562195090630139, + 6.800721179390649, + 2.480441393050849, + 10.909191504815636, + 1.729538434904268, + 1.8707473024376742, + 0.6245858936561355, + 10.40459783669121, + 3.3411429792009937, + 11.066438850385445, + 5.808740731181803, + 13.650547610477856, + 2.967127570033277, + 3.816920031069716, + 11.49549251788382, + 8.896877285673233, + 3.838830559941911, + 2.8170253237765004, + 7.634432948206113, + 8.981233283470715, + 1.7326646640660939, + 9.386419189514582, + 1.5785057335161181, + 5.879091645985078, + 5.465699169142491, + 4.433684814922784, + 3.8177536189397165, + 2.4048289956555164, + 10.325611392051856, + 7.6074803442300984, + 3.0375230618436166, + 3.4273699234055215, + 2.572549951305657, + 5.069830743631792, + 7.058062632929908, + 3.4135514271495384, + 4.966608680610329, + 2.915932092366684, + 3.3253092292052147, + 12.436111994293643, + 4.67475873038095, + 3.65708240545015, + 6.37197924529851, + 16.56232837237978, + 2.4184801906818314, + 5.727536425813394, + 2.4067812717509782, + 3.7479395372103377, + 4.357959643164212, + 7.165247823105613, + 3.115714363474604, + 4.554665308156477, + 5.376398009703256, + 4.381187068919068, + 2.0932624617665345, + 5.842986192059503, + 20.390985540233196, + 2.979502069102285, + 8.754246686289934, + 13.775377927488867, + 5.559315982479618, + 5.057133610748745, + 10.52804827793297, + 3.0287108774118243, + 3.9188253218804037, + 4.249590936570091, + 9.05470715769896, + 10.103443000619611, + 1.4257378401352638, + 10.234732460655913, + 18.51017035543307, + 3.742531403422764, + 5.682302063107566, + 12.052165270043073, + 4.2469082705562595, + 3.1962885130444167, + 5.631753203632753, + 3.828289353783408, + 2.3368296936625397, + 13.114802646740193, + 4.6819579463944265, + 4.4347380132450684, + 6.819121063304491, + 5.088701749783405, + 7.159051819363544, + 7.733015419190123, + 7.742955730548548, + 10.542708203338568, + 9.712064503322658, + 4.373533894658112, + 4.301228811426256, + 3.12170971164312, + 2.2179477278952398, + 10.84119574001116, + 7.114318566169389, + 4.096600466653108, + 9.642091012688123, + 3.0947128735013534, + 3.14344292302663, + 5.680906971592573, + 9.285082770663648, + 10.636217269201904, + 3.6790083186093123, + 6.420833606247791, + 5.481767881878449, + 9.402526274613027, + 7.57750145845892, + 17.423540501737804, + 12.111981679281225, + 2.115230798899664, + 2.348768957826344, + 2.758855452517031, + 3.6692564484876717, + 4.077931749222289, + 5.881245329861467, + 20.71532564835613, + 17.34422736518518, + 9.611104553639624, + 0.8589880967324383, + 12.449212352595664, + 8.980197224567005, + 4.8875616041211565, + 8.846735256556087, + 16.957494350302664, + 4.805564824787897, + 8.964989170975489, + 4.2911895405364895, + 1.930967355657544, + 2.1676659305603234, + 0.9233793256699923, + 2.112532122381978, + 6.9371029470728205, + 6.768823511173058, + 2.04085544817848, + 3.670871516056362, + 0.3963597695790085, + 3.6025896704276534, + 9.584272616464322, + 11.15412511310908, + 5.738400719657727, + 13.280705656341217, + 9.155549718844648, + 3.47788305538066, + 6.184206312746015, + 1.6382341393030238, + 2.8484947110270165, + 3.785737569930755, + 9.57791145430953, + 4.21649053438879, + 5.057159291263697, + 4.587668407155297, + 2.229396331836379, + 14.030088066682668, + 4.299912064495803, + 6.197549969436092, + 9.636493224325857, + 11.415592200763612, + 2.91287781057633, + 9.473267442479868, + 12.181693147978782, + 8.420632293781814, + 7.114443764932338, + 3.6829951311847617, + 8.965626018208413, + 10.961085374384197, + 7.950627443018606, + 4.221227283607655 ], - "y": [ - 0.42242310865738003, - 0.4396594391379667, - 0.4569456518932469, - 0.47433730287828296, - 0.4918971522132785, - 0.509692274247641, - 0.5277892265773426, - 0.5462473790469377, - 0.5651109531519677, - 0.5844008046462434, - 0.6041073302461039, - 0.6241859227678901, - 0.6445560521528719, - 0.6651043759331705, - 0.6856914844716869, - 0.7061612165435083, - 0.7263511254831765, - 0.7461026821054385, - 0.7652700843649078, - 0.7837269592474082, - 0.8013706563838572, - 0.8181241668170237, - 0.8339359319671383, - 0.8487779489434225, - 0.86264265033854, - 0.8755390562353024, - 0.8874886727432495, - 0.8985215511052983, - 0.9086728320219621, - 0.9179799928098014, - 0.9264809043503499, - 0.9342127039628759, - 0.9412114092566081, - 0.9475121414002471, - 0.9531497937120162, - 0.958159968963783, - 0.9625800105528155, - 0.9664499631673973, - 0.9698133138034063, - 0.9727173823794621, - 0.9752132535895316, - 0.9773551707356922, - 0.9791993514865398, - 0.9808022371450661, - 0.982218250408719, - 0.9834972064559379, - 0.9846815880892924, - 0.9858039435323166, - 0.9868846811196533, - 0.9879305090824342, - 0.9889337005957788, - 0.9898722648589265, - 0.9907109937151997, - 0.9914032529376355, - 0.991893316861943, - 0.9921190144781108, - 0.9920144633885329, - 0.9915127053112588, - 0.9905481087991167, - 0.9890584578014342, - 0.9869866887936732, - 0.9842822698681638, - 0.9809022325360706, - 0.9768118742264491, - 0.9719851509852031, - 0.9664047797736514, - 0.960062070915105, - 0.9529565149508876, - 0.9450951543243631, - 0.9364917777673409, - 0.927165982370651, - 0.9171421534370584, - 0.9064484140971063, - 0.8951155947055123, - 0.8831762663056397, - 0.8706638736267615, - 0.8576119922388763, - 0.8440537228713334, - 0.8300212246819556, - 0.8155453793897439, - 0.800655570281213, - 0.7853795544559168, - 0.7697434032930385, - 0.7537714848073108, - 0.7374864620440953, - 0.7209092836815427, - 0.7040591463933273, - 0.6869534132273147, - 0.6696074783194629, - 0.6520345757525686, - 0.6342455392459303, - 0.6162485293217472, - 0.5980487549168523, - 0.5796482258482777, - 0.5610455793328332, - 0.5422360258072025, - 0.5232114545807244, - 0.5039607270670245, - 0.4844701645823362, - 0.4647242110300381 - ] + "yaxis": "y" } ], "layout": { "legend": { - "x": 0.8, - "y": 0.2 + "title": { + "text": "Treatment" + }, + "tracegroupgap": 0 }, "template": { "data": { @@ -11768,16 +6326,26 @@ } }, "title": { - "text": "Locally Linear Kernel Regression of ITE on Score" + "text": "Scatter Plot of Outcome vs. Score by Treatment Status" }, "xaxis": { + "anchor": "y", + "domain": [ + 0, + 1 + ], "title": { "text": "Score" } }, "yaxis": { + "anchor": "x", + "domain": [ + 0, + 1 + ], "title": { - "text": "Effect" + "text": "Outcome" } } } @@ -11788,41 +6356,22 @@ } ], "source": [ - "complier_mask = ((data_dict[\"score\"] < 0) & (data_dict[\"D\"] == False)) | ((data_dict[\"score\"] > 0) & (data_dict[\"D\"] == True))\n", - "ite = data_dict['oracle_values']['Y1'][complier_mask] - data_dict['oracle_values']['Y0'][complier_mask]\n", - "score = data_dict['score'][complier_mask]\n", - "\n", - "oracle_model = KernelReg(endog=ite, exog=score, reg_type='ll', var_type='c', ckertype='gaussian')\n", - "\n", - "score_grid = np.linspace(-1, 1, 100)\n", - "oracle_effects_fuzzy, _ = oracle_model.fit(score_grid)\n", - "\n", - "scatter = go.Scatter(\n", - " x=score,\n", - " y=ite,\n", - " mode='markers',\n", - " name='ITE',\n", - " marker=dict(color='blue')\n", - ")\n", - "line = go.Scatter(\n", - " x=score_grid,\n", - " y=oracle_effects_fuzzy,\n", - " mode='lines',\n", - " name='Average Effect Estimate',\n", - " line=dict(color='red')\n", + "fig = px.scatter(\n", + " x=df['score'],\n", + " y=df['y'],\n", + " color=df['d'].astype(bool),\n", + " labels={\n", + " \"x\": \"Score\", \n", + " \"y\": \"Outcome\",\n", + " \"color\": \"Treatment\"\n", + " },\n", + " title=\"Scatter Plot of Outcome vs. Score by Treatment Status\"\n", ")\n", "\n", - "\n", - "fig = go.Figure(data=[scatter, line])\n", "fig.update_layout(\n", - " title='Locally Linear Kernel Regression of ITE on Score',\n", - " xaxis_title='Score',\n", - " yaxis_title='Effect',\n", - " legend=dict(x=0.8, y=0.2)\n", + " xaxis_title=\"Score\",\n", + " yaxis_title=\"Outcome\"\n", ")\n", - "\n", - "print(f\"The oracle ATE on compliers is estimated as {oracle_model.fit([0])[0][0]} at the cutoff c={0}.\")\n", - "\n", "fig.show()" ] }, @@ -11841,7 +6390,7 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 29, "metadata": {}, "outputs": [ { @@ -11867,15 +6416,15 @@ "\n", "Method Coef. S.E. t-stat P>|t| 95% CI \n", "-------------------------------------------------------------------------\n", - "Conventional 3.64 3.052 1.192 2.331e-01 [-2.343, 9.622]\n", - "Robust - - 1.134 2.569e-01 [-2.952, 11.054]\n" + "Conventional 4.64 3.052 1.52 1.285e-01 [-1.343, 10.622]\n", + "Robust - - 1.414 1.575e-01 [-1.952, 12.054]\n" ] }, { "data": { "text/plain": [] }, - "execution_count": 12, + "execution_count": 29, "metadata": {}, "output_type": "execute_result" } @@ -11900,7 +6449,7 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 30, "metadata": {}, "outputs": [ { @@ -11926,15 +6475,15 @@ "\n", "Method Coef. S.E. t-stat P>|t| 95% CI \n", "-------------------------------------------------------------------------\n", - "Conventional 1.802 2.326 0.775 4.385e-01 [-2.757, 6.361]\n", - "Robust - - 0.732 4.642e-01 [-3.367, 7.381]\n" + "Conventional 2.802 2.326 1.205 2.283e-01 [-1.757, 7.361]\n", + "Robust - - 1.097 2.728e-01 [-2.367, 8.381]\n" ] }, { "data": { "text/plain": [] }, - "execution_count": 13, + "execution_count": 30, "metadata": {}, "output_type": "execute_result" } @@ -11974,7 +6523,7 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 31, "metadata": {}, "outputs": [], "source": [ @@ -11990,7 +6539,7 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": 32, "metadata": {}, "outputs": [ { @@ -11999,8 +6548,8 @@ "text": [ "Method Coef. S.E. t-stat P>|t| 95% CI\n", "-------------------------------------------------------------------------\n", - "Conventional 0.156 0.716 0.218 8.275e-01 [-1.247, 1.559]\n", - "Robust - - 0.024 9.805e-01 [-1.640, 1.682]\n" + "Conventional 0.979 0.726 1.348 1.777e-01 [-0.445, 2.403]\n", + "Robust - - 0.994 3.201e-01 [-0.831, 2.541]\n" ] } ], @@ -12042,7 +6591,7 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": 33, "metadata": {}, "outputs": [], "source": [ @@ -12055,7 +6604,7 @@ }, { "cell_type": "code", - "execution_count": 17, + "execution_count": 34, "metadata": {}, "outputs": [], "source": [ @@ -12084,9 +6633,16 @@ ")" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We first repeat the estimation of the sharp design and observe an even smaller standard error." + ] + }, { "cell_type": "code", - "execution_count": 18, + "execution_count": 35, "metadata": {}, "outputs": [ { @@ -12095,8 +6651,8 @@ "text": [ "Method Coef. S.E. t-stat P>|t| 95% CI\n", "-------------------------------------------------------------------------\n", - "Conventional 0.916 0.100 9.155 5.451e-20 [0.720, 1.112]\n", - "Robust - - 7.733 1.050e-14 [0.665, 1.117]\n" + "Conventional 1.876 0.101 18.635 1.676e-77 [1.679, 2.073]\n", + "Robust - - 15.964 2.260e-57 [1.613, 2.064]\n" ] } ], @@ -12111,9 +6667,16 @@ "print(rdflex_sharp_stack)" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The same applies for the fuzzy case." + ] + }, { "cell_type": "code", - "execution_count": 19, + "execution_count": 36, "metadata": {}, "outputs": [ { @@ -12122,8 +6685,8 @@ "text": [ "Method Coef. S.E. t-stat P>|t| 95% CI\n", "-------------------------------------------------------------------------\n", - "Conventional 0.795 0.598 1.330 1.835e-01 [-0.377, 1.967]\n", - "Robust - - 1.355 1.755e-01 [-0.421, 2.303]\n" + "Conventional 1.760 0.612 2.878 4.004e-03 [0.561, 2.959]\n", + "Robust - - 2.697 7.004e-03 [0.524, 3.313]\n" ] } ], @@ -12148,7 +6711,7 @@ }, { "cell_type": "code", - "execution_count": 20, + "execution_count": 37, "metadata": {}, "outputs": [], "source": [ @@ -12164,12 +6727,12 @@ }, { "cell_type": "code", - "execution_count": 21, + "execution_count": 38, "metadata": {}, "outputs": [ { "data": { - "image/png": "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jRrw8PDAzJkzceDAAbRo0QIBAQFwdnYGAPj7+6NcuXI4e/Ysqlevjjp16qBKlSqYN2+eso9atWohMjISly5dMuwPiYiIyIiYq4lIHyyMHQBRdlewYEG0atUKy5cvh4igVatWKFCggLL+zp07CA8PR9OmTXW2i46O1unWlpSKFSvqPC9UqBCePn0KALh+/TqcnZ2VJA4Abm5uyJs3L65fv47q1avj+vXrCQaQqV27No4cOZLq90pERJQVMVcTUXqw6CbKBPr164dhw4YBgM5ZagB48+YNAGDPnj1wcnLSWadWqz+67xw5cug8V6lU0Gq16QmXiIgo22GuJqK04j3dRJlA8+bNER0djbdv38LT01NnnZubG9RqNR48eICSJUvqPOLPeltaWgIAYmNjU/W6ZcuWxcOHD/Hw4UNlmb+/P16/fg03NzelzT///KOz3ZkzZ1L9HomIiLIy5moiSite6SbKBMzNzXH9+nXl/++ztrbGmDFj4OXlBa1Wi3r16iEkJAR///03bGxs0Lt3b7i4uEClUmH37t1o2bIlcubMiTx58nz0dZs0aYIKFSqge/fumD17NmJiYjBkyBA0bNgQ1apVAwCMHDkSffr0QbVq1VC3bl2sWbMG165dQ/HixfX/gyAiIsqkmKuJKK14pZsok7CxsYGNjU2i66ZNm4ZJkybB19cXZcuWRfPmzbFnzx64uroCAJycnDB16lR8/fXXcHBwULq/fYxKpcKOHTuQL18+NGjQAE2aNEHx4sWxYcMGpU2XLl0wadIkjBs3Du7u7rh//z4GDx6c/jdMRESUxTBXE1FacPRyIiIiIiIiIgPhlW4iIiIiIiIiA2HRTURERERERGQgLLqJiIiIiIiIDIRFNxEREREREZGBsOgmIiIiIiIiMhAW3UREREREREQGwqKbiIiIiIiIyEBYdBMREREREREZCItuIiIiIiIiIgNh0U1ERERERERkICy6iYiIiIiIiAyERTcRERERERGRgfwfzOY6tacbrpoAAAAASUVORK5CYII=", + "image/png": "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NcmyZcqUwfLly7Fz5074+vpCrVajdu3aePr0abL79/HxgY2Njebh5OSkr7dCRESU7SX0Rnvx4oXW8hcvXqTYU02pVGrGeEl4EBERmQKjJ91lypTB1atXcf78eQwcOBC9evWCv79/kmVr1aqFnj17onLlymjQoAG2bdsGOzs7LF68ONn9s+WciIjIcFxcXODg4IAjR45oloWFheH8+fMp9mQjIiIyVUa9pxsALC0tUapUKQCAu7s7Ll68iPnz56eYSCfIkSMHqlSpgvv37ydbRqlUQqlU6qy+RERE2d27d++0Ym9AQACuXr0KW1tbFCtWDCNGjMDMmTNRunRpuLi4YPLkyShSpAjatm1rvEoTEREZidGT7k+p1WrExMSkqqxKpcKNGzfQvHlzPdeKiIiIEly6dAmNGjXSPB81ahQAoFevXli5ciXGjRuHiIgIfPPNN3j79i3q1q2L/fv3c5pPIiLKloyadE+YMAHNmjVDsWLFEB4ejnXr1uH48eM4cOAAAKBnz55wdHSEj48PAGD69OmoWbMmSpUqhbdv3+LHH3/Eo0eP0K9fP2O+DSIiomylYcOGEJFk1ysUCkyfPh3Tp083YK2IiIgyJ6Mm3cHBwejZsycCAwNhY2MDNzc3HDhwAE2aNAEAPH78GGZmH247DwkJQf/+/REUFIT8+fPD3d0dZ86cSXbgNSIiIiIiIiJjMmrS/eeff6a4/vjx41rPf/31V/z66696rBERERERERGR7hh99HIiIiIiIiIiU8Wkm4iIiIiIiEhPmHQTERERERER6QmTbiIiIiIiIiI9YdJNREREREREpCdMuomIiIiIiIj0hEk3ERERERERkZ4w6SYiIiIiIiLSEybdRERERERERHrCpJuIiIiIiIhIT5h0ExEREREREekJk24iIiIiIiIiPWHSTURERERERKQnTLqJiIiIiIiI9IRJNxEREREREZGeMOkmIiIiIiIi0hMm3URERERERER6wqSbiIiIiIiISE+YdBMRERERERHpCZNuIiIiIiIiIj1h0k1EREQ6pVKpMHnyZLi4uCBnzpwoWbIkZsyYARExdtWIiIgMzsLYFSAiIiLT8sMPP2DRokVYtWoVypcvj0uXLqFPnz6wsbHBsGHDjF09IiIig2LSTURERDp15swZtGnTBi1atAAAFC9eHOvXr8eFCxeMXDMiIiLDY/dy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", "text/plain": [ "
" ] @@ -12193,7 +6756,7 @@ "axes[0].set_title('Sharp Design')\n", "axes[0].set_ylabel('Coefficient')\n", "axes[0].set_xlabel('Method')\n", - "axes[0].axhline(oracle_effects_sharp[49:51].mean(), linestyle=\"--\", color=\"r\")\n", + "axes[0].axhline(true_tau, linestyle=\"--\", color=\"r\")\n", "axes[0].tick_params(axis='x', rotation=30)\n", "\n", "axes[1].errorbar(\n", @@ -12207,7 +6770,7 @@ "axes[1].set_title('Fuzzy Design')\n", "axes[1].set_ylabel('Coefficient') \n", "axes[1].set_xlabel('Method')\n", - "axes[1].axhline(oracle_effects_fuzzy[49:51].mean(), linestyle=\"--\", color=\"r\")\n", + "axes[1].axhline(true_tau, linestyle=\"--\", color=\"r\")\n", "axes[1].tick_params(axis='x', rotation=30)\n", "\n", "plt.tight_layout()" From cc4fea9bd4d3ce9831021a1fd1f41ff920d8ece9 Mon Sep 17 00:00:00 2001 From: Oliver Schacht Date: Fri, 15 Nov 2024 16:19:08 +0100 Subject: [PATCH 57/71] remove rdd anchor in example --- doc/examples/py_double_ml_rdflex.ipynb | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/doc/examples/py_double_ml_rdflex.ipynb b/doc/examples/py_double_ml_rdflex.ipynb index 93a72646..85096214 100644 --- a/doc/examples/py_double_ml_rdflex.ipynb +++ b/doc/examples/py_double_ml_rdflex.ipynb @@ -3179,7 +3179,7 @@ "\n", "$$\\underset{\\beta,\\gamma}{\\mathrm{arg\\,min}} \\, \\sum K_h(S_i) (Y_i - Q_i^\\top\\beta- X_i^{\\top}\\gamma )^2.$$\n", "\n", - "with $Q_i =(D_i, S_i, D_i S_i,1)^T$ (for more details, see our [User Guide](https://docs.doubleml.org/stable/guide/models.html#regression-discontinuity-designs-rdd)), $K_h(v)=K(v/h)/h$ with $K(\\cdot)$ a kernel function.\n", + "with $Q_i =(D_i, S_i, D_i S_i,1)^T$ (for more details, see our [User Guide](https://docs.doubleml.org/stable/guide/models.html)), $K_h(v)=K(v/h)/h$ with $K(\\cdot)$ a kernel function.\n", "\n", "The packages ``rdrobust`` implements this estimation with a linear adjustment." ] @@ -3236,7 +3236,7 @@ "source": [ "### RDD with flexible adjustment\n", "\n", - "[Noack, Olma and Rothe (2024)](https://arxiv.org/abs/2107.07942) propose an estimator that reduces the variance of the above esimator, using a flexible adjustment of the outcome by machine learning. For more details, see our [User Guide](https://docs.doubleml.org/stable/guide/models.html#regression-discontinuity-designs-rdd). The estimator here takes the form \n", + "[Noack, Olma and Rothe (2024)](https://arxiv.org/abs/2107.07942) propose an estimator that reduces the variance of the above esimator, using a flexible adjustment of the outcome by machine learning. For more details, see our [User Guide](https://docs.doubleml.org/stable/guide/models.html). The estimator here takes the form \n", "\n", "$$\\hat{\\tau}_{\\text{RDFlex}}(h;\\eta) = \\sum_{i=1}^n w_i(h)M_i(\\eta),\\quad M_i(\\eta) = Y_i - \\eta(X_i),$$\n", "\n", @@ -6506,7 +6506,7 @@ "source": [ "### RDD with flexible adjustment\n", "\n", - "[Noack, Olma and Rothe (2024)](https://arxiv.org/abs/2107.07942) propose an estimator that reduces the variance of the above esimator, using a flexible adjustment of the outcome by ML. For more details, see our [User Guide](https://docs.doubleml.org/stable/guide/models.html#regression-discontinuity-designs-rdd). The estimator here takes the form \n", + "[Noack, Olma and Rothe (2024)](https://arxiv.org/abs/2107.07942) propose an estimator that reduces the variance of the above esimator, using a flexible adjustment of the outcome by ML. For more details, see our [User Guide](https://docs.doubleml.org/stable/guide/models.html). The estimator here takes the form \n", "\n", "$$\\hat{\\theta}_{\\text{RDFlex}}(h; \\eta) = \\frac{\\sum_{i=1}^n w_i(h)(Y_i - \\hat{\\eta}_Y(X_i))}{\\sum_{i=1}^n w_i(h)(D_i - \\hat{\\eta}_D(X_i))},$$\n", "\n", From 0d93f9708dd1ee9e5944ed6752a7b3fac3057743 Mon Sep 17 00:00:00 2001 From: Oliver Schacht Date: Mon, 18 Nov 2024 19:44:33 +0100 Subject: [PATCH 58/71] clear outputs --- doc/examples/py_double_ml_rdflex.ipynb | 6274 +----------------------- 1 file changed, 32 insertions(+), 6242 deletions(-) diff --git a/doc/examples/py_double_ml_rdflex.ipynb b/doc/examples/py_double_ml_rdflex.ipynb index 85096214..85d5efa0 100644 --- a/doc/examples/py_double_ml_rdflex.ipynb +++ b/doc/examples/py_double_ml_rdflex.ipynb @@ -17,7 +17,7 @@ }, { "cell_type": "code", - "execution_count": 20, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -53,102 +53,9 @@ }, { "cell_type": "code", - "execution_count": 21, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
ydscorex0x1x2
01.5630671.00.471435-0.198503-0.193849-0.493426
11.3486220.0-1.1909760.013677-0.630880-0.885832
22.2659291.01.432707-0.2661470.439675-0.051651
37.4773570.0-0.3126520.845241-0.6597550.436764
413.1851300.0-0.7205890.739595-0.7413800.948112
\n", - "
" - ], - "text/plain": [ - " y d score x0 x1 x2\n", - "0 1.563067 1.0 0.471435 -0.198503 -0.193849 -0.493426\n", - "1 1.348622 0.0 -1.190976 0.013677 -0.630880 -0.885832\n", - "2 2.265929 1.0 1.432707 -0.266147 0.439675 -0.051651\n", - "3 7.477357 0.0 -0.312652 0.845241 -0.659755 0.436764\n", - "4 13.185130 0.0 -0.720589 0.739595 -0.741380 0.948112" - ] - }, - "execution_count": 21, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "np.random.seed(1234)\n", "\n", @@ -172,2918 +79,9 @@ }, { "cell_type": "code", - "execution_count": 22, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "C:\\Users\\BAQ7040\\AppData\\Roaming\\Python\\Python311\\site-packages\\plotly\\express\\_core.py:1979: FutureWarning:\n", - "\n", - "When grouping with a length-1 list-like, you will need to pass a length-1 tuple to get_group in a future version of pandas. Pass `(name,)` instead of `name` to silence this warning.\n", - "\n" - ] - }, - { - "data": { - "application/vnd.plotly.v1+json": { - "config": { - "plotlyServerURL": "https://plot.ly" - }, - "data": [ - { - "hovertemplate": "Treatment=True
Score=%{x}
Outcome=%{y}", - "legendgroup": "True", - "marker": { - "color": "#636efa", - "symbol": "circle" - }, - "mode": "markers", - "name": "True", - "orientation": "v", - "showlegend": true, - "type": "scatter", - "x": [ - 0.47143516373249306, - 1.4327069684260973, - 0.8871629403077386, - 0.8595884137174165, - 0.015696372114428918, - 1.150035724719818, - 0.9919460223426778, - 0.9533241281124304, - 0.002118364683486495, - 0.405453411570191, - 0.2890919409800353, - 1.3211581921293856, - 0.19342137647035826, - 0.5534389109567419, - 1.3181515541801367, - 0.6755540851223808, - 1.0589691875711504, - 0.3374376536139724, - 1.0475785728927218, - 1.0459382556276653, - 0.8637172916848387, - 0.12471295376821585, - 0.8416747129961416, - 2.390960515463033, - 0.07619958783723642, - 0.036141936684072715, - 0.24779219974854666, - 0.018289191349219306, - 0.7554139823981354, - 0.2152685809694434, - 0.841008794931391, - 0.35402033219923795, - 0.5657383060625951, - 1.5456588046255575, - 0.30796885521603423, - 1.0338007325554992, - 2.0306036208387996, - 0.21188338677770105, - 0.7047206243171088, - 0.4620597371620487, - 0.7042282254621743, - 0.5235079678938094, - 2.0078429507780005, - 0.2269625418708953, - 0.6319794458091295, - 0.0395126866933667, - 0.46439232505089606, - 1.3211056154702059, - 0.15263055220453448, - 0.16452954293239852, - 0.7673687357524115, - 0.9849198419098969, - 0.270835848826804, - 1.3919861934464073, - 0.07984231300862901, - 0.8165939265478418, - 0.5282881452973941, - 0.2912053597430635, - 0.5665336963535724, - 0.503591759111203, - 0.2852956847818571, - 0.48428811274975, - 1.3634815124261457, - 1.2245743551261743, - 0.8754755042743244, - 0.7491638059190651, - 0.6806560043814565, - 0.047071635325711084, - 0.3948442093272043, - 0.4362576043409168, - 0.3937105991386652, - 0.6941032876787643, - 0.6786296737098565, - 0.2395559950038969, - 0.15122662929444983, - 0.8161272333600409, - 1.8935344675962007, - 0.6396327631937027, - 1.9302467674655757, - 1.2103837049045143, - 0.7974354194278735, - 0.7025622240016004, - 1.1768124501049289, - 0.7009077309156047, - 0.9841880707224154, - 2.365768628840039, - 0.4961429262475947, - 0.7965948666649523, - 1.3577972581070583, - 0.33419793089900884, - 0.5367838249027502, - 0.22598548673375538, - 0.6287758265382943, - 0.18649434877307466, - 0.9524783451091219, - 0.9881375825933089, - 0.13968327403129469, - 2.123691888593553, - 0.12227343425882888, - 1.4229859527722433, - 0.3635645568066484, - 1.2723950785462097, - 0.2093947875359238, - 1.1043515698603126, - 0.8891574940728737, - 0.2883768477152654, - 0.156998376446689, - 1.0576331832046142, - 0.07187803937036874, - 1.9107594272771828, - 0.7879646831376144, - 0.5130821444669919, - 1.0439446554953231, - 2.10778515279337, - 1.4599274815852936, - 1.0154054578125205, - 0.7491846009241975, - 0.4402663916687296, - 0.6889718563269422, - 1.92453332001529, - 0.4112040207072239, - 0.8907649561731171, - 0.22636322725170696, - 1.126385822137273, - 0.2471117161577363, - 0.1211718053315409, - 0.2989839355420466, - 0.24945521515244942, - 0.5810733206206065, - 2.7638440798495663, - 0.3993254369795763, - 0.6684881692058056, - 0.5004829001543722, - 0.8630648605906245, - 1.1539222406122254, - 1.181944105999232, - 0.39137144842193117, - 0.2950799597862399, - 1.8638010621325043, - 0.12678118632697175, - 0.0037598477954959237, - 0.5539212514397202, - 1.5294006744839312, - 0.20545485392597962, - 0.3130131289808603, - 0.8665207121682993, - 0.2990705295943764, - 1.076540643846122, - 0.3631773475444523, - 1.8936798255518426, - 0.3876744557775985, - 0.023557610392553562, - 0.17738671938459905, - 0.9835127293431644, - 0.0235045858853947, - 0.553776977863366, - 0.3537692939966397, - 1.5410299832779386, - 0.06308453895730506, - 1.7879796324557498, - 0.3862536891890525, - 0.8227753737653734, - 1.0572033312141293, - 0.03187997356903155, - 1.3431824575289413, - 0.5270464509549642, - 0.7111123993648228, - 2.6377912107038637, - 1.4311837522545638, - 0.5927584465506688, - 0.170296895326288, - 0.2885813223432078, - 0.17160238198599498, - 0.9828178292431048, - 0.9244428673433661, - 0.9959929702457525, - 0.955557932627455, - 0.7138407711950433, - 0.13337096219412198, - 1.9087796580911864, - 0.15592326145312668, - 0.7596525320929627, - 0.18167274532368163, - 0.27449257074640343, - 0.06791235738075722, - 0.26697323153986774, - 1.3829972488529256, - 0.13139536722591508, - 0.4344371851022324, - 0.2645340683169988, - 0.5656583442738247, - 0.5850842795017246, - 0.4151005583815808, - 0.4255305913978583, - 1.498569955138537, - 0.8210479561079149, - 2.0978007807716916, - 1.2829332468745234, - 0.2703379257393719, - 1.0031403620449315, - 1.0786735513204067, - 0.34075268512976414, - 2.4814584228756535, - 1.3852548761892063, - 0.6078621862094797, - 0.10203511229233127, - 0.21071705250565526, - 1.7923391966469424, - 0.555877426385625, - 1.5727427457558043, - 1.850397801609901, - 0.1934642338198724, - 1.0327232157358608, - 0.3938922629126754, - 0.33250662216224913, - 0.5289444088560467, - 0.04826420692565666, - 0.06198845052177757, - 1.9321781695813465, - 0.35583899747282033, - 0.9894148472858507, - 1.388647381631717, - 1.0877137365241412, - 0.43880126303439065, - 1.2456099371478462, - 0.5029255176706321, - 0.5855993109298576, - 0.35280056010840655, - 0.27477883705216777, - 0.23734976450942513, - 0.44850974251240683, - 0.3495667716276656, - 1.4061761394942678, - 1.5573976506490226, - 1.6726268084547062, - 0.599962085981993, - 0.3315265183521529, - 0.26623740682783636, - 0.2794280245327373, - 0.27166078437402447, - 0.09911201694909029, - 0.025941713524132055, - 1.1055869627971613, - 2.0751854067317823, - 0.4190598246739658, - 0.4134052764244962, - 0.7175769325882829, - 0.26172483967990484, - 1.384580160839074, - 0.5000695850282261, - 1.951103236540061, - 0.03678625863071046, - 0.44585250626100126, - 0.4500013006954749, - 0.5154795307938983, - 0.09988207650262723, - 0.7257141531219552, - 0.9169762830692352, - 0.11911398259834126, - 0.523546018063799, - 0.8215173089989222, - 1.7303155195063402, - 0.22892725550405343, - 1.0927410572908394, - 1.7114259970115762, - 1.4353870862526215, - 0.040843424766001724, - 0.36201819567044535, - 0.5725921910432455, - 1.1044602367331493, - 0.75568884284869, - 0.010281457155327522, - 0.22458577076489658, - 0.028944498401123394, - 2.1040773666293053, - 1.5675141434637165, - 0.16495455703336395, - 1.2073482032456735, - 1.7119870129859922, - 0.6575858924331783, - 0.20007988155239426, - 1.091259859221752, - 1.368220262225958, - 0.8916251175268084, - 0.8375662124501372, - 0.5141447133892467, - 0.7439528461648938, - 0.0899015732727284, - 0.3227395618852, - 1.0501136937792215, - 0.7978764964211627, - 0.5525243131579977, - 1.6415521890288047, - 2.0277395138175196, - 0.07214886239228502, - 0.6131516784246442, - 1.4891664262942452, - 0.22129657503462105, - 0.801888214216484, - 1.118854972135864, - 1.569548064582847, - 1.4277317710676356, - 0.7792145652142417, - 0.24025265459504974, - 0.1911699128232047, - 1.470996579505006, - 0.7189049215428981, - 0.7646112966882201, - 1.0213556589900556, - 1.7096560949798731, - 0.029561951937617355, - 0.12384201643823771, - 0.28943005670297534, - 0.4144350112798109, - 0.9498579011377821, - 0.5218485421095229, - 0.502810027757784, - 1.0557521639658634, - 0.5397352373427955, - 0.3469912503733692, - 0.8741928933305493, - 1.699458930621629, - 1.2828372246866984, - 0.3938001271158281, - 0.4257406105857961, - 0.17196425471545257, - 0.8649983085249567, - 0.7978708863196311, - 0.6769776126657561, - 0.4872101346078452, - 0.765665358162811, - 0.4756748381165133, - 1.5528072078665365, - 0.18853062859763994, - 0.9889637830869817, - 0.21112708032840474, - 1.6117222924558978, - 0.5667304418132302, - 1.5387739411600052, - 0.3096639858949537, - 1.769100570312561, - 0.2682004879637708, - 1.850810168972202, - 1.700769505670963, - 0.3533910559483136, - 0.3364890211021921, - 1.0571054344422781, - 1.1986787224676672, - 0.8043460416389878, - 1.1916553458718568, - 1.4482691251839777, - 0.20145146638225445, - 0.5017557989907293, - 1.6133349220114617, - 1.2990825737762788, - 0.5531844259723022, - 0.5456699950930499, - 0.26228661897316985, - 0.21907020968038537, - 0.9323529322684813, - 1.7430524278808484, - 0.9540316671351478, - 0.7120509492248905, - 1.6615021287437646, - 2.547691702457717, - 2.6519991181342113, - 0.10374933997096626, - 0.11543222568465579, - 0.2586704644560386, - 1.4877433319614572, - 1.4543434763906329, - 0.7043082981680985, - 1.4663513758566715, - 0.3536221825367628, - 0.36320976100296887, - 0.4328745920492785, - 0.29563065498089497, - 2.0798442368337016, - 1.0627364666653065, - 0.01805510965628009, - 0.02279839968937127, - 0.8124230006825046, - 0.615135458353951, - 0.3246098059252541, - 0.6705693906174532, - 0.1491613231433755, - 0.3270638038828972, - 1.6761854255764614, - 0.6809960077267706, - 0.1020797487098907, - 1.1950561396844794, - 0.353683601249814, - 1.0540450911893136, - 0.35207889140437837, - 0.6659818403106037, - 1.0655015019548215, - 0.3644839042458271, - 2.1158507289245674, - 0.6855615854791441, - 1.3812877674130073, - 0.06842655874188228, - 0.31253629248338644, - 0.45425318515036217, - 0.6931185215037656, - 2.337598482195056, - 0.0800997455382507, - 0.4134509638251659, - 0.20445196734865428, - 0.47845329452970037, - 0.02958097097523698, - 0.01746667513481011, - 2.054289530002812, - 0.4238146840382535, - 1.2499025106911574, - 0.5711487534631029, - 0.2970484291574556, - 0.8718652175016266, - 0.6895231987879346, - 1.9845899031898866, - 0.9551299189232728, - 1.4704739392964385, - 0.7108614710694785, - 0.6708259593192185, - 0.06338342659156378, - 0.20024796080692478, - 2.6429226847057117, - 0.8933687076816909, - 1.288554738453981, - 0.33119818801148354, - 1.8560568664485682, - 2.1225899596034625, - 0.020305520730884315, - 1.591464114097166, - 0.0005873380366202194, - 0.15487036534807186, - 0.010685782511001917, - 0.6754553436625048, - 0.8183481023464054, - 1.0389554757038926, - 0.981271848028589, - 0.6166208035641588, - 0.020856736754465456, - 0.5993399050363709, - 1.983488054493826, - 0.07788802802787388, - 0.4045844144487453, - 1.1069498460085399, - 0.2685148227050607, - 0.488360812855723, - 0.5868386021149908, - 0.043672011407345696, - 0.23058049991323532, - 0.3285638932885436, - 0.8380485839532836, - 0.10816425581928157, - 2.039686037158919, - 0.866452901845807, - 0.7084741210544878, - 1.0771702093251387, - 0.06543853933530658, - 1.3120365067494253, - 0.21537592656166116, - 0.2597174736789681, - 0.46954942686078716, - 0.4922331098465613, - 0.51217052768379, - 1.265974917971162, - 0.19091532051019103, - 1.001555629245316, - 1.122267866057918, - 2.0118420191461803, - 0.30201074703431263, - 2.2035145562945293, - 1.3460983256762604, - 0.626820481067724, - 0.10997254269648227, - 2.0065611269776644, - 1.0159978401232488, - 0.2923665381528412, - 1.3370321440963355, - 0.3186160154286117, - 1.3970387291415345, - 0.11182047780156927, - 0.4315681264740078, - 1.6137850971757342, - 1.638962314523427, - 0.13409659216509714, - 0.17203736635766856, - 0.8806401486464327, - 0.7577097291811645, - 0.8896634154552829, - 1.1341571652425653, - 1.7316301950572073, - 0.7007847957258879, - 0.8811405230322151, - 0.16270221119589887, - 0.6697599912207146, - 0.7436871197925536, - 0.6167126196705511, - 0.9718668340412515, - 0.45913770322630687, - 0.6562382063047018, - 0.7515034769028561, - 0.2721639657384405, - 0.9315457527732457, - 0.32753233118239405, - 0.7408138005017622 - ], - "xaxis": "x", - "y": [ - 1.5630670750871647, - 2.265929471529643, - 10.748742710522935, - 4.464563054300227, - 5.720577430325107, - 1.590658838647819, - 2.0944572743407113, - 3.8561356439738455, - 3.6652752947892124, - 4.258380402564378, - 3.4246531645049862, - 12.32396548183264, - 8.460567186562127, - 9.617960664434255, - 8.104539653403087, - 8.484138990719682, - 11.263973781556944, - 8.462833084556626, - 10.939603495455666, - 7.399661064524305, - 2.620400631064451, - 4.010865464260581, - 3.381320486974768, - 1.8308852277275207, - 4.55686741680098, - 2.948719095440292, - 9.600952713627429, - 3.1942833111391407, - 4.894615192702758, - 5.635183887917489, - 13.036012082261806, - 6.637853691092357, - 13.221400040211847, - 2.7991157129239728, - 5.835865097197437, - 15.518747141216663, - 0.9412421119534005, - 7.3429859357301615, - 7.044358420828881, - 4.279050919030776, - 4.661836726142834, - 7.027239323766707, - 6.2983880594659505, - 3.020013027089809, - 5.057610475845288, - 1.9338547248594324, - 4.132263189536221, - 2.5448605324559037, - 3.8272043421838253, - 3.6461745154987355, - 3.943333161825477, - 1.2567470937311578, - 1.9564278707373952, - 1.5677485344907052, - 16.513337028875252, - 10.184765679426906, - 3.8731537783093266, - 13.740174353522601, - 1.6039867353606896, - 6.255971423541705, - 10.861840580482127, - 3.482434591178435, - 4.160683319935916, - 11.758696194494975, - 5.0114814973324, - 2.3060695154765902, - 17.628049600932172, - 1.5396465065237206, - 2.987991789023849, - 12.819285172419374, - 1.910701078233155, - 6.44432760117919, - 2.7231523458302638, - 13.654564132534047, - 2.6867551361260875, - 1.4447510137167534, - 4.184193644033716, - 2.3123531867413947, - 5.907226338887424, - 2.207973811762361, - 2.297649078380153, - 4.0875966628748115, - 1.7662042158113374, - 4.390268193041852, - 2.4763266658009067, - 2.677127307459024, - 4.521164016793937, - 3.9790615945018963, - 3.8699549823091317, - 5.007461426415795, - 3.338940416336114, - 9.869888400801477, - 6.307738209931988, - 3.903746274695888, - 3.0856592384183767, - 3.670106787790936, - 8.294504633413677, - 2.928135017125198, - 17.485468447411897, - 18.184456808988877, - 2.1441758155970394, - 19.011448878519992, - 3.544852768481243, - 14.147775772480772, - 7.308070628222553, - 6.950585492608079, - 3.7891548279849387, - 2.2020926001030663, - 10.16406881190855, - 8.976670952867433, - 2.4702041620939954, - 5.134771415941695, - 10.618572668452142, - 12.154706893256707, - 2.959084173607903, - 2.5765816250505438, - 3.2033905280772075, - 3.500852809076819, - 18.77166976434441, - 4.433431324550289, - 12.468809201993697, - 11.611429868963665, - 3.863768591178403, - 7.001435101935673, - 8.369174521358374, - 15.217050945628085, - 13.603820025465769, - 4.348878276341836, - 4.213142860639733, - 14.91323011942871, - 7.9492001745411365, - 3.408500471687419, - 3.528396784394658, - 11.496296186991868, - 7.899498460269936, - 15.511067704191701, - 2.560866588137461, - 11.84023714538772, - 0.30347550852825705, - 4.877125463354467, - 2.695630017314183, - 10.231373497595118, - 3.7324465944061935, - 1.572300015216746, - 2.731916387579277, - 8.17374189569183, - 9.72395855428605, - 2.4875526365435787, - 4.978081921739523, - 2.2771763059744146, - 8.140580358652747, - 4.640616627035953, - 4.263313964754971, - 8.04651848454491, - 6.8025687454395705, - 4.3657037465282595, - 3.6977943889433376, - 11.208286605796419, - 3.5840621161906934, - 2.39730823672077, - 10.141716452962367, - 16.010875697096775, - 10.716622199946908, - 11.861472590823427, - 1.8039268941832942, - 3.0747743564141383, - 13.012572481931103, - -0.7598574267134771, - 4.283313579755587, - 4.8146064377234845, - 1.4098298865217036, - 1.9945304991518857, - 6.487369383152597, - 16.256389831013333, - 9.199846271814256, - 3.025112405354149, - 1.6760337811953563, - 9.270906507890658, - 10.851786931249737, - 10.658459208235294, - 8.902449122129982, - 10.958092102214838, - 9.806679996607661, - 8.301841904208958, - 2.8959520678532464, - 2.4492962315955906, - 11.095742608750829, - 2.512564357382991, - 4.4968525225538745, - 17.201070405665643, - 11.655181721121407, - 8.458668947695022, - 7.182585257102322, - 1.8381018734017056, - 6.954448421794118, - 10.874116064766108, - 7.44274037363752, - 8.225006373432192, - 10.410356026338688, - 8.092928912418811, - 7.2279781627067194, - 3.115857209972452, - 4.282548417419812, - 14.506884332057322, - 4.224684124764206, - 3.2777888910561184, - 14.656807361191017, - 0.7123243327064984, - 7.476384536900452, - 2.4078354924710546, - 1.4229833078605425, - 6.2566415961307165, - 2.211029639410973, - 4.23489477868798, - 6.258356272014977, - 3.379380966693951, - 1.6472462881020162, - 11.264043112573113, - 2.042943303573523, - 3.220181807764813, - 14.4752145699751, - 5.145156625312843, - 2.654358669444195, - 13.879051236600745, - 7.45682004663257, - 5.347351369089084, - 2.139848712789145, - 9.752660083201123, - 5.02936560189911, - 10.322939743368408, - 3.8839303549256052, - 4.652898997689499, - 9.23135357094443, - 8.509909377619739, - 2.3943898694921013, - 2.154134614445248, - 3.568654362308105, - 2.6317679540729095, - 10.558916997021942, - 12.347672582990297, - 4.282706463206077, - 9.290154652133618, - 3.5201550487419118, - 3.082022967226665, - 14.394201595285786, - 8.12396657748174, - 10.788541878471024, - 1.8422694533861999, - 4.5510943644870325, - 1.8698190374996018, - 6.289082660734713, - 3.6330481899665306, - 6.677261752418803, - 13.645123193561433, - 5.4817511509321575, - 10.73135266063922, - 4.755103062805348, - 3.148671470811746, - 1.6236894726215128, - 10.17983249026187, - 6.4106108238588435, - 12.186651231469241, - 4.539902667427349, - 3.856974473907083, - 5.112886606965867, - 9.704875635951035, - 4.702400931420402, - 6.127085315063862, - 5.895177962193958, - 3.805952128761161, - 3.0980465678831446, - 6.34465527074354, - 4.492431190958236, - 2.6299896045787308, - 1.2657470922349159, - 6.942637664055524, - 3.348774115542101, - 5.402157484675704, - 10.116117235217182, - 4.461354743256478, - 7.531671178472615, - 1.582390736608868, - 1.9596143879565644, - 15.489472594917014, - 5.822830547230848, - 7.499318869571259, - 10.03270304973028, - 8.190469660155882, - 2.9821676416870058, - 4.729218380691532, - 1.1470163880823563, - 3.593338126565563, - 4.513639508012342, - 0.5105259430515321, - 12.05679949241901, - 7.8535085774225974, - 3.8655532959460177, - 3.2977205841009107, - 9.993921914076, - 13.662304944150975, - 3.730133386249415, - 6.930689831586816, - 7.843459588109377, - 6.9954149907923355, - 6.506224292866517, - 1.6342150915008669, - 4.3174584761957835, - 2.2745894543814305, - 4.156564963752937, - 5.681035169088436, - 1.868230527485405, - 12.792242512055923, - 2.9604221983391765, - 2.0462505871181245, - 6.711606376048099, - 4.068431613494066, - 3.8490213170428658, - 4.4039593393058425, - 3.264179673326793, - 2.3879789571191288, - 3.0930389945578867, - 2.020899416110505, - 10.207668213067246, - 4.860619789530659, - 2.6754162996313244, - 6.374779432437629, - 9.937184334004515, - 4.587884587512182, - 3.0462423536527674, - 2.221756539602425, - 6.228476809017635, - 3.4441544833538806, - 3.272093636010206, - 7.872279730973945, - 3.8243847518725254, - 4.927058093891117, - 5.30569605379481, - 1.926392403294464, - 2.982656548934253, - 1.4127318427374114, - 4.7461574093585215, - 2.8483087547703185, - 0.8933631641278355, - 3.4880649403573276, - 11.732943752874197, - 6.9813129049237475, - 3.2384593212065633, - 1.9256466820771712, - 8.418832968509168, - 2.752751478600281, - 6.284160109950633, - 2.163444486136517, - 1.9692343390160645, - 0.7311217267201264, - 10.787539601288069, - 12.895746374184167, - 10.965974552589072, - 10.062736049997376, - 4.195976793683249, - 7.098242051931191, - 0.8145235790787874, - 4.005491424762978, - 2.5337226893140006, - 1.818136863872882, - 7.744568721567811, - 5.590598935913978, - 17.320957993486164, - 8.091359695868857, - 3.056244034539619, - 11.46875965833262, - 1.0895965516554755, - 2.409659052296855, - 5.310917476297208, - 5.0474420794264265, - 8.399995484071185, - 16.68462394752922, - 7.319113255288522, - -0.07188241454945812, - 2.7809199910271896, - 11.597484092134568, - 6.473066959556584, - 6.362604379349993, - 1.9203431272301326, - 3.294921420620403, - 2.8302969183486257, - 10.377576340374638, - 12.695367528603342, - 14.31462998390479, - 6.229088516361773, - 2.1612625683247133, - 8.573328912072396, - 14.068835777185974, - 7.116304508486813, - 4.478951681107789, - 13.201334815401736, - 2.2535400933557805, - 10.917238694141234, - 6.201274413655002, - 4.620054753231987, - 1.7236331316200588, - 7.381441868078257, - 3.0983349286181285, - 4.8533996369185095, - 11.3952442006207, - 1.2327216484910748, - 3.5448227286349776, - 6.393261931006413, - 3.7689547564428887, - 8.039514583666621, - 3.7843861480103103, - 2.3747919230315953, - 0.8808992404321346, - 16.19267979954547, - 6.800721179390649, - 2.480441393050849, - 10.909191504815636, - 1.729538434904268, - 1.8707473024376742, - 0.6245858936561355, - 3.3411429792009937, - 11.066438850385445, - 13.650547610477856, - 8.896877285673233, - 3.838830559941911, - 1.7326646640660939, - 1.5785057335161181, - 5.465699169142491, - 4.433684814922784, - 3.8177536189397165, - 10.325611392051856, - 5.069830743631792, - 7.058062632929908, - 2.915932092366684, - 3.3253092292052147, - 4.67475873038095, - 6.37197924529851, - 16.56232837237978, - 5.727536425813394, - 2.4067812717509782, - 3.7479395372103377, - 4.357959643164212, - 3.115714363474604, - 4.554665308156477, - 4.381187068919068, - 2.0932624617665345, - 5.842986192059503, - 13.775377927488867, - 10.52804827793297, - 3.0287108774118243, - 3.9188253218804037, - 10.103443000619611, - 4.2469082705562595, - 3.1962885130444167, - 5.631753203632753, - 13.114802646740193, - 5.088701749783405, - 7.733015419190123, - 2.0922488953952154, - 4.301228811426256, - 10.84119574001116, - 9.642091012688123, - 3.14344292302663, - 9.285082770663648, - 10.636217269201904, - 1.9518078384347444, - 3.6790083186093123, - 5.481767881878449, - 1.7560951420608684, - 7.57750145845892, - 2.348768957826344, - 2.758855452517031, - 3.6692564484876717, - 17.34422736518518, - 0.8589880967324383, - 12.449212352595664, - 4.8875616041211565, - 8.846735256556087, - 16.957494350302664, - 4.805564824787897, - 8.964989170975489, - 2.1676659305603234, - 0.9233793256699923, - 6.9371029470728205, - 6.768823511173058, - 2.04085544817848, - 0.3963597695790085, - 3.6025896704276534, - 9.584272616464322, - 13.280705656341217, - 9.155549718844648, - 1.6382341393030238, - 2.8484947110270165, - 3.785737569930755, - 1.3657386439237735, - 5.057159291263697, - 4.299912064495803, - 3.412464976813795, - 9.636493224325857, - 11.415592200763612, - 2.91287781057633, - 8.420632293781814, - 7.114443764932338, - 3.6829951311847617, - 2.3490980265992176, - 8.965626018208413, - 10.961085374384197, - 7.950627443018606 - ], - "yaxis": "y" - }, - { - "hovertemplate": "Treatment=False
Score=%{x}
Outcome=%{y}", - "legendgroup": "False", - "marker": { - "color": "#EF553B", - "symbol": "circle" - }, - "mode": "markers", - "name": "False", - "orientation": "v", - "showlegend": true, - "type": "scatter", - "x": [ - -1.1909756947064645, - -0.3126518960917129, - -0.7205887333650116, - -0.6365235044173491, - -2.2426849541854055, - -2.0212548201949705, - -0.334077365808097, - -1.5469055532292402, - -0.2026463246291819, - -0.6559693441389339, - -0.4693052847058996, - -1.8170272265901968, - -0.1831085401789987, - -0.3978402281999914, - -0.12209157484767426, - -0.32279480560829565, - -0.5664459304649568, - -2.0749776006900293, - -0.8971567844396987, - -0.1367948332613474, - -1.4458100770443063, - -1.4019732815008439, - -0.10091819994891389, - -0.5482424491868549, - -0.14461950836938436, - -0.03551302527814021, - -0.9742363337673154, - -0.07034487710410242, - -0.20849876310587975, - -2.4004536338122957, - -1.1426312890227635, - -0.785435211763197, - -0.9262543135302259, - -1.1526591092509524, - -3.5635166606247353, - -0.4300956908764876, - -0.3999645806965225, - -1.0278505586819058, - -0.5847182112607883, - -0.08194705182666534, - -0.3447660142546443, - -1.0689887834801322, - -0.5118813091268151, - -0.781105283625392, - -0.4680176663374855, - -1.2811082751440426, - -1.710715324029529, - -0.4507651031362744, - -0.20393286610125122, - -0.18217541166573417, - -1.8184989903916142, - -0.24843205438084665, - -0.6177066479970167, - -0.682883996449334, - -1.703012774113238, - -0.47932400357549726, - -0.2990162929660804, - -0.9620288319051914, - -2.0852656421201097, - -1.7353488744703927, - -0.379810784047379, - -0.850346271655115, - -0.524336102632456, - -0.12172840866682022, - -0.4740208901256851, - -0.05669571649092953, - -0.8048337241667037, - -2.12362024909293, - -0.33350244043324745, - -0.886719352485378, - -0.7438303679362013, - -0.3202038822408791, - -0.9161988612665409, - -0.8596682999817407, - -0.07260831396267549, - -0.5506029235634193, - -0.9381526140931042, - -1.2390715625947926, - -0.22301898188247601, - -1.4094317399227687, - -2.14785503764361, - -1.347532513457755, - -0.014752111804594866, - -1.4495666088633876, - -1.1955237416669708, - -0.591862973147249, - -0.4145048435321895, - -1.4257947334380214, - -0.5928860038389254, - -1.4731164134656474, - -0.896580615301871, - -0.43154951551604476, - -0.16113690824405888, - -1.0515389375700381, - -0.31956139984023146, - -0.6199930877212022, - -0.5714553510797893, - -0.7914888094778855, - -0.5246273459284702, - -0.5464162802735939, - -0.6755214784366882, - -0.2766461272769873, - -2.0786178937021753, - -0.387886231967176, - -0.08710696996399898, - -0.1570991368466517, - -0.7404690227807179, - -1.2476529230512328, - -0.2757737286563052, - -1.0516278594652122, - -1.392054077493087, - -0.8810470922015694, - -1.7122739244712557, - -1.4070845457432255, - -1.2689942560733918, - -0.8388429214202899, - -0.5040427180819637, - -0.7884401845178787, - -0.48575274428280835, - -0.6602295020442799, - -0.31868492957801425, - -0.7226621936743727, - -0.27559363376768226, - -0.4904835914786814, - -0.37443660019278063, - -2.397503976138816, - -0.28444068392629274, - -1.2656005376012107, - -0.35450870806937423, - -0.10476112306710425, - -0.6837898224310078, - -0.0505396895487724, - -0.3640099563071088, - -1.5533423394310608, - -0.3192978018201611, - -0.21754548049047615, - -1.7421376305949654, - -0.09443480774144415, - -1.7517059477920245, - -0.5425795169067793, - -0.025348902062768783, - -0.28755244928410806, - -0.06124629986631457, - -0.7310333425852061, - -1.0227737046951428, - -0.8070383084728134, - -0.3420107818792151, - -0.42300622841924834, - -0.036982814875919444, - -0.1708010306976224, - -0.022460873511426515, - -0.17429815275208735, - -1.0713686714550896, - -0.04846050255238326, - -0.8452903895662435, - -0.9807243575005858, - -0.42782610997202053, - -0.36015657086902797, - -0.45824038933749284, - -1.3379684019509706, - -0.04138653961487197, - -0.1980749596235683, - -1.154600965389669, - -1.2680690503770815, - -1.080096483157591, - -0.6112816747957622, - -1.4365739367721186, - -0.8969041706975123, - -1.7243930789918331, - -1.3127127065922315, - -0.6818813054911307, - -0.10465157484776595, - -0.3333504267494006, - -0.49674493786490903, - -1.7398037975225593, - -0.7558621756229088, - -0.8811117326479355, - -0.9500255347962833, - -1.120520993992725, - -1.0275156732178674, - -0.23833536546732603, - -0.22663229367683593, - -0.923830720176923, - -1.2700634783862885, - -0.19547241269675866, - -0.4634193992174632, - -0.961602240881236, - -0.6313987783785193, - -0.70425204708826, - -0.24048253675834233, - -1.8155576924320858, - -0.9101238456951419, - -0.7485279533390595, - -0.10812492648026306, - -0.2598436943633885, - -0.31244217715639994, - -0.05953196470440051, - -0.47001481339778667, - -1.0274688471736129, - -0.3066384838696108, - -1.2496967727943529, - -1.5601488888852328, - -0.5933563949764882, - -0.17028851232950049, - -0.5407998076498752, - -0.6841283287665846, - -0.2171991251446381, - -0.38336458015082797, - -0.781816088073111, - -1.21962569517377, - -0.7239489167555044, - -1.7347783075439347, - -0.3630899064372582, - -0.5882267282885189, - -0.5723023507451587, - -1.2080155928296474, - -1.3397010399749156, - -1.4894097013310104, - -1.1509530656259641, - -0.2427712711003623, - -0.5012681327516669, - -0.6981289789688551, - -0.2864254139357557, - -0.2783674615930086, - -1.4103507576806693, - -1.1540839403826029, - -1.3801733950718382, - -0.4958330052131627, - -0.41327907241887124, - -1.7193166679275491, - -0.029560902753084674, - -0.7660398835228289, - -0.7130239566297442, - -2.226117620977587, - -0.5638902404112554, - -1.5221795568231706, - -0.014278788627562308, - -0.24672080681888428, - -0.1653294765172792, - -2.0749804861700474, - -1.002755217016917, - -0.14874184933286258, - -0.045370411959291965, - -0.704492925529761, - -0.35357152666142744, - -0.03065886493678412, - -0.2001718506206763, - -0.48131023935727413, - -1.167520333241006, - -0.4256720265205931, - -1.1347082265682895, - -0.9515209412315562, - -0.12713045607576656, - -0.6242296327908734, - -0.40064420205997625, - -1.1370615382091245, - -0.9031590369968799, - -1.0972780624190317, - -0.07130920963109931, - -1.3193390866508534, - -0.5600929458770713, - -0.6315857879244524, - -0.8670697795627686, - -1.0025626707106647, - -0.6245894793017125, - -0.21214580398595856, - -1.1935641822743448, - -0.48902205827370954, - -0.050049692409833806, - -1.7240502035381267, - -0.37714942561155657, - -0.0002208983015993693, - -0.1686991122175147, - -1.153093261804181, - -1.4389778344742428, - -1.365317321173664, - -1.530892108386614, - -0.42446671286333926, - -1.3718378731166938, - -0.26641789264219634, - -0.10281429468501402, - -0.5864646217583874, - -0.9980556587715391, - -0.9528030215809088, - -0.1665595772769085, - -1.1894434708478612, - -0.5348572637202641, - -0.02159784664665048, - -1.1051915914797859, - -1.0559463385249355, - -0.3014922439465465, - -1.9692628740518392, - -0.35442243933376033, - -0.44699048181139484, - -1.1169783859357703, - -0.7882663825810968, - -1.3045412108969867, - -1.5751793626207562, - -0.15998365617495094, - -0.643333236166963, - -0.7153708866312951, - -0.45255766631820826, - -0.13004743219159512, - -0.3937331661815619, - -0.6410597741081536, - -0.8401490192933458, - -0.2048613320814621, - -0.1070733343325384, - -0.24210668506471908, - -0.9024827749371497, - -0.289095787657148, - -0.34318403393053737, - -2.200564435744119, - -2.5960623967791756, - -1.594885645232233, - -1.1100767316660405, - -0.9984064955184256, - -2.275806602546662, - -1.149298768674316, - -1.5861363032929552, - -0.4723808755437636, - -0.18884634787574245, - -0.6411772534653856, - -0.44884868035202796, - -1.4622250619252337, - -2.594654269661883, - -0.7147453741565917, - -0.12736538411633605, - -1.0749752659886933, - -0.27835427971563803, - -1.0368186639409402, - -1.8977106282505025, - -0.20036229600666147, - -0.12470367976984963, - -0.5793366572156923, - -0.7618194555160586, - -0.038912324029113265, - -0.356409207238252, - -1.8625686534341959, - -0.1362303703563351, - -1.0855234635679416, - -1.813277132405328, - -0.19791075971583402, - -0.5405657877076904, - -1.8424329199610465, - -0.5111660166205718, - -0.58093512839474, - -1.6797914849149362, - -0.625888706466102, - -1.2502708184687266, - -0.12139461101379515, - -1.2808952713375565, - -0.35296169014182177, - -0.9055276404436707, - -0.7037176105934078, - -0.2779593857816089, - -0.052165291629840356, - -0.40831076211055395, - -1.8104296677951879, - -0.9033080622801077, - -0.9808768767289832, - -0.22843361310270258, - -1.514846657215433, - -0.07526128723722576, - -0.29705808175737614, - -0.7274143817732619, - -0.24587534038557923, - -0.12794894211963254, - -0.3693106199094617, - -2.6230042844775308, - -0.15744398471175033, - -0.7884718753018505, - -0.06584033431115952, - -1.418479846109691, - -0.1397533402109211, - -0.5553548562130987, - -0.5019177788520144, - -0.2453604968501647, - -1.2694318590858544, - -0.2623238551840711, - -0.7817174376760302, - -1.3394111207653079, - -0.1824419843989386, - -2.5318833133900305, - -0.955683515590636, - -0.1336742103217792, - -1.077403324709461, - -0.16371119657423003, - -0.11828188509401265, - -1.1805528861977703, - -0.021557883623027695, - -0.8118350520747238, - -2.251213065289845, - -1.12610018599184, - -0.3078667459168953, - -0.9618845356398223, - -0.6567958804642327, - -0.2883631824527201, - -0.21979349574451643, - -0.8455002410306656, - -0.3337447706635678, - -0.14550836017250823, - -0.07536789810631976, - -0.061147655522904056, - -0.7530412824561289, - -0.34022586976460656, - -0.5509960393063006, - -0.6040373262522097, - -0.866260054447336, - -0.35588838632283426, - -0.9543423107689742, - -0.4640317318179717, - -1.5237107863092993, - -0.8406493439809086, - -0.5437403904555086, - -0.9733422132310651, - -0.11601728545379246, - -0.6908582143577912, - -0.7874870323351537, - -0.3781952626733465, - -0.05546876687944298, - -0.8490095099068151, - -0.0780897990873757, - -0.5273122406197597, - -0.24268793363602895, - -0.03552991507180546, - -0.9599149837120845, - -0.6289509748030468, - -0.17539274109078976, - -0.433426256842158, - -2.368892931279029, - -1.5927211354658712, - -2.441670740242832, - -0.2627338282699097, - -0.822618318710863, - -0.042268338331824626, - -0.39127020083745107, - -0.9078816127611445, - -0.04174551326063229, - -1.9943356434051311, - -0.5892856890062176, - -0.9849802336244897, - -1.0361773997113255, - -0.6587570839399224, - -0.6079835611701924, - -0.7414694894279271, - -1.470561473204019, - -0.12851239742110507, - -0.16063982952151423, - -0.6133974021549207, - -0.711763631312299, - -0.42147083331107177, - -0.341216883674434, - -1.8229324878347437, - -0.6707133283158744, - -1.1420202563413573, - -0.11489386424404562, - -0.9292300251800608, - -0.09742149039769883, - -2.119596982319414, - -2.1969217399884924, - -0.48966164024190245, - -0.5135490947661565, - -1.0739210599237325, - -0.29882845731838414, - -0.06581075463628752, - -1.8438652086995353, - -0.7578505995039082, - -1.59249315299401, - -0.24325392379441643, - -0.23102356637828622, - -0.3389292822418378, - -0.8798130487131584, - -0.2973845710076038, - -1.3650171542843021, - -0.4212656827400207, - -1.47256655193283, - -0.6366050127557136, - -0.015838160674877966, - -0.3878147409362679, - -0.7055198448961673, - -1.2858104335854346, - -0.6382100575533082, - -0.6532038099890327, - -1.31996590252498, - -0.8187126044465817, - -0.5740804187646116, - -0.7119035172923535, - -0.7356927851492516, - -0.9634637827705722, - -1.8721836112668646, - -0.5562800612192723, - -0.8019050477600198 - ], - "xaxis": "x", - "y": [ - 1.3486218401039956, - 7.477357302978893, - 13.185130441195385, - 3.213884670828087, - 4.851025691238358, - 13.709625572413577, - 0.9095215968919781, - 0.4585860711409128, - 6.330611091218783, - -0.3899856239234457, - 15.159272440031835, - 10.159416656466759, - 1.1910906009059457, - 1.2031646458756038, - 3.7025147848367004, - 4.5153386414094765, - -0.5561128481502722, - 7.565566495800468, - 0.8914961577507419, - 4.784164959023863, - 4.477655236806118, - -0.41651759242783837, - 0.08806035597773143, - 0.5297637724001851, - 1.7908939267943453, - 6.416756279757693, - 3.3053798974431836, - 1.9901027948435226, - 1.9163785856840159, - 2.01801601787926, - 3.3679245111731215, - -0.14581384197929406, - 2.8463253251114113, - 1.7735415229957858, - 13.65848649643465, - 1.3891269452447803, - 9.120307212105697, - 0.6460634901698075, - 3.1896832136455227, - 2.4476007802679893, - 2.440691459852534, - 8.340491663558723, - 6.922115043013113, - 7.022901571093229, - 0.06724489894951725, - 0.20282808173671818, - 0.821493754710078, - 8.041734745886036, - -0.2992694879926443, - 3.5192039335414838, - 2.3208762968492294, - 1.5946545977070559, - 4.908132773248832, - 1.2154220956546324, - 2.508549845342969, - 6.842041176943584, - 13.919276932471254, - 0.7130649555967261, - 2.7789795394321213, - 9.200972090131284, - 7.472999443980326, - 1.7287378459171878, - 2.3855982259100093, - 9.427352114241756, - 1.3364200530683075, - 1.3210536706273739, - 4.707067484257473, - 6.92580071128665, - 2.36880536392164, - 1.4228427608646224, - 2.6813583321436183, - 1.1048547692079531, - -0.07502604670082638, - 2.250307023533512, - 4.018691995722657, - 3.0817250359340385, - 4.73533281061189, - 5.262460946495654, - -0.030953077101010695, - 6.655120482443857, - 10.887575486792901, - 9.881541668780825, - 0.3624775790859004, - 7.771131601508578, - 12.993615872678404, - 4.46180962563332, - 9.046233596815545, - 0.6153874717064401, - 0.06209084779627111, - 9.02540580710607, - 11.130776201020911, - 0.7583313584682627, - 4.167519345670676, - 1.2958887040965574, - 0.3231021368979874, - 2.4968047294816027, - 5.4849946541383945, - 8.851689212669179, - 0.22497260167637093, - -0.679854495220918, - 1.0178674945952164, - 10.06259122175227, - 7.49361519727407, - 0.7039466740923791, - 0.1923276664283496, - 4.309096888839158, - 0.9005263052843315, - 10.7904567286213, - 3.9516058179371756, - 2.044976597218969, - 4.291426997822883, - 8.136593182364422, - 0.21645849306063691, - 2.2875031906526178, - 1.0004089437269108, - 0.36111171265387776, - 0.44487698164791045, - 5.727982001110966, - 5.389075708870314, - 0.2591187071686343, - 4.349196807521143, - 8.847499888688484, - 17.086010675852076, - 2.357682600073091, - 0.11936442692347213, - 2.6745891379239874, - 9.510315808240478, - 10.660321663718435, - 12.513661621748446, - 6.560471867036691, - 3.9335568742082114, - 8.082556021092136, - 1.6394456261191244, - 0.6787831612420692, - 3.7778571560668484, - 1.8008966196476315, - 11.974289287917196, - 0.6789358057649202, - 3.479487236837873, - 4.558638359694437, - 1.4779720094871518, - 2.8765581705606706, - 1.618984651084493, - -0.5967617898546517, - 8.557701640861922, - 15.273736946209622, - 1.540555906600884, - 17.37779663412622, - 2.905320796685039, - 1.6520725885832626, - -0.4424743006174689, - 4.802259517550979, - 8.050338971448395, - 5.927871152344614, - 11.152073205328248, - 1.3549755284738203, - 5.554899749469977, - 0.7331132023276788, - 2.752146771893159, - 1.0359179974705544, - 4.345536900055321, - 2.6233719765050934, - 1.7590213928451695, - 1.0450913975811487, - 7.998289415441801, - 0.1183953918038539, - 4.708576775768007, - 1.6006440834766547, - 4.692783712058903, - 1.0360663945550246, - 4.549213238167896, - 1.9233745949318444, - 1.9797244398997378, - 9.128279660356313, - 3.269725036219773, - 0.6211616233500779, - 0.37517543140685394, - 5.043483592849441, - 1.1108138951977866, - 0.34558384540343884, - 1.109807387231308, - 11.397328743843131, - 2.311139343857397, - 7.325764630305342, - 5.864583657218799, - -0.12756523321898525, - 3.145222040875022, - 7.651476911828151, - 6.177626722731482, - 3.3784508875812698, - 4.338054049855501, - 5.753557164164235, - 0.5226603330804618, - -0.060170859100088875, - 2.2899617239460897, - 3.0045118892692733, - 6.894214243659627, - 1.7029680839076393, - 16.453126153055717, - 2.5241162657869958, - 5.086393411792524, - 2.067446896541806, - 0.2037421228824528, - 3.788566728440795, - 0.8433810912004589, - 8.73398022259693, - 6.164455561396544, - 5.798025255516479, - 15.633069587432637, - 10.748226336308578, - 1.3749827233735594, - 4.621400375274052, - 0.14514464126031956, - 0.5142775354371905, - -0.30679187046944933, - 10.365028176603392, - 4.229053755115862, - 6.838719423247291, - 1.6735109145218159, - 0.09525147204741025, - 5.633274169859272, - 1.3874135513253338, - 6.051750045442512, - 3.0353469770448553, - 0.973018917455266, - 8.896447542504344, - 1.1384522783195905, - 2.6157789831409017, - -0.618778332438777, - 1.0481937278251565, - 7.527241486465692, - 0.8439946021650253, - 5.68636813453995, - 1.4273143209321062, - 1.7294988055854636, - 6.401381203699718, - -0.432290068850227, - 1.246765100289748, - 3.8145575498127813, - 14.981223733938906, - 4.3547117742037145, - 9.944575127516327, - 1.0349323282462257, - 2.250865405991169, - 0.3433784534174193, - 2.163676222610197, - 0.14744314604060216, - -0.40229619520916193, - 9.63400358141513, - 2.24932445591205, - 4.057333469835328, - 6.781982108778782, - 10.759073146618778, - 1.3471386356430683, - 0.7646496195873962, - 0.5658228293303318, - 2.2951524342113, - 7.356610396655633, - 5.5637627509143, - 2.9546347896691243, - 8.408626718705081, - 2.720189725548378, - 10.322106818447857, - 0.05575704045468888, - 13.593412969522282, - 9.987294315572047, - 6.039899082718677, - 8.181240813066784, - 7.502746435960094, - 4.064052627696925, - 7.825621809088959, - 7.644107124755398, - 4.713550018087741, - 0.31933532074385657, - 9.292805500080178, - 14.740556336698535, - 3.6480216912856616, - 1.1014840130123558, - 0.8500635875769066, - 2.021668269770731, - 7.69610149606448, - 1.904009068981885, - 2.104071728640031, - 1.4282422725463955, - -0.1542287184063889, - 0.14638362545597935, - 5.600240737714463, - 1.489300874371906, - 1.4954795451515095, - 4.362376402733272, - 0.6213348206282769, - 7.709307418869114, - 2.4904908001412, - 5.555281863940814, - 9.422003092737722, - 2.4254330580864294, - 1.338207062398862, - 17.309342449174437, - 4.700038239212424, - 4.707541074441268, - 3.9882370260199664, - 0.5659620963183319, - 1.5533344686194606, - 0.9200400636616757, - 4.545408300690253, - 9.932720415705845, - 0.6306143094905791, - 4.088178795937608, - 6.679938991496159, - 10.174251422781808, - 11.050052132691514, - 10.79419395285209, - 1.0932824737816762, - 1.1123793072914967, - 10.634001853069048, - 3.342639023519304, - 2.1131210563570484, - 2.4123423916134765, - 3.2635831872750387, - 9.865134367880087, - 15.170521775956992, - 0.9864638070484877, - 5.952277871232277, - -0.22429698968552159, - 10.653426281895236, - 7.078660084260667, - 0.026152308571340682, - 2.4163115686018695, - 6.81506264593537, - 1.753500032982672, - 6.13418577972205, - 7.027036730809288, - 7.239424806847834, - 2.67964625593345, - -0.29242847000262817, - 7.346906185677314, - 7.08512293401148, - 1.1187963156683463, - 5.184519286167036, - 11.681597391550724, - 8.598933157024868, - 6.0189098680206605, - 9.089152432868591, - 8.587613013227351, - 3.6528693345703385, - 1.7021195783648564, - 12.4428409274409, - 6.630439258776994, - 4.7151269165494964, - 0.7293393249272646, - 1.2932899904926258, - 3.9902807973338073, - 5.949867349778937, - 7.200662450178622, - 2.319123516352471, - 1.0725604118217094, - 0.0826444359382778, - 17.617140053944556, - 2.587835772105568, - 9.6534920237235, - 10.266156167544603, - 15.534887826327623, - 4.585755041419343, - 0.36043911405584644, - 9.223885330219982, - 0.2538609094114361, - 5.513051565329957, - 5.3767398542711105, - 1.2188733275402446, - 0.27227752465740784, - 5.957509410035419, - 7.980442801090926, - 1.211856035154864, - 5.842941177649649, - 2.34455830212435, - 1.1150603903826617, - 0.5233138627951399, - 0.014215309483299951, - 4.540614289611321, - 10.09604969691086, - 7.567435602565755, - 9.819981825729077, - 5.1909970978463535, - 1.4552681482097538, - 4.321063824763318, - 4.66780249434247, - 6.498074761940801, - -0.20374752217212186, - 8.654007293669366, - 0.2674051948706437, - 3.6929968178840227, - -0.30886086104336674, - 1.2340808958358562, - 1.4145487256673344, - 2.2274011885945777, - 9.744818442988178, - 0.785235196851721, - 5.865549775035278, - 6.894842119981693, - 7.54866454467063, - 4.28335825443005, - -0.09534686814461035, - 0.34810649511538816, - 2.9850848814314466, - 6.100195736648981, - 1.0072378541569067, - 1.7853915517559302, - 0.2346367486240703, - -0.3610901011561299, - 1.632631753231078, - 3.324277613747201, - 11.038362053887168, - 0.623055074210312, - 2.4529519164172675, - 0.8928873362688777, - 1.0205389396139006, - 0.3147848495708494, - 1.4150212059382248, - 5.297619157667393, - 3.2507613327370932, - 0.3143949242786218, - 19.04654958147302, - 0.9358132860305264, - 6.865095541781097, - 2.0022066056655534, - 3.550165232686205, - 3.6148860820759716, - 0.2893192391838322, - 2.6870295469965573, - 7.6771207410376086, - 2.5997293556522543, - 9.723843473476052, - 19.89695246719818, - 0.7525531876775715, - 2.099322031098568, - 3.640862762636694, - 10.126588712300522, - 1.8965559795552247, - 0.4837995815931926, - 0.38883834760001845, - 3.128238530472426, - 3.0287181157971594, - 5.145528983088213, - 2.9839938774044934, - 5.251659075522024, - 5.981752248331269, - 9.905469616628542, - 8.113039292587432, - 2.389183056858123, - 1.5281421008725755, - 0.7251112401444999, - 5.511232338873529, - 2.5722549478657353, - 2.7598012680987805, - 3.7086949801888873, - 5.028506415538427, - 1.0273216027632337, - 7.909008494881561, - 15.239083103886744, - 12.336183290192066, - 2.6448770290342143, - 2.2983019526159363, - 4.26966015537506, - 19.360679032521865, - 7.620029935403366, - 7.608947235750834, - 0.4578952696239318, - 2.5636303602200265, - 1.2361366208392117, - 2.522278900393948, - -0.07875447360853444, - -0.09820607356546696, - 0.5192230455272994, - 2.0760441107813534, - 10.078478898125562, - 4.026487709074533, - 1.4687740141322216, - 1.6736114150139414, - 0.3284413774117222, - 4.364665831733724, - 8.057701278992917, - 0.6144847987536664, - 2.7175702943333575, - 2.597155363410655, - 0.9061489054095168, - 12.503389183146409, - 4.587884045549208, - 2.149740301840303, - 7.815182602979085, - 10.466311998993257, - 0.05084904692638065, - 0.23193727300348288, - 2.1533483673451492 - ], - "yaxis": "y" - } - ], - "layout": { - "legend": { - "title": { - "text": "Treatment" - }, - "tracegroupgap": 0 - }, - "template": { - "data": { - "bar": [ - { - "error_x": { - "color": "#2a3f5f" - }, - "error_y": { - "color": "#2a3f5f" - }, - "marker": { - "line": { - "color": "#E5ECF6", - "width": 0.5 - }, - "pattern": { - "fillmode": "overlay", - "size": 10, - "solidity": 0.2 - } - }, - "type": "bar" - } - ], - "barpolar": [ - { - "marker": { - "line": { - "color": "#E5ECF6", - "width": 0.5 - }, - "pattern": { - "fillmode": "overlay", - "size": 10, - "solidity": 0.2 - } - }, - "type": "barpolar" - } - ], - "carpet": [ - { - "aaxis": { - "endlinecolor": "#2a3f5f", - "gridcolor": "white", - "linecolor": "white", - "minorgridcolor": "white", - "startlinecolor": "#2a3f5f" - }, - "baxis": { - "endlinecolor": "#2a3f5f", - "gridcolor": "white", - "linecolor": "white", - "minorgridcolor": "white", - "startlinecolor": "#2a3f5f" - }, - "type": "carpet" - } - ], - "choropleth": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "type": "choropleth" - } - ], - "contour": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "colorscale": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ], - "type": "contour" - } - ], - "contourcarpet": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "type": "contourcarpet" - } - ], - "heatmap": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "colorscale": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ], - "type": "heatmap" - } - ], - "heatmapgl": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "colorscale": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ], - "type": "heatmapgl" - } - ], - "histogram": [ - { - "marker": { - "pattern": { - "fillmode": "overlay", - "size": 10, - "solidity": 0.2 - } - }, - "type": "histogram" - } - ], - "histogram2d": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "colorscale": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ], - "type": "histogram2d" - } - ], - "histogram2dcontour": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "colorscale": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ], - "type": "histogram2dcontour" - } - ], - "mesh3d": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "type": "mesh3d" - } - ], - "parcoords": [ - { - "line": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "parcoords" - } - ], - "pie": [ - { - "automargin": true, - "type": "pie" - } - ], - "scatter": [ - { - "fillpattern": { - "fillmode": "overlay", - "size": 10, - "solidity": 0.2 - }, - "type": "scatter" - } - ], - "scatter3d": [ - { - "line": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scatter3d" - } - ], - "scattercarpet": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scattercarpet" - } - ], - "scattergeo": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scattergeo" - } - ], - "scattergl": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scattergl" - } - ], - "scattermapbox": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scattermapbox" - } - ], - "scatterpolar": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scatterpolar" - } - ], - "scatterpolargl": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scatterpolargl" - } - ], - "scatterternary": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scatterternary" - } - ], - "surface": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "colorscale": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ], - "type": "surface" - } - ], - "table": [ - { - "cells": { - "fill": { - "color": "#EBF0F8" - }, - "line": { - "color": "white" - } - }, - "header": { - "fill": { - "color": "#C8D4E3" - }, - "line": { - "color": "white" - } - }, - "type": "table" - } - ] - }, - "layout": { - "annotationdefaults": { - "arrowcolor": "#2a3f5f", - "arrowhead": 0, - "arrowwidth": 1 - }, - "autotypenumbers": "strict", - "coloraxis": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "colorscale": { - "diverging": [ - [ - 0, - "#8e0152" - ], - [ - 0.1, - "#c51b7d" - ], - [ - 0.2, - "#de77ae" - ], - [ - 0.3, - "#f1b6da" - ], - [ - 0.4, - "#fde0ef" - ], - [ - 0.5, - "#f7f7f7" - ], - [ - 0.6, - "#e6f5d0" - ], - [ - 0.7, - "#b8e186" - ], - [ - 0.8, - "#7fbc41" - ], - [ - 0.9, - "#4d9221" - ], - [ - 1, - "#276419" - ] - ], - "sequential": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ], - "sequentialminus": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ] - }, - "colorway": [ - "#636efa", - "#EF553B", - "#00cc96", - "#ab63fa", - "#FFA15A", - "#19d3f3", - "#FF6692", - "#B6E880", - "#FF97FF", - "#FECB52" - ], - "font": { - "color": "#2a3f5f" - }, - "geo": { - "bgcolor": "white", - "lakecolor": "white", - "landcolor": "#E5ECF6", - "showlakes": true, - "showland": true, - "subunitcolor": "white" - }, - "hoverlabel": { - "align": "left" - }, - "hovermode": "closest", - "mapbox": { - "style": "light" - }, - "paper_bgcolor": "white", - "plot_bgcolor": "#E5ECF6", - "polar": { - "angularaxis": { - "gridcolor": "white", - "linecolor": "white", - "ticks": "" - }, - "bgcolor": "#E5ECF6", - "radialaxis": { - "gridcolor": "white", - "linecolor": "white", - "ticks": "" - } - }, - "scene": { - "xaxis": { - "backgroundcolor": "#E5ECF6", - "gridcolor": "white", - "gridwidth": 2, - "linecolor": "white", - "showbackground": true, - "ticks": "", - "zerolinecolor": "white" - }, - "yaxis": { - "backgroundcolor": "#E5ECF6", - "gridcolor": "white", - "gridwidth": 2, - "linecolor": "white", - "showbackground": true, - "ticks": "", - "zerolinecolor": "white" - }, - "zaxis": { - "backgroundcolor": "#E5ECF6", - "gridcolor": "white", - "gridwidth": 2, - "linecolor": "white", - "showbackground": true, - "ticks": "", - "zerolinecolor": "white" - } - }, - "shapedefaults": { - "line": { - "color": "#2a3f5f" - } - }, - "ternary": { - "aaxis": { - "gridcolor": "white", - "linecolor": "white", - "ticks": "" - }, - "baxis": { - "gridcolor": "white", - "linecolor": "white", - "ticks": "" - }, - "bgcolor": "#E5ECF6", - "caxis": { - "gridcolor": "white", - "linecolor": "white", - "ticks": "" - } - }, - "title": { - "x": 0.05 - }, - "xaxis": { - "automargin": true, - "gridcolor": "white", - "linecolor": "white", - "ticks": "", - "title": { - "standoff": 15 - }, - "zerolinecolor": "white", - "zerolinewidth": 2 - }, - "yaxis": { - "automargin": true, - "gridcolor": "white", - "linecolor": "white", - "ticks": "", - "title": { - "standoff": 15 - }, - "zerolinecolor": "white", - "zerolinewidth": 2 - } - } - }, - "title": { - "text": "Scatter Plot of Outcome vs. Score by Treatment Status" - }, - "xaxis": { - "anchor": "y", - "domain": [ - 0, - 1 - ], - "title": { - "text": "Score" - } - }, - "yaxis": { - "anchor": "x", - "domain": [ - 0, - 1 - ], - "title": { - "text": "Outcome" - } - } - } - } - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "fig = px.scatter(\n", " x=df['score'],\n", @@ -3121,45 +119,9 @@ }, { "cell_type": "code", - "execution_count": 23, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Call: rdrobust\n", - "Number of Observations: 1000\n", - "Polynomial Order Est. (p): 1\n", - "Polynomial Order Bias (q): 2\n", - "Kernel: Triangular\n", - "Bandwidth Selection: mserd\n", - "Var-Cov Estimator: NN\n", - "\n", - " Left Right\n", - "------------------------------------------------\n", - "Number of Observations 493 507\n", - "Number of Unique Obs. 493 507\n", - "Number of Effective Obs. 291 299\n", - "Bandwidth Estimation 0.78 0.78\n", - "Bandwidth Bias 1.282 1.282\n", - "rho (h/b) 0.608 0.608\n", - "\n", - "Method Coef. S.E. t-stat P>|t| 95% CI \n", - "-------------------------------------------------------------------------\n", - "Conventional 2.407 0.634 3.795 1.475e-04 [1.164, 3.65]\n", - "Robust - - 3.122 1.796e-03 [0.869, 3.802]\n" - ] - }, - { - "data": { - "text/plain": [] - }, - "execution_count": 23, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "rdrobust_sharp_noadj = rdrobust(y=df['y'], x=df['score'], fuzzy=df['d'], c=0.0)\n", "rdrobust_sharp_noadj" @@ -3186,45 +148,9 @@ }, { "cell_type": "code", - "execution_count": 24, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Call: rdrobust\n", - "Number of Observations: 1000\n", - "Polynomial Order Est. (p): 1\n", - "Polynomial Order Bias (q): 2\n", - "Kernel: Triangular\n", - "Bandwidth Selection: mserd\n", - "Var-Cov Estimator: NN\n", - "\n", - " Left Right\n", - "------------------------------------------------\n", - "Number of Observations 493 507\n", - "Number of Unique Obs. 493 507\n", - "Number of Effective Obs. 281 285\n", - "Bandwidth Estimation 0.732 0.732\n", - "Bandwidth Bias 1.22 1.22\n", - "rho (h/b) 0.6 0.6\n", - "\n", - "Method Coef. S.E. t-stat P>|t| 95% CI \n", - "-------------------------------------------------------------------------\n", - "Conventional 2.207 0.433 5.099 3.416e-07 [1.359, 3.056]\n", - "Robust - - 4.311 1.629e-05 [1.189, 3.172]\n" - ] - }, - { - "data": { - "text/plain": [] - }, - "execution_count": 24, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "rdrobust_sharp = rdrobust(y=df['y'], x=df['score'], fuzzy=df['d'], covs=df[cov_names], c=0.0)\n", "rdrobust_sharp" @@ -3252,7 +178,7 @@ }, { "cell_type": "code", - "execution_count": 25, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -3268,20 +194,9 @@ }, { "cell_type": "code", - "execution_count": 26, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Method Coef. S.E. t-stat P>|t| 95% CI\n", - "-------------------------------------------------------------------------\n", - "Conventional 2.014 0.103 19.494 1.231e-84 [1.812, 2.217]\n", - "Robust - - 16.872 7.173e-64 [1.779, 2.247]\n" - ] - } - ], + "outputs": [], "source": [ "ml_g = LGBMRegressor(n_estimators=500, learning_rate=0.01, verbose=-1)\n", "\n", @@ -3325,102 +240,9 @@ }, { "cell_type": "code", - "execution_count": 27, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
ydscorex0x1x2
0-0.1835530.00.471435-0.198503-0.193849-0.493426
11.3486220.0-1.1909760.013677-0.630880-0.885832
22.2659291.01.432707-0.2661470.439675-0.051651
39.6945611.0-0.3126520.845241-0.6597550.436764
415.0014031.0-0.7205890.739595-0.7413800.948112
\n", - "
" - ], - "text/plain": [ - " y d score x0 x1 x2\n", - "0 -0.183553 0.0 0.471435 -0.198503 -0.193849 -0.493426\n", - "1 1.348622 0.0 -1.190976 0.013677 -0.630880 -0.885832\n", - "2 2.265929 1.0 1.432707 -0.266147 0.439675 -0.051651\n", - "3 9.694561 1.0 -0.312652 0.845241 -0.659755 0.436764\n", - "4 15.001403 1.0 -0.720589 0.739595 -0.741380 0.948112" - ] - }, - "execution_count": 27, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "np.random.seed(1234)\n", "\n", @@ -3443,2918 +265,9 @@ }, { "cell_type": "code", - "execution_count": 28, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "C:\\Users\\BAQ7040\\AppData\\Roaming\\Python\\Python311\\site-packages\\plotly\\express\\_core.py:1979: FutureWarning:\n", - "\n", - "When grouping with a length-1 list-like, you will need to pass a length-1 tuple to get_group in a future version of pandas. Pass `(name,)` instead of `name` to silence this warning.\n", - "\n" - ] - }, - { - "data": { - "application/vnd.plotly.v1+json": { - "config": { - "plotlyServerURL": "https://plot.ly" - }, - "data": [ - { - "hovertemplate": "Treatment=False
Score=%{x}
Outcome=%{y}", - "legendgroup": "False", - "marker": { - "color": "#636efa", - "symbol": "circle" - }, - "mode": "markers", - "name": "False", - "orientation": "v", - "showlegend": true, - "type": "scatter", - "x": [ - 0.47143516373249306, - -1.1909756947064645, - 0.9919460223426778, - -1.5469055532292402, - -0.6559693441389339, - -0.8971567844396987, - -1.4019732815008439, - -0.10091819994891389, - -0.14461950836938436, - -0.785435211763197, - 0.9849198419098969, - 0.270835848826804, - -0.3447660142546443, - 0.5665336963535724, - -1.2811082751440426, - -1.710715324029529, - -0.20393286610125122, - 0.3937105991386652, - -0.4740208901256851, - -0.05669571649092953, - -0.9161988612665409, - -0.8596682999817407, - -0.22301898188247601, - -0.014752111804594866, - -1.4257947334380214, - -0.5928860038389254, - -0.31956139984023146, - -0.5246273459284702, - 0.7879646831376144, - -0.387886231967176, - -0.08710696996399898, - 1.8638010621325043, - -1.7122739244712557, - -1.2689942560733918, - -0.5040427180819637, - -0.37443660019278063, - -1.5533423394310608, - -0.09443480774144415, - -0.06124629986631457, - -0.7310333425852061, - -0.1708010306976224, - 0.26697323153986774, - -0.36015657086902797, - -1.3379684019509706, - -1.154600965389669, - -1.2680690503770815, - -0.6112816747957622, - -1.3127127065922315, - 1.5727427457558043, - -0.10465157484776595, - -0.7558621756229088, - -0.8811117326479355, - -0.4634193992174632, - -0.7485279533390595, - -0.2598436943633885, - -0.47001481339778667, - -1.5601488888852328, - -0.5407998076498752, - -0.5882267282885189, - 0.26172483967990484, - -0.41327907241887124, - -1.7193166679275491, - -0.5638902404112554, - -0.24672080681888428, - -0.045370411959291965, - -0.704492925529761, - -0.2001718506206763, - -0.48131023935727413, - -0.4256720265205931, - -0.40064420205997625, - -0.42446671286333926, - -1.3718378731166938, - 1.470996579505006, - -0.1665595772769085, - -1.1051915914797859, - 0.029561951937617355, - -0.3014922439465465, - -0.45255766631820826, - -0.3937331661815619, - -0.2048613320814621, - -2.200564435744119, - -0.9984064955184256, - 0.3096639858949537, - 1.850810168972202, - -0.7147453741565917, - 0.20145146638225445, - 1.7430524278808484, - -0.356409207238252, - -0.12139461101379515, - 0.1020797487098907, - -0.2779593857816089, - -0.052165291629840356, - -0.7274143817732619, - -0.5553548562130987, - -0.5019177788520144, - -0.2453604968501647, - -2.5318833133900305, - -0.16371119657423003, - -1.1805528861977703, - -0.8118350520747238, - -2.251213065289845, - -0.14550836017250823, - -0.061147655522904056, - -0.866260054447336, - -1.5237107863092993, - -0.5437403904555086, - -0.11601728545379246, - -0.6908582143577912, - -0.05546876687944298, - -0.24268793363602895, - -0.6289509748030468, - -0.2627338282699097, - -1.9943356434051311, - -0.6587570839399224, - 0.7084741210544878, - 0.4922331098465613, - -0.11489386424404562, - 0.19091532051019103, - -1.8438652086995353, - -0.7578505995039082, - -1.59249315299401, - -0.23102356637828622, - -1.47256655193283, - -0.015838160674877966, - -1.2858104335854346, - 0.7007847957258879, - 0.6697599912207146, - -0.7119035172923535, - -1.8721836112668646, - -0.5562800612192723, - 0.2721639657384405 - ], - "xaxis": "x", - "y": [ - -0.1835525489058031, - 1.3486218401039956, - 0.4411676938396249, - 0.4585860711409128, - -0.3899856239234457, - 0.8914961577507419, - -0.41651759242783837, - 0.08806035597773143, - 1.7908939267943453, - -0.14581384197929406, - -0.5136153229766942, - -0.14978357398012626, - 2.440691459852534, - 0.13616926531694526, - 0.20282808173671818, - 0.821493754710078, - -0.2992694879926443, - -0.3409880513396322, - 1.3364200530683075, - 1.3210536706273739, - -0.07502604670082638, - 2.250307023533512, - -0.030953077101010695, - 0.3624775790859004, - 0.6153874717064401, - 0.06209084779627111, - 0.3231021368979874, - 0.22497260167637093, - 0.4916082218068387, - 0.7039466740923791, - 0.1923276664283496, - 0.27940335629258184, - 0.21645849306063691, - 1.0004089437269108, - 0.44487698164791045, - 0.11936442692347213, - 0.6787831612420692, - 0.6789358057649202, - 1.618984651084493, - -0.5967617898546517, - 1.6520725885832626, - 0.6200601403132633, - 0.7331132023276788, - 1.0359179974705544, - 1.7590213928451695, - 1.0450913975811487, - 0.1183953918038539, - 1.0360663945550246, - 1.2510063032700756, - 1.9233745949318444, - 0.6211616233500779, - 0.37517543140685394, - -0.12756523321898525, - 0.5226603330804618, - 2.2899617239460897, - 1.7029680839076393, - 2.067446896541806, - 0.8433810912004589, - 0.5142775354371905, - -0.17912038210257414, - -0.618778332438777, - 1.0481937278251565, - 1.7294988055854636, - 1.246765100289748, - 1.0349323282462257, - 2.250865405991169, - 0.14744314604060216, - -0.40229619520916193, - 2.24932445591205, - 0.7646496195873962, - 1.1014840130123558, - 0.8500635875769066, - 0.6782697328395315, - -0.1542287184063889, - 1.4954795451515095, - 0.008527384457970084, - 0.6213348206282769, - 0.5659620963183319, - 0.9200400636616757, - 0.6306143094905791, - 1.0932824737816762, - 2.1131210563570484, - -0.49198150408242947, - 0.6459814131494103, - 0.026152308571340682, - 0.5245791129371666, - 0.16988689972629495, - 1.1187963156683463, - 1.2932899904926258, - 0.5085681260628232, - 1.0725604118217094, - 0.0826444359382778, - 0.2538609094114361, - 1.1150603903826617, - 0.5233138627951399, - 0.014215309483299951, - 1.4552681482097538, - -0.20374752217212186, - 0.2674051948706437, - -0.30886086104336674, - 1.2340808958358562, - -0.09534686814461035, - 2.9850848814314466, - -0.3610901011561299, - 0.623055074210312, - 0.8928873362688777, - 0.3147848495708494, - 1.4150212059382248, - 0.3143949242786218, - 2.0022066056655534, - 0.2893192391838322, - 0.7525531876775715, - 0.38883834760001845, - 2.9839938774044934, - 0.1486403718262942, - 0.4219006710464874, - 1.0273216027632337, - -0.14896148702487677, - 0.4578952696239318, - 2.5636303602200265, - 1.2361366208392117, - -0.07875447360853444, - 1.4687740141322216, - 0.3284413774117222, - 0.6144847987536664, - -0.12478320649983757, - 1.0844978616963237, - 2.149740301840303, - 0.05084904692638065, - 0.23193727300348288, - 0.2787166720903948 - ], - "yaxis": "y" - }, - { - "hovertemplate": "Treatment=True
Score=%{x}
Outcome=%{y}", - "legendgroup": "True", - "marker": { - "color": "#EF553B", - "symbol": "circle" - }, - "mode": "markers", - "name": "True", - "orientation": "v", - "showlegend": true, - "type": "scatter", - "x": [ - 1.4327069684260973, - -0.3126518960917129, - -0.7205887333650116, - 0.8871629403077386, - 0.8595884137174165, - -0.6365235044173491, - 0.015696372114428918, - -2.2426849541854055, - 1.150035724719818, - 0.9533241281124304, - -2.0212548201949705, - -0.334077365808097, - 0.002118364683486495, - 0.405453411570191, - 0.2890919409800353, - 1.3211581921293856, - -0.2026463246291819, - 0.19342137647035826, - 0.5534389109567419, - 1.3181515541801367, - -0.4693052847058996, - 0.6755540851223808, - -1.8170272265901968, - -0.1831085401789987, - 1.0589691875711504, - -0.3978402281999914, - 0.3374376536139724, - 1.0475785728927218, - 1.0459382556276653, - 0.8637172916848387, - -0.12209157484767426, - 0.12471295376821585, - -0.32279480560829565, - 0.8416747129961416, - 2.390960515463033, - 0.07619958783723642, - -0.5664459304649568, - 0.036141936684072715, - -2.0749776006900293, - 0.24779219974854666, - -0.1367948332613474, - 0.018289191349219306, - 0.7554139823981354, - 0.2152685809694434, - 0.841008794931391, - -1.4458100770443063, - -0.5482424491868549, - 0.35402033219923795, - -0.03551302527814021, - 0.5657383060625951, - 1.5456588046255575, - -0.9742363337673154, - -0.07034487710410242, - 0.30796885521603423, - -0.20849876310587975, - 1.0338007325554992, - -2.4004536338122957, - 2.0306036208387996, - -1.1426312890227635, - 0.21188338677770105, - 0.7047206243171088, - 0.4620597371620487, - 0.7042282254621743, - 0.5235079678938094, - -0.9262543135302259, - 2.0078429507780005, - 0.2269625418708953, - -1.1526591092509524, - 0.6319794458091295, - 0.0395126866933667, - 0.46439232505089606, - -3.5635166606247353, - 1.3211056154702059, - 0.15263055220453448, - 0.16452954293239852, - -0.4300956908764876, - 0.7673687357524115, - 1.3919861934464073, - 0.07984231300862901, - -0.3999645806965225, - -1.0278505586819058, - -0.5847182112607883, - 0.8165939265478418, - -0.08194705182666534, - 0.5282881452973941, - -1.0689887834801322, - -0.5118813091268151, - 0.2912053597430635, - 0.503591759111203, - 0.2852956847818571, - 0.48428811274975, - 1.3634815124261457, - -0.781105283625392, - -0.4680176663374855, - 1.2245743551261743, - 0.8754755042743244, - -0.4507651031362744, - 0.7491638059190651, - -0.18217541166573417, - 0.6806560043814565, - -1.8184989903916142, - 0.047071635325711084, - 0.3948442093272043, - -0.24843205438084665, - -0.6177066479970167, - -0.682883996449334, - 0.4362576043409168, - -1.703012774113238, - -0.47932400357549726, - -0.2990162929660804, - 0.6941032876787643, - 0.6786296737098565, - 0.2395559950038969, - 0.15122662929444983, - 0.8161272333600409, - 1.8935344675962007, - 0.6396327631937027, - -0.9620288319051914, - -2.0852656421201097, - 1.9302467674655757, - -1.7353488744703927, - 1.2103837049045143, - 0.7974354194278735, - -0.379810784047379, - 0.7025622240016004, - -0.850346271655115, - 1.1768124501049289, - -0.524336102632456, - 0.7009077309156047, - 0.9841880707224154, - -0.12172840866682022, - 2.365768628840039, - 0.4961429262475947, - 0.7965948666649523, - 1.3577972581070583, - -0.8048337241667037, - -2.12362024909293, - -0.33350244043324745, - -0.886719352485378, - 0.33419793089900884, - 0.5367838249027502, - -0.7438303679362013, - -0.3202038822408791, - 0.22598548673375538, - 0.6287758265382943, - 0.18649434877307466, - 0.9524783451091219, - 0.9881375825933089, - -0.07260831396267549, - -0.5506029235634193, - -0.9381526140931042, - -1.2390715625947926, - 0.13968327403129469, - 2.123691888593553, - 0.12227343425882888, - -1.4094317399227687, - 1.4229859527722433, - -2.14785503764361, - -1.347532513457755, - 0.3635645568066484, - 1.2723950785462097, - -1.4495666088633876, - -1.1955237416669708, - -0.591862973147249, - -0.4145048435321895, - 0.2093947875359238, - -1.4731164134656474, - -0.896580615301871, - 1.1043515698603126, - -0.43154951551604476, - -0.16113690824405888, - 0.8891574940728737, - 0.2883768477152654, - -1.0515389375700381, - -0.6199930877212022, - 0.156998376446689, - -0.5714553510797893, - 1.0576331832046142, - -0.7914888094778855, - 0.07187803937036874, - 1.9107594272771828, - 0.5130821444669919, - -0.5464162802735939, - 1.0439446554953231, - 2.10778515279337, - 1.4599274815852936, - 1.0154054578125205, - 0.7491846009241975, - -0.6755214784366882, - 0.4402663916687296, - 0.6889718563269422, - -0.2766461272769873, - 1.92453332001529, - 0.4112040207072239, - 0.8907649561731171, - 0.22636322725170696, - -2.0786178937021753, - 1.126385822137273, - 0.2471117161577363, - 0.1211718053315409, - 0.2989839355420466, - -0.1570991368466517, - -0.7404690227807179, - -1.2476529230512328, - 0.24945521515244942, - 0.5810733206206065, - 2.7638440798495663, - 0.3993254369795763, - 0.6684881692058056, - -0.2757737286563052, - 0.5004829001543722, - 0.8630648605906245, - -1.0516278594652122, - -1.392054077493087, - 1.1539222406122254, - 1.181944105999232, - 0.39137144842193117, - -0.8810470922015694, - 0.2950799597862399, - -1.4070845457432255, - 0.12678118632697175, - 0.0037598477954959237, - -0.8388429214202899, - 0.5539212514397202, - -0.7884401845178787, - 1.5294006744839312, - 0.20545485392597962, - 0.3130131289808603, - 0.8665207121682993, - 0.2990705295943764, - 1.076540643846122, - 0.3631773475444523, - 1.8936798255518426, - -0.48575274428280835, - 0.3876744557775985, - 0.023557610392553562, - -0.6602295020442799, - -0.31868492957801425, - -0.7226621936743727, - 0.17738671938459905, - 0.9835127293431644, - 0.0235045858853947, - 0.553776977863366, - 0.3537692939966397, - -0.27559363376768226, - -0.4904835914786814, - -2.397503976138816, - 1.5410299832779386, - 0.06308453895730506, - -0.28444068392629274, - -1.2656005376012107, - 1.7879796324557498, - -0.35450870806937423, - -0.10476112306710425, - 0.3862536891890525, - 0.8227753737653734, - -0.6837898224310078, - 1.0572033312141293, - 0.03187997356903155, - 1.3431824575289413, - -0.0505396895487724, - -0.3640099563071088, - -0.3192978018201611, - 0.5270464509549642, - 0.7111123993648228, - -0.21754548049047615, - 2.6377912107038637, - -1.7421376305949654, - 1.4311837522545638, - 0.5927584465506688, - 0.170296895326288, - -1.7517059477920245, - 0.2885813223432078, - -0.5425795169067793, - 0.17160238198599498, - 0.9828178292431048, - -0.025348902062768783, - -0.28755244928410806, - 0.9244428673433661, - -1.0227737046951428, - 0.9959929702457525, - 0.955557932627455, - 0.7138407711950433, - 0.13337096219412198, - -0.8070383084728134, - -0.3420107818792151, - 1.9087796580911864, - 0.15592326145312668, - 0.7596525320929627, - -0.42300622841924834, - 0.18167274532368163, - 0.27449257074640343, - 0.06791235738075722, - -0.036982814875919444, - 1.3829972488529256, - -0.022460873511426515, - 0.13139536722591508, - 0.4344371851022324, - 0.2645340683169988, - 0.5656583442738247, - 0.5850842795017246, - -0.17429815275208735, - -1.0713686714550896, - -0.04846050255238326, - -0.8452903895662435, - 0.4151005583815808, - 0.4255305913978583, - -0.9807243575005858, - -0.42782610997202053, - 1.498569955138537, - -0.45824038933749284, - -0.04138653961487197, - 0.8210479561079149, - 2.0978007807716916, - 1.2829332468745234, - 0.2703379257393719, - 1.0031403620449315, - 1.0786735513204067, - 0.34075268512976414, - -0.1980749596235683, - 2.4814584228756535, - 1.3852548761892063, - 0.6078621862094797, - -1.080096483157591, - 0.10203511229233127, - -1.4365739367721186, - 0.21071705250565526, - -0.8969041706975123, - -1.7243930789918331, - 1.7923391966469424, - 0.555877426385625, - -0.6818813054911307, - 1.850397801609901, - -0.3333504267494006, - 0.1934642338198724, - -0.49674493786490903, - 1.0327232157358608, - -1.7398037975225593, - 0.3938922629126754, - -0.9500255347962833, - 0.33250662216224913, - 0.5289444088560467, - -1.120520993992725, - 0.04826420692565666, - 0.06198845052177757, - -1.0275156732178674, - -0.23833536546732603, - 1.9321781695813465, - -0.22663229367683593, - -0.923830720176923, - 0.35583899747282033, - -1.2700634783862885, - -0.19547241269675866, - 0.9894148472858507, - 1.388647381631717, - 1.0877137365241412, - 0.43880126303439065, - -0.961602240881236, - 1.2456099371478462, - 0.5029255176706321, - -0.6313987783785193, - -0.70425204708826, - -0.24048253675834233, - 0.5855993109298576, - 0.35280056010840655, - -1.8155576924320858, - -0.9101238456951419, - -0.10812492648026306, - 0.27477883705216777, - 0.23734976450942513, - -0.31244217715639994, - 0.44850974251240683, - -0.05953196470440051, - 0.3495667716276656, - -1.0274688471736129, - -0.3066384838696108, - 1.4061761394942678, - -1.2496967727943529, - 1.5573976506490226, - -0.5933563949764882, - -0.17028851232950049, - 1.6726268084547062, - -0.6841283287665846, - 0.599962085981993, - -0.2171991251446381, - 0.3315265183521529, - -0.38336458015082797, - -0.781816088073111, - 0.26623740682783636, - 0.2794280245327373, - -1.21962569517377, - -0.7239489167555044, - -1.7347783075439347, - 0.27166078437402447, - 0.09911201694909029, - -0.3630899064372582, - 0.025941713524132055, - -0.5723023507451587, - 1.1055869627971613, - -1.2080155928296474, - -1.3397010399749156, - 2.0751854067317823, - -1.4894097013310104, - -1.1509530656259641, - 0.4190598246739658, - 0.4134052764244962, - 0.7175769325882829, - -0.2427712711003623, - -0.5012681327516669, - -0.6981289789688551, - 1.384580160839074, - -0.2864254139357557, - 0.5000695850282261, - 1.951103236540061, - -0.2783674615930086, - 0.03678625863071046, - 0.44585250626100126, - -1.4103507576806693, - 0.4500013006954749, - 0.5154795307938983, - -1.1540839403826029, - -1.3801733950718382, - -0.4958330052131627, - -0.029560902753084674, - -0.7660398835228289, - 0.09988207650262723, - -0.7130239566297442, - -2.226117620977587, - 0.7257141531219552, - 0.9169762830692352, - -1.5221795568231706, - -0.014278788627562308, - -0.1653294765172792, - 0.11911398259834126, - -2.0749804861700474, - -1.002755217016917, - 0.523546018063799, - 0.8215173089989222, - -0.14874184933286258, - 1.7303155195063402, - 0.22892725550405343, - 1.0927410572908394, - -0.35357152666142744, - -0.03065886493678412, - 1.7114259970115762, - 1.4353870862526215, - -1.167520333241006, - 0.040843424766001724, - 0.36201819567044535, - 0.5725921910432455, - 1.1044602367331493, - 0.75568884284869, - 0.010281457155327522, - 0.22458577076489658, - -1.1347082265682895, - -0.9515209412315562, - -0.12713045607576656, - 0.028944498401123394, - 2.1040773666293053, - 1.5675141434637165, - -0.6242296327908734, - -1.1370615382091245, - -0.9031590369968799, - -1.0972780624190317, - -0.07130920963109931, - -1.3193390866508534, - -0.5600929458770713, - 0.16495455703336395, - -0.6315857879244524, - -0.8670697795627686, - -1.0025626707106647, - 1.2073482032456735, - 1.7119870129859922, - -0.6245894793017125, - -0.21214580398595856, - -1.1935641822743448, - 0.6575858924331783, - 0.20007988155239426, - 1.091259859221752, - -0.48902205827370954, - 1.368220262225958, - 0.8916251175268084, - 0.8375662124501372, - 0.5141447133892467, - -0.050049692409833806, - 0.7439528461648938, - -1.7240502035381267, - 0.0899015732727284, - 0.3227395618852, - -0.37714942561155657, - -0.0002208983015993693, - 1.0501136937792215, - -0.1686991122175147, - 0.7978764964211627, - 0.5525243131579977, - -1.153093261804181, - 1.6415521890288047, - -1.4389778344742428, - 2.0277395138175196, - -1.365317321173664, - 0.07214886239228502, - 0.6131516784246442, - 1.4891664262942452, - 0.22129657503462105, - -1.530892108386614, - 0.801888214216484, - 1.118854972135864, - 1.569548064582847, - 1.4277317710676356, - -0.26641789264219634, - 0.7792145652142417, - -0.10281429468501402, - -0.5864646217583874, - 0.24025265459504974, - -0.9980556587715391, - 0.1911699128232047, - -0.9528030215809088, - 0.7189049215428981, - 0.7646112966882201, - -1.1894434708478612, - -0.5348572637202641, - -0.02159784664665048, - -1.0559463385249355, - 1.0213556589900556, - 1.7096560949798731, - 0.12384201643823771, - 0.28943005670297534, - 0.4144350112798109, - 0.9498579011377821, - 0.5218485421095229, - -1.9692628740518392, - 0.502810027757784, - -0.35442243933376033, - -0.44699048181139484, - -1.1169783859357703, - -0.7882663825810968, - 1.0557521639658634, - -1.3045412108969867, - 0.5397352373427955, - 0.3469912503733692, - 0.8741928933305493, - -1.5751793626207562, - -0.15998365617495094, - -0.643333236166963, - -0.7153708866312951, - 1.699458930621629, - 1.2828372246866984, - 0.3938001271158281, - 0.4257406105857961, - -0.13004743219159512, - -0.6410597741081536, - 0.17196425471545257, - -0.8401490192933458, - 0.8649983085249567, - -0.1070733343325384, - -0.24210668506471908, - -0.9024827749371497, - 0.7978708863196311, - -0.289095787657148, - 0.6769776126657561, - -0.34318403393053737, - 0.4872101346078452, - 0.765665358162811, - -2.5960623967791756, - 0.4756748381165133, - -1.594885645232233, - -1.1100767316660405, - -2.275806602546662, - 1.5528072078665365, - -1.149298768674316, - 0.18853062859763994, - 0.9889637830869817, - -1.5861363032929552, - -0.4723808755437636, - -0.18884634787574245, - 0.21112708032840474, - 1.6117222924558978, - 0.5667304418132302, - -0.6411772534653856, - 1.5387739411600052, - -0.44884868035202796, - 1.769100570312561, - 0.2682004879637708, - -1.4622250619252337, - 1.700769505670963, - 0.3533910559483136, - 0.3364890211021921, - 1.0571054344422781, - 1.1986787224676672, - -2.594654269661883, - 0.8043460416389878, - 1.1916553458718568, - -0.12736538411633605, - -1.0749752659886933, - 1.4482691251839777, - -0.27835427971563803, - -1.0368186639409402, - 0.5017557989907293, - 1.6133349220114617, - -1.8977106282505025, - 1.2990825737762788, - 0.5531844259723022, - -0.20036229600666147, - 0.5456699950930499, - 0.26228661897316985, - 0.21907020968038537, - 0.9323529322684813, - -0.12470367976984963, - 0.9540316671351478, - 0.7120509492248905, - -0.5793366572156923, - -0.7618194555160586, - 1.6615021287437646, - 2.547691702457717, - -0.038912324029113265, - -1.8625686534341959, - 2.6519991181342113, - -0.1362303703563351, - 0.10374933997096626, - 0.11543222568465579, - 0.2586704644560386, - 1.4877433319614572, - 1.4543434763906329, - 0.7043082981680985, - 1.4663513758566715, - 0.3536221825367628, - -1.0855234635679416, - 0.36320976100296887, - -1.813277132405328, - -0.19791075971583402, - 0.4328745920492785, - -0.5405657877076904, - 0.29563065498089497, - 2.0798442368337016, - -1.8424329199610465, - -0.5111660166205718, - -0.58093512839474, - 1.0627364666653065, - 0.01805510965628009, - 0.02279839968937127, - -1.6797914849149362, - 0.8124230006825046, - -0.625888706466102, - -1.2502708184687266, - 0.615135458353951, - -1.2808952713375565, - 0.3246098059252541, - 0.6705693906174532, - 0.1491613231433755, - 0.3270638038828972, - -0.35296169014182177, - -0.9055276404436707, - 1.6761854255764614, - 0.6809960077267706, - -0.7037176105934078, - 1.1950561396844794, - 0.353683601249814, - -0.40831076211055395, - -1.8104296677951879, - -0.9033080622801077, - 1.0540450911893136, - -0.9808768767289832, - 0.35207889140437837, - 0.6659818403106037, - 1.0655015019548215, - -0.22843361310270258, - 0.3644839042458271, - -1.514846657215433, - -0.07526128723722576, - -0.29705808175737614, - -0.24587534038557923, - -0.12794894211963254, - -0.3693106199094617, - -2.6230042844775308, - 2.1158507289245674, - 0.6855615854791441, - -0.15744398471175033, - 1.3812877674130073, - 0.06842655874188228, - 0.31253629248338644, - 0.45425318515036217, - -0.7884718753018505, - -0.06584033431115952, - -1.418479846109691, - -0.1397533402109211, - 0.6931185215037656, - -1.2694318590858544, - -0.2623238551840711, - 2.337598482195056, - -0.7817174376760302, - 0.0800997455382507, - -1.3394111207653079, - 0.4134509638251659, - 0.20445196734865428, - 0.47845329452970037, - 0.02958097097523698, - -0.1824419843989386, - 0.01746667513481011, - 2.054289530002812, - 0.4238146840382535, - -0.955683515590636, - -0.1336742103217792, - -1.077403324709461, - 1.2499025106911574, - 0.5711487534631029, - 0.2970484291574556, - 0.8718652175016266, - 0.6895231987879346, - 1.9845899031898866, - -0.11828188509401265, - 0.9551299189232728, - 1.4704739392964385, - -0.021557883623027695, - 0.7108614710694785, - -1.12610018599184, - -0.3078667459168953, - -0.9618845356398223, - 0.6708259593192185, - 0.06338342659156378, - -0.6567958804642327, - -0.2883631824527201, - -0.21979349574451643, - 0.20024796080692478, - -0.8455002410306656, - 2.6429226847057117, - -0.3337447706635678, - 0.8933687076816909, - 1.288554738453981, - 0.33119818801148354, - -0.07536789810631976, - 1.8560568664485682, - -0.7530412824561289, - -0.34022586976460656, - -0.5509960393063006, - -0.6040373262522097, - 2.1225899596034625, - 0.020305520730884315, - -0.35588838632283426, - -0.9543423107689742, - 1.591464114097166, - 0.0005873380366202194, - -0.4640317318179717, - 0.15487036534807186, - -0.8406493439809086, - 0.010685782511001917, - 0.6754553436625048, - -0.9733422132310651, - 0.8183481023464054, - 1.0389554757038926, - 0.981271848028589, - 0.6166208035641588, - -0.7874870323351537, - 0.020856736754465456, - 0.5993399050363709, - -0.3781952626733465, - 1.983488054493826, - 0.07788802802787388, - 0.4045844144487453, - -0.8490095099068151, - -0.0780897990873757, - -0.5273122406197597, - 1.1069498460085399, - -0.03552991507180546, - -0.9599149837120845, - 0.2685148227050607, - 0.488360812855723, - 0.5868386021149908, - -0.17539274109078976, - -0.433426256842158, - 0.043672011407345696, - -2.368892931279029, - -1.5927211354658712, - -2.441670740242832, - -0.822618318710863, - -0.042268338331824626, - -0.39127020083745107, - 0.23058049991323532, - 0.3285638932885436, - 0.8380485839532836, - -0.9078816127611445, - -0.04174551326063229, - 0.10816425581928157, - -0.5892856890062176, - -0.9849802336244897, - -1.0361773997113255, - 2.039686037158919, - -0.6079835611701924, - 0.866452901845807, - -0.7414694894279271, - -1.470561473204019, - -0.12851239742110507, - -0.16063982952151423, - 1.0771702093251387, - -0.6133974021549207, - -0.711763631312299, - 0.06543853933530658, - -0.42147083331107177, - -0.341216883674434, - 1.3120365067494253, - -1.8229324878347437, - 0.21537592656166116, - -0.6707133283158744, - 0.2597174736789681, - 0.46954942686078716, - 0.51217052768379, - -1.1420202563413573, - 1.265974917971162, - -0.9292300251800608, - 1.001555629245316, - -0.09742149039769883, - -2.119596982319414, - -2.1969217399884924, - 1.122267866057918, - 2.0118420191461803, - 0.30201074703431263, - -0.48966164024190245, - -0.5135490947661565, - -1.0739210599237325, - 2.2035145562945293, - -0.29882845731838414, - 1.3460983256762604, - 0.626820481067724, - -0.06581075463628752, - 0.10997254269648227, - 2.0065611269776644, - 1.0159978401232488, - 0.2923665381528412, - 1.3370321440963355, - -0.24325392379441643, - -0.3389292822418378, - 0.3186160154286117, - 1.3970387291415345, - -0.8798130487131584, - 0.11182047780156927, - 0.4315681264740078, - 1.6137850971757342, - -0.2973845710076038, - 1.638962314523427, - 0.13409659216509714, - 0.17203736635766856, - -1.3650171542843021, - -0.4212656827400207, - 0.8806401486464327, - 0.7577097291811645, - -0.6366050127557136, - -0.3878147409362679, - 0.8896634154552829, - 1.1341571652425653, - 1.7316301950572073, - -0.7055198448961673, - -0.6382100575533082, - 0.8811405230322151, - -0.6532038099890327, - -1.31996590252498, - -0.8187126044465817, - 0.16270221119589887, - -0.5740804187646116, - 0.7436871197925536, - 0.6167126196705511, - 0.9718668340412515, - -0.7356927851492516, - -0.9634637827705722, - 0.45913770322630687, - 0.6562382063047018, - 0.7515034769028561, - 0.9315457527732457, - 0.32753233118239405, - 0.7408138005017622, - -0.8019050477600198 - ], - "xaxis": "x", - "y": [ - 2.265929471529643, - 9.694561155437166, - 15.001403007791444, - 10.748742710522935, - 4.464563054300227, - 4.458606814787848, - 5.720577430325107, - 4.07067774720589, - 1.590658838647819, - 3.8561356439738455, - 13.810615341379208, - 2.7698934669732473, - 3.6652752947892124, - 4.258380402564378, - 3.4246531645049862, - 12.32396548183264, - 8.236964297743414, - 8.460567186562127, - 9.617960664434255, - 8.104539653403087, - 17.09901330545235, - 8.484138990719682, - 10.681717563115276, - 3.001393280247692, - 11.263973781556944, - 3.3413201248723268, - 8.462833084556626, - 10.939603495455666, - 7.399661064524305, - 2.620400631064451, - 5.242739862271615, - 4.010865464260581, - 7.248533468937351, - 3.381320486974768, - 1.8308852277275207, - 4.55686741680098, - 1.51630276636483, - 2.948719095440292, - 7.30264204621881, - 9.600952713627429, - 6.601195519451783, - 3.1942833111391407, - 4.894615192702758, - 5.635183887917489, - 13.036012082261806, - 4.828822090660765, - 2.4365815271131694, - 6.637853691092357, - 8.53838768331626, - 13.221400040211847, - 2.7991157129239728, - 4.397073336490484, - 4.2005707454675845, - 5.835865097197437, - 4.100982661677124, - 15.518747141216663, - 1.3614330070922058, - 0.9412421119534005, - 4.84558565236586, - 7.3429859357301615, - 7.044358420828881, - 4.279050919030776, - 4.661836726142834, - 7.027239323766707, - 4.691120570711789, - 6.2983880594659505, - 3.020013027089809, - 3.238771401281311, - 5.057610475845288, - 1.9338547248594324, - 4.132263189536221, - 8.978379801118601, - 2.5448605324559037, - 3.8272043421838253, - 3.6461745154987355, - 3.7141268554733924, - 3.943333161825477, - 1.5677485344907052, - 16.513337028875252, - 11.516513554272976, - 1.8749519970640258, - 5.245026374790678, - 10.184765679426906, - 5.0282521403687825, - 3.8731537783093266, - 9.526111855670262, - 8.930290760456417, - 13.740174353522601, - 6.255971423541705, - 10.861840580482127, - 3.482434591178435, - 4.160683319935916, - 8.337209995273493, - 2.525660823074181, - 11.758696194494975, - 5.0114814973324, - 9.964967051348433, - 2.3060695154765902, - 5.563853505384101, - 17.628049600932172, - 2.6871766020875216, - 1.5396465065237206, - 2.987991789023849, - 3.839128804311066, - 6.914663671850868, - 3.0532649901547106, - 12.819285172419374, - 3.510958942199201, - 8.90246101383686, - 15.9873797131138, - 6.44432760117919, - 2.7231523458302638, - 13.654564132534047, - 2.6867551361260875, - 1.4447510137167534, - 4.184193644033716, - 2.3123531867413947, - 2.219716094903136, - 2.3552451215543204, - 5.907226338887424, - 9.755776884038891, - 2.207973811762361, - 2.297649078380153, - 9.667867403640276, - 4.0875966628748115, - 3.621094634839108, - 1.7662042158113374, - 3.6172598935433316, - 4.390268193041852, - 2.4763266658009067, - 11.076447482487703, - 2.677127307459024, - 4.521164016793937, - 3.9790615945018963, - 3.8699549823091317, - 6.269105752749612, - 6.681577465665945, - 4.48780277684491, - 2.908206085100257, - 5.007461426415795, - 3.338940416336114, - 4.640072016011472, - 3.1218223722428795, - 9.869888400801477, - 6.307738209931988, - 3.903746274695888, - 3.0856592384183767, - 3.670106787790936, - 6.122887292442154, - 4.952098165720181, - 6.421845648941789, - 7.00091245254906, - 8.294504633413677, - 2.928135017125198, - 17.485468447411897, - 7.531354353045948, - 18.184456808988877, - 10.813496038550449, - 11.227216864967803, - 2.1441758155970394, - 19.011448878519992, - 8.190505279202194, - 14.509762242844465, - 6.046114345093918, - 11.091717008532877, - 3.544852768481243, - 9.866525617443084, - 12.551249053912088, - 14.147775772480772, - 2.654741728524375, - 6.2650647639237524, - 7.308070628222553, - 6.950585492608079, - 2.573817644256974, - 4.423405333839632, - 3.7891548279849387, - 7.628517620276847, - 2.2020926001030663, - 10.418298407825423, - 10.16406881190855, - 8.976670952867433, - 5.134771415941695, - 1.0265758626467236, - 10.618572668452142, - 12.154706893256707, - 2.959084173607903, - 2.5765816250505438, - 3.2033905280772075, - 2.3635302870548887, - 3.500852809076819, - 18.77166976434441, - 11.956913263566697, - 4.433431324550289, - 12.468809201993697, - 11.611429868963665, - 3.863768591178403, - 7.1068830221501, - 7.001435101935673, - 8.369174521358374, - 15.217050945628085, - 13.603820025465769, - 6.658213969381527, - 2.970389713710068, - 12.394596021181313, - 4.348878276341836, - 4.213142860639733, - 14.91323011942871, - 7.9492001745411365, - 3.408500471687419, - 6.2663586180489155, - 3.528396784394658, - 11.496296186991868, - 3.6321862632085935, - 5.607037732401054, - 7.899498460269936, - 15.511067704191701, - 2.560866588137461, - 9.731651246426889, - 11.84023714538772, - 2.8732879832270277, - 4.877125463354467, - 2.695630017314183, - 1.2133795212480423, - 10.231373497595118, - 7.091572264058836, - 3.7324465944061935, - 1.572300015216746, - 2.731916387579277, - 8.17374189569183, - 9.72395855428605, - 2.4875526365435787, - 4.978081921739523, - 2.2771763059744146, - 6.6339700137369, - 8.140580358652747, - 4.640616627035953, - 1.8377549423898605, - 6.342573084839112, - 10.855949418171228, - 4.263313964754971, - 8.04651848454491, - 6.8025687454395705, - 4.3657037465282595, - 3.6977943889433376, - 19.085287142725683, - 3.972984645526237, - 1.642655075425628, - 11.208286605796419, - 3.5840621161906934, - 11.546673655801067, - 11.952633574770253, - 2.39730823672077, - 14.671836195629043, - 8.530659137003743, - 10.141716452962367, - 16.010875697096775, - 5.188713804683356, - 10.716622199946908, - 11.861472590823427, - 1.8039268941832942, - 10.40288304422664, - 3.5002087345455655, - 5.297098100050996, - 3.0747743564141383, - 13.012572481931103, - 3.7846499729219025, - -0.7598574267134771, - 12.424871923769345, - 4.283313579755587, - 4.8146064377234845, - 1.4098298865217036, - 3.947546558909086, - 1.9945304991518857, - 6.546133143596889, - 6.487369383152597, - 16.256389831013333, - 3.7995193097475877, - 4.963357564324481, - 9.199846271814256, - 9.816627223980333, - 3.025112405354149, - 1.6760337811953563, - 9.270906507890658, - 10.851786931249737, - 17.044317060137793, - 3.1073986708814494, - 10.658459208235294, - 8.902449122129982, - 10.958092102214838, - 19.54071816474041, - 9.806679996607661, - 8.301841904208958, - 2.8959520678532464, - 4.833954303426042, - 11.095742608750829, - 1.1760851881807914, - 2.512564357382991, - 4.4968525225538745, - 17.201070405665643, - 11.655181721121407, - 8.458668947695022, - 6.789125404106795, - 9.187651303946337, - 8.090996981895236, - 12.70118691914138, - 7.182585257102322, - 1.8381018734017056, - 3.062039859234129, - 7.095788044645277, - 6.954448421794118, - 4.385438408594497, - 6.590367019049524, - 10.874116064766108, - 7.44274037363752, - 8.225006373432192, - 10.410356026338688, - 8.092928912418811, - 7.2279781627067194, - 3.115857209972452, - 4.695954776025797, - 4.282548417419812, - 14.506884332057322, - 4.224684124764206, - 8.921462959631633, - 3.2777888910561184, - 5.572925949158813, - 14.656807361191017, - 3.218124759032054, - 5.506818285663842, - 0.7123243327064984, - 7.476384536900452, - 6.663232799363023, - 1.4229833078605425, - 4.0366851227981435, - 6.2566415961307165, - 10.72206032966684, - 2.211029639410973, - 3.6637708586232267, - 4.23489477868798, - 6.084959782991081, - 6.258356272014977, - 3.379380966693951, - 3.0993170207247682, - 1.6472462881020162, - 11.264043112573113, - 2.163243668231, - 3.528084599887016, - 2.042943303573523, - 12.68556134281856, - 4.484170364411881, - 3.220181807764813, - 8.142758404508227, - 7.661445440033579, - 14.4752145699751, - 5.145156625312843, - 2.654358669444195, - 13.879051236600745, - 5.099931116909535, - 7.45682004663257, - 5.347351369089084, - 9.141745153929424, - 8.300043464836314, - 5.31576547034449, - 2.139848712789145, - 9.752660083201123, - 4.527300075464674, - 6.897328712791664, - 2.338330865206532, - 5.02936560189911, - 10.322939743368408, - 5.392449167791411, - 3.8839303549256052, - 8.68167101482884, - 4.652898997689499, - 17.917205292427912, - 4.297245511251533, - 9.23135357094443, - 6.493175338396726, - 8.509909377619739, - 1.875745309646252, - 5.531646458900818, - 2.3943898694921013, - 10.781361555333927, - 2.154134614445248, - 8.013136736112866, - 3.568654362308105, - 7.4422908265758725, - 17.227895549922852, - 2.6317679540729095, - 10.558916997021942, - 12.453784287346103, - 3.3062936042446442, - 4.947169977729538, - 12.347672582990297, - 4.282706463206077, - 2.291754437791348, - 9.290154652133618, - 1.5717542687400683, - 3.5201550487419118, - 11.832308202021874, - 5.099030109770507, - 3.082022967226665, - 7.26008928972419, - 3.233861162032418, - 14.394201595285786, - 8.12396657748174, - 10.788541878471024, - 2.439550018809831, - 7.385012991957169, - 3.2595052918257976, - 4.5510943644870325, - 8.683203534724592, - 1.8698190374996018, - 6.289082660734713, - 4.788223873186884, - 3.6330481899665306, - 6.677261752418803, - 1.846964087038559, - 13.645123193561433, - 5.4817511509321575, - 10.313632395816132, - 1.8366444709316732, - 4.140511100668412, - 9.202789285333695, - 2.447011946793957, - 10.73135266063922, - 7.574194175314418, - 1.3505635513390526, - 4.755103062805348, - 3.148671470811746, - 7.496146584414306, - 1.8908363200219356, - 6.133489598125723, - 1.6236894726215128, - 14.997907268596853, - 5.904399986686302, - 10.17983249026187, - 6.4106108238588435, - 11.97078302652149, - 12.186651231469241, - 4.539902667427349, - 3.856974473907083, - 2.0881366955685468, - 3.889966063019122, - 5.112886606965867, - 9.704875635951035, - 10.799089667366115, - 4.702400931420402, - 6.127085315063862, - 5.895177962193958, - 3.805952128761161, - 3.0980465678831446, - 6.34465527074354, - 4.492431190958236, - 5.977163204512254, - 8.562762070357183, - 12.635811069085616, - 2.6299896045787308, - 1.2657470922349159, - 6.942637664055524, - 3.2373690084810773, - 1.9488870521864206, - 3.9231622333029783, - 8.431169321816414, - 7.476758283389479, - 3.6965208088994967, - 10.375372377939263, - 3.348774115542101, - 4.889123861091899, - 11.74636802375234, - 1.6184490045922735, - 5.402157484675704, - 10.116117235217182, - 16.019602135417088, - 11.705763971904398, - 7.299053052365139, - 4.461354743256478, - 7.531671178472615, - 1.582390736608868, - 9.534542269263813, - 1.9596143879565644, - 15.489472594917014, - 5.822830547230848, - 7.499318869571259, - 9.985216608333925, - 10.03270304973028, - 4.083188020683909, - 8.190469660155882, - 2.9821676416870058, - 9.242591839213503, - 9.998569948100528, - 4.729218380691532, - 7.593892036137035, - 1.1470163880823563, - 3.593338126565563, - 1.5426314453879986, - 4.513639508012342, - 10.118913464563223, - 0.5105259430515321, - 15.775099197228867, - 12.05679949241901, - 7.8535085774225974, - 3.8655532959460177, - 3.2977205841009107, - 3.8546112806651625, - 9.993921914076, - 13.662304944150975, - 3.730133386249415, - 6.930689831586816, - 3.833114948129331, - 7.843459588109377, - 9.651382866988321, - 4.32487240334703, - 6.9954149907923355, - 3.6732751826267678, - 6.506224292866517, - 2.836830831794468, - 4.3174584761957835, - 2.2745894543814305, - 1.3672812791732438, - 7.07526394073255, - 4.003455411724395, - 6.252880061722262, - 4.156564963752937, - 5.681035169088436, - 12.792242512055923, - 2.9604221983391765, - 2.0462505871181245, - 6.711606376048099, - 4.068431613494066, - 7.858383748838975, - 3.8490213170428658, - 4.580154835089165, - 7.501941096065977, - 10.7780201322668, - 4.067694705027642, - 4.4039593393058425, - 2.6901058328850302, - 3.264179673326793, - 2.3879789571191288, - 3.0930389945578867, - 18.30115733900274, - 6.471707350070127, - 6.680905291971551, - 5.742366537822184, - 2.020899416110505, - 10.207668213067246, - 4.860619789530659, - 2.6754162996313244, - 3.585152771900879, - 5.644030250207612, - 6.374779432437629, - 11.720995085266173, - 9.937184334004515, - 5.590718960449072, - 8.701223834117853, - 11.128463987492674, - 4.587884587512182, - 12.894044239488057, - 3.0462423536527674, - 12.477953973674333, - 2.221756539602425, - 6.228476809017635, - 0.18358528357621517, - 3.4441544833538806, - 10.965190200526736, - 4.980845003123529, - 1.3932772724703333, - 3.272093636010206, - 4.266746562229977, - 7.872279730973945, - 3.8243847518725254, - 10.670256218445862, - 17.284779647497007, - 2.644376105310677, - 4.927058093891117, - 5.30569605379481, - 1.926392403294464, - 7.845102420161203, - 2.982656548934253, - 1.4997244182188925, - 4.7461574093585215, - 2.8483087547703185, - 12.047151352512428, - 3.4880649403573276, - 11.732943752874197, - 6.9813129049237475, - 3.2384593212065633, - 1.9256466820771712, - 5.7124412355837615, - 8.418832968509168, - 2.752751478600281, - 4.171197545881602, - 8.616904364240284, - 6.284160109950633, - 4.1810477059181155, - 7.4242033037320105, - 1.9692343390160645, - 0.7311217267201264, - 6.935912510464833, - 10.787539601288069, - 12.895746374184167, - 9.301229136757724, - 10.965974552589072, - 10.062736049997376, - 4.195976793683249, - 7.098242051931191, - 5.019460485585374, - 4.005491424762978, - 2.5337226893140006, - 1.3647916549187198, - 9.121321684423284, - 1.818136863872882, - 7.744568721567811, - 9.401422362119996, - 5.36004998386494, - 5.590598935913978, - 13.76757142388392, - 17.320957993486164, - 8.091359695868857, - 3.056244034539619, - 11.46875965833262, - 1.0895965516554755, - 2.409659052296855, - 5.310917476297208, - 5.0474420794264265, - 10.065747029572861, - 8.399995484071185, - 5.999303540119944, - 10.570025627681863, - 16.68462394752922, - 10.523661692873938, - 7.319113255288522, - -0.07188241454945812, - 4.120672217814852, - 3.850016635488781, - 14.561860000216683, - 2.7809199910271896, - 11.597484092134568, - 6.473066959556584, - 7.602216633263769, - 6.362604379349993, - 6.265031461356174, - 2.1327429654368624, - 1.9203431272301326, - 5.387341322372937, - 3.294921420620403, - 2.8302969183486257, - 10.377576340374638, - 12.695367528603342, - 8.089813178847363, - 8.618589782571492, - 14.31462998390479, - 6.229088516361773, - 3.6173224162494, - 8.573328912072396, - 14.068835777185974, - 19.519186032954707, - 2.645542358212573, - 11.057659219487391, - 7.116304508486813, - 12.203057597332762, - 4.478951681107789, - 13.201334815401736, - 2.2535400933557805, - 17.589185003221452, - 10.917238694141234, - 5.944176212265241, - 2.914926419776223, - 10.427571072431162, - 7.305542662732612, - 7.136485673917394, - 3.473006149253745, - -0.8948036838159846, - 6.201274413655002, - 4.620054753231987, - 8.522818690465863, - 1.7236331316200588, - 7.381441868078257, - 3.0983349286181285, - 4.8533996369185095, - 9.404158761029409, - 3.199212957368143, - 6.869418523046383, - 4.075155979302653, - 11.3952442006207, - 5.9819054694834, - 11.939881048529529, - 1.2327216484910748, - 9.520996289253404, - 3.5448227286349776, - 11.366415461847787, - 6.393261931006413, - 3.7689547564428887, - 8.039514583666621, - 3.7843861480103103, - 7.333510258233163, - 2.3747919230315953, - 0.8808992404321346, - 16.19267979954547, - 6.045912993968392, - 6.976194046073316, - 7.562195090630139, - 6.800721179390649, - 2.480441393050849, - 10.909191504815636, - 1.729538434904268, - 1.8707473024376742, - 0.6245858936561355, - 10.40459783669121, - 3.3411429792009937, - 11.066438850385445, - 5.808740731181803, - 13.650547610477856, - 2.967127570033277, - 3.816920031069716, - 11.49549251788382, - 8.896877285673233, - 3.838830559941911, - 2.8170253237765004, - 7.634432948206113, - 8.981233283470715, - 1.7326646640660939, - 9.386419189514582, - 1.5785057335161181, - 5.879091645985078, - 5.465699169142491, - 4.433684814922784, - 3.8177536189397165, - 2.4048289956555164, - 10.325611392051856, - 7.6074803442300984, - 3.0375230618436166, - 3.4273699234055215, - 2.572549951305657, - 5.069830743631792, - 7.058062632929908, - 3.4135514271495384, - 4.966608680610329, - 2.915932092366684, - 3.3253092292052147, - 12.436111994293643, - 4.67475873038095, - 3.65708240545015, - 6.37197924529851, - 16.56232837237978, - 2.4184801906818314, - 5.727536425813394, - 2.4067812717509782, - 3.7479395372103377, - 4.357959643164212, - 7.165247823105613, - 3.115714363474604, - 4.554665308156477, - 5.376398009703256, - 4.381187068919068, - 2.0932624617665345, - 5.842986192059503, - 20.390985540233196, - 2.979502069102285, - 8.754246686289934, - 13.775377927488867, - 5.559315982479618, - 5.057133610748745, - 10.52804827793297, - 3.0287108774118243, - 3.9188253218804037, - 4.249590936570091, - 9.05470715769896, - 10.103443000619611, - 1.4257378401352638, - 10.234732460655913, - 18.51017035543307, - 3.742531403422764, - 5.682302063107566, - 12.052165270043073, - 4.2469082705562595, - 3.1962885130444167, - 5.631753203632753, - 3.828289353783408, - 2.3368296936625397, - 13.114802646740193, - 4.6819579463944265, - 4.4347380132450684, - 6.819121063304491, - 5.088701749783405, - 7.159051819363544, - 7.733015419190123, - 7.742955730548548, - 10.542708203338568, - 9.712064503322658, - 4.373533894658112, - 4.301228811426256, - 3.12170971164312, - 2.2179477278952398, - 10.84119574001116, - 7.114318566169389, - 4.096600466653108, - 9.642091012688123, - 3.0947128735013534, - 3.14344292302663, - 5.680906971592573, - 9.285082770663648, - 10.636217269201904, - 3.6790083186093123, - 6.420833606247791, - 5.481767881878449, - 9.402526274613027, - 7.57750145845892, - 17.423540501737804, - 12.111981679281225, - 2.115230798899664, - 2.348768957826344, - 2.758855452517031, - 3.6692564484876717, - 4.077931749222289, - 5.881245329861467, - 20.71532564835613, - 17.34422736518518, - 9.611104553639624, - 0.8589880967324383, - 12.449212352595664, - 8.980197224567005, - 4.8875616041211565, - 8.846735256556087, - 16.957494350302664, - 4.805564824787897, - 8.964989170975489, - 4.2911895405364895, - 1.930967355657544, - 2.1676659305603234, - 0.9233793256699923, - 2.112532122381978, - 6.9371029470728205, - 6.768823511173058, - 2.04085544817848, - 3.670871516056362, - 0.3963597695790085, - 3.6025896704276534, - 9.584272616464322, - 11.15412511310908, - 5.738400719657727, - 13.280705656341217, - 9.155549718844648, - 3.47788305538066, - 6.184206312746015, - 1.6382341393030238, - 2.8484947110270165, - 3.785737569930755, - 9.57791145430953, - 4.21649053438879, - 5.057159291263697, - 4.587668407155297, - 2.229396331836379, - 14.030088066682668, - 4.299912064495803, - 6.197549969436092, - 9.636493224325857, - 11.415592200763612, - 2.91287781057633, - 9.473267442479868, - 12.181693147978782, - 8.420632293781814, - 7.114443764932338, - 3.6829951311847617, - 8.965626018208413, - 10.961085374384197, - 7.950627443018606, - 4.221227283607655 - ], - "yaxis": "y" - } - ], - "layout": { - "legend": { - "title": { - "text": "Treatment" - }, - "tracegroupgap": 0 - }, - "template": { - "data": { - "bar": [ - { - "error_x": { - "color": "#2a3f5f" - }, - "error_y": { - "color": "#2a3f5f" - }, - "marker": { - "line": { - "color": "#E5ECF6", - "width": 0.5 - }, - "pattern": { - "fillmode": "overlay", - "size": 10, - "solidity": 0.2 - } - }, - "type": "bar" - } - ], - "barpolar": [ - { - "marker": { - "line": { - "color": "#E5ECF6", - "width": 0.5 - }, - "pattern": { - "fillmode": "overlay", - "size": 10, - "solidity": 0.2 - } - }, - "type": "barpolar" - } - ], - "carpet": [ - { - "aaxis": { - "endlinecolor": "#2a3f5f", - "gridcolor": "white", - "linecolor": "white", - "minorgridcolor": "white", - "startlinecolor": "#2a3f5f" - }, - "baxis": { - "endlinecolor": "#2a3f5f", - "gridcolor": "white", - "linecolor": "white", - "minorgridcolor": "white", - "startlinecolor": "#2a3f5f" - }, - "type": "carpet" - } - ], - "choropleth": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "type": "choropleth" - } - ], - "contour": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "colorscale": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ], - "type": "contour" - } - ], - "contourcarpet": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "type": "contourcarpet" - } - ], - "heatmap": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "colorscale": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ], - "type": "heatmap" - } - ], - "heatmapgl": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "colorscale": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ], - "type": "heatmapgl" - } - ], - "histogram": [ - { - "marker": { - "pattern": { - "fillmode": "overlay", - "size": 10, - "solidity": 0.2 - } - }, - "type": "histogram" - } - ], - "histogram2d": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "colorscale": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ], - "type": "histogram2d" - } - ], - "histogram2dcontour": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "colorscale": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ], - "type": "histogram2dcontour" - } - ], - "mesh3d": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "type": "mesh3d" - } - ], - "parcoords": [ - { - "line": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "parcoords" - } - ], - "pie": [ - { - "automargin": true, - "type": "pie" - } - ], - "scatter": [ - { - "fillpattern": { - "fillmode": "overlay", - "size": 10, - "solidity": 0.2 - }, - "type": "scatter" - } - ], - "scatter3d": [ - { - "line": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scatter3d" - } - ], - "scattercarpet": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scattercarpet" - } - ], - "scattergeo": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scattergeo" - } - ], - "scattergl": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scattergl" - } - ], - "scattermapbox": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scattermapbox" - } - ], - "scatterpolar": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scatterpolar" - } - ], - "scatterpolargl": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scatterpolargl" - } - ], - "scatterternary": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scatterternary" - } - ], - "surface": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "colorscale": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ], - "type": "surface" - } - ], - "table": [ - { - "cells": { - "fill": { - "color": "#EBF0F8" - }, - "line": { - "color": "white" - } - }, - "header": { - "fill": { - "color": "#C8D4E3" - }, - "line": { - "color": "white" - } - }, - "type": "table" - } - ] - }, - "layout": { - "annotationdefaults": { - "arrowcolor": "#2a3f5f", - "arrowhead": 0, - "arrowwidth": 1 - }, - "autotypenumbers": "strict", - "coloraxis": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "colorscale": { - "diverging": [ - [ - 0, - "#8e0152" - ], - [ - 0.1, - "#c51b7d" - ], - [ - 0.2, - "#de77ae" - ], - [ - 0.3, - "#f1b6da" - ], - [ - 0.4, - "#fde0ef" - ], - [ - 0.5, - "#f7f7f7" - ], - [ - 0.6, - "#e6f5d0" - ], - [ - 0.7, - "#b8e186" - ], - [ - 0.8, - "#7fbc41" - ], - [ - 0.9, - "#4d9221" - ], - [ - 1, - "#276419" - ] - ], - "sequential": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ], - "sequentialminus": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ] - }, - "colorway": [ - "#636efa", - "#EF553B", - "#00cc96", - "#ab63fa", - "#FFA15A", - "#19d3f3", - "#FF6692", - "#B6E880", - "#FF97FF", - "#FECB52" - ], - "font": { - "color": "#2a3f5f" - }, - "geo": { - "bgcolor": "white", - "lakecolor": "white", - "landcolor": "#E5ECF6", - "showlakes": true, - "showland": true, - "subunitcolor": "white" - }, - "hoverlabel": { - "align": "left" - }, - "hovermode": "closest", - "mapbox": { - "style": "light" - }, - "paper_bgcolor": "white", - "plot_bgcolor": "#E5ECF6", - "polar": { - "angularaxis": { - "gridcolor": "white", - "linecolor": "white", - "ticks": "" - }, - "bgcolor": "#E5ECF6", - "radialaxis": { - "gridcolor": "white", - "linecolor": "white", - "ticks": "" - } - }, - "scene": { - "xaxis": { - "backgroundcolor": "#E5ECF6", - "gridcolor": "white", - "gridwidth": 2, - "linecolor": "white", - "showbackground": true, - "ticks": "", - "zerolinecolor": "white" - }, - "yaxis": { - "backgroundcolor": "#E5ECF6", - "gridcolor": "white", - "gridwidth": 2, - "linecolor": "white", - "showbackground": true, - "ticks": "", - "zerolinecolor": "white" - }, - "zaxis": { - "backgroundcolor": "#E5ECF6", - "gridcolor": "white", - "gridwidth": 2, - "linecolor": "white", - "showbackground": true, - "ticks": "", - "zerolinecolor": "white" - } - }, - "shapedefaults": { - "line": { - "color": "#2a3f5f" - } - }, - "ternary": { - "aaxis": { - "gridcolor": "white", - "linecolor": "white", - "ticks": "" - }, - "baxis": { - "gridcolor": "white", - "linecolor": "white", - "ticks": "" - }, - "bgcolor": "#E5ECF6", - "caxis": { - "gridcolor": "white", - "linecolor": "white", - "ticks": "" - } - }, - "title": { - "x": 0.05 - }, - "xaxis": { - "automargin": true, - "gridcolor": "white", - "linecolor": "white", - "ticks": "", - "title": { - "standoff": 15 - }, - "zerolinecolor": "white", - "zerolinewidth": 2 - }, - "yaxis": { - "automargin": true, - "gridcolor": "white", - "linecolor": "white", - "ticks": "", - "title": { - "standoff": 15 - }, - "zerolinecolor": "white", - "zerolinewidth": 2 - } - } - }, - "title": { - "text": "Scatter Plot of Outcome vs. Score by Treatment Status" - }, - "xaxis": { - "anchor": "y", - "domain": [ - 0, - 1 - ], - "title": { - "text": "Score" - } - }, - "yaxis": { - "anchor": "x", - "domain": [ - 0, - 1 - ], - "title": { - "text": "Outcome" - } - } - } - } - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "fig = px.scatter(\n", " x=df['score'],\n", @@ -6390,45 +303,9 @@ }, { "cell_type": "code", - "execution_count": 29, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Call: rdrobust\n", - "Number of Observations: 1000\n", - "Polynomial Order Est. (p): 1\n", - "Polynomial Order Bias (q): 2\n", - "Kernel: Triangular\n", - "Bandwidth Selection: mserd\n", - "Var-Cov Estimator: NN\n", - "\n", - " Left Right\n", - "------------------------------------------------\n", - "Number of Observations 493 507\n", - "Number of Unique Obs. 493 507\n", - "Number of Effective Obs. 213 224\n", - "Bandwidth Estimation 0.542 0.542\n", - "Bandwidth Bias 0.864 0.864\n", - "rho (h/b) 0.628 0.628\n", - "\n", - "Method Coef. S.E. t-stat P>|t| 95% CI \n", - "-------------------------------------------------------------------------\n", - "Conventional 4.64 3.052 1.52 1.285e-01 [-1.343, 10.622]\n", - "Robust - - 1.414 1.575e-01 [-1.952, 12.054]\n" - ] - }, - { - "data": { - "text/plain": [] - }, - "execution_count": 29, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "rdrobust_fuzzy_noadj = rdrobust(y=df['y'], x=df['score'], fuzzy=df['d'], c=0.0)\n", "rdrobust_fuzzy_noadj" @@ -6449,45 +326,9 @@ }, { "cell_type": "code", - "execution_count": 30, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Call: rdrobust\n", - "Number of Observations: 1000\n", - "Polynomial Order Est. (p): 1\n", - "Polynomial Order Bias (q): 2\n", - "Kernel: Triangular\n", - "Bandwidth Selection: mserd\n", - "Var-Cov Estimator: NN\n", - "\n", - " Left Right\n", - "------------------------------------------------\n", - "Number of Observations 493 507\n", - "Number of Unique Obs. 493 507\n", - "Number of Effective Obs. 211 223\n", - "Bandwidth Estimation 0.54 0.54\n", - "Bandwidth Bias 0.88 0.88\n", - "rho (h/b) 0.614 0.614\n", - "\n", - "Method Coef. S.E. t-stat P>|t| 95% CI \n", - "-------------------------------------------------------------------------\n", - "Conventional 2.802 2.326 1.205 2.283e-01 [-1.757, 7.361]\n", - "Robust - - 1.097 2.728e-01 [-2.367, 8.381]\n" - ] - }, - { - "data": { - "text/plain": [] - }, - "execution_count": 30, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "rdrobust_fuzzy = rdrobust(y=df['y'], x=df['score'], fuzzy=df['d'], covs=df[cov_names], c=0.0)\n", "rdrobust_fuzzy" @@ -6523,7 +364,7 @@ }, { "cell_type": "code", - "execution_count": 31, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -6539,20 +380,9 @@ }, { "cell_type": "code", - "execution_count": 32, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Method Coef. S.E. t-stat P>|t| 95% CI\n", - "-------------------------------------------------------------------------\n", - "Conventional 0.979 0.726 1.348 1.777e-01 [-0.445, 2.403]\n", - "Robust - - 0.994 3.201e-01 [-0.831, 2.541]\n" - ] - } - ], + "outputs": [], "source": [ "ml_g = LGBMRegressor(n_estimators=500, learning_rate=0.01, verbose=-1)\n", "ml_m = LGBMClassifier(n_estimators=500, learning_rate=0.01, verbose=-1)\n", @@ -6591,7 +421,7 @@ }, { "cell_type": "code", - "execution_count": 33, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -6604,7 +434,7 @@ }, { "cell_type": "code", - "execution_count": 34, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -6642,20 +472,9 @@ }, { "cell_type": "code", - "execution_count": 35, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Method Coef. S.E. t-stat P>|t| 95% CI\n", - "-------------------------------------------------------------------------\n", - "Conventional 1.876 0.101 18.635 1.676e-77 [1.679, 2.073]\n", - "Robust - - 15.964 2.260e-57 [1.613, 2.064]\n" - ] - } - ], + "outputs": [], "source": [ "rdflex_sharp_stack = RDFlex(dml_data_sharp,\n", " ml_g,\n", @@ -6676,20 +495,9 @@ }, { "cell_type": "code", - "execution_count": 36, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Method Coef. S.E. t-stat P>|t| 95% CI\n", - "-------------------------------------------------------------------------\n", - "Conventional 1.760 0.612 2.878 4.004e-03 [0.561, 2.959]\n", - "Robust - - 2.697 7.004e-03 [0.524, 3.313]\n" - ] - } - ], + "outputs": [], "source": [ "rdflex_fuzzy_stack = RDFlex(dml_data_fuzzy,\n", " ml_g,\n", @@ -6711,7 +519,7 @@ }, { "cell_type": "code", - "execution_count": 37, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -6727,20 +535,9 @@ }, { "cell_type": "code", - "execution_count": 38, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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NcmyZcqUwfLly7Fz5074+vpCrVajdu3aePr0abL79/HxgY2Njebh5OSkr7dCRESU7SX0Rnvx4oXW8hcvXqTYU02pVGrGeEl4EBERmQKjJ91lypTB1atXcf78eQwcOBC9evWCv79/kmVr1aqFnj17onLlymjQoAG2bdsGOzs7LF68ONn9s+WciIjIcFxcXODg4IAjR45oloWFheH8+fMp9mQjIiIyVUa9pxsALC0tUapUKQCAu7s7Ll68iPnz56eYSCfIkSMHqlSpgvv37ydbRqlUQqlU6qy+RERE2d27d++0Ym9AQACuXr0KW1tbFCtWDCNGjMDMmTNRunRpuLi4YPLkyShSpAjatm1rvEoTEREZidGT7k+p1WrExMSkqqxKpcKNGzfQvHlzPdeKiIiIEly6dAmNGjXSPB81ahQAoFevXli5ciXGjRuHiIgIfPPNN3j79i3q1q2L/fv3c5pPIiLKloyadE+YMAHNmjVDsWLFEB4ejnXr1uH48eM4cOAAAKBnz55wdHSEj48PAGD69OmoWbMmSpUqhbdv3+LHH3/Eo0eP0K9fP2O+DSIiomylYcOGEJFk1ysUCkyfPh3Tp083YK2IiIgyJ6Mm3cHBwejZsycCAwNhY2MDNzc3HDhwAE2aNAEAPH78GGZmH247DwkJQf/+/REUFIT8+fPD3d0dZ86cSXbgNSIiIiIiIiJjMmrS/eeff6a4/vjx41rPf/31V/z66696rBERERERERGR7hh99HIiIiIiIiIiU8Wkm4iIiIiIiEhPmHQTERERERER6QmTbiIiIiIiIiI9YdJNREREREREpCdMuomIiIiIiIj0hEk3ERERERERkZ4w6SYiIiIiIiLSEybdRERERERERHrCpJuIiIiIiIhIT5h0ExEREREREekJk24iIiIiIiIiPWHSTURERERERKQnTLqJiIiIiIiI9IRJNxEREREREZGeMOkmIiIiIiIi0hMm3URERERERER6wqSbiIiIiIiISE+YdBMRERERERHpCZNuIiIiIiIiIj1h0k1EREQ6pVKpMHnyZLi4uCBnzpwoWbIkZsyYARExdtWIiIgMzsLYFSAiIiLT8sMPP2DRokVYtWoVypcvj0uXLqFPnz6wsbHBsGHDjF09IiIig2LSTURERDp15swZtGnTBi1atAAAFC9eHOvXr8eFCxeMXDMiIiLDY/dy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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "import matplotlib.pyplot as plt\n", "fig, axes = plt.subplots(nrows=1, ncols=2, figsize=(10, 4))\n", @@ -6775,13 +572,6 @@ "\n", "plt.tight_layout()" ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] } ], "metadata": { From ee970c2c5ea18811379aebdaf260eebc38713d3f Mon Sep 17 00:00:00 2001 From: Oliver Schacht Date: Mon, 18 Nov 2024 19:45:48 +0100 Subject: [PATCH 59/71] small fix --- doc/shared/models/rdd.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/shared/models/rdd.rst b/doc/shared/models/rdd.rst index e2a3233e..56aa78b2 100644 --- a/doc/shared/models/rdd.rst +++ b/doc/shared/models/rdd.rst @@ -1,4 +1,4 @@ -**Regression Discontinuity Designs (RDD)** are causal inference methods used when treatment assignment is determined by a continuous running variable ("score") crossing a known threshold ("cutoff"). These designs exploit discontinuities in the probability of receiving treatment at the cutoff to estimate local treatment effects. RDDs are divided into two main types: **Sharp** and **Fuzzy**. +**Regression Discontinuity Designs (RDD)** are causal inference methods used when treatment assignment is determined by a continuous running variable ("score") crossing a known threshold ("cutoff"). These designs exploit discontinuities in the probability of receiving treatment at the cutoff to estimate the average treatment effect. RDDs are divided into two main types: **Sharp** and **Fuzzy**. The key idea behind RDD is that units just above and just below the threshold are assumed to be comparable, differing only in the treatment assignment. This allows estimating the causal effect at the threshold by comparing outcomes of treated and untreated units. @@ -7,7 +7,7 @@ Our implementation follows work from `Noack, Olma and Rothe (2024) `_.): + To fit into the package syntax, our notation differs as follows from the one used in most standard RDD works (as for example `Cattaneo and Titiunik (2022) `_): - :math:`S_i` the **score** (instead of :math:`X_i`) - :math:`X_i` the **covariates** (instead of :math:`Z_i`) - :math:`D_i` the **treatment received** (in sharp RDD instead of :math:`T_i`) From 078cd009499a6961de1d79c730390f0de4cfbe85 Mon Sep 17 00:00:00 2001 From: Oliver Schacht Date: Tue, 19 Nov 2024 10:43:24 +0100 Subject: [PATCH 60/71] move RDD out of DoubleML section --- doc/api/api.rst | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/doc/api/api.rst b/doc/api/api.rst index 536e3224..5844055a 100644 --- a/doc/api/api.rst +++ b/doc/api/api.rst @@ -37,7 +37,16 @@ Double machine learning models DoubleMLLPQ DoubleMLCVAR DoubleMLQTE - RDFlex + +Other models +------------------------------ +.. currentmodule:: doubleml + +.. autosummary:: + :toctree: generated/ + :template: class.rst + + rdd.RDFlex Datasets module --------------- From 4ec94719dbfb03139a19e0dd3032330dcf980c39 Mon Sep 17 00:00:00 2001 From: Oliver Schacht Date: Tue, 19 Nov 2024 10:43:30 +0100 Subject: [PATCH 61/71] Update example --- doc/examples/py_double_ml_rdflex.ipynb | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/doc/examples/py_double_ml_rdflex.ipynb b/doc/examples/py_double_ml_rdflex.ipynb index 85d5efa0..259f6063 100644 --- a/doc/examples/py_double_ml_rdflex.ipynb +++ b/doc/examples/py_double_ml_rdflex.ipynb @@ -4,7 +4,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "# DoubleML for Flexible Covariate Adjustment in Regression Discontinuity Designs (RDD)\n", + "# Flexible Covariate Adjustment in Regression Discontinuity Designs (RDD)\n", "\n", "This notebook demonstrates how to use RDD designs within ``DoubleML``. Our implementation, ``RDFlex``, is based on the paper _\"Flexible Covariate Adjustments in Regression Discontinuity Designs\"_ by [Noack, Olma and Rothe (2024)](https://arxiv.org/abs/2107.07942). \n", "\n", @@ -45,6 +45,8 @@ "\n", "In the sharp design, the treatment assignment is deterministic given the score. Namely, all the individuals with a score higher than the cutoff, receive the treatment $$D_i = \\mathbb{I}[S_i \\geq c].$$\n", "\n", + "Without loss of generality, for the whole example we consider the cutoff to be normalized to $c=0$ and formulas are given accordingly.\n", + "\n", "### Generate Data\n", "\n", "The function ``make_simple_rdd_data()`` can be used to generate data of a rather standard RDD setting. If we set ``fuzzy = False``, the generated data follows a sharp RDD. We also generate covariates $X$ that can be used to adjust the estimation at a later stage.\n", From b657cdfa271dcf43327e48f010f7897526aedc80 Mon Sep 17 00:00:00 2001 From: Oliver Schacht Date: Tue, 19 Nov 2024 10:43:36 +0100 Subject: [PATCH 62/71] minor corrections --- doc/shared/models/rdd.rst | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/doc/shared/models/rdd.rst b/doc/shared/models/rdd.rst index 56aa78b2..d5b9f9a2 100644 --- a/doc/shared/models/rdd.rst +++ b/doc/shared/models/rdd.rst @@ -139,10 +139,10 @@ with :math:`Y_i(T_i, D_i(T_i))` being the potential outcome under the potential Under similar considerations as in the sharp case, an estimator using flexible covariate adjustment can be derived as: .. math:: - \hat{\theta}(h; \widehat{\eta}_Y, \widehat{\eta}_D) = \frac{\hat{\theta}_Y(h; \widehat{\eta}_Y)}{\hat{\theta}_D(h; \widehat{\eta}_D)} - = \frac{\sum w_{i}(h) (Y_i - \widehat{\eta}_{Y}(X_i))}{\sum w_{i}(h) (T_i - \widehat{\eta}_{D}(X_i))}. + \hat{\theta}(h; \widehat{\eta}_Y, \widehat{\eta}_D) = \frac{\hat{\tau}_Y(h; \widehat{\eta}_Y)}{\hat{\tau}_D(h; \widehat{\eta}_D)} + = \frac{\sum w_{i}(h) (Y_i - \widehat{\eta}_{Y}(X_i))}{\sum w_{i}(h) (T_i - \widehat{\eta}_{D}(X_i))}, -:math:`\eta_Y` and :math:`\eta_D` are defined as in the sharp RDD setting, with the respective outcome. +where :math:`\eta_Y` and :math:`\eta_D` are defined as in the sharp RDD setting, with the respective outcome. ``RDFlex`` implements this fuzzy RDD with flexible covariate adjustment. The indicator ``fuzzy=True`` indicates a fuzzy design. The ``DoubleMLData`` object has to be defined with the arguments: @@ -194,8 +194,10 @@ There are some specialities in the ``RDFlex`` implementation that differ from th 2. **Kernel Selection**: Another crucial decision when estimating with RDD is the kernel determining the weights for observations around the cutoff. For this, the parameters ``fs_kernel`` and ``kernel`` are important. The latter is a key-worded argument and is used in the RDD estimation, while the ``fs_kernel`` specifies the kernel used in the nuisance estimation. By default, both of them are ``triangular``. 3. **Local and Global Learners**: ``RDFlex`` estimates the nuisance functions locally around the cutoff. In certain scenarios, it can be desirable to rather perform a global fit on the full support of the score :math:`S`. For this, the ``Global Learners`` in ``doubleml.utils`` can be used (see our example notebook in the :ref:`Example Gallery `). 4. **First Stage Specifications**: In nuisance estimation, we have to add variable(s) to add information about the location of the observation left or right of the cutoff. Available options are: - - In the default case ``fs_specification="cutoff"``, this is an indicator of whether the observation is left or right - - If ``fs_specification="cutoff and score"``, additionally the score is added. - - In the case of ``fs_specification="interacted cutoff and score"``, also an interaction term of the cutoff indicator and the score is added. + + a. In the default case ``fs_specification="cutoff"``, this is an indicator of whether the observation is left or right + b. If ``fs_specification="cutoff and score"``, additionally the score is added. + c. In the case of ``fs_specification="interacted cutoff and score"``, also an interaction term of the cutoff indicator and the score is added. + 5. **Intention-to-Treat Effects**: Above, we demonstrated how to estimate the ATE at the cutoff in a fuzzy RDD. To estimate an Intention-to-Treat effect instead, the parameter ``fuzzy=False`` can be selected. 6. **Key-worded Arguments**: ``rdrobust`` as the underlying RDD library has additional parameters to tune the estimation. You can use ``**kwargs`` to add them via ``RDFlex``. From d9fe934c513fb3d25cbfbe24e5491648669861d7 Mon Sep 17 00:00:00 2001 From: Sven Klaassen <47529404+SvenKlaassen@users.noreply.github.com> Date: Mon, 25 Nov 2024 09:57:56 +0100 Subject: [PATCH 63/71] fix link to irm model --- doc/examples/py_double_ml_apo.ipynb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/examples/py_double_ml_apo.ipynb b/doc/examples/py_double_ml_apo.ipynb index 6dddaae3..d36d136b 100644 --- a/doc/examples/py_double_ml_apo.ipynb +++ b/doc/examples/py_double_ml_apo.ipynb @@ -6,7 +6,7 @@ "source": [ "# Python: Average Potential Outcome (APO) Models\n", "\n", - "In this example, we illustrate how the [DoubleML](https://docs.doubleml.org/stable/index.html) package can be used to estimate average potential outcomes (APOs) in an interactive regression model (see [DoubleMLIRM](https://docs.doubleml.org/stable/guide/models.html#interactive-regression-models-irm)).\n", + "In this example, we illustrate how the [DoubleML](https://docs.doubleml.org/stable/index.html) package can be used to estimate average potential outcomes (APOs) in an interactive regression model (see [DoubleMLIRM](https://docs.doubleml.org/stable/guide/models.html#binary-interactive-regression-model-irm)).\n", "\n", "The goal is to estimate the average potential outcome\n", "\n", From d9f8acd724ce9ab941ae0b37188e2dd7c3634707 Mon Sep 17 00:00:00 2001 From: Oliver Schacht Date: Mon, 2 Dec 2024 10:29:34 +0100 Subject: [PATCH 64/71] final comments --- doc/examples/py_double_ml_rdflex.ipynb | 46 ++++++++++++++++---------- doc/shared/models/rdd.rst | 37 +++++++++++++-------- 2 files changed, 52 insertions(+), 31 deletions(-) diff --git a/doc/examples/py_double_ml_rdflex.ipynb b/doc/examples/py_double_ml_rdflex.ipynb index 259f6063..f2517305 100644 --- a/doc/examples/py_double_ml_rdflex.ipynb +++ b/doc/examples/py_double_ml_rdflex.ipynb @@ -6,13 +6,13 @@ "source": [ "# Flexible Covariate Adjustment in Regression Discontinuity Designs (RDD)\n", "\n", - "This notebook demonstrates how to use RDD designs within ``DoubleML``. Our implementation, ``RDFlex``, is based on the paper _\"Flexible Covariate Adjustments in Regression Discontinuity Designs\"_ by [Noack, Olma and Rothe (2024)](https://arxiv.org/abs/2107.07942). \n", + "This notebook demonstrates how to use RDD within ``DoubleML``. Our implementation, ``RDFlex``, is based on the paper _\"Flexible Covariate Adjustments in Regression Discontinuity Designs\"_ by [Noack, Olma and Rothe (2024)](https://arxiv.org/abs/2107.07942). \n", "\n", - "In regression discontinuity designs (RDD), treatment assignment is determined by a continuous running variable $S$ (or \"score\") crossing a known threshold $c$ (or \"cutoff\"). We aim to estimate the average treatment effect locally at the cutoff:\n", + "In regression discontinuity designs (RDD), treatment assignment is determined by a continuous running variable $S$ (or \"score\") crossing a known threshold $c$ (or \"cutoff\"). We aim to estimate the average treatment effect locally at the cutoff,\n", "\n", - "$$\\tau_{0} = \\mathbb{E}[Y_i(1)-Y_i(0)\\mid S_i = c].$$\n", + "$$\\tau_{0} = \\mathbb{E}[Y_i(1)-Y_i(0)\\mid S_i = c]$$\n", "\n", - "We therefore assume, that individuals are not able to manipulate their score in the neighborhood of the cutoff and that there is a discontinuity in the outcome that can be explained solely by the score." + "with $Y_i(1)$ and $Y_i(0)$ denoting the potential outcomes of an individual with and without treatment, respectively." ] }, { @@ -47,7 +47,15 @@ "\n", "Without loss of generality, for the whole example we consider the cutoff to be normalized to $c=0$ and formulas are given accordingly.\n", "\n", - "### Generate Data\n", + "In sharp RDD, the treatment effect defined above is identified by\n", + "\n", + "$$\\tau_0 = \\lim_{s \\to c^+} \\mathbb{E}[Y_i \\mid S_i = s] - \\lim_{s \\to c^-} \\mathbb{E}[Y_i \\mid S_i = s].$$\n", + "\n", + "A key assumption for this identification is the **continuity** of the conditional expectations of the potential outcomes $\\mathbb{E}[Y_i(d)\\mid S_i=c]$ for $d \\in \\{0, 1\\}$.\n", + " \n", + "This implies that units cannot perfectly manipulate their score to either receive or avoid treatment exactly at the cutoff.\n", + "\n", + "### Generate Sharp Data\n", "\n", "The function ``make_simple_rdd_data()`` can be used to generate data of a rather standard RDD setting. If we set ``fuzzy = False``, the generated data follows a sharp RDD. We also generate covariates $X$ that can be used to adjust the estimation at a later stage.\n", "By default, the cutoff is normalized to ``c = 0``. The true RDD effect can be controlled by ``tau`` and is set to a value of $2.0$ in this example." @@ -108,7 +116,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### RDD without Adjustment\n", + "### Sharp RDD Without Adjustment\n", "\n", "The standard RDD estimator for the sharp design takes the form \n", "\n", @@ -133,7 +141,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### RDD with Linear Adjustment\n", + "### Sharp RDD with Linear Adjustment\n", "\n", "The linearly adjusted RDD estimator for the sharp design takes the form \n", "\n", @@ -162,7 +170,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### RDD with flexible adjustment\n", + "### Sharp RDD with Flexible Adjustment\n", "\n", "[Noack, Olma and Rothe (2024)](https://arxiv.org/abs/2107.07942) propose an estimator that reduces the variance of the above esimator, using a flexible adjustment of the outcome by machine learning. For more details, see our [User Guide](https://docs.doubleml.org/stable/guide/models.html). The estimator here takes the form \n", "\n", @@ -219,7 +227,7 @@ "source": [ "It is visible that the flexible adjustment decreases the standard error in the estimation and therefore provides tighter confidence intervals. For coverage simulations, see the [DoubleML Coverage Repository](https://docs.doubleml.org/doubleml-coverage/dev/rdd/rdd.html).\n", "\n", - "`RDFlex` uses a iterative fitting approach to determine a preliminary bandwidth selections for the local adjustments. The default number of iterations is `n_iterations=2`, according to [Noack, Olma and Rothe (2024)](https://arxiv.org/abs/2107.07942)." + "`RDFlex` uses an iterative fitting approach to determine a preliminary bandwidth selections for the local adjustments. The default number of iterations is `n_iterations=2`, according to [Noack, Olma and Rothe (2024)](https://arxiv.org/abs/2107.07942)." ] }, { @@ -229,13 +237,17 @@ "## Fuzzy RDD\n", "\n", "In the fuzzy RDDs, the treatment assignment is still deterministic given the score $\\left(T_i = \\mathbb{I}[S_i \\geq c]\\right)$.\n", - "However, in the neighborhood of the cutoff, there is a probability of non-complianc. Thus, the treatment received might differ from the assigned one $(D_i \\neq T_i)$ for some units. These observations cause the probability jump of treatment at the cutoff to be smaller than 1 but larger than 0. In other words, around the cutoff there can be treatment randomization on both sides.\n", + "However, in the neighborhood of the cutoff, there is a probability of non-compliance. Thus, the treatment received might differ from the assigned one $(D_i \\neq T_i)$ for some units. These observations cause the jump in the probability of treatment at the cutoff to be smaller than 1 but larger than 0. In other words, around the cutoff there can be treatment randomization on both sides.\n", + "\n", + "The parameter of interest in the Fuzzy RDD is the average treatment effect at the cutoff, for all individuals that comply with the assignment\n", + "\n", + "$$\\theta_{0} = \\mathbb{E}[Y_i(1)-Y_i(0)\\mid S_i = c, \\{i\\in \\text{compliers}\\}].$$\n", "\n", - "The parameter of interest in the Fuzzy RDD is the average treatment effect at the cutoff, for all individuals that comply with the assignment:\n", + "This effect can be identified by\n", "\n", - "$$\\theta_{0} = \\mathbb{E}[Y_i(1, 1)-Y_i(0, 0)\\mid S_i = c, \\{i\\in \\text{compliers}\\}]$$\n", + "$$\\theta_{0} = \\frac{\\lim_{s \\to c^+} \\mathbb{E}[Y_i \\mid S_i = s] - \\lim_{s \\to c^-} \\mathbb{E}[Y_i \\mid S_i = s]}{\\lim_{s \\to c^+} \\mathbb{E}[D_i \\mid S_i = s] - \\lim_{s \\to c^-} \\mathbb{E}[D_i \\mid S_i = s]}.$$\n", "\n", - "### Generate Data\n", + "### Generate Fuzzy Data\n", "\n", "The function ``make_simple_rdd_data()`` with ``fuzzy = True`` generates basic data for the fuzzy case. The cutoff is still set to $c = 0$ and we set the true effect to be ``tau = 2.0`` again." ] @@ -294,7 +306,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### RDD without Adjustment\n", + "### Fuzzy RDD Without Adjustment\n", "\n", "The standard RDD estimator for the fuzzy design takes the form \n", "\n", @@ -317,7 +329,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### RDD with Linear Adjustment\n", + "### Fuzzy RDD with Linear Adjustment\n", "\n", "The linearly adjusted RDD estimator for the fuzzy design takes the form \n", "\n", @@ -347,7 +359,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### RDD with flexible adjustment\n", + "### Fuzzy RDD with Flexible Adjustment\n", "\n", "[Noack, Olma and Rothe (2024)](https://arxiv.org/abs/2107.07942) propose an estimator that reduces the variance of the above esimator, using a flexible adjustment of the outcome by ML. For more details, see our [User Guide](https://docs.doubleml.org/stable/guide/models.html). The estimator here takes the form \n", "\n", @@ -516,7 +528,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "For a conclusion, we look at a visualization of the estimated coefficient and the confidence intervals. We see that by using the flexible adjustment, it is possible to shrink confidence bands." + "To conclude, we look at a visualization of the estimated coefficient and the confidence intervals. We see that by using the flexible adjustment, it is possible to shrink confidence intervals." ] }, { diff --git a/doc/shared/models/rdd.rst b/doc/shared/models/rdd.rst index d5b9f9a2..9b4adbae 100644 --- a/doc/shared/models/rdd.rst +++ b/doc/shared/models/rdd.rst @@ -18,12 +18,18 @@ Sharp Regression Discontinuity Design In a **Sharp RDD**, the treatment :math:`D_i` is deterministically assigned at the cutoff (:math:`D_i = \mathbb{1}\{S_i \geq c\}`). -Let :math:`S_i` represent the score, and let :math:`c` denote the cutoff point. Further, let :math:`Y_i(1)` and :math:`Y_i(0)` denote the potential outcomes with and without treatment, respectively. Then, the treatment effect at the cutoff is identified as the difference in the conditional expectation of :math:`Y_i` at the cutoff from both sides. +Let :math:`S_i` represent the score, and let :math:`c` denote the cutoff point. Further, let :math:`Y_i(1)` and :math:`Y_i(0)` denote the potential outcomes with and without treatment, respectively. Then, the treatment effect at the cutoff .. math:: \tau_0 = \mathbb{E}[Y_i(1)-Y_i(0)\mid S_i = c] +is identified as the difference in the conditional expectation of :math:`Y_i` at the cutoff from both sides + +.. math:: + + \tau_0 = \lim_{s \to c^+} \mathbb{E}[Y_i \mid S_i = s] - \lim_{s \to c^-} \mathbb{E}[Y_i \mid S_i = s] + The key assumption for identifying this effect in a sharp RDD is: - **Continuity:** The conditional mean of the potential outcomes :math:`\mathbb{E}[Y_i(d)\mid S_i=s]` for :math:`d \in \{0, 1\}` is continuous at the cutoff level :math:`c`. @@ -46,12 +52,12 @@ Under standard conditions, which include that the running variable is continuous If covariates are available, they can be used to improve the accuracy of empirical RD estimates. The most popular strategy is to include them linearly and without kernel localization in the local linear regression. By simple least squares algebra, this "linear adjustment" estimator can be written as a no-covariates estimator with the covariate-adjusted outcome :math:`Y_i - X_i^{\top} \widehat{\gamma}_h`: .. math:: - \widehat{\tau}_{\text{lin}}(h) = \sum w_i(h)\left(Y_i - X_i^{\top} \widehat{\gamma}_h\right). + \widehat{\tau}_{\text{lin}}(h) = \sum_{i=1}^n w_i(h)\left(Y_i - X_i^{\top} \widehat{\gamma}_h\right). Here, :math:`\widehat{\gamma}_h` is the minimizer from the regression .. math:: - \underset{\beta,\gamma}{\mathrm{arg\,min}} \, \sum K_h(S_i) (Y_i - Q_i^\top\beta- X_i^{\top}\gamma )^2, + \underset{\beta,\gamma}{\mathrm{arg\,min}} \, \sum_{i=1}^n K_h(S_i) (Y_i - Q_i^\top\beta- X_i^{\top}\gamma )^2, with :math:`Q_i =(D_i, S_i, D_i S_i, 1)^T` (see ``fs_specification`` in :ref:`Implementation Details `), :math:`K_h(v)=K(v/h)/h` with :math:`K(\cdot)` a kernel function. @@ -60,9 +66,9 @@ If :math:`\mathbb{E}[X_i | S_i = s]` is twice continuously differentiable around As this linear adjustment might not exploit the available covariate information efficiently, DoubleML features an RDD estimator with flexible covariate adjustment based on potentially nonlinear adjustment functions :math:`\eta`. The estimator takes the following form: .. math:: - \widehat{\tau}_{\text{RDFlex}}(h; \eta) = \sum w_i(h) M_i(\eta), \quad M_i(\eta) = Y_i - \eta(X_i). + \widehat{\tau}_{\text{RDFlex}}(h; \eta) = \sum_{i=1}^n w_i(h) M_i(\eta), \quad M_i(\eta) = Y_i - \eta(X_i). -Similar to other algorithms in DoubleML, :math:`\eta` is estimated by ML methods and with crossfitting. Different than in other models, there is no orthogonal score, but a similar global insensitive property holds (for details see `Noack, Olma and Rothe (2024) `_). We adjust the outcome variable by the influence of the covariates. +Similar to other algorithms in DoubleML, :math:`\eta` is estimated by ML methods and with crossfitting. Different than in other models, there is no orthogonal score, but a similar global insensitivity property holds (for details see `Noack, Olma and Rothe (2024) `_). We adjust the outcome variable by the influence of the covariates. This reduces the variance in the estimation potentially even further to: @@ -123,12 +129,17 @@ Fuzzy Regression Discontinuity Design In a **Fuzzy RDD**, treatment assignment :math:`T_i` is identical to the sharp RDD (:math:`T_i = \mathbb{1}\{S_i \geq c\}`), however, compliance is limited around the cutoff which leads to a different treatment received :math:`D_i` than assigned (:math:`D_i \neq T_i`) for some units. -The parameter of interest in the Fuzzy RDD is the average treatment effect at the cutoff, for all individuals that comply with the assignment: +The parameter of interest in the Fuzzy RDD is the average treatment effect at the cutoff, for all individuals that comply with the assignment .. math:: - \theta_{0} = \mathbb{E}[Y_i(1, 1)-Y_i(0, 0)\mid S_i = c, \{i\in \text{compliers}\}] + \theta_{0} = \mathbb{E}[Y_i(1)-Y_i(0)\mid S_i = c, \{i\in \text{compliers}\}] -with :math:`Y_i(T_i, D_i(T_i))` being the potential outcome under the potential treatments. The assumptions for identifying the ATT in a fuzzy RDD are: +with :math:`Y_i(D_i(T_i))` being the potential outcome under the potential treatments. This effect is identified by + +.. math:: + \theta_{0} = \frac{\lim_{s \to c^+} \mathbb{E}[Y_i \mid S_i = s] - \lim_{s \to c^-} \mathbb{E}[Y_i \mid S_i = s]}{\lim_{s \to c^+} \mathbb{E}[D_i \mid S_i = s] - \lim_{s \to c^-} \mathbb{E}[D_i \mid S_i = s]} + + The assumptions for identifying the ATT in a fuzzy RDD are: - **Continuity of Potential Outcomes:** Similar to sharp RDD, the conditional mean of the potential outcomes :math:`\mathbb{E}[Y_i(d)\mid S_i=s]` for :math:`d \in \{0, 1\}` is continuous at the cutoff level :math:`c`. @@ -140,7 +151,7 @@ Under similar considerations as in the sharp case, an estimator using flexible c .. math:: \hat{\theta}(h; \widehat{\eta}_Y, \widehat{\eta}_D) = \frac{\hat{\tau}_Y(h; \widehat{\eta}_Y)}{\hat{\tau}_D(h; \widehat{\eta}_D)} - = \frac{\sum w_{i}(h) (Y_i - \widehat{\eta}_{Y}(X_i))}{\sum w_{i}(h) (T_i - \widehat{\eta}_{D}(X_i))}, + = \frac{\sum_{i=1}^n w_{i}(h) (Y_i - \widehat{\eta}_{Y}(X_i))}{\sum_{i=1}^n w_{i}(h) (T_i - \widehat{\eta}_{D}(X_i))}, where :math:`\eta_Y` and :math:`\eta_D` are defined as in the sharp RDD setting, with the respective outcome. @@ -194,10 +205,8 @@ There are some specialities in the ``RDFlex`` implementation that differ from th 2. **Kernel Selection**: Another crucial decision when estimating with RDD is the kernel determining the weights for observations around the cutoff. For this, the parameters ``fs_kernel`` and ``kernel`` are important. The latter is a key-worded argument and is used in the RDD estimation, while the ``fs_kernel`` specifies the kernel used in the nuisance estimation. By default, both of them are ``triangular``. 3. **Local and Global Learners**: ``RDFlex`` estimates the nuisance functions locally around the cutoff. In certain scenarios, it can be desirable to rather perform a global fit on the full support of the score :math:`S`. For this, the ``Global Learners`` in ``doubleml.utils`` can be used (see our example notebook in the :ref:`Example Gallery `). 4. **First Stage Specifications**: In nuisance estimation, we have to add variable(s) to add information about the location of the observation left or right of the cutoff. Available options are: - - a. In the default case ``fs_specification="cutoff"``, this is an indicator of whether the observation is left or right - b. If ``fs_specification="cutoff and score"``, additionally the score is added. - c. In the case of ``fs_specification="interacted cutoff and score"``, also an interaction term of the cutoff indicator and the score is added. - + In the default case ``fs_specification="cutoff"``, this is an indicator of whether the observation is left or right + If ``fs_specification="cutoff and score"``, additionally the score is added. + In the case of ``fs_specification="interacted cutoff and score"``, also an interaction term of the cutoff indicator and the score is added. 5. **Intention-to-Treat Effects**: Above, we demonstrated how to estimate the ATE at the cutoff in a fuzzy RDD. To estimate an Intention-to-Treat effect instead, the parameter ``fuzzy=False`` can be selected. 6. **Key-worded Arguments**: ``rdrobust`` as the underlying RDD library has additional parameters to tune the estimation. You can use ``**kwargs`` to add them via ``RDFlex``. From 0cbd6c6d42e13cb0658844d0e3080cc4d3bfa757 Mon Sep 17 00:00:00 2001 From: OliverSchacht <65898638+OliverSchacht@users.noreply.github.com> Date: Mon, 2 Dec 2024 12:37:15 +0100 Subject: [PATCH 65/71] Update conf.py --- doc/conf.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/doc/conf.py b/doc/conf.py index 07501881..90686507 100644 --- a/doc/conf.py +++ b/doc/conf.py @@ -201,6 +201,8 @@ 'https://folia.unifr.ch/global/documents/306524', # Valid DOI; Causes 403 Client Error: Forbidden for url:... 'https://doi.org/10.1146/annurev-economics-051520-021409', + # Valdi DOI; Causes 504 Server Error: Gateway Time-out for ... + 'https://doi.org/10.1017/CBO9781139060035.008' ] # To execute R code via jupyter-execute one needs to install the R kernel for jupyter From 58379e208fa6e9b0c237fddfb50e3413ff6dd1a7 Mon Sep 17 00:00:00 2001 From: Oliver Schacht Date: Tue, 3 Dec 2024 13:35:12 +0100 Subject: [PATCH 66/71] fix typos --- doc/shared/models/rdd.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/shared/models/rdd.rst b/doc/shared/models/rdd.rst index 9b4adbae..96d1e75d 100644 --- a/doc/shared/models/rdd.rst +++ b/doc/shared/models/rdd.rst @@ -139,7 +139,7 @@ with :math:`Y_i(D_i(T_i))` being the potential outcome under the potential treat .. math:: \theta_{0} = \frac{\lim_{s \to c^+} \mathbb{E}[Y_i \mid S_i = s] - \lim_{s \to c^-} \mathbb{E}[Y_i \mid S_i = s]}{\lim_{s \to c^+} \mathbb{E}[D_i \mid S_i = s] - \lim_{s \to c^-} \mathbb{E}[D_i \mid S_i = s]} - The assumptions for identifying the ATT in a fuzzy RDD are: +The assumptions for identifying the ATT in a fuzzy RDD are: - **Continuity of Potential Outcomes:** Similar to sharp RDD, the conditional mean of the potential outcomes :math:`\mathbb{E}[Y_i(d)\mid S_i=s]` for :math:`d \in \{0, 1\}` is continuous at the cutoff level :math:`c`. @@ -205,7 +205,7 @@ There are some specialities in the ``RDFlex`` implementation that differ from th 2. **Kernel Selection**: Another crucial decision when estimating with RDD is the kernel determining the weights for observations around the cutoff. For this, the parameters ``fs_kernel`` and ``kernel`` are important. The latter is a key-worded argument and is used in the RDD estimation, while the ``fs_kernel`` specifies the kernel used in the nuisance estimation. By default, both of them are ``triangular``. 3. **Local and Global Learners**: ``RDFlex`` estimates the nuisance functions locally around the cutoff. In certain scenarios, it can be desirable to rather perform a global fit on the full support of the score :math:`S`. For this, the ``Global Learners`` in ``doubleml.utils`` can be used (see our example notebook in the :ref:`Example Gallery `). 4. **First Stage Specifications**: In nuisance estimation, we have to add variable(s) to add information about the location of the observation left or right of the cutoff. Available options are: - In the default case ``fs_specification="cutoff"``, this is an indicator of whether the observation is left or right + In the default case ``fs_specification="cutoff"``, this is an indicator of whether the observation is left or right. If ``fs_specification="cutoff and score"``, additionally the score is added. In the case of ``fs_specification="interacted cutoff and score"``, also an interaction term of the cutoff indicator and the score is added. 5. **Intention-to-Treat Effects**: Above, we demonstrated how to estimate the ATE at the cutoff in a fuzzy RDD. To estimate an Intention-to-Treat effect instead, the parameter ``fuzzy=False`` can be selected. From 6c97f030d7877dc9c79c98fd1820c4ff3a7ca431 Mon Sep 17 00:00:00 2001 From: OliverSchacht <65898638+OliverSchacht@users.noreply.github.com> Date: Sun, 15 Dec 2024 10:23:42 +0100 Subject: [PATCH 67/71] Add Release Notes for DoubleML 0.9.1 --- doc/release/release.rst | 27 ++++++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/doc/release/release.rst b/doc/release/release.rst index a6b384a0..3b292a09 100644 --- a/doc/release/release.rst +++ b/doc/release/release.rst @@ -7,6 +7,31 @@ Release notes .. tab-item:: Python + .. dropdown:: DoubleML 0.9.1 + :class-title: sd-bg-primary sd-font-weight-bold + :open: + + - **Release highlight:** Regression Discontinuity Designs with Flexible Covariate Adjustment + via ``RDFlex`` class (in cooperation with `Claudia Noack `_ + and `Tomasz Olma `_; see `their paper` `_) + `#276 `_ + + - Update User Guide and Example Gallery + `#204 `_ + + - Add ``cov_type=HC0`` and enable key-worded arguments to ``DoubleMLBLP`` + `https://github.com/DoubleML/doubleml-for-py/pull/271`_ + + - Add AutoML example for tuning DoubleML estimators + `https://github.com/DoubleML/doubleml-docs/pull/199`_ + + - Maintainance package + `#268 `_ + + - Maintenance documentation + `#201 `_ + `#203 `_ + .. dropdown:: DoubleML 0.9.0 :class-title: sd-bg-primary sd-font-weight-bold :open: @@ -657,4 +682,4 @@ Release notes .. |br| raw:: html -
\ No newline at end of file +
From fc0968ec0fa75fc5172e0f834893573652cc79fd Mon Sep 17 00:00:00 2001 From: OliverSchacht <65898638+OliverSchacht@users.noreply.github.com> Date: Mon, 16 Dec 2024 13:14:24 +0100 Subject: [PATCH 68/71] Update Release Notes for 0.9.1 --- doc/release/release.rst | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/doc/release/release.rst b/doc/release/release.rst index 3b292a09..5bc4db64 100644 --- a/doc/release/release.rst +++ b/doc/release/release.rst @@ -16,17 +16,20 @@ Release notes and `Tomasz Olma `_; see `their paper` `_) `#276 `_ + - Add ``cov_type=HC0`` and enable key-worded arguments to ``DoubleMLBLP`` + `#270 `_ + `#271 `_ + - Update User Guide and Example Gallery `#204 `_ - - Add ``cov_type=HC0`` and enable key-worded arguments to ``DoubleMLBLP`` - `https://github.com/DoubleML/doubleml-for-py/pull/271`_ - - Add AutoML example for tuning DoubleML estimators - `https://github.com/DoubleML/doubleml-docs/pull/199`_ + `#199 `_ - Maintainance package `#268 `_ + `#278 ` + `#279 ` - Maintenance documentation `#201 `_ From f282fe013f5340c9f46ffb76b0ecec448168eb31 Mon Sep 17 00:00:00 2001 From: OliverSchacht <65898638+OliverSchacht@users.noreply.github.com> Date: Mon, 6 Jan 2025 11:02:49 +0100 Subject: [PATCH 69/71] Update Release Notes for 0.9.1 --- doc/release/release.rst | 2 ++ 1 file changed, 2 insertions(+) diff --git a/doc/release/release.rst b/doc/release/release.rst index 5bc4db64..c2087661 100644 --- a/doc/release/release.rst +++ b/doc/release/release.rst @@ -30,6 +30,8 @@ Release notes `#268 `_ `#278 ` `#279 ` + `#281 ` + `#282 ` - Maintenance documentation `#201 `_ From a9640823bfe8e56767f784036d0e6cb3d988c2c7 Mon Sep 17 00:00:00 2001 From: OliverSchacht <65898638+OliverSchacht@users.noreply.github.com> Date: Mon, 6 Jan 2025 15:22:32 +0100 Subject: [PATCH 70/71] Fix release notes 0.9.1 --- doc/release/release.rst | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/doc/release/release.rst b/doc/release/release.rst index c2087661..36419904 100644 --- a/doc/release/release.rst +++ b/doc/release/release.rst @@ -28,10 +28,10 @@ Release notes - Maintainance package `#268 `_ - `#278 ` - `#279 ` - `#281 ` - `#282 ` + `#278 `_ + `#279 `_ + `#281 `_ + `#282 `_ - Maintenance documentation `#201 `_ From fa8ccd92ed095c0c6df05d4d9fd13c2cff7ec10e Mon Sep 17 00:00:00 2001 From: OliverSchacht <65898638+OliverSchacht@users.noreply.github.com> Date: Mon, 6 Jan 2025 23:13:46 +0100 Subject: [PATCH 71/71] Fix release notes 0.9.1 --- doc/release/release.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/release/release.rst b/doc/release/release.rst index 36419904..6f389a71 100644 --- a/doc/release/release.rst +++ b/doc/release/release.rst @@ -13,7 +13,7 @@ Release notes - **Release highlight:** Regression Discontinuity Designs with Flexible Covariate Adjustment via ``RDFlex`` class (in cooperation with `Claudia Noack `_ - and `Tomasz Olma `_; see `their paper` `_) + and `Tomasz Olma `_; see `their paper `_) `#276 `_ - Add ``cov_type=HC0`` and enable key-worded arguments to ``DoubleMLBLP``