Skip to content
Snippets Groups Projects
Analysis_07MAY2019_new.ipynb 200 KiB
Newer Older
  • Learn to ignore specific revisions
  • Riku-Laine's avatar
    Riku-Laine committed
    {
     "cells": [
      {
       "cell_type": "markdown",
       "metadata": {
        "toc": true
       },
       "source": [
        "<h1>Table of Contents<span class=\"tocSkip\"></span></h1>\n",
    
    Riku-Laine's avatar
    Riku-Laine committed
        "<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&nbsp;&nbsp;</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&nbsp;&nbsp;</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&nbsp;&nbsp;</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&nbsp;&nbsp;</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&nbsp;&nbsp;</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&nbsp;&nbsp;</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&nbsp;&nbsp;</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&nbsp;&nbsp;</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&nbsp;&nbsp;</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&nbsp;&nbsp;</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&nbsp;&nbsp;</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&nbsp;&nbsp;</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&nbsp;&nbsp;</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&nbsp;&nbsp;</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&nbsp;&nbsp;</span>Visual comparison</a></span></li></ul></li></ul></li></ul></div>"
    
    Riku-Laine's avatar
    Riku-Laine committed
       ]
      },
      {
       "cell_type": "markdown",
       "metadata": {},
       "source": [
        "##  Causal model\n",
        "\n",
        "Our model is defined by the probabilistic expression \n",
        "\n",
    
    Riku-Laine's avatar
    Riku-Laine committed
        "\\begin{equation} \\label{model_disc}\n",
    
    Riku-Laine's avatar
    Riku-Laine committed
        "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",
    
    Riku-Laine's avatar
    Riku-Laine committed
        "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",
    
    Riku-Laine's avatar
    Riku-Laine committed
        "\n",
    
    Riku-Laine's avatar
    Riku-Laine committed
        "![Model as picture](../figures/intervention_model.png \"Intervention model\")\n",
    
    Riku-Laine's avatar
    Riku-Laine committed
        "\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",
    
    Riku-Laine's avatar
    Riku-Laine committed
        "* 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.) -->"
    
    Riku-Laine's avatar
    Riku-Laine committed
       ]
      },
      {
       "cell_type": "code",
    
       "execution_count": 42,
    
    Riku-Laine's avatar
    Riku-Laine committed
       "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",
    
    Riku-Laine's avatar
    Riku-Laine committed
        "\n",
    
    Riku-Laine's avatar
    Riku-Laine committed
        "def fxn():\n",
        "    warnings.warn(\"deprecated\", DeprecationWarning)\n",
        "\n",
    
    Riku-Laine's avatar
    Riku-Laine committed
        "\n",
    
    Riku-Laine's avatar
    Riku-Laine committed
        "with warnings.catch_warnings():\n",
        "    warnings.simplefilter(\"ignore\")\n",
        "    fxn()"
       ]
      },
      {
       "cell_type": "markdown",
       "metadata": {},
       "source": [
    
    Riku-Laine's avatar
    Riku-Laine committed
        "## Data sets\n",
        "\n",
        "### Synthetic data with unobservables\n",
    
    Riku-Laine's avatar
    Riku-Laine committed
        "\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",
    
    Riku-Laine's avatar
    Riku-Laine committed
        "* 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."
    
    Riku-Laine's avatar
    Riku-Laine committed
       ]
      },
      {
       "cell_type": "code",
    
       "execution_count": 43,
    
    Riku-Laine's avatar
    Riku-Laine committed
       "metadata": {},
    
    Riku-Laine's avatar
    Riku-Laine committed
       "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",
    
    Riku-Laine's avatar
    Riku-Laine committed
           "      <th>0.0</th>\n",
           "      <th>1.0</th>\n",
           "      <th>All</th>\n",
           "    </tr>\n",
           "    <tr>\n",
    
    Riku-Laine's avatar
    Riku-Laine committed
           "      <th>decision_T</th>\n",
    
    Riku-Laine's avatar
    Riku-Laine committed
           "      <th></th>\n",
           "      <th></th>\n",
           "      <th></th>\n",
    
    Riku-Laine's avatar
    Riku-Laine committed
           "    </tr>\n",
           "  </thead>\n",
           "  <tbody>\n",
           "    <tr>\n",
           "      <th>0</th>\n",
    
           "      <td>17446</td>\n",
           "      <td>7773</td>\n",
           "      <td>25219</td>\n",
    
    Riku-Laine's avatar
    Riku-Laine committed
           "    </tr>\n",
           "    <tr>\n",
           "      <th>1</th>\n",
    
           "      <td>7434</td>\n",
           "      <td>17347</td>\n",
           "      <td>24781</td>\n",
    
    Riku-Laine's avatar
    Riku-Laine committed
           "    </tr>\n",
           "    <tr>\n",
    
    Riku-Laine's avatar
    Riku-Laine committed
           "      <th>All</th>\n",
    
           "      <td>24880</td>\n",
           "      <td>25120</td>\n",
    
    Riku-Laine's avatar
    Riku-Laine committed
           "      <td>50000</td>\n",
    
    Riku-Laine's avatar
    Riku-Laine committed
           "    </tr>\n",
           "  </tbody>\n",
           "</table>\n",
           "</div>"
          ],
          "text/plain": [
    
    Riku-Laine's avatar
    Riku-Laine committed
           "result_Y      0.0    1.0    All\n",
           "decision_T                     \n",
    
           "0           17446   7773  25219\n",
           "1            7434  17347  24781\n",
           "All         24880  25120  50000"
    
    Riku-Laine's avatar
    Riku-Laine committed
          ]
         },
    
         "execution_count": 43,
    
    Riku-Laine's avatar
    Riku-Laine committed
         "metadata": {},
    
    Riku-Laine's avatar
    Riku-Laine committed
         "output_type": "execute_result"
    
    Riku-Laine's avatar
    Riku-Laine committed
        }
       ],
    
    Riku-Laine's avatar
    Riku-Laine committed
       "source": [
        "# Set seed for reproducibility\n",
    
    Riku-Laine's avatar
    Riku-Laine committed
        "#npr.seed(0)\n",
    
    Riku-Laine's avatar
    Riku-Laine committed
        "\n",
    
    Riku-Laine's avatar
    Riku-Laine committed
        "\n",
    
    Riku-Laine's avatar
    Riku-Laine committed
        "def sigmoid(x):\n",
        "    return 1 / (1 + np.exp(-x))\n",
    
    Riku-Laine's avatar
    Riku-Laine committed
        "\n",
    
    Riku-Laine's avatar
    Riku-Laine committed
        "\n",
    
    Riku-Laine's avatar
    Riku-Laine committed
        "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",
    
    Riku-Laine's avatar
    Riku-Laine committed
        "    probabilities_Y = sigmoid(beta_X * X + beta_Z * Z + beta_W * W)\n",
    
    Riku-Laine's avatar
    Riku-Laine committed
        "\n",
        "    # 0 if P(Y = 0| X = x; Z = z; W = w) >= 0.5 , 1 otherwise\n",
        "    result_Y = 1 - probabilities_Y.round()\n",
    
    Riku-Laine's avatar
    Riku-Laine committed
        "\n",
    
    Riku-Laine's avatar
    Riku-Laine committed
        "    # For the conditional probabilities of T we add noise ~ N(0, 0.1)\n",
    
    Riku-Laine's avatar
    Riku-Laine committed
        "    probabilities_T = sigmoid(beta_X * X + beta_Z * Z)\n",
    
    Riku-Laine's avatar
    Riku-Laine committed
        "    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",
    
    Riku-Laine's avatar
    Riku-Laine committed
        "    # Sort by judges then probabilities in decreasing order\n",
    
    Riku-Laine's avatar
    Riku-Laine committed
        "    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",
    
    Riku-Laine's avatar
    Riku-Laine committed
        "df = generateData()\n",
        "\n",
    
    Riku-Laine's avatar
    Riku-Laine committed
        "pd.crosstab(df.decision_T, df.result_Y, margins=True)"
    
    Riku-Laine's avatar
    Riku-Laine committed
       ]
      },
      {
       "cell_type": "code",
    
       "execution_count": 44,
    
    Riku-Laine's avatar
    Riku-Laine committed
       "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",
    
           "      <td>3654</td>\n",
    
    Riku-Laine's avatar
    Riku-Laine committed
           "    </tr>\n",
           "    <tr>\n",
           "      <th>1.0</th>\n",
    
           "      <td>8613</td>\n",
    
    Riku-Laine's avatar
    Riku-Laine committed
           "    </tr>\n",
           "  </tbody>\n",
           "</table>\n",
           "</div>"
          ],
          "text/plain": [
           "decision_T     1\n",
           "result_Y        \n",
    
           "0.0         3654\n",
           "1.0         8613"
    
    Riku-Laine's avatar
    Riku-Laine committed
          ]
         },
    
         "execution_count": 44,
    
    Riku-Laine's avatar
    Riku-Laine committed
         "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",
    
    Riku-Laine's avatar
    Riku-Laine committed
        "train_labeled.result_Y = np.where(train.decision_T == 0, np.nan,\n",
        "                                  train.result_Y)\n",
    
    Riku-Laine's avatar
    Riku-Laine committed
        "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()"
       ]
      },
    
    Riku-Laine's avatar
    Riku-Laine committed
      {
       "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",
    
       "execution_count": 45,
    
    Riku-Laine's avatar
    Riku-Laine committed
       "metadata": {},
       "outputs": [
        {
         "name": "stdout",
         "output_type": "stream",
         "text": [
    
    Riku-Laine's avatar
    Riku-Laine committed
          "Whole data:\n"
    
    Riku-Laine's avatar
    Riku-Laine committed
         ]
        },
        {
         "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",
    
    Riku-Laine's avatar
    Riku-Laine committed
           "    </tr>\n",
           "    <tr>\n",
           "      <th>1</th>\n",
    
           "      <td>9406</td>\n",
           "      <td>16542</td>\n",
           "      <td>25948</td>\n",
    
    Riku-Laine's avatar
    Riku-Laine committed
           "    </tr>\n",
           "    <tr>\n",
           "      <th>All</th>\n",
    
           "      <td>24916</td>\n",
           "      <td>25084</td>\n",
    
    Riku-Laine's avatar
    Riku-Laine committed
           "      <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"
    
    Riku-Laine's avatar
    Riku-Laine committed
          ]
         },
         "metadata": {},
         "output_type": "display_data"
        },
    
    Riku-Laine's avatar
    Riku-Laine committed
        {
         "name": "stdout",
         "output_type": "stream",
         "text": [
          "Training data:\n"
         ]
        },
    
    Riku-Laine's avatar
    Riku-Laine committed
        {
         "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",
    
    Riku-Laine's avatar
    Riku-Laine committed
           "    </tr>\n",
           "    <tr>\n",
           "      <th>1</th>\n",
    
           "      <td>4709</td>\n",
           "      <td>8232</td>\n",
           "      <td>12941</td>\n",
    
    Riku-Laine's avatar
    Riku-Laine committed
           "    </tr>\n",
           "    <tr>\n",
           "      <th>All</th>\n",
    
           "      <td>12528</td>\n",
           "      <td>12472</td>\n",
    
    Riku-Laine's avatar
    Riku-Laine committed
           "      <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"
    
    Riku-Laine's avatar
    Riku-Laine committed
          ]
         },
         "metadata": {},
         "output_type": "display_data"
        },
    
    Riku-Laine's avatar
    Riku-Laine committed
        {
         "name": "stdout",
         "output_type": "stream",
         "text": [
          "Test data:\n"
         ]
        },
    
    Riku-Laine's avatar
    Riku-Laine committed
        {
         "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",
    
    Riku-Laine's avatar
    Riku-Laine committed
           "    </tr>\n",
           "    <tr>\n",
           "      <th>1</th>\n",
    
           "      <td>4697</td>\n",
           "      <td>8310</td>\n",
           "      <td>13007</td>\n",
    
    Riku-Laine's avatar
    Riku-Laine committed
           "    </tr>\n",
           "    <tr>\n",
           "      <th>All</th>\n",
    
           "      <td>12388</td>\n",
           "      <td>12612</td>\n",
    
    Riku-Laine's avatar
    Riku-Laine committed
           "      <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"
    
    Riku-Laine's avatar
    Riku-Laine committed
          ]
         },
         "metadata": {},
         "output_type": "display_data"
        }
       ],
       "source": [
        "# Set seed for reproducibility\n",
        "#npr.seed(0)\n",
        "\n",
    
    Riku-Laine's avatar
    Riku-Laine committed
        "\n",
    
    Riku-Laine's avatar
    Riku-Laine committed
        "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",
    
    Riku-Laine's avatar
    Riku-Laine committed
        "    # Sample feature X from standard Gaussian distribution.\n",
    
    Riku-Laine's avatar
    Riku-Laine committed
        "    df = df.assign(X=npr.normal(size=nJudges_M * nSubjects_N))\n",
        "\n",
    
    Riku-Laine's avatar
    Riku-Laine committed
        "    # Calculate P(Y=0|X=x) = 1 / (1 + exp(-beta_X * x)) = sigmoid(beta_X * x))\n",
    
    Riku-Laine's avatar
    Riku-Laine committed
        "    df = df.assign(probabilities_Y=sigmoid(beta_X * df.X))\n",
        "\n",
    
    Riku-Laine's avatar
    Riku-Laine committed
        "    # Draw Y ~ Bernoulli(sigmoid(beta_X * x))\n",
    
    Riku-Laine's avatar
    Riku-Laine committed
        "    df = df.assign(result_Y=npr.binomial(\n",
        "        n=1, p=df.probabilities_Y, size=nJudges_M * nSubjects_N))\n",
        "\n",
    
    Riku-Laine's avatar
    Riku-Laine committed
        "    # 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",
    
    Riku-Laine's avatar
    Riku-Laine committed
        "\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",
    
    Riku-Laine's avatar
    Riku-Laine committed
        "\n",
    
    Riku-Laine's avatar
    Riku-Laine committed
        "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",
    
    Riku-Laine's avatar
    Riku-Laine committed
        "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",
    
    Riku-Laine's avatar
    Riku-Laine committed
        "\n",
    
    Riku-Laine's avatar
    Riku-Laine committed
        "#display(simple_data.tail(20))\n",
    
    Riku-Laine's avatar
    Riku-Laine committed
        "\n",
    
    Riku-Laine's avatar
    Riku-Laine committed
        "print(\"Whole data:\")\n",
        "display(\n",
        "    pd.crosstab(simple_data.decision_T, simple_data.result_Y, margins=True), )\n",
    
    Riku-Laine's avatar
    Riku-Laine committed
        "\n",
    
    Riku-Laine's avatar
    Riku-Laine committed
        "print(\"Training data:\")\n",
        "display(pd.crosstab(s_train.decision_T, s_train.result_Y, margins=True))\n",
    
    Riku-Laine's avatar
    Riku-Laine committed
        "\n",
    
    Riku-Laine's avatar
    Riku-Laine committed
        "print(\"Test data:\")\n",
        "display(pd.crosstab(s_test.decision_T, s_test.result_Y, margins=True))"
    
    Riku-Laine's avatar
    Riku-Laine committed
      {
       "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",
    
       "execution_count": 46,
    
    Riku-Laine's avatar
    Riku-Laine committed
       "metadata": {},
       "outputs": [],
       "source": [
    
    Riku-Laine's avatar
    Riku-Laine committed
        "def contraction(df, judgeIDJ_col, decisionT_col, resultY_col, modelProbS_col,\n",
        "                accRateR_col, r):\n",
    
    Riku-Laine's avatar
    Riku-Laine committed
        "    '''\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",
    
    Riku-Laine's avatar
    Riku-Laine committed
        "    # Get ID of the most lenient judge.\n",
    
    Riku-Laine's avatar
    Riku-Laine committed
        "    most_lenient_ID_q = df[judgeIDJ_col].loc[df[accRateR_col].idxmax()]\n",
    
    Riku-Laine's avatar
    Riku-Laine committed
        "\n",
    
    Riku-Laine's avatar
    Riku-Laine committed
        "    # 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",
    
    Riku-Laine's avatar
    Riku-Laine committed
        "\n",
    
    Riku-Laine's avatar
    Riku-Laine committed
        "    # 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",
    
    Riku-Laine's avatar
    Riku-Laine committed
        "\n",
    
    Riku-Laine's avatar
    Riku-Laine committed
        "    # Sort observations in R_q in descending order of confidence scores S and\n",
        "    # assign to R_sort_q.\n",
    
    Riku-Laine's avatar
    Riku-Laine committed
        "    # \"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": [
    
    Riku-Laine's avatar
    Riku-Laine committed
        "### Causal approach - metrics\n",
    
    Riku-Laine's avatar
    Riku-Laine committed
        "\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",
    
    Riku-Laine's avatar
    Riku-Laine committed
        "f(x) = P(Y=0|T=1, X=x)\n",
    
    Riku-Laine's avatar
    Riku-Laine committed
        "$$\n",
        "\n",
        "and\n",
        "\n",
        "$$\n",
    
    Riku-Laine's avatar
    Riku-Laine committed
        "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"
    
    Riku-Laine's avatar
    Riku-Laine committed
       ]
      },
      {
       "cell_type": "code",
    
       "execution_count": 47,
    
    Riku-Laine's avatar
    Riku-Laine committed
       "metadata": {},
    
       "outputs": [],
    
    Riku-Laine's avatar
    Riku-Laine committed
       "source": [
    
    Riku-Laine's avatar
    Riku-Laine committed
        "def getProbabilityForClass(x, model, class_value):\n",
    
    Riku-Laine's avatar
    Riku-Laine committed
        "    '''\n",
    
    Riku-Laine's avatar
    Riku-Laine committed
        "    Function (wrapper) for obtaining the probability of a class given x and a \n",
        "    predictive model.\n",
        "    \n",
    
    Riku-Laine's avatar
    Riku-Laine committed
        "    Parameters:\n",
    
    Riku-Laine's avatar
    Riku-Laine committed
        "    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",
    
    Riku-Laine's avatar
    Riku-Laine committed
        "    \n",
        "    Returns:\n",
    
    Riku-Laine's avatar
    Riku-Laine committed
        "    The probabilities of given class label for each x.\n",
    
    Riku-Laine's avatar
    Riku-Laine committed
        "    '''\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",
    
    Riku-Laine's avatar
    Riku-Laine committed
        "    # Get correct column of predicted class, remove extra dimensions and return.\n",
        "    return f_values[:, model.classes_ == class_value].flatten()\n",
        "\n",
    
    Riku-Laine's avatar
    Riku-Laine committed
        "\n",
    
    Riku-Laine's avatar
    Riku-Laine committed
        "def cdf(x_0, model, class_value):\n",
        "    '''\n",
        "    Cumulative distribution function as described above.\n",
        "    \n",
        "    '''\n",
    
    Riku-Laine's avatar
    Riku-Laine committed
        "    prediction = lambda x: getProbabilityForClass(\n",
        "        np.array([x]).reshape(-1, 1), model, class_value)\n",
        "\n",
    
    Riku-Laine's avatar
    Riku-Laine committed
        "    prediction_x_0 = prediction(x_0)\n",
    
    Riku-Laine's avatar
    Riku-Laine committed
        "\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",
    
    Riku-Laine's avatar
    Riku-Laine committed
        "    results = np.zeros(x_0.shape[0])\n",
    
    Riku-Laine's avatar
    Riku-Laine committed
        "\n",
    
    Riku-Laine's avatar
    Riku-Laine committed
        "    for i in range(x_0.shape[0]):\n",
    
    Riku-Laine's avatar
    Riku-Laine committed
        "        \n",
        "        y_copy = y_values.copy()\n",
        "        \n",
    
        "        #y_copy[prediction(x_values) < prediction_x_0[i]] = 0\n",
        "        y_copy[prediction(x_values) > prediction_x_0[i]] = 0\n",
    
    Riku-Laine's avatar
    Riku-Laine committed
        "        \n",
        "        results[i] = si.simps(y_copy, x=x_values)\n",
        "\n",
    
    Riku-Laine's avatar
    Riku-Laine committed
        "    return results\n",
        "\n",
    
    Riku-Laine's avatar
    Riku-Laine committed
        "\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",
    
    Riku-Laine's avatar
    Riku-Laine committed
        "#%timeit cdf(np.ones(1000), logreg, 0)"
    
    Riku-Laine's avatar
    Riku-Laine committed
       ]
      },
      {
       "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",
    
    Riku-Laine's avatar
    Riku-Laine committed
        "### With unobservables in the data\n",
        "\n",
    
    Riku-Laine's avatar
    Riku-Laine committed
        "#### Predictive model\n",
    
    Riku-Laine's avatar
    Riku-Laine committed
        "\n",
    
    Riku-Laine's avatar
    Riku-Laine committed
        "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."
    
    Riku-Laine's avatar
    Riku-Laine committed
       ]
      },
      {
       "cell_type": "code",
    
       "execution_count": 48,
    
    Riku-Laine's avatar
    Riku-Laine committed
       "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",
    
    Riku-Laine's avatar
    Riku-Laine committed
        "    train_labeled.dropna().X.values.reshape(-1, 1),\n",
        "    train_labeled.result_Y.dropna())\n",
    
    Riku-Laine's avatar
    Riku-Laine committed
        "\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": [
    
    Riku-Laine's avatar
    Riku-Laine committed
        "#### Visual comparison\n",
    
    Riku-Laine's avatar
    Riku-Laine committed
        "\n",
    
    Riku-Laine's avatar
    Riku-Laine committed
        "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."
    
    Riku-Laine's avatar
    Riku-Laine committed
       ]
      },
      {
       "cell_type": "code",
    
       "execution_count": 49,
    
    Riku-Laine's avatar
    Riku-Laine committed
       "metadata": {
        "scrolled": false
       },
    
    Riku-Laine's avatar
    Riku-Laine committed
       "outputs": [
    
        {
         "name": "stdout",
         "output_type": "stream",
         "text": [
          "1 2 3 4 5 6 7 8 "
         ]
        },
    
    Riku-Laine's avatar
    Riku-Laine committed
        {
         "data": {
    
          "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",
    
    Riku-Laine's avatar
    Riku-Laine committed
          "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",
    
        "    print(r, end=\" \")\n",
    
    Riku-Laine's avatar
    Riku-Laine committed
        "\n",
    
    Riku-Laine's avatar
    Riku-Laine committed
        "    #### True evaluation\n",
    
    Riku-Laine's avatar
    Riku-Laine committed
        "    # Sort by failure probabilities, subjects with the smallest risk are first.\n",
    
    Riku-Laine's avatar
    Riku-Laine committed
        "    test.sort_values(by='B_prob_0_logreg', inplace=True, ascending=True)\n",
    
    Riku-Laine's avatar
    Riku-Laine committed
        "\n",
    
    Riku-Laine's avatar
    Riku-Laine committed
        "    to_release = int(round(test.shape[0] * r / 10))\n",
    
    Riku-Laine's avatar
    Riku-Laine committed
        "\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",
    
    Riku-Laine's avatar
    Riku-Laine committed
        "    failure_rates[r - 1, 0] = np.sum(\n",
        "        test.result_Y[0:to_release] == 0) / test.shape[0]\n",
        "\n",
    
    Riku-Laine's avatar
    Riku-Laine committed
        "    #### Labeled outcomes only\n",
    
    Riku-Laine's avatar
    Riku-Laine committed
        "    # 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",
    
    Riku-Laine's avatar
    Riku-Laine committed
        "    to_release = int(round(test_labeled.shape[0] * r / 10))\n",
    
    Riku-Laine's avatar
    Riku-Laine committed
        "\n",
    
    Riku-Laine's avatar
    Riku-Laine committed
        "    failure_rates[r - 1, 1] = np.sum(\n",
        "        test_labeled.result_Y[0:to_release] == 0) / test_labeled.shape[0]\n",
        "\n",
    
    Riku-Laine's avatar
    Riku-Laine committed
        "    #### 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",
    
    Riku-Laine's avatar
    Riku-Laine committed
        "\n",
    
    Riku-Laine's avatar
    Riku-Laine committed
        "    #### Contraction, logistic regression\n",
    
    Riku-Laine's avatar
    Riku-Laine committed
        "    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",
    
    Riku-Laine's avatar
    Riku-Laine committed
        "\n",
    
    Riku-Laine's avatar
    Riku-Laine committed
        "    #### Causal effect\n",
    
    Riku-Laine's avatar
    Riku-Laine committed
        "    # 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",
    
    Riku-Laine's avatar
    Riku-Laine committed
        "    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",
    
    Riku-Laine's avatar
    Riku-Laine committed
        "\n",
        "# Error bars TBA\n",
        "\n",
        "plt.figure(figsize=(14, 8))\n",
    
    Riku-Laine's avatar
    Riku-Laine committed
        "plt.plot(np.arange(.1, .9, .1),\n",
    
    Riku-Laine's avatar
    Riku-Laine committed
        "         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",
    
    Riku-Laine's avatar
    Riku-Laine committed
        "\n",
        "plt.title('Failure rate vs. Acceptance rate')\n",