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-algorithm\" data-toc-modified-id=\"Causal-algorithm-3.2\"><span class=\"toc-item-num\">3.2 </span>Causal algorithm</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-models\" data-toc-modified-id=\"Predictive-models-4.1.1\"><span class=\"toc-item-num\">4.1.1 </span>Predictive models</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></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$. Model as a graph (Z is a latent variable, and can be excluded from the expression with do-calculus by showing that $X$ is admissible for adjustment):\n",
"\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)?\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.)"
]
},
{
"cell_type": "code",
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
"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."
]
},
{
"cell_type": "code",
"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>16267</td>\n",
" <td>6842</td>\n",
" <td>23109</td>\n",
" <td>8765</td>\n",
" <td>18126</td>\n",
" <td>26891</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
"0 16267 6842 23109\n",
"1 8765 18126 26891\n",
"All 25032 24968 50000"
"\n",
"def sigmoid(x):\n",
" return 1 / (1 + np.exp(-x))\n",
"\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",
" \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)"
268
269
270
271
272
273
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
"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",
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
"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, 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()"
]
},
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
{
"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",
382
383
384
385
386
387
388
389
390
391
392
393
394
395
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
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"['judgeID_J' 'acceptanceRate_R' 'X' 'probabilities_Y' 'result_Y'\n",
" 'decision_T']\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>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>15791</td>\n",
" <td>8833</td>\n",
" <td>24624</td>\n",
" <td>9157</td>\n",
" <td>16219</td>\n",
" <td>25376</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 15791 8833 24624\n",
"1 9157 16219 25376\n",
"All 24948 25052 50000"
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
]
},
"metadata": {},
"output_type": "display_data"
},
{
"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>7960</td>\n",
" <td>4327</td>\n",
" <td>12287</td>\n",
" <td>4634</td>\n",
" <td>8079</td>\n",
" <td>12713</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 7960 4327 12287\n",
"1 4634 8079 12713\n",
"All 12594 12406 25000"
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
]
},
"metadata": {},
"output_type": "display_data"
},
{
"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>7831</td>\n",
" <td>4506</td>\n",
" <td>12337</td>\n",
" <td>4523</td>\n",
" <td>8140</td>\n",
" <td>12663</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 7831 4506 12337\n",
"1 4523 8140 12663\n",
"All 12354 12646 25000"
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
]
},
"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 the variables from standard Gaussian distributions.\n",
" df = df.assign(X=npr.normal(size=nJudges_M * nSubjects_N))\n",
"\n",
" df = df.assign(probabilities_Y=sigmoid(beta_X * df.X))\n",
"\n",
" # Y ~ Bernoulli(sigmoid(beta_X * x))\n",
" df = df.assign(result_Y=npr.binomial(\n",
" n=1, p=df.probabilities_Y, size=nJudges_M * nSubjects_N))\n",
"\n",
" # Sort by judges then probabilities in decreasing order.\n",
" # I.e. most dangerous are last.\n",
" df = df.sort_values(by=[\"judgeID_J\", \"probabilities_Y\"], ascending=True)\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, s_train.result_Y)\n",
"s_test_labeled.result_Y = np.where(s_test.decision_T == 0, np.nan, s_test.result_Y)\n",
"\n",
"#display(simple_data.head(20))\n",
"\n",
"print(simple_data.columns.values)\n",
"\n",
"display(pd.crosstab(simple_data.decision_T, simple_data.result_Y,\n",
" margins=True))\n",
"\n",
"display(pd.crosstab(s_train.decision_T, s_train.result_Y,\n",
" margins=True))\n",
"\n",
"display(pd.crosstab(s_test.decision_T, s_test.result_Y,\n",
" 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",
"metadata": {},
"outputs": [],
"source": [
"def contraction(df,\n",
" judgeIDJ_col,\n",
" decisionT_col,\n",
" resultY_col,\n",
" modelProbS_col,\n",
" accRateR_col,\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",
" # Get ID of the most lenient judge.\n",
" most_lenient_ID = df[judgeIDJ_col].loc[df[accRateR_col].idxmax()]\n",
" D_q = df[df[judgeIDJ_col] == most_lenient_ID].copy()\n",
"\n",
" # All observations of R_q have observed outcome labels\n",
" R_q = D_q[D_q[decisionT_col] == 1]\n",
"\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": [
"### Causal algorithm\n",
"\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",
"F(x_0) = \\int P(x)~\\delta(P(Y=0|T=1, X=x) > P(Y=0|T=1, X=x_0)) ~ dx\n",
"$$\n",
"\n",
"and\n",
"\n",
"$$\n",
"f(x) = P(Y=0|T=1, X=x).\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",
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
" # 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(np.array([x]).reshape(-1,1), model, class_value)\n",
" \n",
" prediction_x_0 = prediction(x_0)\n",
" \n",
" results = np.zeros(x_0.shape[0])\n",
" \n",
" x_values = np.linspace(-10, 10, 50000)\n",
" \n",
" for i in range(x_0.shape[0]):\n",
" results[i] = si.simps(scs.norm.pdf(x_values) * (prediction(x_values) > prediction_x_0[i]), x=x_values)\n",
" \n",
" return results\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",
"#\n",
"#x_values = np.linspace(-10, 10, 1000)\n",
"#\n",
"#print(getProbabilityForClass(s_train.X.head(1), logreg, 0))\n",
"#\n",
"#plt.plot(x_values, getProbabilityForClass(x_values, logreg, 0))\n",
"#plt.show()"
]
},
{
"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",
"### With unobservables in the data\n",
"\n",
"#### Predictive models\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.X[train_labeled.decision_T == 1].values.reshape(-1, 1),\n",
" train_labeled.result_Y[train_labeled.decision_T == 1])\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": [
"We train another logistic regression model for predicting the probability of positive decision with a given leniency r and individual features x. See part 2 of eq. 1."
]
},
"metadata": {},
"outputs": [],
"source": [
"# Instantiate the model (using the default parameters)\n",
"decision_model = LogisticRegression(solver='lbfgs')\n",
"\n",
"# fit, reshape X to be of shape (n_samples, n_features)\n",
"decision_model = decision_model.fit(train[['X', 'acceptanceRate_R']],\n",
" train.decision_T)"
]
},
{
"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."
"execution_count": 105,
"metadata": {
"scrolled": false
},
"image/png": "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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",
" \n",
" #### True evaluation\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 successes among those \n",
" # who were given a positive decision, i.e. those whose probability of negative\n",
" # outcome was low enough.\n",
" failure_rates[r - 1, 0] = np.mean(test.result_Y[0:to_release] == 0)\n",
" \n",
" #### Labeled outcomes only\n",
" # Sort by failure probabilities, subjects with the smallest risk are first. \n",
" test_labeled.sort_values(by='B_prob_0_logreg', inplace=True, ascending=True)\n",
" \n",
" to_release = int(round(test_labeled.shape[0] * r / 10))\n",
" failure_rates[r - 1, 1] = np.mean(test_labeled.result_Y[0:to_release] == 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",
" \n",
" #### Contraction, logistic regression\n",
" failure_rates[r - 1, 3] = contraction(\n",
" test_labeled, 'judgeID_J', 'decision_T', 'result_Y', 'B_prob_0_logreg',\n",
" #### Causal effect - \"vanilla\" (wrong) model\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] = si.quad(lambda x: getProbabilityForClass(np.array([x]), logreg, 0) * \n",
" getProbabilityForClass(np.array([[x, r/10]]), decision_model, 1) * \n",
" scs.norm.pdf(x), -np.inf, np.inf)[0]\n",
"\n",
"# Error bars TBA\n",
"\n",
"plt.figure(figsize=(14, 8))\n",
"plt.plot(np.arange(0.1, 0.9, .1), failure_rates[:, 0], label='True Evaluation', c='green')\n",
"plt.plot(np.arange(0.1, 0.9, .1), failure_rates[:, 1], label='Labeled outcomes', c='black')\n",
"plt.plot(np.arange(0.1, 0.9, .1), failure_rates[:, 2], label='Human evaluation', c='red')\n",
"plt.plot(np.arange(0.1, 0.9, .1), failure_rates[:, 3], label='Contraction, log.', c='blue')\n",
"plt.plot(np.arange(0.1, 0.9, .1), failure_rates[:, 4], label='Causal effect', c='magenta')\n",
"\n",
"plt.title('Failure rate vs. Acceptance rate')\n",
"plt.xlabel('Acceptance rate')\n",
"plt.ylabel('Failure rate')\n",
"plt.legend()\n",
"plt.grid()\n",
"plt.show()"
]
},
{
"cell_type": "code",
"source": [
"# Below are estimates for P(Y=0 | do(R=0)) and P(Y=0 | do(R=1))\n",
"#r = 0.0\n",
"#print(r, si.quad(lambda x: f(np.array([[x, r]]), decision_model, 1) * \\\n",
"# f(np.array([x]), logreg, 0) * scs.norm.pdf(x), -np.inf, np.inf))\n",
"#\n",
"#r = 1.0\n",
"#print(r, si.quad(lambda x: f(np.array([[x, r]]), decision_model, 1) * \\\n",
"# f(np.array([x]), logreg, 0) * scs.norm.pdf(x), -np.inf, np.inf))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"So it can be concluded that:\n",
"\n",
"\\begin{equation*}\n",
"P(Y=0 | \\text{do}(R=0)) \\approx 0.018 \\\\\n",
"P(Y=0 | \\text{do}(R=1)) \\approx 0.340 \\\\\n",
"\\end{equation*}"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [