Newer
Older
{
"cells": [
{
"cell_type": "markdown",
"metadata": {
"toc": true
},
"source": [
"<h1>Table of Contents<span class=\"tocSkip\"></span></h1>\n",
"<div class=\"toc\"><ul class=\"toc-item\"><li><span><a href=\"#Causal-model\" data-toc-modified-id=\"Causal-model-1\"><span class=\"toc-item-num\">1 </span>Causal model</a></span><ul class=\"toc-item\"><li><span><a href=\"#Notes\" data-toc-modified-id=\"Notes-1.1\"><span class=\"toc-item-num\">1.1 </span>Notes</a></span></li></ul></li><li><span><a href=\"#Data-sets\" data-toc-modified-id=\"Data-sets-2\"><span class=\"toc-item-num\">2 </span>Data sets</a></span><ul class=\"toc-item\"><li><span><a href=\"#Synthetic-data-with-unobservables\" data-toc-modified-id=\"Synthetic-data-with-unobservables-2.1\"><span class=\"toc-item-num\">2.1 </span>Synthetic data with unobservables</a></span></li><li><span><a href=\"#Data-without-unobservables\" data-toc-modified-id=\"Data-without-unobservables-2.2\"><span class=\"toc-item-num\">2.2 </span>Data without unobservables</a></span></li></ul></li><li><span><a href=\"#Algorithms\" data-toc-modified-id=\"Algorithms-3\"><span class=\"toc-item-num\">3 </span>Algorithms</a></span><ul class=\"toc-item\"><li><span><a href=\"#Contraction-algorithm\" data-toc-modified-id=\"Contraction-algorithm-3.1\"><span class=\"toc-item-num\">3.1 </span>Contraction algorithm</a></span></li><li><span><a href=\"#Causal-approach---metrics\" data-toc-modified-id=\"Causal-approach---metrics-3.2\"><span class=\"toc-item-num\">3.2 </span>Causal approach - metrics</a></span></li></ul></li><li><span><a href=\"#Performance-comparison\" data-toc-modified-id=\"Performance-comparison-4\"><span class=\"toc-item-num\">4 </span>Performance comparison</a></span><ul class=\"toc-item\"><li><span><a href=\"#With-unobservables-in-the-data\" data-toc-modified-id=\"With-unobservables-in-the-data-4.1\"><span class=\"toc-item-num\">4.1 </span>With unobservables in the data</a></span><ul class=\"toc-item\"><li><span><a href=\"#Predictive-model\" data-toc-modified-id=\"Predictive-model-4.1.1\"><span class=\"toc-item-num\">4.1.1 </span>Predictive model</a></span></li><li><span><a href=\"#Visual-comparison\" data-toc-modified-id=\"Visual-comparison-4.1.2\"><span class=\"toc-item-num\">4.1.2 </span>Visual comparison</a></span></li></ul></li><li><span><a href=\"#Without-unobservables\" data-toc-modified-id=\"Without-unobservables-4.2\"><span class=\"toc-item-num\">4.2 </span>Without unobservables</a></span><ul class=\"toc-item\"><li><span><a href=\"#Predictive-model\" data-toc-modified-id=\"Predictive-model-4.2.1\"><span class=\"toc-item-num\">4.2.1 </span>Predictive model</a></span></li><li><span><a href=\"#Visual-comparison\" data-toc-modified-id=\"Visual-comparison-4.2.2\"><span class=\"toc-item-num\">4.2.2 </span>Visual comparison</a></span></li></ul></li></ul></li></ul></div>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Causal model\n",
"\n",
"Our model is defined by the probabilistic expression \n",
"\n",
"P(Y=0 | \\text{do}(R=r)) = \\sum_x \\underbrace{P(Y=0|X=x, T=1)}_\\text{1} \n",
"\\overbrace{P(T=1|R=r, X=x)}^\\text{2} \n",
"\\underbrace{P(X=x)}_\\text{3}\n",
"\\end{equation}\n",
"\n",
"which is equal to \n",
"\n",
"\\begin{equation}\\label{model_cont}\n",
"P(Y=0 | \\text{do}(R=r)) = \\int_x P(Y=0|X=x, T=1)P(T=1|R=r, X=x)P(X=x)\n",
"\\end{equation}\n",
"\n",
"for continuous $x$. In the model Z is a latent, unobserved variable, and can be excluded from the expression with do-calculus by showing that $X$ is admissible for adjustment. Model as a graph:\n",
"\n",
"\n",
"For predicting the probability of negative outcome the following should hold because by Pearl $P(Y=0 | \\text{do}(R=r), X=x) = P(Y=0 | R=r, X=x)$ when $X$ is an admissible set:\n",
"\n",
"\\begin{equation} \\label{model_pred}\n",
"P(Y=0 | \\text{do}(R=r), X=x) = P(Y=0|X=x, T=1)P(T=1|R=r, X=x).\n",
"\\end{equation}\n",
"\n",
"Still it should be noted that this prediction takes into account the probability of the individual to be given a positive decision ($T=1$), see second term in \\ref{model_pred}.\n",
"\n",
"----\n",
"\n",
"### Notes\n",
"\n",
"* Equations \\ref{model_disc} and \\ref{model_cont} describe the whole causal effect in the population (the causal effect of changing $r$ over all strata $X$).\n",
"* Prediction should be possible with \\ref{model_pred}. Both terms can be learned from the data. NB: the probability $P(Y=0 | \\text{do}(R=r), X=x)$ is lowest when the individual $x$ is the most dangerous or the least dangerous. How could we infer/predict the counterfactual \"what is the probability of $Y=0$ if we were to let this individual go?\" has yet to be calculated.\n",
"* Is the effect of R learned/estimated correctly if it is just plugged in to a predictive model (e.g. logistic regression)? **NO**\n",
"* $P(Y=0 | do(R=0)) = 0$ only in this application. <!-- My predictive models say that when $r=0$ the probability $P(Y=0) \\approx 0.027$ which would be a natural estimate in another application/scenario (e.g. in medicine the probability of an adverse event when a stronger medicine is distributed to everyone. Then the probability will be close to zero but not exactly zero.) -->"
"metadata": {},
"outputs": [],
"source": [
"# Imports\n",
"\n",
"import numpy as np\n",
"import pandas as pd\n",
"from datetime import datetime\n",
"import matplotlib.pyplot as plt\n",
"import scipy.stats as scs\n",
"import scipy.integrate as si\n",
"import seaborn as sns\n",
"import numpy.random as npr\n",
"from sklearn.preprocessing import OneHotEncoder\n",
"from sklearn.linear_model import LogisticRegression\n",
"from sklearn.ensemble import RandomForestClassifier\n",
"\n",
"# Settings\n",
"\n",
"%matplotlib inline\n",
"\n",
"plt.rcParams.update({'font.size': 16})\n",
"plt.rcParams.update({'figure.figsize': (14, 7)})\n",
"\n",
"# Suppress deprecation warnings.\n",
"\n",
"import warnings\n",
"\n",
"def fxn():\n",
" warnings.warn(\"deprecated\", DeprecationWarning)\n",
"\n",
"with warnings.catch_warnings():\n",
" warnings.simplefilter(\"ignore\")\n",
" fxn()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Data sets\n",
"\n",
"### Synthetic data with unobservables\n",
"\n",
"In the chunk below, we generate the synthetic data as described by Lakkaraju et al. The default values and definitions of $Y$ and $T$ values follow their description.\n",
"\n",
"**Parameters**\n",
"\n",
"* M = `nJudges_M`, number of judges\n",
"* N = `nSubjects_N`, number of subjects assigned to each judge\n",
"* betas $\\beta_i$ = `beta_i`, where $i \\in \\{X, Z, W\\}$ are coefficients for the respected variables\n",
"\n",
"**Columns of the data:**\n",
"\n",
"* `judgeID_J` = judge IDs as running numbering from 0 to `nJudges_M - 1`\n",
"* R = `acceptanceRate_R`, acceptance rates\n",
"* X = `X`, invidual's features observable to all (models and judges)\n",
"* Z = `Z`, information observable for judges only\n",
"* W = `W`, unobservable / inaccessible information\n",
"* T = `decision_T`, bail-or-jail decisions where $T=0$ represents jail decision and $T=1$ bail decision.\n",
"* Y = `result_Y`, result variable, if $Y=0$ person will or would recidivate and if $Y=1$ person will or would not commit a crime.\n",
"\n",
"The generated data will have M\\*N rows."
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th>result_Y</th>\n",
" <th>0.0</th>\n",
" <th>1.0</th>\n",
" <th>All</th>\n",
" </tr>\n",
" <tr>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>17446</td>\n",
" <td>7773</td>\n",
" <td>25219</td>\n",
" <td>7434</td>\n",
" <td>17347</td>\n",
" <td>24781</td>\n",
" <td>24880</td>\n",
" <td>25120</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
"0 17446 7773 25219\n",
"1 7434 17347 24781\n",
"All 24880 25120 50000"
"def sigmoid(x):\n",
" return 1 / (1 + np.exp(-x))\n",
"def generateData(nJudges_M=100,\n",
" nSubjects_N=500,\n",
" beta_X=1.0,\n",
" beta_Z=1.0,\n",
" beta_W=0.2):\n",
"\n",
" # Assign judge IDs as running numbering from 0 to nJudges_M - 1\n",
" judgeID_J = np.repeat(np.arange(0, nJudges_M, dtype=np.int32), nSubjects_N)\n",
"\n",
" # Sample acceptance rates uniformly from a closed interval\n",
" # from 0.1 to 0.9 and round to tenth decimal place.\n",
" acceptance_rates = np.round(npr.uniform(.1, .9, nJudges_M), 10)\n",
"\n",
" # Replicate the rates so they can be attached to the corresponding judge ID.\n",
" acceptanceRate_R = np.repeat(acceptance_rates, nSubjects_N)\n",
"\n",
" # Sample the variables from standard Gaussian distributions.\n",
" X = npr.normal(size=nJudges_M * nSubjects_N)\n",
" Z = npr.normal(size=nJudges_M * nSubjects_N)\n",
" W = npr.normal(size=nJudges_M * nSubjects_N)\n",
"\n",
" probabilities_Y = sigmoid(beta_X * X + beta_Z * Z + beta_W * W)\n",
"\n",
" # 0 if P(Y = 0| X = x; Z = z; W = w) >= 0.5 , 1 otherwise\n",
" result_Y = 1 - probabilities_Y.round()\n",
" # For the conditional probabilities of T we add noise ~ N(0, 0.1)\n",
" probabilities_T += npr.normal(0, np.sqrt(0.1), nJudges_M * nSubjects_N)\n",
"\n",
" # Initialize decision values as 1\n",
" decision_T = np.ones(nJudges_M * nSubjects_N)\n",
"\n",
" # Initialize the dataframe\n",
" df_init = pd.DataFrame(np.column_stack(\n",
" (judgeID_J, acceptanceRate_R, X, Z, W, result_Y, probabilities_T,\n",
" decision_T)),\n",
" columns=[\n",
" \"judgeID_J\", \"acceptanceRate_R\", \"X\", \"Z\", \"W\",\n",
" \"result_Y\", \"probabilities_T\", \"decision_T\"\n",
" ])\n",
"\n",
" # Sort by judges then probabilities in decreasing order\n",
" data = df_init.sort_values(by=[\"judgeID_J\", \"probabilities_T\"],\n",
" ascending=False)\n",
"\n",
" # Iterate over the data. Subject is in the top (1-r)*100% if\n",
" # his within-judge-index is over acceptance threshold times\n",
" # the number of subjects assigned to each judge. If subject\n",
" # is over the limit they are assigned a zero, else one.\n",
" data.reset_index(drop=True, inplace=True)\n",
"\n",
" data['decision_T'] = np.where(\n",
" (data.index.values % nSubjects_N) <\n",
" ((1 - data['acceptanceRate_R']) * nSubjects_N), 0, 1)\n",
"\n",
" return data\n",
"\n",
"\n",
"pd.crosstab(df.decision_T, df.result_Y, margins=True)"
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"(25000, 8)\n",
"(25000, 8)\n",
"(25000, 8)\n",
"(25000, 8)\n"
]
},
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th>decision_T</th>\n",
" <th>1</th>\n",
" </tr>\n",
" <tr>\n",
" <th>result_Y</th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0.0</th>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
"decision_T 1\n",
"result_Y \n",
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Split the data set to test and train\n",
"from sklearn.model_selection import train_test_split\n",
"train, test = train_test_split(df, test_size=0.5, random_state=0)\n",
"\n",
"print(train.shape)\n",
"print(test.shape)\n",
"\n",
"train_labeled = train.copy()\n",
"test_labeled = test.copy()\n",
"\n",
"# Set results as NA if decision is negative.\n",
"train_labeled.result_Y = np.where(train.decision_T == 0, np.nan,\n",
" train.result_Y)\n",
"test_labeled.result_Y = np.where(test.decision_T == 0, np.nan, test.result_Y)\n",
"\n",
"print(train_labeled.shape)\n",
"print(test_labeled.shape)\n",
"\n",
"tab = train_labeled.groupby(['result_Y', 'decision_T']).size()\n",
"tab.unstack()"
]
},
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Data without unobservables\n",
"\n",
"In the chunk below, we generate a simplified data. The default values and definitions of $Y$ and $T$ values follow the previous description.\n",
"\n",
"**Parameters**\n",
"\n",
"* M = `nJudges_M`, number of judges\n",
"* N = `nSubjects_N`, number of subjects assigned to each judge\n",
"* betas $\\beta_i$ = `beta_i`, where $i \\in \\{X, Z, W\\}$ are coefficients for the respected variables\n",
"\n",
"**Columns of the data:**\n",
"\n",
"* `judgeID_J` = judge IDs as running numbering from 0 to `nJudges_M - 1`\n",
"* R = `acceptanceRate_R`, acceptance rates\n",
"* X = `X`, invidual's features observable to all (models and judges), now $X \\sim \\mathcal{N}(0, 1)$\n",
"* T = `decision_T`, bail-or-jail decisions where $T=0$ represents jail decision and $T=1$ bail decision.\n",
"* $p_y$ = `probabilities_Y`, variable where $p_y = P(Y=1)$\n",
"* Y = `result_Y`, result variable, if $Y=0$ person will or would recidivate and if $Y=1$ person will or would not commit a crime. Here $Y \\sim \\text{Bernoulli}(1/exp(\\beta_X \\cdot X))$"
]
},
{
"cell_type": "code",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
]
},
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th>result_Y</th>\n",
" <th>0</th>\n",
" <th>1</th>\n",
" <th>All</th>\n",
" </tr>\n",
" <tr>\n",
" <th>decision_T</th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>15510</td>\n",
" <td>8542</td>\n",
" <td>24052</td>\n",
" <td>9406</td>\n",
" <td>16542</td>\n",
" <td>25948</td>\n",
" <td>24916</td>\n",
" <td>25084</td>\n",
" <td>50000</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
"result_Y 0 1 All\n",
"decision_T \n",
"0 15510 8542 24052\n",
"1 9406 16542 25948\n",
"All 24916 25084 50000"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Training data:\n"
]
},
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th>result_Y</th>\n",
" <th>0</th>\n",
" <th>1</th>\n",
" <th>All</th>\n",
" </tr>\n",
" <tr>\n",
" <th>decision_T</th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>7819</td>\n",
" <td>4240</td>\n",
" <td>12059</td>\n",
" <td>4709</td>\n",
" <td>8232</td>\n",
" <td>12941</td>\n",
" <td>12528</td>\n",
" <td>12472</td>\n",
" <td>25000</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
"result_Y 0 1 All\n",
"decision_T \n",
"0 7819 4240 12059\n",
"1 4709 8232 12941\n",
"All 12528 12472 25000"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Test data:\n"
]
},
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th>result_Y</th>\n",
" <th>0</th>\n",
" <th>1</th>\n",
" <th>All</th>\n",
" </tr>\n",
" <tr>\n",
" <th>decision_T</th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>7691</td>\n",
" <td>4302</td>\n",
" <td>11993</td>\n",
" <td>4697</td>\n",
" <td>8310</td>\n",
" <td>13007</td>\n",
" <td>12388</td>\n",
" <td>12612</td>\n",
" <td>25000</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
"result_Y 0 1 All\n",
"decision_T \n",
"0 7691 4302 11993\n",
"1 4697 8310 13007\n",
"All 12388 12612 25000"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Set seed for reproducibility\n",
"#npr.seed(0)\n",
"\n",
"def generateDataNoUnobservables(nJudges_M=100, nSubjects_N=500, beta_X=1.0):\n",
"\n",
" df = pd.DataFrame()\n",
"\n",
" # Assign judge IDs as running numbering from 0 to nJudges_M - 1\n",
" df = df.assign(judgeID_J=np.repeat(np.arange(0, nJudges_M, dtype=np.int32),\n",
" nSubjects_N))\n",
"\n",
" # Sample acceptance rates uniformly from a closed interval\n",
" # from 0.1 to 0.9 and round to tenth decimal place.\n",
" acceptance_rates = np.round(npr.uniform(.1, .9, nJudges_M), 10)\n",
"\n",
" # Replicate the rates so they can be attached to the corresponding judge ID.\n",
" df = df.assign(acceptanceRate_R=np.repeat(acceptance_rates, nSubjects_N))\n",
"\n",
" # Sample feature X from standard Gaussian distribution.\n",
" df = df.assign(X=npr.normal(size=nJudges_M * nSubjects_N))\n",
"\n",
" # Calculate P(Y=0|X=x) = 1 / (1 + exp(-beta_X * x)) = sigmoid(beta_X * x))\n",
" df = df.assign(probabilities_Y=sigmoid(beta_X * df.X))\n",
"\n",
" df = df.assign(result_Y=npr.binomial(\n",
" n=1, p=df.probabilities_Y, size=nJudges_M * nSubjects_N))\n",
"\n",
" # Invert the probabilities. ELABORATE COMMENT!\n",
" df.probabilities_Y = 1 - df.probabilities_Y\n",
"\n",
" # Sort by judges then probabilities in increasing order.\n",
" # I.e. the most dangerous for each judge are first.\n",
" df = df.sort_values(by=[\"judgeID_J\", \"probabilities_Y\"], ascending=False)\n",
"\n",
" # Iterate over the data. Subject is in the top (1-r)*100% if\n",
" # his within-judge-index is over acceptance threshold times\n",
" # the number of subjects assigned to each judge. If subject\n",
" # is over the limit they are assigned a zero, else one.\n",
" df.reset_index(drop=True, inplace=True)\n",
"\n",
" df['decision_T'] = np.where((df.index.values % nSubjects_N) <\n",
" ((1 - df['acceptanceRate_R']) * nSubjects_N),\n",
" 0, 1)\n",
"\n",
" return df\n",
"\n",
"simple_data = generateDataNoUnobservables()\n",
"\n",
"# Split the data set to test and train\n",
"s_train, s_test = train_test_split(simple_data, test_size=0.5, random_state=0)\n",
"\n",
"s_train_labeled = s_train.copy()\n",
"s_test_labeled = s_test.copy()\n",
"\n",
"# Set results as NA if decision is negative.\n",
"s_train_labeled.result_Y = np.where(s_train.decision_T == 0, np.nan,\n",
" s_train.result_Y)\n",
"s_test_labeled.result_Y = np.where(s_test.decision_T == 0, np.nan,\n",
" s_test.result_Y)\n",
"print(\"Whole data:\")\n",
"display(\n",
" pd.crosstab(simple_data.decision_T, simple_data.result_Y, margins=True), )\n",
"print(\"Training data:\")\n",
"display(pd.crosstab(s_train.decision_T, s_train.result_Y, margins=True))\n",
"print(\"Test data:\")\n",
"display(pd.crosstab(s_test.decision_T, s_test.result_Y, margins=True))"
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Algorithms\n",
"\n",
"### Contraction algorithm\n",
"\n",
"Below is an implementation of Lakkaraju's team's algorithm presented in [their paper](https://helka.finna.fi/PrimoRecord/pci.acm3098066). Relevant parameters to be passed to the function are presented in the description."
]
},
{
"cell_type": "code",
"def contraction(df, judgeIDJ_col, decisionT_col, resultY_col, modelProbS_col,\n",
" accRateR_col, r):\n",
" '''\n",
" This is an implementation of the algorithm presented by Lakkaraju\n",
" et al. in their paper \"The Selective Labels Problem: Evaluating \n",
" Algorithmic Predictions in the Presence of Unobservables\" (2017).\n",
" \n",
" Parameters:\n",
" df = The (Pandas) data frame containing the data, judge decisions,\n",
" judge IDs, results and probability scores.\n",
" judgeIDJ_col = String, the name of the column containing the judges' IDs\n",
" in df.\n",
" decisionT_col = String, the name of the column containing the judges' decisions\n",
" resultY_col = String, the name of the column containing the realization\n",
" modelProbS_col = String, the name of the column containing the probability\n",
" scores from the black-box model B.\n",
" accRateR_col = String, the name of the column containing the judges' \n",
" acceptance rates\n",
" r = Float between 0 and 1, the given acceptance rate.\n",
" \n",
" Returns:\n",
" u = The estimated failure rate at acceptance rate r.\n",
" '''\n",
" most_lenient_ID_q = df[judgeIDJ_col].loc[df[accRateR_col].idxmax()]\n",
" # Subset. \"D_q is the set of all observations judged by q.\"\n",
" D_q = df[df[judgeIDJ_col] == most_lenient_ID_q].copy()\n",
" # All observations of R_q have observed outcome labels.\n",
" # \"R_q is the set of observations in D_q with observed outcome labels.\"\n",
" R_q = D_q[D_q[decisionT_col] == 1].copy()\n",
" # Sort observations in R_q in descending order of confidence scores S and\n",
" # assign to R_sort_q.\n",
" # \"Observations deemed as high risk by B are at the top of this list\"\n",
" R_sort_q = R_q.sort_values(by=modelProbS_col, ascending=False)\n",
"\n",
" number_to_remove = int(\n",
" round((1.0 - r) * D_q.shape[0] - (D_q.shape[0] - R_q.shape[0])))\n",
"\n",
" # \"R_B is the list of observations assigned to t = 1 by B\"\n",
" R_B = R_sort_q[number_to_remove:R_sort_q.shape[0]]\n",
"\n",
" return np.sum(R_B[resultY_col] == 0) / D_q.shape[0]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"\n",
"Generalized performance:\n",
"\n",
"$$\n",
"\\mathbf{gp} = \\sum_x f(x)\\delta(F(x) < r)P(X=x)\n",
"$$\n",
"\n",
"and empirical performance:\n",
"\n",
"$$\n",
"\\mathbf{ep} = \\dfrac{1}{n} \\sum_{(x, y) \\in \\mathcal{D}} \\delta(y=0) \\delta(F(x) < r)\n",
"$$\n",
"\n",
"where\n",
"\n",
"$$\n",
"$$\n",
"\n",
"and\n",
"\n",
"$$\n",
"F(x_0) = \\int P(x)~\\delta(P(Y=0|T=1, X=x) > P(Y=0|T=1, X=x_0)) ~ dx = \\int P(x)~\\delta(f(x) > f(x_0)) ~ dx.\n",
"$$\n"
"def getProbabilityForClass(x, model, class_value):\n",
" Function (wrapper) for obtaining the probability of a class given x and a \n",
" predictive model.\n",
" \n",
" x = individual features, an array, shape (observations, features)\n",
" model = a trained sklearn model. Predicts probabilities for given x. Should\n",
" accept input of size (observations, features)\n",
" class_value = the resulting class to predict (usually 0 or 1).\n",
" The probabilities of given class label for each x.\n",
" '''\n",
" if x.ndim == 1:\n",
" # if x is vector, transform to column matrix.\n",
" f_values = model.predict_proba(np.array(x).reshape(-1, 1))\n",
" else:\n",
" f_values = model.predict_proba(x)\n",
"\n",
" # Get correct column of predicted class, remove extra dimensions and return.\n",
" return f_values[:, model.classes_ == class_value].flatten()\n",
"\n",
"def cdf(x_0, model, class_value):\n",
" '''\n",
" Cumulative distribution function as described above.\n",
" \n",
" '''\n",
" prediction = lambda x: getProbabilityForClass(\n",
" np.array([x]).reshape(-1, 1), model, class_value)\n",
"\n",
"\n",
" x_values = np.linspace(-10, 10, 40000)\n",
"\n",
" x_preds = prediction(x_values)\n",
"\n",
" y_values = scs.norm.pdf(x_values)\n",
"\n",
" #y_copy[prediction(x_values) < prediction_x_0[i]] = 0\n",
" y_copy[prediction(x_values) > prediction_x_0[i]] = 0\n",
" \n",
" results[i] = si.simps(y_copy, x=x_values)\n",
"\n",
"#%timeit cdf(np.ones(1), logreg, 0)\n",
"#%timeit cdf(np.ones(10), logreg, 0)\n",
"#%timeit cdf(np.ones(100), logreg, 0)\n",
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Performance comparison\n",
"\n",
"Below we try to replicate the results obtained by Lakkaraju and compare their model's performance to the one of ours.\n",
"\n",
"Lakkaraju says that they used logistic regression. We train the predictive models using only *observed observations*, i.e. observations for which labels are available. We then predict the probability of negative outcome for all observations in the test data and attach it to our data set."
"metadata": {},
"outputs": [],
"source": [
"# instantiate the model (using the default parameters)\n",
"logreg = LogisticRegression(solver='lbfgs')\n",
"\n",
"# fit, reshape X to be of shape (n_samples, n_features)\n",
"logreg = logreg.fit(\n",
" train_labeled.dropna().X.values.reshape(-1, 1),\n",
" train_labeled.result_Y.dropna())\n",
"\n",
"# predict probabilities and attach to data\n",
"label_probs_logreg = logreg.predict_proba(test.X.values.reshape(-1, 1))\n",
"\n",
"test = test.assign(B_prob_0_logreg=label_probs_logreg[:, 0])\n",
"test_labeled = test_labeled.assign(B_prob_0_logreg=label_probs_logreg[:, 0])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's plot the failure rates against the acceptance rates using the difference. For the causal model we plot $P(Y=0|do(R=r))$ against r."
{
"name": "stdout",
"output_type": "stream",
"text": [
"1 2 3 4 5 6 7 8 "
]
},
"image/png": "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Oxs/ZLGkme0ApgHdInAtXbqUESNGkJ+f39lNERERERGRc9DRY8eGA+XNrC8DhrVh39D9odsjrumFSo23ExERERERaVedMfasuYoNramyYK3ct7XbRd9p9gXgCwCjRo2iqKioFU1qf5WVlV2mLdJA56Xr0TnpmnReuh6dk65J56Xr0TnpmrrjeenowFVO8z1Mw2i+9ypSGTCuhX1D94duh5mZNerlarxdFOfcM8AzALNnz3ZdZRhfUVGRhhR2QTovXY/OSdek89L16Jx0TTovXY/OSdfUHc9LRw8pDF1j1dg0YGMr9p0QlJZvvG8NDddsbQD64qf9bbwdrXgeERERERGRmOjowFUIzDWziaEVZjYeuDi470z7JhBRXMPM4oFbgJeCCoUAL+AD2Gca7X8rsL67VCgUEREREZHur6OHFP4YeBB41sy+gb/W6tvAbuBHoY3MLB3YCjzhnHsCwDm32sz+C/gnM0vAVxq8D5hARLhyzh0ws6eBR82sAvgAH8oux5eeFxERERER6RAdGricc8fN7HLgaeAX+EIWrwIPOecqIzY1oA9Ne+DuBL4DPAkMBdYAi51zHzTa7jGgEvgyMBooBm52zi2P7RGJiIiIiIi0rMOrFDrndgFLz7DNDpqpKuicqwK+Eiyn278OH8qePOeGioiIiIiItFFHX8MlIiIiIiLSayhwiYiIiIiItBMFLhERERERkXaiwCUiIiIiItJOFLhERERERETaiQKXiIiIiIhIO1HgEhERERERaScKXCIiIiIiIu1EgUtERERERKSdKHCJiIiIiIi0E3POdXYbuhwzOwjs7Ox2BM4DDnV2I6QJnZeuR+eka9J56Xp0TromnZeuR+eka+pK5yXdOTfyTBspcHVxZva+c252Z7dDoum8dD06J12TzkvXo3PSNem8dD06J11TdzwvGlIoIiIiIiLSThS4RERERERE2okCV9f3TGc3QJql89L16Jx0TTovXY/OSdek89L16Jx0Td3uvOgaLhERERERkXaiHi4REREREZF2osDVScwszcx+a2ZHzeyYmf3ezMa1ct+/NbOXzOywmTkz+2w7N7dXONdzYmazzewZM9tkZifMbJeZ/crMJnREu3u6NpyXdDN71sx2mlmVmR0ysyIzu7oj2t2TteX9q9HjPBq8h73VHu3sTdr4N8W1sOS1d7t7ura+Vsxsqpn9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\n",
"text/plain": [
"<Figure size 1008x576 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"failure_rates = np.zeros((8, 5))\n",
"\n",
"for r in np.arange(1, 9):\n",
" # Sort by failure probabilities, subjects with the smallest risk are first.\n",
" test.sort_values(by='B_prob_0_logreg', inplace=True, ascending=True)\n",
" to_release = int(round(test.shape[0] * r / 10))\n",
" # Calculate failure rate as the ratio of failures to those who were given a \n",
" # positive decision, i.e. those whose probability of negative outcome was \n",
" # low enough.\n",
" failure_rates[r - 1, 0] = np.sum(\n",
" test.result_Y[0:to_release] == 0) / test.shape[0]\n",
"\n",
" # Sort by failure probabilities, subjects with the smallest risk are first.\n",
" test_labeled.sort_values(by='B_prob_0_logreg',\n",
" inplace=True,\n",
" ascending=True)\n",
"\n",
" to_release = int(round(test_labeled.shape[0] * r / 10))\n",
" failure_rates[r - 1, 1] = np.sum(\n",
" test_labeled.result_Y[0:to_release] == 0) / test_labeled.shape[0]\n",
"\n",
" #### Human error rate\n",
" # Get judges with correct leniency as list\n",
" correct_leniency_list = test_labeled.judgeID_J[\n",
" test_labeled['acceptanceRate_R'].round(1) == r / 10].values\n",
"\n",
" # Released are the people they judged and released, T = 1\n",
" released = test_labeled[test_labeled.judgeID_J.isin(correct_leniency_list)\n",
" & (test_labeled.decision_T == 1)]\n",
"\n",
" # Get their failure rate, aka ratio of reoffenders to number of people judged in total\n",
" failure_rates[r - 1, 2] = np.sum(\n",
" released.result_Y == 0) / correct_leniency_list.shape[0]\n",
" failure_rates[r - 1, 3] = contraction(test_labeled, 'judgeID_J',\n",
" 'decision_T', 'result_Y',\n",
" 'B_prob_0_logreg',\n",
" 'acceptanceRate_R', r / 10)\n",
" # Integral of P(Y=0 | T=1, X=x)*P(T=1 | R=r, X=x)*P(X=x) from negative to\n",
" # positive infinity.\n",
" failure_rates[r - 1, 4] = np.sum((test_labeled.dropna().result_Y == 0) & (\n",
" cdf(test_labeled.dropna().X, logreg, 0) < r /\n",
" 10)) / test_labeled.dropna().result_Y.shape[0]\n",
"\n",
"# Error bars TBA\n",
"\n",
"plt.figure(figsize=(14, 8))\n",
" failure_rates[:, 0],\n",
" label='True Evaluation',\n",
" c='green')\n",
"plt.plot(np.arange(0.1, 0.9, .1),\n",
" failure_rates[:, 1],\n",
" label='Labeled outcomes',\n",
" c='black')\n",
"plt.plot(np.arange(0.1, 0.9, .1),\n",
" failure_rates[:, 2],\n",
" label='Human evaluation',\n",
" c='red')\n",
"plt.plot(np.arange(0.1, 0.9, .1),\n",
" failure_rates[:, 3],\n",
" label='Contraction, log.',\n",
" c='blue')\n",
"plt.plot(np.arange(0.1, 0.9, .1),\n",
" failure_rates[:, 4],\n",
" label='Causal effect',\n",
" c='magenta')\n",
"\n",
"plt.title('Failure rate vs. Acceptance rate')\n",