{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Matching Model\n", "To find the expected effect of the intervention on the population, we match each treated individual with one or more untreated individuals which are \"almost the same\" as him or her." ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "from causallib.estimation import IPW, Matching\n", "import matplotlib.pyplot as plt\n", "import seaborn as sb\n", "import pandas as pd\n", "import numpy as np\n", "from causallib.evaluation.metrics import calculate_covariate_balance\n", "from sklearn.linear_model import LogisticRegression\n", "from causallib.preprocessing.transformers import PropensityTransformer, MatchingTransformer\n", "from causallib.datasets import load_nhefs\n", "%matplotlib inline" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Data:\n", "The effect of quitting to smoke on weight loss. \n", "Data example is taken from [Hernan and Robins Causal Inference Book](https://www.hsph.harvard.edu/miguel-hernan/causal-inference-book/)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "When we are looking for nearby data points to match against, the one hot encoding may not be the best choice. Augmented features are also not needed and may introduce bias (eg, if we inlude `age^2`, we will call one pair of subjects more distant in the age variable than another pair if the base age is older, even though the difference is the same ). So we do not augment the continuous variables, and instead of one hot encoding the categorical variables, we binarize them to \"high/low\" values." ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "def binarize(df, column_name):\n", " df = df.copy()\n", " m = df[column_name].median()\n", " def balance(i): return np.abs(0.5 - (df[column_name] < i).sum()/len(df))\n", " mstar = min([m-1, m, m+1], key=balance)\n", " df = df.assign(**{column_name: (df[column_name] < mstar).astype(int)})\n", " df = df.rename(columns={column_name: column_name + f\"<{mstar}\"})\n", " return df\n", "\n", "\n", "def get_matching_data():\n", " data = load_nhefs(onehot=False, augment=False)\n", " data.X = binarize(data.X, \"education\")\n", " data.X = binarize(data.X, \"exercise\")\n", " data.X = binarize(data.X, \"active\")\n", " return data\n", "\n", "\n", "binarized_data = get_matching_data()\n", "X, a, y = binarized_data.X, binarized_data.a, binarized_data.y" ] }, { "cell_type": "code", "execution_count": 3, "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", "
active<1.0ageeducation<3.0exercise<2.0racesexsmokeintensitysmokeyrswt71qsmkwt82_71
01421010302979.040-10.093960
11361100202458.6302.604970
21561011202656.8109.414486
3068101035359.4204.990117
40401100201987.0904.989251
\n", "
" ], "text/plain": [ " active<1.0 age education<3.0 exercise<2.0 race sex smokeintensity \\\n", "0 1 42 1 0 1 0 30 \n", "1 1 36 1 1 0 0 20 \n", "2 1 56 1 0 1 1 20 \n", "3 0 68 1 0 1 0 3 \n", "4 0 40 1 1 0 0 20 \n", "\n", " smokeyrs wt71 qsmk wt82_71 \n", "0 29 79.04 0 -10.093960 \n", "1 24 58.63 0 2.604970 \n", "2 26 56.81 0 9.414486 \n", "3 53 59.42 0 4.990117 \n", "4 19 87.09 0 4.989251 " ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "binarized_data.X.join(binarized_data.a).join(binarized_data.y).head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can run either a Euclidean or a Mahalanobis metric match and predict the individual outcome using `MatchingIndividualOutcomeEstimator`:" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "m_euclid = Matching(metric=\"euclidean\").fit(X, a, y)\n", "m_mahalanobis = Matching(metric=\"mahalanobis\").fit(X, a, y)\n", "Y_euclid = m_euclid.estimate_individual_outcome(X, a)\n", "Y_mahalanobis = m_mahalanobis.estimate_individual_outcome(X, a)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can see that the two metrics lead to very similar results on a population level." ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0 1.712532\n", "1 5.562541\n", "ATE 3.850009\n", "dtype: float64" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "Y_euclid.assign(ATE=Y_euclid[1]-Y_euclid[0]).mean()" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0 1.862848\n", "1 5.084078\n", "ATE 3.221230\n", "dtype: float64" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "Y_mahalanobis.assign(ATE=Y_mahalanobis[1]-Y_mahalanobis[0]).mean()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "If we inspect the individual counterfactuals, we find, as expected that both metrics return the same value for the observed outcome but differ in the unobserved outcome:" ] }, { "cell_type": "code", "execution_count": 7, "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", "
0_euclidean1_euclidean0_mahalanobis1_mahalanobisqsmk
sample_id
270-1.585221-14.515030-1.358036-14.5150301
1231-1.478036-2.152889-1.4780366.3545880
3124.9943845.2146774.9943842.6113780
7478.05255020.9831378.052550-20.7517310
1286-0.4537694.653709-0.4537697.3757470
6602.04448612.5827412.04448621.2076970
9714.7385767.70672914.7385766.9175060
661-14.289883-2.1528893.518181-2.1528891
1097-2.6101776.348855-2.610177-2.7225080
14628.2807033.0580788.2807033.8507030
\n", "
" ], "text/plain": [ " 0_euclidean 1_euclidean 0_mahalanobis 1_mahalanobis qsmk\n", "sample_id \n", "270 -1.585221 -14.515030 -1.358036 -14.515030 1\n", "1231 -1.478036 -2.152889 -1.478036 6.354588 0\n", "312 4.994384 5.214677 4.994384 2.611378 0\n", "747 8.052550 20.983137 8.052550 -20.751731 0\n", "1286 -0.453769 4.653709 -0.453769 7.375747 0\n", "660 2.044486 12.582741 2.044486 21.207697 0\n", "97 14.738576 7.706729 14.738576 6.917506 0\n", "661 -14.289883 -2.152889 3.518181 -2.152889 1\n", "1097 -2.610177 6.348855 -2.610177 -2.722508 0\n", "1462 8.280703 3.058078 8.280703 3.850703 0" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "Y_euclid.join(Y_mahalanobis, lsuffix=\"_euclidean\",\n", " rsuffix=\"_mahalanobis\").join(a).sample(10)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Propensity Matching\n", "\n", "To do propensity score matching, we can supply a transformer that replaces the covariates with a learned propensity model, using a given learner." ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [], "source": [ "propensity_transform = PropensityTransformer(\n", " learner=LogisticRegression(\n", " solver=\"liblinear\",\n", " class_weight=\"balanced\"),\n", " include_covariates=False)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In this case we will want to use the augmented data to improve the accuracy of the propensity model. We can calculate the ATE:" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0 1.726202\n", "1 4.682503\n", "dtype: float64" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "augmented_data = load_nhefs()\n", "X, a, y = augmented_data.X, augmented_data.a, augmented_data.y\n", "matcher = Matching(propensity_transform=propensity_transform)\n", "matcher.fit(X, a, y)\n", "matcher.estimate_population_outcome(X, a)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We have also provided a convenience subclass `PropensityMatching` which makes this common task straightforward:" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0 1.726202\n", "1 4.682503\n", "dtype: float64" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from causallib.estimation import PropensityMatching\n", "\n", "pm = PropensityMatching(learner=LogisticRegression(\n", " solver=\"liblinear\",\n", " class_weight=\"balanced\"))\n", "pm.fit(X, a, y)\n", "pm.estimate_population_outcome(X, a)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Multiple neighbor match (with replacement)\n", "As long as we permit replacement, we can allow multiple neighbors to match. We now check how the number of neighbors impacts the ATE." ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Using 1 neighbors, the effect is: 2.956\n", "Using 2 neighbors, the effect is: 3.189\n", "Using 3 neighbors, the effect is: 3.242\n", "Using 4 neighbors, the effect is: 3.176\n", "Using 5 neighbors, the effect is: 3.211\n", "Using 6 neighbors, the effect is: 3.188\n", "Using 7 neighbors, the effect is: 3.141\n", "Using 8 neighbors, the effect is: 3.196\n", "Using 9 neighbors, the effect is: 3.219\n" ] } ], "source": [ "for n in range(1, 10):\n", " matcher.n_neighbors = n\n", " matcher.fit(X, a, y)\n", " Y = matcher.estimate_population_outcome(X, a)\n", " print(f\"Using {n} neighbors, the effect is: {(Y[1] - Y[0]):.3f}\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Replacement \n", "\n", "Until now, we have executed all of the matching with replacement, meaning that we can select the same treated sample as a match for multiple control samples or vice versa. If we want to only allow each sample to be used once, we must disallow replacement. \n", "\n", "If we mix in-sample and out-of-sample data, we would end up generating different estimated counterfactuals for a set of samples if they were checked all at once compared to if they were checked in subsets. Because of this, we have restricted no-replacement matching to operate on a single dataset only as a `PopulationOutcomeEstimator` called `Matching`." ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [], "source": [ "matcher = Matching(with_replacement=True, propensity_transform=propensity_transform)\n", "matcher.fit(X, a, y)\n", "match_df_with = matcher.match(X, a)\n", "ATE_with_replacement = matcher.estimate_population_outcome(X, a).diff()[1]" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [], "source": [ "matcher = Matching(with_replacement=False, propensity_transform=propensity_transform)\n", "matcher.fit(X, a, y)\n", "match_df_without = matcher.match(X, a)\n", "ATE_without_replacement = matcher.estimate_population_outcome(X, a).diff()[1]" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "With replacement we find:\n", "2.956\n", "Without replacement we find:\n", "3.426\n" ] } ], "source": [ "print(\n", " f\"With replacement we find:\\n{ATE_with_replacement:.3f}\\nWithout replacement we find:\\n{ATE_without_replacement:.3f}\")" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "With IPW we find:\n", "3.490\n", "and the naive estimate is:\n", "2.541\n" ] } ], "source": [ "ipw = IPW(LogisticRegression(solver=\"liblinear\"))\n", "ipw.fit(augmented_data.X, augmented_data.a)\n", "Yipw = ipw.estimate_population_outcome(\n", " augmented_data.X, augmented_data.a, augmented_data.y)\n", "ATE_ipw = Yipw[1] - Yipw[0]\n", "ATE_naive = y[a == 1].mean() - y[a == 0].mean()\n", "\n", "print(\n", " f\"With IPW we find:\\n{ATE_ipw:.3f}\\nand the naive estimate is:\\n{ATE_naive:.3f}\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Caliper\n", "\n", "Often we want to impose a restriction on the proximity of examples so that we do not permit any match if there is more than a distance $\\kappa$ between the samples. We call this a \"caliper\" and we can see how it impacts the predicted effect here:" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [], "source": [ "caliper = np.logspace(-3, 0, 20)\n", "\n", "\n", "def check_caliper(c, with_replacement=True):\n", " matcher = Matching(propensity_transform=propensity_transform,\n", " caliper=c, with_replacement=with_replacement)\n", " matcher.fit(augmented_data.X, augmented_data.a, augmented_data.y)\n", " Y = matcher.estimate_population_outcome(\n", " augmented_data.X, augmented_data.a,)\n", " p = matcher.samples_used_.sum() / len(augmented_data.y)\n", " return p, (Y[1] - Y[0])\n", "\n", "\n", "p_with, ATE_with = zip(\n", " *[check_caliper(c, with_replacement=True) for c in caliper])\n", "p_without, ATE_without = zip(\n", " *[check_caliper(c, with_replacement=False) for c in caliper])" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAA7AAAAF3CAYAAACcz6fnAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8vihELAAAACXBIWXMAAAsTAAALEwEAmpwYAAB9Y0lEQVR4nO3dd3RURRvH8e9mk930AoSE3juhCYIgKk2kihRFEAEpigIqKsWKCogFFF8V6SAIKhZEQAVBQUVFpITeAwSS0BLSk23vHwvBSAmQsim/zzk5u3Pv7L1P9iaZPDtzZwwOh8OBiIiIiIiISD7n5uoARERERERERK6HElgREREREREpEJTAioiIiIiISIGgBFZEREREREQKBCWwIiIiIiIiUiAogRUREREREZECwd3VAdwou92OzaaVf0REJGd4eBhdHUKBp7ZZRERy0rXa5gKXwNpsDuLikl0dhoiIFBLBwX6uDqHAU9ssIiI56Vpts4YQi4iIiIiISIFQ4HpgRURE5OakpaXRt29f0tPTsdlstG/fnpEjR2aqc/LkScaMGUNCQgI2m41nn32WO++800URi4iIZKYEVkREpIgwmUwsWLAAHx8fLBYLffr04Y477qBBgwYZdaZPn06HDh3o06cPBw8eZOjQoaxbt851QYuIiPyLhhCLiIgUEQaDAR8fHwCsVitWqxWDwXBZncTERAASEhIoWbJknscpIiJyNeqBFRERKUJsNhvdu3fn2LFj9OnTh/r162faP3z4cAYNGsSiRYtISUlh3rx5LopURETkcuqBFRERKUKMRiPffvst69evJzw8nP3792fav3LlSu677z42bNjAzJkzGT16NHa73UXRioiIZKYEVkREpAjy9/enadOm/Prrr5m2f/nll3To0AGAhg0bkpaWRmxsrCtCFBERuYwSWBERkSLi3LlzxMfHA5CamsrGjRupXLlypjqlSpXijz/+AODQoUOkpaVRrFixPI9VRETkSnQPrIiISBFx6tQpxo4di81mw+FwcM8999CqVSumTZtG3bp1adOmDWPHjuXFF19k/vz5GAwGJk+efNlETyIiIq5icDgcjtw48Lhx4/jll18oXrw4K1asuGy/w+Fg4sSJrF+/Hk9PTyZPnkydOnWyPK7FYiMuLjk3QhYRkSIoONjP1SEUeGqbRUQkJ12rbc61IcTdu3dn9uzZ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NStZJrB9+0KbNjBwoLM8b55zEicREREREcmfPN09qVOirqvDEMlxWQ4hBvj+e1i71vm8XTto3z63w7o6DVMSEZGcpCHE2ae2WUREclK27oHNb9RIiohITlICm31qm0VEJCddq23OcsXlP/90rgPr6wsmExiNzrVgRURERERERPJSlgns8OGwZAlUq+acwGn2bHjiibwITUREREREROSSLBNYgKpVnbMRG43OyZx++CG3wxIRERERERHJLMtZiL29IT0dGjSA0aOhVCmwa0kpERERERERyWNZ9sAuXOhMWD/4AHx84Phx+OqrvAhNRERERERE5JJrzkJss8HDD8Onn+ZlSNemmQ5FRCQnaRbi7FPbLCIiOemmZyE2GuHoUecQYhERERERERFXyvIe2MqVoUUL6NrVOYT4olGjcjMsERERERERkcyyTGCrVHF+2e2QkJAXIYmIiIiIiIhc7qoJbL9+zgmcAgPhySfzMCIRERERERGRK7jqPbD//AMnT8LcuRAbC+fOZf66Hhs2bKB9+/a0a9eOmTNnXrHOqlWr6NixI506deKZZ565qW9CRERERERECr+r9sA+9hi0aQOHD8Mtt8C/5yo2GJzbr8Vms/Haa68xb948QkJC6NmzJ61bt6Zq1aoZdSIiIpg5cyZLliwhICCAs2fPZvsbEhERERERkcLpqj2wI0fCnj3wyCPOZPXIkUtfWSWvAOHh4VSoUIFy5cphMpno1KkTa9euzVTniy++oG/fvgQEBABQvHjx7H03IiIiIiIiUmhdcxkdgOnTb+7AMTExhIaGZpRDQkKIiYnJVCciIoIjR47Qu3dv7r//fjZs2HBzJxMREREREZFCL8tZiHOTzWbj6NGjLFy4kOjoaB566CG+++47/P39XRmWiIiIiIiI5ENZ9sDerJCQEKKjozPKMTExhISEXFandevWeHh4UK5cOSpWrEhERERuhSQiIiIiIiIFWK4lsGFhYURERHD8+HHS09NZuXIlrVu3zlSnbdu2bNq0CYBz584RERFBuXLlciskERERERERKcBybQixu7s7L7/8MoMHD8Zms9GjRw+qVavGtGnTqFu3Lm3atKFly5b8/vvvdOzYEaPRyOjRowkKCsqtkERERERERKQAMzgc/14gJ/+zWGzExSW7OgwRESkkgoP9XB1Cgae2WUREctK12uZcG0IsIiIiIiIikpOUwIqIiIiIiEiBoARWRERERERECgQlsCIiIiIiIlIgKIEVERERERGRAkEJrIiIiIiIiBQISmBFRERERESkQFACKyIiIiIiIgWCElgREREREREpEJTAioiIiIiISIGgBFZEREREREQKBHdXByAiIiJ5IyoqitGjR3P27FkMBgP3338//fv3z1QnISGB5557jpMnT2Kz2XjkkUfo0aOHiyIWERHJTAmsiIhIEWE0Ghk7dix16tQhMTGRHj160KJFC6pWrZpR59NPP6VKlSp8/PHHnDt3jnvuuYcuXbpgMplcGLmIiIiThhCLiIgUESVLlqROnToA+Pr6UrlyZWJiYjLVMRgMJCUl4XA4SEpKIiAgAHd3fd4tIiL5g1okERGRIigyMpI9e/ZQv379TNv79u3LsGHDaNmyJUlJSbz77ru4uenzbhERyR/UIomIiBQxSUlJjBw5kueffx5fX99M+3777Tdq1arFr7/+yrJly3jttddITEx0UaQiIiKZKYEVEREpQiwWCyNHjqRLly7cfffdl+3/+uuvufvuuzEYDFSoUIGyZcty+PBhF0QqIiJyOSWwIiIiRYTD4eCFF16gcuXKDBw48Ip1SpUqxR9//AHAmTNnOHLkCGXLls3LMEVERK7K4HA4HK4O4kZYLDbi4pJdHYaIiBQSwcF+rg4hz2zevJm+fftSvXr1jPtaR40axcmTJwF48MEHiYmJYdy4cZw+fRqHw8GQIUO49957r3lctc0iIpKTrtU2K4EVEZEirSglsLlFbbOIiOSka7XNGkIsIiIiIiIiBYISWBERERERESkQlMCKiIiIiIhIgaAEVkRERERERAoEd1cHICIiIiIi18dmsxIbexqrNd3VoYhkm7u7iaCgYIzG609LlcCKiIiIiBQQsbGn8fT0xscnFIPB4OpwRG6aw+EgKSme2NjTlChR6rpfpyHEIiIiIiIFhNWajo+Pv5JXKfAMBgM+Pv43PJpACayIiIiISAGi5FUKi5v5WVYCKyIiIiIieeLAgX388cdvWdZr167lFbcvW/Yl33+/IsfiefHF0Zw4EXlddSdPfp0jRw4D8MknczO2R0WdpF+/+3MspqvZsmUzo0c/levnyQkbNvyS8V4BfPDBe/zzz985cmwlsCIiIiIikicOHNjPH3/8ftOv79atJx06dM6RWA4fPoTNZqdMmbLX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BCWwIoXA119/zWuvvQbAkiVLWLZsmWsDEhERKeLUNovkDndXByAiOevBBx/MkeNYrVbc3fUnQkREJLvUNovkHP0GiORjy5YtY86cORgMBmrUqEGHDh2YPn06FouFwMBA3nnnHUqUKJHpNf/73//w9vZm0KBB9OvXjxo1avD3339js9mYNGkS9erVIzk5mddff50DBw5gtVoZPnw4bdu25euvv2b16tUkJydjt9tZtGiRi75zERGR/Elts4hrKYEVyacOHDjA9OnTWbJkCcWKFSMuLg6DwcAXX3yBwWBg6dKlzJ49m7Fjx17zOKmpqXz77bf8/fffPP/886xYsYKPP/6YZs2a8cYbbxAfH0+vXr1o3rw5ALt372b58uUEBgbmwXcpIiJScKhtFnE9JbAi+dSff/7JPffcQ7FixQAIDAxk3759PP3005w+fZr09HTKli2b5XE6deoEQJMmTUhMTCQ+Pp7ffvuNdevWMXfuXADS0tKIiooCoEWLFmogRURErkBts4jrKYEVKUAmTJjAgAEDaNOmDX/99RcffPBBlq8xGAxXLL///vtUrlw5077t27fj5eWVcwGLiIgUcmqbRfKWZiEWyaeaNWvGDz/8QGxsLABxcXEkJCQQEhICcN2zGa5atQqAzZs34+fnh5+fH7fffjuLFi3C4XAAzqFJIiIicm1qm0VcTz2wIvlUtWrVeOyxx+jXrx9ubm7Url2b4cOH8+STTxIQEEDTpk2JjIzM8jhms5lu3bphtVqZNGkSAI8//jiTJk2ia9eu2O12ypYty4wZM3L7WxIRESnQ1DaLuJ7BcfFjHhEpdPr168fo0aMJCwtzdSgiIiKC2maR7NIQYhERERERESkQ1AMrIiIiIiIiBYJ6YEVERERERKRAUAIrIiIiIiIiBYISWBERERERESkQlMCKiIiIiIhIgaAEVkRERERERAoEJbAiIiIiIiJSIPwf+R6oRLxezmMAAAAASUVORK5CYII=", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "with sb.axes_style(\"dark\") as s:\n", " f, ax = plt.subplots(1, 2, figsize=(16, 6))\n", "\n", " ax[0].semilogx(caliper, p_with, \"blue\", label=\"with replacement\")\n", " ax[0].semilogx(caliper, p_without, \"purple\", label=\"no replacement\")\n", " ax[0].set_ylabel(\"fraction of data matched \", color=\"blue\")\n", " ax[0].legend()\n", " ax[0].set_xlabel(\"caliper\")\n", "\n", " ax[1].semilogx(caliper, ATE_with, \"green\",\n", " label=\"matching (with replacement)\")\n", " ax[1].semilogx(caliper, ATE_without, \"orange\",\n", " label=\"matching (no replacement)\")\n", " ax[1].set_ylabel(\"ATE\", color=\"green\")\n", " ax[1].hlines(xmin=caliper.min(), xmax=caliper.max(),\n", " y=ATE_ipw, ls=\"--\", color=\"green\", label=\"ipw\")\n", " ax[1].hlines(xmin=caliper.min(), xmax=caliper.max(),\n", " y=ATE_naive, ls=\":\", color=\"green\", label=\"naive\")\n", " ax[1].legend(loc=4)\n", " ax[1].set_xlabel(\"caliper\");" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Intermediate results\n", "The `Matching` object implements `IndividualOutcomeEstimator`, specifically the `fit` and `estimate_individual_outcome` methods. Because matching has many uses, `Matching` also outputs a DataFrame of matches and a vector of weights. These can be used for filtering data before applying regression, for example, or for assessing the quality of the covariate balancing (as shown above)." ] }, { "cell_type": "code", "execution_count": 18, "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", "
distancesmatches
match_to_treatmentsample_id
10[][]
1[][]
2[0.00020765596476873815][819]
3[0.0001142785835505089][1564]
4[6.015153572747067e-05][731]
............
01623[][]
1624[][]
1625[][]
1627[0][1627]
1628[2.757121594376688e-05][28]
\n", "

3132 rows × 2 columns

\n", "
" ], "text/plain": [ " distances matches\n", "match_to_treatment sample_id \n", "1 0 [] []\n", " 1 [] []\n", " 2 [0.00020765596476873815] [819]\n", " 3 [0.0001142785835505089] [1564]\n", " 4 [6.015153572747067e-05] [731]\n", "... ... ...\n", "0 1623 [] []\n", " 1624 [] []\n", " 1625 [] []\n", " 1627 [0] [1627]\n", " 1628 [2.757121594376688e-05] [28]\n", "\n", "[3132 rows x 2 columns]" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ "matcher = Matching(with_replacement=False, propensity_transform=propensity_transform)\n", "matcher.fit(X, a, y)\n", "match_df = matcher.match(X, a)\n", "match_df" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The matching DataFrame can be understood in the following way: when sample `sample_id` searched for a match with treatment value `match_to_treatment` it found the samples indexed in `matches` which were located at distances according to the `distances` entry. If `matches` is empty it means `sample_id` had no match in treatment class `match_to_treatment`. This allows us to handle the case with multiple matches, as well as with uneven numbers of matches due to the caliper constraint:" ] }, { "cell_type": "code", "execution_count": 19, "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", "
distancesmatches
match_to_treatmentsample_id
00[0][0]
1[0][1]
2[0][2]
3[0][3]
4[0][4]
............
11623[][]
1624[][]
1625[][]
1627[0.0007702527722480701][1202]
1628[0][1628]
\n", "

3132 rows × 2 columns

\n", "
" ], "text/plain": [ " distances matches\n", "match_to_treatment sample_id \n", "0 0 [0] [0]\n", " 1 [0] [1]\n", " 2 [0] [2]\n", " 3 [0] [3]\n", " 4 [0] [4]\n", "... ... ...\n", "1 1623 [] []\n", " 1624 [] []\n", " 1625 [] []\n", " 1627 [0.0007702527722480701] [1202]\n", " 1628 [0] [1628]\n", "\n", "[3132 rows x 2 columns]" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "matcher = Matching(with_replacement=True, \n", " propensity_transform=propensity_transform, \n", " n_neighbors=3,\n", " caliper=0.001).fit(X, a, y)\n", "match_df_3 = matcher.match(X, a)\n", "match_df_3" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can also output weights which can be useful for comparing with other methods or preparing the data for further processing:\n" ] }, { "cell_type": "code", "execution_count": 20, "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", "
control_to_treatmenttreatment_to_control
00.00.0
10.00.0
21.01.0
31.01.0
41.01.0
.........
16230.00.0
16240.00.0
16250.00.0
16271.01.0
16281.01.0
\n", "

1566 rows × 2 columns

\n", "
" ], "text/plain": [ " control_to_treatment treatment_to_control\n", "0 0.0 0.0\n", "1 0.0 0.0\n", "2 1.0 1.0\n", "3 1.0 1.0\n", "4 1.0 1.0\n", "... ... ...\n", "1623 0.0 0.0\n", "1624 0.0 0.0\n", "1625 0.0 0.0\n", "1627 1.0 1.0\n", "1628 1.0 1.0\n", "\n", "[1566 rows x 2 columns]" ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" } ], "source": [ "weights_df = matcher.matches_to_weights(match_df)\n", "weights_df" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We distinguish between matching from 0 to 1 and from 1 to 0 because in general they are distinct processes which can have different weights. For the case with no replacement the two columns are identical and always only 1 or 0. We see this when we examine the weights obtained with replacement, caliper and 3 neighbors." ] }, { "cell_type": "code", "execution_count": 21, "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", "
control_to_treatmenttreatment_to_control
00.00.000000
11.00.333333
21.00.500000
31.01.000000
41.01.000000
.........
16230.00.000000
16240.00.000000
16250.00.000000
16271.00.500000
16284.01.000000
\n", "

1566 rows × 2 columns

\n", "
" ], "text/plain": [ " control_to_treatment treatment_to_control\n", "0 0.0 0.000000\n", "1 1.0 0.333333\n", "2 1.0 0.500000\n", "3 1.0 1.000000\n", "4 1.0 1.000000\n", "... ... ...\n", "1623 0.0 0.000000\n", "1624 0.0 0.000000\n", "1625 0.0 0.000000\n", "1627 1.0 0.500000\n", "1628 4.0 1.000000\n", "\n", "[1566 rows x 2 columns]" ] }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" } ], "source": [ "weights_df_3 = matcher.matches_to_weights(match_df_3)\n", "weights_df_3" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The columns no longer match because a given treatment sample may be selected multiple times when matched from the set of control samples. Each selection increases its weight. However, if it is one of $n$ chosen samples it is only increased by $1/n$. " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Compare Covariate Balancing with IPW\n", "Using the weights we can compare how well the matching algorithm balances the covariate distributions, compared to IPW. Even though IPW is a population effect estimator and matching is an individual outcome estimator, their results can both be expressed as weights and compared using `calculate_covariate_balance`." ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [], "source": [ "ipw = IPW(LogisticRegression(solver=\"liblinear\"))\n", "ipw.fit(X, a)\n", "ipw_binarized_weights = ipw.compute_weights(X, a)" ] }, { "cell_type": "code", "execution_count": 23, "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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
match_control_to_treatmentmatch_treatment_to_controlipw_binarizedmatch_bothunweighted
covariate
age0.0063420.0410150.0209270.0154000.199560
race0.0252480.0768930.0763690.0014350.125194
sex0.0575550.0000000.0350160.0425190.113323
smokeintensity0.0738080.0137380.0127580.0509380.153345
smokeyrs0.0214220.0437030.0087090.0272420.112470
wt710.1021900.0059270.0142700.0739460.094278
active_10.0513020.0849230.0244930.0600850.018961
active_20.0331990.0117350.0148420.0275920.052327
education_20.0092620.0174620.0001020.0114040.078944
education_30.0279960.0359870.0041270.0112810.033404
education_40.0731580.0266950.0040430.0610200.019122
education_50.0376630.0532540.0340350.0139120.117375
exercise_10.0857420.0356580.0364940.0540280.028168
exercise_20.1098350.0469520.0154960.0688760.040199
age^20.0029320.0454640.0167140.0140430.199300
wt71^20.0946000.0069090.0073290.0716920.090050
smokeintensity^20.0745350.0103930.0131500.0523490.091221
smokeyrs^20.0138920.0445060.0089750.0218900.126614
\n", "
" ], "text/plain": [ " match_control_to_treatment match_treatment_to_control \\\n", "covariate \n", "age 0.006342 0.041015 \n", "race 0.025248 0.076893 \n", "sex 0.057555 0.000000 \n", "smokeintensity 0.073808 0.013738 \n", "smokeyrs 0.021422 0.043703 \n", "wt71 0.102190 0.005927 \n", "active_1 0.051302 0.084923 \n", "active_2 0.033199 0.011735 \n", "education_2 0.009262 0.017462 \n", "education_3 0.027996 0.035987 \n", "education_4 0.073158 0.026695 \n", "education_5 0.037663 0.053254 \n", "exercise_1 0.085742 0.035658 \n", "exercise_2 0.109835 0.046952 \n", "age^2 0.002932 0.045464 \n", "wt71^2 0.094600 0.006909 \n", "smokeintensity^2 0.074535 0.010393 \n", "smokeyrs^2 0.013892 0.044506 \n", "\n", " ipw_binarized match_both unweighted \n", "covariate \n", "age 0.020927 0.015400 0.199560 \n", "race 0.076369 0.001435 0.125194 \n", "sex 0.035016 0.042519 0.113323 \n", "smokeintensity 0.012758 0.050938 0.153345 \n", "smokeyrs 0.008709 0.027242 0.112470 \n", "wt71 0.014270 0.073946 0.094278 \n", "active_1 0.024493 0.060085 0.018961 \n", "active_2 0.014842 0.027592 0.052327 \n", "education_2 0.000102 0.011404 0.078944 \n", "education_3 0.004127 0.011281 0.033404 \n", "education_4 0.004043 0.061020 0.019122 \n", "education_5 0.034035 0.013912 0.117375 \n", "exercise_1 0.036494 0.054028 0.028168 \n", "exercise_2 0.015496 0.068876 0.040199 \n", "age^2 0.016714 0.014043 0.199300 \n", "wt71^2 0.007329 0.071692 0.090050 \n", "smokeintensity^2 0.013150 0.052349 0.091221 \n", "smokeyrs^2 0.008975 0.021890 0.126614 " ] }, "execution_count": 23, "metadata": {}, "output_type": "execute_result" } ], "source": [ "matcher = Matching(with_replacement=True, \n", " propensity_transform=propensity_transform, \n", " caliper=0.01).fit(X, a, y)\n", "match_df = matcher.match(X, a)\n", "weights_df = matcher.matches_to_weights(match_df)\n", "covbal = {}\n", "covbal[\"match_control_to_treatment\"] = calculate_covariate_balance(\n", " X, a, w=weights_df.control_to_treatment)\n", "covbal[\"match_treatment_to_control\"] = calculate_covariate_balance(\n", " X, a, w=weights_df.treatment_to_control)\n", "covbal[\"ipw_binarized\"] = calculate_covariate_balance(\n", " X, a, w=ipw_binarized_weights)\n", "covbal[\"match_both\"] = calculate_covariate_balance(\n", " X, a, w=weights_df.sum(axis=1))\n", "\n", "\n", "for k in covbal:\n", " covbal[k] = covbal[k].drop(\n", " columns=\"unweighted\") if not \"both\" in k else covbal[k]\n", "\n", "covbal_df = pd.concat(covbal, axis=1)\n", "covbal_df.columns = list(covbal.keys()) + [\"unweighted\"]\n", "covbal_df" ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import matplotlib.pyplot as plt\n", "import seaborn as sb\n", "sb.set(\"notebook\")\n", "f, axes = plt.subplots(figsize=(8, 6))\n", "sb.violinplot(data=covbal_df, ax=axes, cut=0)\n", "axes.set_xticklabels(axes.get_xticklabels(), rotation=90);" ] }, { "cell_type": "code", "execution_count": 25, "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "sb.heatmap(data=covbal_df);" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Comparing the results of the IPW weights and the matching weights, we see that while both lead to substantially better weighted covariates, the IPW does a better job in general. In the Lalonde matching notebook, we will show how matching and IPW an be used together to obtain even better covariate distribution balancing." ] } ], "metadata": { "kernelspec": { "display_name": "Python 3.8.10 ('causal')", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.10" }, "vscode": { "interpreter": { "hash": "69f88c614e1e3c90b1e7d1bcdbafb917f9042edfca4477b05464240f7cf41bf5" } } }, "nbformat": 4, "nbformat_minor": 4 }