From 4fc3921c8a61832781549f4c1b334622c844fc6d Mon Sep 17 00:00:00 2001 From: Riku-Laine <28960190+Riku-Laine@users.noreply.github.com> Date: Tue, 25 Jun 2019 19:11:19 +0300 Subject: [PATCH] Results, modules, summary table --- .../Analysis_07MAY2019_new.ipynb | 1313 ----------------- .../Analysis_07MAY2019_old.ipynb | 1237 ++++++++++++++++ .../Analysis_25JUN2019_modular.ipynb | 1145 ++++++++++++++ analysis_and_scripts/notes.tex | 128 +- figures/sl_with_Z_8iter_betaZ_1_0.png | Bin 0 -> 54730 bytes figures/sl_without_Z_8iter.png | Bin 0 -> 46720 bytes 6 files changed, 2461 insertions(+), 1362 deletions(-) delete mode 100644 analysis_and_scripts/Analysis_07MAY2019_new.ipynb create mode 100644 analysis_and_scripts/Analysis_07MAY2019_old.ipynb create mode 100644 analysis_and_scripts/Analysis_25JUN2019_modular.ipynb create mode 100644 figures/sl_with_Z_8iter_betaZ_1_0.png create mode 100644 figures/sl_without_Z_8iter.png diff --git a/analysis_and_scripts/Analysis_07MAY2019_new.ipynb b/analysis_and_scripts/Analysis_07MAY2019_new.ipynb deleted file mode 100644 index 0007648..0000000 --- a/analysis_and_scripts/Analysis_07MAY2019_new.ipynb +++ /dev/null @@ -1,1313 +0,0 @@ -{ - "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=\"#Data-sets\" data-toc-modified-id=\"Data-sets-1\"><span class=\"toc-item-num\">1 </span>Data sets</a></span><ul class=\"toc-item\"><li><span><a href=\"#Data-without-unobservables\" data-toc-modified-id=\"Data-without-unobservables-1.1\"><span class=\"toc-item-num\">1.1 </span>Data without unobservables</a></span></li><li><span><a href=\"#Synthetic-data-with-unobservables\" data-toc-modified-id=\"Synthetic-data-with-unobservables-1.2\"><span class=\"toc-item-num\">1.2 </span>Synthetic data with unobservables</a></span></li></ul></li><li><span><a href=\"#Algorithms\" data-toc-modified-id=\"Algorithms-2\"><span class=\"toc-item-num\">2 </span>Algorithms</a></span><ul class=\"toc-item\"><li><span><a href=\"#Contraction-algorithm\" data-toc-modified-id=\"Contraction-algorithm-2.1\"><span class=\"toc-item-num\">2.1 </span>Contraction algorithm</a></span></li><li><span><a href=\"#Causal-approach---metrics\" data-toc-modified-id=\"Causal-approach---metrics-2.2\"><span class=\"toc-item-num\">2.2 </span>Causal approach - metrics</a></span></li></ul></li><li><span><a href=\"#Performance-comparison\" data-toc-modified-id=\"Performance-comparison-3\"><span class=\"toc-item-num\">3 </span>Performance comparison</a></span><ul class=\"toc-item\"><li><span><a href=\"#Without-unobservables-in-the-data\" data-toc-modified-id=\"Without-unobservables-in-the-data-3.1\"><span class=\"toc-item-num\">3.1 </span>Without unobservables in the data</a></span></li><li><span><a href=\"#With-unobservables-in-the-data\" data-toc-modified-id=\"With-unobservables-in-the-data-3.2\"><span class=\"toc-item-num\">3.2 </span>With unobservables in the data</a></span></li></ul></li></ul></div>" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "<!-- ## Causal model\n", - "\n", - "Our model is defined by the probabilistic expression \n", - "\n", - "\\begin{equation} \\label{model_disc}\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", - "\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.) -->\n", - "\n", - "Imports and settings." - ] - }, - { - "cell_type": "code", - "execution_count": 51, - "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", - "from sklearn.model_selection import train_test_split\n", - "\n", - "# Settings\n", - "\n", - "%matplotlib inline\n", - "\n", - "# plt.rcParams.update({'font.size': 20})\n", - "# plt.rcParams.update({'figure.figsize': (14, 7)})\n", - "\n", - "# Suppress deprecation warnings.\n", - "\n", - "import warnings\n", - "\n", - "\n", - "def fxn():\n", - " warnings.warn(\"deprecated\", DeprecationWarning)\n", - "\n", - "\n", - "with warnings.catch_warnings():\n", - " warnings.simplefilter(\"ignore\")\n", - " fxn()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Data sets\n", - "\n", - "### 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", - "* $\\beta_X$ = `beta_X`, coefficient for $X$\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=0)$\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}(\\frac{1}{1+exp\\{-X\\}})$" - ] - }, - { - "cell_type": "code", - "execution_count": 52, - "metadata": {}, - "outputs": [], - "source": [ - "def dataWithoutUnobservables(nJudges_M=100,\n", - " nSubjects_N=500,\n", - " sigma=0.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(range(0, nJudges_M), 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(0, 1).\n", - " df = df.assign(X=npr.normal(size=nJudges_M * nSubjects_N))\n", - "\n", - " # Calculate P(Y=0|X=x) = 1 / (1 + exp(-X)) = sigmoid(X)\n", - " df = df.assign(probabilities_Y=sigmoid(df.X))\n", - "\n", - " # Draw Y ~ Bernoulli(1 - sigmoid(X))\n", - " # Note: P(Y=1|X=x) = 1 - P(Y=0|X=x) = 1 - sigmoid(X)\n", - " results = npr.binomial(n=1, p=1 - df.probabilities_Y,\n", - " size=nJudges_M * nSubjects_N)\n", - "\n", - " df = df.assign(result_Y=results)\n", - "\n", - " # Assign the prediction probabilities and add some Gaussian noise\n", - " # if sigma is set to != 0.\n", - " df = df.assign(probabilities_T=df.probabilities_Y)\n", - "\n", - " df.probabilities_T += npr.normal(size=nJudges_M * nSubjects_N) * sigma\n", - "\n", - " # Sort by judges then probabilities in decreasing order\n", - " # I.e. the most dangerous for each judge are first.\n", - " df.sort_values(by=[\"judgeID_J\", \"probabilities_T\"],\n", - " ascending=False,\n", - " inplace=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", - " # Halve the data set to test and train\n", - " train, test = train_test_split(df, test_size=0.5)\n", - "\n", - " train_labeled = train.copy()\n", - " test_labeled = test.copy()\n", - "\n", - " # Set results as NA if decision is negative.\n", - " train_labeled.loc[train_labeled.decision_T == 0, 'result_Y'] = np.nan\n", - " test_labeled.loc[test_labeled.decision_T == 0, 'result_Y'] = np.nan\n", - "\n", - " return train_labeled, train, test_labeled, test, df" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### 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." - ] - }, - { - "cell_type": "code", - "execution_count": 53, - "metadata": {}, - "outputs": [], - "source": [ - "def sigmoid(x):\n", - " '''Return value of sigmoid function (inverse of logit) at x.'''\n", - "\n", - " return 1 / (1 + np.exp(-1*x))\n", - "\n", - "\n", - "def dataWithUnobservables(nJudges_M=100,\n", - " nSubjects_N=500,\n", - " beta_X=1.0,\n", - " beta_Z=1.0,\n", - " beta_W=0.2):\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(range(0, nJudges_M), 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", - " df = df.assign(Z=npr.normal(size=nJudges_M * nSubjects_N))\n", - " df = df.assign(W=npr.normal(size=nJudges_M * nSubjects_N))\n", - "\n", - " # Calculate P(Y=0|X, Z, W)\n", - " probabilities_Y = sigmoid(beta_X * df.X + beta_Z * df.Z + beta_W * df.W)\n", - "\n", - " df = df.assign(probabilities_Y=probabilities_Y)\n", - "\n", - " # Result is 0 if P(Y = 0| X = x; Z = z; W = w) >= 0.5 , 1 otherwise\n", - " df = df.assign(result_Y=np.where(df.probabilities_Y >= 0.5, 0, 1))\n", - "\n", - " # For the conditional probabilities of T we add noise ~ N(0, 0.1)\n", - " probabilities_T = sigmoid(beta_X * df.X + beta_Z * df.Z)\n", - " probabilities_T += np.sqrt(0.1) * npr.normal(size=nJudges_M * nSubjects_N)\n", - "\n", - " df = df.assign(probabilities_T=probabilities_T)\n", - "\n", - " # Sort by judges then probabilities in decreasing order\n", - " # Most dangerous for each judge are at the top.\n", - " df.sort_values(by=[\"judgeID_J\", \"probabilities_T\"],\n", - " ascending=False,\n", - " inplace=True)\n", - "\n", - " # Iterate over the data. Subject will be given a negative decision\n", - " # if they are in the top (1-r)*100% of the individuals the judge will judge.\n", - " # I.e. if their within-judge-index is under 1 - acceptance threshold times\n", - " # the number of subjects assigned to each judge they will receive a\n", - " # negative decision.\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", - " # Halve the data set to test and train\n", - " train, test = train_test_split(df, test_size=0.5)\n", - "\n", - " train_labeled = train.copy()\n", - " test_labeled = test.copy()\n", - "\n", - " # Set results as NA if decision is negative.\n", - " train_labeled.loc[train_labeled.decision_T == 0, 'result_Y'] = np.nan\n", - " test_labeled.loc[test_labeled.decision_T == 0, 'result_Y'] = np.nan\n", - "\n", - " return train_labeled, train, test_labeled, test, df" - ] - }, - { - "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": 54, - "metadata": {}, - "outputs": [], - "source": [ - "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", - " Arguments:\n", - " -----------\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", - " --------\n", - " (1) The estimated failure rate at acceptance rate r.\n", - " '''\n", - " # Get ID of the most lenient judge.\n", - " most_lenient_ID_q = df[judgeIDJ_col].loc[df[accRateR_col].idxmax()]\n", - "\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", - "\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", - "\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": [ - "### Causal approach - metrics\n", - "\n", - "Generalized performance:\n", - "\n", - "$$\n", - "\\mathbf{gp} = \\sum_{x\\in\\mathcal{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}_{test}} f(x) ~ \\delta(F(x) < r)\n", - "$$\n", - "\n", - "where\n", - "\n", - "$$\n", - "f(x) = P(Y=0|T=1, X=x)\n", - "$$\n", - "\n", - "is a predictive model trained on the labeled data 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", - "\n", - "NB: in code the direction of inequality was changed. CDF changed to `bailIndicator` algorithm.\n", - "\n", - "**Rationale for `bailIndicator`:**\n", - "\n", - "* Bail decision is based on prediction $P(Y=0|T=1, X=x)$.\n", - " * Uniform over all judges\n", - "* Judges rationing: \"If this defendant is in the top 10% of 'dangerousness rank' and my $r = 0.85$, I will jail him.\"\n", - "* Overall: this kind of defendant $(X=x)$ is usually in the $z^{th}$ percentile in dangerousness (sd $\\pm~u$ percentiles). Now, what is the probability that this defendant has $z \\leq 1-r$?\n", - "\n", - "\n", - "<!--- **Proposal**\n", - "\n", - "1. Train model for $P(Y=0|T=1, X=x)$\n", - "* Estimate quantile function for $P(T=1|R=r, X=x)$\n", - "* Calculate $P(Y=0|do(r'), do(x'))=P(Y=0|T=1, X=x') \\cdot P(T=1|R=r', X=x')$ for all instances of the training data\n", - "* Order in ascending order based on the probabilities obtained from previous step\n", - "* Calculate $$\\dfrac{\\sum_{i=0}^{r\\cdot |\\mathcal{D}_{all}|}}{|\\mathcal{D}_{all}|}$$--->" - ] - }, - { - "cell_type": "code", - "execution_count": 55, - "metadata": {}, - "outputs": [], - "source": [ - "def getProbabilityForClass(x, model, class_value):\n", - " '''\n", - " Function (wrapper) for obtaining the probability of a class given x and a \n", - " predictive model.\n", - "\n", - " Arguments:\n", - " -----------\n", - " x -- individual features, an array of shape (observations, features)\n", - " model -- a trained sklearn model. Predicts probabilities for given x. \n", - " Should accept input of shape (observations, features)\n", - " class_value -- the resulting class to predict (usually 0 or 1).\n", - "\n", - " Returns:\n", - " --------\n", - " (1) 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", - "\n", - "def cdf(x_0, model, class_value):\n", - " '''\n", - " Cumulative distribution function as described above. Integral is \n", - " approximated using Simpson's rule for efficiency.\n", - " \n", - " Arguments:\n", - " ----------\n", - " \n", - " x_0 -- private features of an instance for which the value of cdf is to be\n", - " calculated.\n", - " model -- a trained sklearn model. Predicts probabilities for given x. \n", - " Should accept input of shape (observations, features)\n", - " class_value -- the resulting class to predict (usually 0 or 1).\n", - "\n", - " '''\n", - " def prediction(x): return getProbabilityForClass(\n", - " np.array([x]).reshape(-1, 1), model, class_value)\n", - "\n", - " prediction_x_0 = prediction(x_0)\n", - "\n", - " x_values = np.linspace(-15, 15, 40000)\n", - "\n", - " x_preds = prediction(x_values)\n", - "\n", - " y_values = scs.norm.pdf(x_values)\n", - "\n", - " results = np.zeros(x_0.shape[0])\n", - "\n", - " for i in range(x_0.shape[0]):\n", - "\n", - " y_copy = y_values.copy()\n", - "\n", - " y_copy[x_preds > prediction_x_0[i]] = 0\n", - "\n", - " results[i] = si.simps(y_copy, x=x_values)\n", - "\n", - " return results\n", - "\n", - "\n", - "def bailIndicator(r, y_model, x_train, x_test):\n", - " '''\n", - " Indicator function for whether a judge will bail or jail a suspect.\n", - " Rationale explained above.\n", - "\n", - " Algorithm:\n", - " ----------\n", - "\n", - " (1) Calculate recidivism probabilities from training set with a trained \n", - " model and assign them to predictions_train.\n", - "\n", - " (2) Calculate recidivism probabilities from test set with the trained \n", - " model and assign them to predictions_test.\n", - "\n", - " (3) Construct a quantile function of the probabilities in\n", - " in predictions_train.\n", - "\n", - " (4)\n", - " For pred in predictions_test:\n", - "\n", - " if pred belongs to a percentile (computed from step (3)) lower than r\n", - " return True\n", - " else\n", - " return False\n", - "\n", - " Arguments:\n", - " ----------\n", - "\n", - " r -- float, acceptance rate, between 0 and 1\n", - " y_model -- a trained sklearn predictive model to predict the outcome\n", - " x_train -- private features of the training instances\n", - " x_test -- private features of the test instances\n", - "\n", - " Returns:\n", - " --------\n", - " (1) Boolean list indicating a bail decision (bail = True) for each \n", - " instance in x_test.\n", - " '''\n", - "\n", - " predictions_train = getProbabilityForClass(x_train, y_model, 0)\n", - "\n", - " predictions_test = getProbabilityForClass(x_test, y_model, 0)\n", - "\n", - " return [\n", - " scs.percentileofscore(predictions_train, pred, kind='weak') < r\n", - " for pred in predictions_test\n", - " ]\n", - "\n", - "\n", - "def estimatePercentiles(x_train, y_model, N_bootstraps=2000, N_sample=100):\n", - " '''\n", - " Estimate percentiles based on bootstrapped samples of original data.\n", - " Bootstrapping is done N_bootstraps times and size of the sample is\n", - " N_sample.\n", - "\n", - "\n", - " '''\n", - "\n", - " res = np.zeros((N_bootstraps, 101))\n", - "\n", - " percs = np.arange(101)\n", - "\n", - " for i in range(N_bootstraps):\n", - "\n", - " sample = npr.choice(x_train, size=N_sample)\n", - "\n", - " predictions_sample = getProbabilityForClass(sample, y_model, 0)\n", - "\n", - " res[i, :] = np.percentile(predictions_sample, percs)\n", - "\n", - " return res\n", - "\n", - "\n", - "def calcReleaseProbabilities(r,\n", - " x_train,\n", - " x_test,\n", - " y_model,\n", - " N_bootstraps=2000,\n", - " N_sample=100,\n", - " percentileMatrix=None):\n", - " '''\n", - " Similar to bailIndicator, but calculates probabilities for bail decisions\n", - " by bootstrapping the data set.\n", - "\n", - " Returns:\n", - " --------\n", - " (1) Probabilities for positive bail decisions.\n", - " '''\n", - "\n", - " if percentileMatrix is None:\n", - " percentileMatrix = estimatePercentiles(x_train, y_model, N_bootstraps,\n", - " N_sample)\n", - "\n", - " probs = np.zeros(len(x_test))\n", - "\n", - " for i in range(len(x_test)):\n", - "\n", - " if np.isnan(x_test[i]):\n", - "\n", - " probs[i] = np.nan\n", - "\n", - " else:\n", - "\n", - " pred = getProbabilityForClass(x_test[i], y_model, 0)\n", - "\n", - " probs[i] = np.mean(pred < percentileMatrix[:, r])\n", - "\n", - " return probs" - ] - }, - { - "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." - ] - }, - { - "cell_type": "code", - "execution_count": 56, - "metadata": {}, - "outputs": [], - "source": [ - "def fitLogisticRegression(x_train, y_train, x_test, class_value):\n", - " '''\n", - " Fit logistic regression model with given training instances and return \n", - " probabilities for test instances to obtain a given class label.\n", - " \n", - " Arguments:\n", - " ----------\n", - " \n", - " x_train -- x values of training instances\n", - " y_train -- y values of training instances\n", - " x_test -- x values of test instances\n", - " class_value -- class label for which the probabilities are counted for.\n", - " \n", - " Returns:\n", - " --------\n", - " (1) Trained LogisticRegression model\n", - " (2) Probabilities for given test inputs for given class.\n", - " '''\n", - "\n", - " # Instantiate the model (using the default parameters)\n", - " logreg = LogisticRegression(solver='lbfgs')\n", - "\n", - " # Check shape and fit the model.\n", - " if x_train.ndim == 1:\n", - " logreg = logreg.fit(x_train.values.reshape(-1, 1), y_train)\n", - " else:\n", - " logreg = logreg.fit(x_train, y_train)\n", - "\n", - " label_probs_logreg = getProbabilityForClass(x_test, logreg, class_value)\n", - " \n", - " return logreg, label_probs_logreg" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Without unobservables in the data\n", - "\n", - "The underlying figure is attached to the preliminary paper. When conducting finalization, last analysis should be conducted with a preset random seed." - ] - }, - { - "cell_type": "code", - "execution_count": 57, - "metadata": { - "scrolled": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[1] 0 1 [2] 0 1 [3] 0 1 [4] 0 1 [5] 0 1 [6] 0 1 [7] 0 1 [8] 0 1 " - ] - }, - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAA0oAAAHwCAYAAACYFJ/XAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4zLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvnQurowAAIABJREFUeJzs3Xl8TNf7wPHPyUIsaVD70gatKhJBIrRILEVrKW3VUsRebVVRW/1aQilV1XypL7XvYt+rtSW2UoRQSy2tqH2XJohIcn5/3Jv5jshKliHP+/Wal5m555773Htm2nlylqu01gghhBBCCCGE+B+7rA5ACCGEEEIIIWyNJEpCCCGEEEIIkYAkSkIIIYQQQgiRgCRKQgghhBBCCJGAJEpCCCGEEEIIkYAkSkIIIYQQQgiRgCRKQogspZSarpQaYj5voJQKy+KQhMg0SqkySqnIZLY7KKW0Uso186LKeEqpbkqp4KyOIzkpxaiU2qmU6pR5EQkhMpskSkKIdKGUClNK3VNKRVo9iqe0n9a6m9b6m8yI8UkppUYqpWZndRyJMZNMrZTql8VxvKSUeupv0JdZCYrW+m+tdV6r42baj29b/jwLIYQtkERJCJGemmmt81o9LmbWgZVSDlm5vw3wA26a/4oUPAPtLVIgbSyEeFKSKAkhMpRSyk4ptUwpdVkpdVspFayUetVq+3yllH8i+z3yF33rsvHD9JRSQ5RSl4Fp5vvNlVKHzGPtVEpVSiKu+Po/VkqdBv403/9RKXVeKfWvUmqfUuo18/2mwEDgA7O3LMR8P59SapZS6pK53wil1CP/bVVKlVJK3VVKuVi956WUumrGUk4ptV0pFa6Uuq6UWpiGa5wXeAf4CKiglPJIsL2OUmqPWfc5pVQH8/3cSqkflFL/mNu2K6VymtteN/e5rZQKVUrVsapvp1JqlFJqv7nfSqVUfnPzdrNMfK+il1LqZaVUkFLqhnlu8xJch/NKqX5KqT/M+hbFx2Fuf8eM4V+l1GmlVMO0XHuz7Eil1GKz7gigvVKqptU5XlJKTVBKOVqfB3DUPI93zXpS+/kapZT6wXyeUykVpZT6Jr69zNcuyqoHTin1LVATmGIeM8Cqykbmud9SSk2wOo6dUmqoUuqs+VmarZR6ztz2yFBW8zr5JvV5TlA2td/BgUqpa0qpi0qpjlZl85nlr5nlvlBKKatD2Cml/mu2+XGlVF2rfbua+0Qopf5WSrWx2tZNKfWneS02KKVKJYjX8p1WxtDeMQnOa71Sqrf5/Euz/gil1FGlVPMElyHJGBO5XknFZWd+tq6a9RxWSlVIqh4hhA3RWstDHvKQxxM/gDCgQSLv2wGdAGfACfgR2G+1fT7gbz5vAISZzx0ADbgmUzYG+AbIAeQCvIAr5r/2QBfgLyBHInHF1/8LkB/IZb7fAShgbh8EXABymttGArMT1LMO+C+QGygKhABdk7hG24HOVq9/AH40ny81j2dnXqfX03DtOwPnzX03AOOttpUGIoD3zXMqCHiY234CtgDFzOtVC3AESgE3gEZmnY2B68Dz5n47gXNABSAPsCr+ugAvGf9reSi+ckB9s50KA7uAcVbbzwN7zOv3PHAS6GZuew24be5vZ8b2ymNc+5FANNDMrCf+8+JtXpcy5nF7JfP5S8vnqyFw0Hxexyy3y2pbSGLXy7y2nRL5nK4GXABXjJ7DBub2HmbcpTG+Y6uBWQm/TwmutW9Sn+ckviMpfQeHmZ+b5sAd4Dlz+0JghRlXGeA04Gdu62bu29vct53ZzvmA54Bw4GWzbDGggvn8PeAE8IoZnz+wI6nvNFAP479NyizzPHAPKGK+ft+s386MIdJqW5IxJmyrFOJqAuw1288O43tTNCv+Oy0PecgjbY8sD0Ae8pDHs/Ewf4xEmj8kbgOrkihX0Pwxk8d8/SSJUhRWP1IxepWGJTjeXySSdFjVXyeZc1IYSUZF8/VDPyyBEuaPrpxW73UANiVRX09go/ncDrgIvGa+XghMBko8xrUPxkw8zONfARzM118BSxPZxx64H39uCbb9H+aPbav3tgAfmM93AiOttrmbbaFIJFFKpP73gH1Wr88Dbaxej+d/CeQM4LtE6kjrtR8JbE0hrv7x1yqJz19aPl95zOubD/gSIwm+iJHUjcJMZhNeL5JOlGpYvbcC6G8+3wb0sNpW0TyuHZmTKEUC9lbbbwKeGIlFDFDOatsnwGbzeTeMZFtZbT8AtMVIlG4DLQGnBDFtwky2rGK8b34eHvlOm9fhAv/7nn2E+R1M4pyPAE1SijFhW6UQV0OMHmtvwC6t3295yEMeWfeQoXdCiPTUQmudz3y0AFBK2SulxprDW/7F+KsyGAnTk7qitY62ev0iMMgcFnVbKXUb46/FJZKp45z1C3MY0Z9KqXDgFsYP3qRifRHICVyxOt4koEgS5ZcCtZVSRYC6QJTW+jdz2+cYPy73K2MIml8yMVvH64rRY7HAfGslkBejFwiMHpi/Etm1CEYPT2LbXgTaJriONQDrxTmsr9tZjOtQIIkYiyqlliilLpifgdk8ek0vWz2/a55DcvGn9donjBmlVHlzGNZlM64RicSV8Jip+nxpre8ABzHapg5GMrsHY2idD0aCkxZJXZ/iGNc/3lmMdi2Uxvof13WtdWwisRXGSMYTxmZ9rc5rrXWC7cW11v9iJEyfAJeVUuuUUuXMMi8Ck6yu/3UgDihpVY+lnbXWccBisz4weoXivysopTqp/w2lvA2U5+HPQKIxJnIdkoxLa70RmILxh5ArSqkpSinnROoQQtgYSZSEEBmtI/AWxhAYF4y/oIPR+5AkrXUMxl9kc1u9XTRhsQSvzwHDrZK1fFrr3FrrJckdKv6JOf+gH/AuRk9Afoy/mKuEZa2OdxcoYHW857TW7kmc0w1gK9AK4wfbIqttl7SxAmAxjB+IU5VSpZOJO15HM74NypirdRrjh3L8XJFzQNlE9ruCMRQtsW3nMHqUrK9jHq31d1ZlSlk9fwGjrW7y6DUC+Nbc7qa1fg5jKGay7Z8glqRiTPW1NyWM7SeMHoSXzLiGknRbxx8zLZ+vbRi9Lm4YwwK3AW8C1YAdqYwxJRcxfqTHewGjXa9hDIOzfH+UsbjB86k9Viq/g0m5CsQmEtsFq9cledgLGOeD1nqD1roBRiJ6GqOtwGiDrgnaIJfW+nfr0BPUuwh43/w+VcX4YwJKqTIYyctHGMNK82H0/Fh/NpOMMYFk49JaB2itqwKVMIbeZenqlEKI1JFESQiR0Zwxfmzd4H/DjlLrEMZkc3ulVBOMOTTJmQp8oowFBJQyJs03U0rlSUOsMRh/DXbEmGdgve8VwDV+QrrW+hzGj99xSqnnzEnbLymrhQ8SsRBjZbp3zOcAKKXeV0rF/7X9NsaPvdhHd39ER4wf+B5Wj9ZAc2UssDAfaKyUetec7F5QKVXZ7AWYDQSYPT72yljAwRGYB7RUSr1hvu+klKqrHl7uvaPZI5MHGA4sMf/yfhXQ5o/QeM4YP9rDzQnu/VNxXvFmAN3M49sppUoqpV55zGufkDPGXJg7ylhg5MP4Deb1uYExtyZeWj9f2zCSwsNm0hGMOadIa30ziX2uJDhmShYB/ZRSrmYvxShgkdmT8ifgrJRqZLZr/Fwi62NZPs9JSOt3EACt9QNgGfCNeZ1KA30xPo/xiimlepmfyzYYCfEvSqli5nXNjZH03eF/34UpwP+Z7RW/YMR7KcSyD6OdpwI/mz1WYPR8aYykUimlumH0KFlLNMZEDpNkXEqp6ubDwTyXaFL33RZCZDFJlIQQGW0Wxl9gLwJHgd+SL/6Q3hjzFG5j9MKsSa6w+dfbjzD+SnwLY5J7+zQc72dgM3AKY87Vv8Alq+2LMXprbiql9prvtcdIpo6Zx1xK8n91X4XxF+V/tNZHrd73BvYppe5gzEH5RGv9D4BS6oRSqnXCipRStTCGAU3SWl+Of2D8xTwMaK21PoOxgMEgjB6fAxg9HGD8cD2O0dtxE2NhDKW1DsO47l9h/Ij8B2NooPX/M+Zh/Oi9hDHEqg+A1joCGA38bg5D8sT4gV4d48fqGmB5MtfnIebQxO7ABHP/IP7Xm5XWa5/Q5xhJawRGj8XiBNuHAQvN83jnMT5fOzH+OBC/gt5h4IHV68QE8L9hj+NTcQ7TzLh3AH+b5/IZgNb6FvApMAejJ+cmDw/hS+zznFCavoMJfIyRFJzBSBrnAHOttv+GMafqJsYfJd41Y7YHBmB8tm5gLOjRyzynpRhz2JaawyUPYyw6kpJFGL17lj9OaK0PY3yu9prHKg/8nmC/pGJ8SApx5cNI+G9jfC8vYSzkIoSwcfGrwAghhBCpopTaCUzXWs/O6liEEEKIjCI9SkIIIYQQQgiRgCRKQgghhBBCCJGADL0TQgghhBBCiASkR0kIIYQQQgghEpBESQghhBBCCCEScMjqANJLwYIFtaura1aHYXHnzh3y5EntrVtEZpA2sU3SLrZH2sQ2SbvYHmkT2yTtYntsrU1CQkKua60LpVTumUmUXF1d2b9/f1aHYREcHIyvr29WhyGsSJvYJmkX2yNtYpukXWyPtIltknaxPbbWJkqps6kpJ0PvhBBCCCGEECIBSZSEEEIIIYQQIgFJlIQQQgghhBAigWdmjlJiHjx4wPnz54mKisr0Y7u4uHD8+PFMP64wODk5UbJkSRwdHbM6FCGEEEII8RR6phOl8+fP4+zsjKurK0qpTD12REQEzs7OmXpMYdBac+PGDc6fP0/p0qWzOhwhhBBCCPEUeqaH3kVFRfH8889nepIkspZSiueffz5LehKFEEIIIcSz4ZlOlIA0J0m+s33xne2bMcGITCPJsRBCCCGEeBLPfKKUlW7cuIGHhwceHh4ULVqUEiVKWF5HR0en23E2b96Mi4uLpW4PDw+CgoLSXE9MTAz58uV77DhmzpzJ5cuXLa87d+7MiRMnHrs+IYQQQgghssozPUcpqz3//POEhoYC4O/vT968eenfv/9DZbTWaK2xs3uynLVu3bqsWrXqiep4UjNnzqRq1aoULVoUgFmzZmVpPEIIIYQQQjwu6VHKAqdPn6ZSpUr07NmTqlWrcu7cuYd6cgIDA+nWrRsAV65c4Z133sHT05Pq1auzZ8+eVB/n888/Z+rUqZbXX375Jf/5z3/4999/qVevHlWrVsXd3Z1169Y9su/mzZtp0aKF5XXPnj2ZP38+AMOGDcPLy8tyDlprFi9eTGhoKK1bt7b0mNWqVcuSKM6fPx83NzcqVarEkCFDgP/1YA0ePJjKlStTs2ZNrl69moYrKYQQQgghRMbINj1KfX7pQ+jl0BTLxZdJzTwlj6IeBDQOeKx4jh07xqxZs5gyZQoxMTFJluvduzcDBw6kRo0ahIWF0bRpU44cOfJIuaCgIDw8PCyvV61aRZs2bRg8eDA9evQAYOnSpQQFBZErVy5Wr16Ns7MzV69e5fXXX6dp06apjv2zzz5j+PDhaK1p164dv/zyC61bt2bixIn8+OOPD8UBxuqDX375Jfv378fFxYUGDRqwbt06GjduTHh4OD4+PowZM4Z+/foxc+ZMBg8enOpYhBBCCCGEyAjZJlGyNWXLlsXLyyvFcps3b35ons+tW7e4d+8euXLleqhcYkPvXF1dOXfuHFeuXOH8+fMULVqU4sWLEx0dzaBBg9i5cyd2dnacO3eO69evp3p+0pYtW/juu++Iiori+vXrVKtWjTfffDPJ8r///jv16tWjYMGCALRr147t27fTuHFjcuXKZdm3WrVq7NixI1UxCCGEEEIIkZGyTaKU2p6f+J6k4E7BGRcMkCdPHstzOzs7tNaW19bLWmut2bt3Lzly5His47z77rssX76csLAw2rRpA8DcuXMJDw/nwIEDODg4ULJkyUeW0nZwcCAuLu6RmO7evUuvXr04cOAAJUqU4Msvv0xxGW7rc0vI+rzs7e2T7V0TQgghhBAis8gcJRtgZ2dH/vz5OXXqFHFxcaxcudKyrUGDBkyaNMnyOn7OT2q1adOGwMBAVqxYwbvvvgtAeHg4hQsXxsHBgU2bNnHhwoVH9nvxxRc5evQo0dHR3Lp1i61btwJw79497OzsKFiwIBERESxfvtyyj7OzMxEREY/UVaNGDYKCgrhx4wYxMTEEBgbi4+OTpvMQQgghhBAiM0miZCO+/fZbGjduTP369SlZsqTl/UmTJrFr1y7c3d2pUKEC06ZNS3T/+DlK8Y/4ZKty5cpcu3aN0qVLU7hwYQA6dOjAb7/9hqenJ0uXLuXll19+pL7SpUvTokUL3Nzc6NixI1WrVgWMlfz8/PyoVKkSLVu2xNvb27JP586d6dat2yPLn5csWZIRI0bg6+uLh4cHNWrUoEmTJk9+0YQQQgghhMggKrlhUU8TT09PvX///ofeO378OK+++mqa6kmvoXcRERE4Ozs/UR3iySRs/+DgYHx9fbMuIJEoaRfbI21im6RdbI+0iW2SdrE9ttYmSqkQrbVnSuWyzRyl1MrouUlCCCGEEEII2ydD74QQQgghhBAiAelREkIIIYQQQmQIX1+4fduDNK5HZhOkR0kIIYQQQgghEpBESQghhBBCCJEhYmLgTuTTmXLI0LuEfM1/g7MwBiGEEEIIIZ5y69bBkV3hKOK49+8Dcj3nmNUhpcnTmd49RfLmzZvqsv7+/owbNy7D6n/cYyQmLCyMhQsXPnE9QgghhBDi2XLjBrRvD82awQuc5Vu7weTKGZfVYaWZJErisUiiJIQQQgghElq+HCpU0CxeFMsw/BlbcCxTK42EnDmzOrQ0k0QpC6xduxZvb2+qVKlCgwYNuHLlimXboUOHqFevHi+//DLTpk2zvP/dd9/h5eWFu7s7w4YNS7TepMqMGjWKV155hQYNGnDixIlE9z179iz169fH3d2d+vXr888//wDQqVMnli1bZikX34M1ePBgduzYgYeHBz/88AOxsbH0798fNzc33N3dmThxIgBbtmyhSpUquLm50aVLF+7fvw+Aq6srQ4YMoWbNmnh6enLgwAEaNWpE2bJlmTJlSrLndOfOHZo0aULlypWpVKkSixcvTv3FF0IIIYQQ6e7KFWjVCt57D0raXWR/XFX8/cIYW2EOMerpGnIXL/vMUeoDpGZZwvgyvqko6wEEpD2UWrVqsWfPHpRSTJ8+nbFjx/L9998DcPjwYfbs2cOdO3eoUqUKTZo04ciRI5w6dYq9e/eitaZ58+Zs376dOnXqWOrcuHFjomXy5MlDYGAgBw8eJCYmhqpVq1KtWrVHYurVqxcdO3bEz8+PmTNn0rt3b1atWpXkOYwZM4Zx48axbt06ACZPnsyZM2c4ePAgDg4O3Lx5k6ioKDp16sSWLVsoV64cHTt2ZPLkyfTp0weAUqVKsXv3bvr27UunTp3YtWsXUVFRVKxYkZ49eyZ5TteuXaN48eKsX78egPDw8LQ3ghBCCCGEeGJaw8KF0Ls3REZqRr++nv67WuDQoytMnsxWOzuCg0NJ3Y9r25J9EiUbcv78eVq3bs2lS5eIjo6mdOnSlm1vv/02uXLlIleuXNStW5e9e/eyc+dONm7cSJUqVQCIjIzk1KlTjyRKiZWJiIigZcuW5M6dG4DmzZsnGtPu3btZsWIFAB06dGDgwIFpOqfNmzfTs2dPHByMj1SBAgU4dOgQpUuXply5cgD4+fkxadIkS6IUH4ubmxuRkZE4Ozvj7OyMk5MTt2/fTvKcateuTf/+/Rk0aBBNmzaldu3aaYpVCCGEEEI8uQsX4KOPYO1aqFFDM9P1a14NHGZkTQEBoFRWh/hEsk+ilNqeH1/z3+CMCQPg008/pV+/fjRv3pzg4GD8/f0t21SCD5RSCq01X3zxBR9++GGSdSZVJiAg4JE6UyN+HwcHB+Li4izHiI6OTvL4CY+jtU72GDnNsap2dnaW5/GvY2Jikj3vkJAQfv75Z7744gsaNmzI0KFDU39yQgghhBDisWkNs2ZBv34QHQ3jx8XR+4/u2M+ZCYMGwejRT32SBBk8R0kp1VgpdUIpdVopNTiR7T2VUn8opUKVUjuVUhXM912VUvfM90OVUlMerf3pFR4eTokSJQCYM2fOQ9tWr15NVFQUN27cIDg4GC8vLxo1asTMmTOJjIwE4MKFC1y9evWh/ZIqU6dOHVauXMm9e/eIiIhg7dq1icb02muvERgYCMCCBQuoVasWYMwlCgkJscT24MEDAJydnYmIiLDs37BhQ6ZMmUJMTAwAN2/epHz58oSFhXH69GkA5s2bh4+PT6qvU1LndPHiRXLnzk379u3p378/Bw4cSHWdQgghhBDi8Z09C40aQdeu4OEBhw/E0PdAByNJGjbsmUmSIAN7lJRS9sAk4A3gPLBPKbVGa33MqthCrfUUs3xzYDzQ2Nz2l9baI6Piyyx3796lZMmSltf9+vXD39+fVq1aUaJECWrUqMGZM2cs26tXr06TJk34559/+OqrryhevDjFixfn+PHj1KxZEzAWVJg/fz6FCxe27NewYcNEy1StWpXWrVvj4eHBiy++mOQwtQkTJtClSxe+++47ChUqxKxZswDo3r07b7/9NtWrV6d+/frkyZMHAHd3dxwcHKhcuTKdOnXi008/5eTJk7i7u+Po6Ej37t3p1asXs2bNolWrVsTExODl5UXPnj1Tfe2SOqfTp08zYMAA7OzscHR0ZPLkyamuUwghhBBCpF1cHEyZYnQYaQ2TJkHPLtHYfdAWVqwwEqTBj/SLPNVUSsOjHrtipWoC/lrrRubrLwC01qOTKN8W6Ki1flMp5Qqs01pXSu3xPD099f79+x967/jx47z66qtpC9zX/Dc4bbslFBERgbOz85NVIp5IwvYPDg7G19c36wISiZJ2sT3SJrZJ2sX2SJvYJmmX9Hf6NHTrBtu2wRtvwNSp4Fo0yljibv16+OEHMOegJ8bW2kQpFaK19kypXEYOvSsBnLN6fd587yFKqU+UUn8BY4HeVptKK6UOKqW2KaUyb7Z+MBk6P0kIIYQQQoinQWyskQO5u0NoKMyYAb/+Cq6F70Lz5kaSNHlysknS0ywje5RaAY201t3M1x2A6lrrT5Mo384s76eUygnk1VrfUEpVA1YBFbXW/ybYpwfQA6BIkSLV4ufYxHNxceGll15K71NLldjYWOzt7bPk2MJw+vTph5YOj4yMtNwHStgOaRfbI21im6RdbI+0iW2SdkkfZ8/mZuzYVzh2zIWaNa/Tt+9JChWKxv7uXdyGDMHl8GFODBzI5caNU6zL1tqkbt26qepRyshV784DpaxelwQuJlM+EJgMoLW+D9w3n4eYPU7lgIfG1mmtpwJTwRh6l7BL7/jx41k2/E2G3mU9Jycny9LiYHvdvsIg7WJ7pE1sk7SL7ZE2sU3SLk8mJga++w78/SFvXpg/H9q1K4hSBSE8HN58E44cgQULKN+2LeVTUefT2iYZOfRuH/CyUqq0UioH0AZYY11AKfWy1csmwCnz/ULmYhAopcoALwN/Z2CsQgghhBBCZGuHD4O3NwwZYoysO3YMPvjAXMTu5k2oXx/274clS6Bt26wON8NlWI+S1jpGKdUL+BWwB2ZqrY8qpUYA+7XWa4BeSqkGwAPgFuBn7l4HGKGUigFigZ5a65sZFasQQgghhBDZVXQ0fPMNjBoFBQrA0qXGOg0WV68aqzicOAErV0KTJlkWa2bK0BvOaq1/Bn5O8N5Qq+efJbHfcmB5RsaWpPhuweDgLDm8EEIIIYQQmWX/fujSBf74w+g9CgiAggWtCly8CA0aQFgYrF1rJEzZRIbecFbwyMS12bNn06tXryyKJmP4+vqScGn21AoODua3336zvJ4yZQpz585Nr9CEEEIIIUQioqKM2x55e8ONG7BmjTEf6aEk6dw58PEx/t2wIVslSZDBPUpCpCQ4OJi8efPy2muvAaTphrRCCCGEECLtfvvN6EU6cQK6doVx4yBfvgSFzpyBevWMuUkbN0LNmo91rAexD7hw78KTB50FpEcpC3Xq1Illy5ZZXsf3PgUHB+Pj48P7779PuXLlGDx4MAsWLKB69eq4ubnx119/AbB27Vq8vb2pUqUKDRo04MqVKwD4+/vTpUsXfH19KVOmDBMmTEj0+Bs3bqRmzZpUrVqVVq1aERkZyYYNG3j//fctZYKDg2nWrBkAH330EZ6enlSsWJFhw4YlWqd1D9qyZcvo1KlTkrGGhYUxZcoUfvjhBzw8PNixYwf+/v6MGzcOgNDQUGrUqIG7uzstW7bk1q1bgNGDNWjQIKpXr065cuXYsWNHmq+9EEIIIUR2c+cO9O0LtWrBvXvGPZGmT08kSTp5EmrXNla527r1sZOk0zdP49TNifbT23P3wd0nP4FMln16lPr0Me6UlZL4MqlZwtDDwxjImYx79+7h4eFheX3z5k2aN2+eYtWHDh3i+PHjFChQgDJlytCtWzf27t3Lf/7zHyZOnEhAQAC1atViz549KKWYPn06Y8eO5fvvvwfgzz//JCgoiIiICF555RU++ugjHB0dLfVfv36dkSNHsnnzZvLkycO3337L+PHjGTJkCB9++CF37twhT548LF68mNatWwMwatQoChQoQGxsLPXr1+fw4cO4u7unfJ0gyVh79uxJ3rx56d+/PwBbtmyx7NOxY0cmTpyIj48PQ4cOZfjw4QSY1zsmJoa9e/fy888/M3z4cDZv3pyqOIQQQgghsqPgYKP36O+/4eOPYcwYSPRONkePGqvbxcUZO6Xyt541rTXzDs/jw+8+JG55HHZxdsbSbY4p7mpTsk+ilEVy5cpFqFWCNnv27FTN5/Hy8qJYsWIAlC1bloYNGwLg5uZGUFAQAOfPn6d169ZcunSJ6OhoSpcubdm/SZMm5MyZk5w5c1K4cGGuXLlCyZIlLdv37NnDsWPHeP311wGIjo6mZs2aODg40LhxY9auXct7773H+vXrGTt2LABLlixh6tSpxMTEcOnSJY4dO5bqRCm5WBMTHh7O7du38fHxAcDPz49WrVpZtr/zzjsAVKtWjbCwsFTFIIQQQgiR3UREwKBBMHkylC1r5D7mz6tHhYYa85AcHSEoCF59Nc3HC48Kp/uK7iz9YSnsh9wKVBJaAAAgAElEQVTOuXmhxAvkzp37ic4jK2SfRCmFnh+LTFz1zsHBgbi4OMDIvKOjoy3bcubMaXluZ2dneW1nZ0dMTAwAn376Kf369aN58+YEBwfj7++f6P729vaWfeJprXnjjTdYtGjRI3G1bt2aSZMmUaBAAby8vHB2dubMmTOMGzeOffv2kT9/fjp16kRUVNQj+yqlLM+ttycX6+OIP7/Ezk0IIYQQQhhD63r0MNZi6NcPvv4aksxX9u2Dhg2NbqatW+Gll9J8vN/O/UarSa24OOsiXIW+/foyZvSYhxbueprIHKUs5OrqSkhICACrV6/mwYMHado/PDycEiVKADBnzpw07VujRg127drF6dOnAbh79y4nT54EjDlABw4cYNq0aZZhd//++y958uTBxcWFK1eusGHDhkTrLVKkCMePHycuLo6VK1emGKuzszMRERGP1OPi4kL+/Pkt84/mzZtn6V0SQgghhBBJu3XLWKyhcWMjMdq1C77/PpkkadcuY7hd/vywfXuak6SYuBiGBw+n1se1uDT+Evnj8rNhwwbGfz+eHDlyPPkJZRFJlLJQ9+7d2bZtG9WrV+f3338nT548adrf39+fVq1aUbt2bQo+tJZjygoVKsTs2bNp27Yt7u7u1KhRgz///BMwemmaNm3Khg0baNq0KQCVK1emSpUqVKxYkS5duliG7CU0ZswYmjZtSr169SxDB5OLtVmzZqxcudKymIO1OXPmMGDAANzd3QkNDWXo0KEIIYQQQoikrVkDFSvC3LnwxRdw8GAKazEEBUGjRlCsmJEkubqm6Xhnb5+l9n9r4/+xP3qdxreOL8f+OEbjxo2f6DxsgdJaZ3UM6cLT01MnnPtz/PhxXk3r2Mp0GnoXERGBc6Iz5ERmSdj+wcHB+KZmkQ6RqaRdbI+0iW2SdrE90ia2Kbu2y/Xr8NlnsHChsf7CzJlQrVoKO/36K7RoYUxe2rwZihZN0zGXHF1Cl4lduBt4F7s7doz+ZjSff/45dnYP98XYWpsopUK01p4plcs+c5RSKxPmJgkhhBBCCJFeli6FTz6B27dh+HDjRrIpjnhbswZatYIKFWDTpgR3mk1eZHQkvdb1Ys7EObANXnB9gWWbluHl5fVkJ2JjJFESQgghhBDiKXT5MvTqBcuXg6cnbNkCbm6p2HHpUmjXDqpUMXqV8udP9TH3X9xPq+mtCJsZBmehbbu2TJk8heeee+6xz8NWyRwlIYQQQgghniJaw/z5xlykdeuMeyLt3p3KJGn+fGjTBry9jeF2qUyS4nQcY3eNxbu/N/98+w9O15yYM2cOC+YveCaTJJAeJSGEEEIIIZ4a589Dz56wfr2xSMPMmVC+fCp3njEDunc35uSvWQN586Zqt4sRF/lg8QcETw2GfVDZozJLFi+hXLlyj3saTwXpURJCCCGEEMLGaQ3Tpxu9SFu3GrcI3bEjDUnSpEnQrZuxwt369alOktacWEMF/wps+3Ib7IO+ffvy+57fn/kkCaRH6RGZeL9ZIYQQQgghUhQWZnQEbd5s/FadPt1YqC7Vvv8e+veH5s1hyRLImTPFXe49uMfnv37O5J8mo35V5HfJz/yf5/Pmm28+7mk8daRHKYNdvnyZNm3aULZsWSpUqMBbb71lubFrWgUEBHD37t10iSssLIyFCxdaXu/fv5/evXunS93WfH19SbhsuxBCCCGESFlcnNERVKkS7NkDkycbCzakKUkaNcpIklq1gmXLUpUkHb5ymCr/qcLkQZNhHdTzqcfRP45mqyQJJFHKUFprWrZsia+vL3/99RfHjh3jm2++4cqVK49VX3KJUmxsbJrqSpgoeXp6MmHChMeKSwghhBBCpK9Tp4zeo169oFYtOHrUmJtkl9pf71rDV1/Bl19Chw7GDZYcHVPYRTPx94l4funJqVGnsD9pz9ixY9n460aKpvEeS88CSZQyUFBQEI6OjvTs2dPynoeHB7Vr10ZrzYABA6hUqRJubm4sXrwY+N8Nud577z3Kly/PBx98gNaaCRMmcPHiRerWrUvdunUByJs3L0OHDsXb25vdu3czYsQIvLy8qFSpEj169CD+ZsKnT5+mQYMGVK5cmapVq/LXX38xePBgduzYgYeHBz/88APBwcE0bdoUgJs3b9KiRQvc3d2pUaMGhw8fBsDf358uXbrg6+tLmTJl0pxYLVq0CDc3NypVqsSgQYMs78+YMYNy5crh6+tL9+7d6dWr1+NfdCGEEEKIp1hsrDFSzt0dDh+GWbNgwwZ44YU0VKI1DBgAI0ca85JmzQKH5GfcXL1zlSYLmtD7i948mPGAUvlL8duu3xgwYMAjN5DNLrLNHKU+fSA0NOVy8WVSc/NgDw9jIl1Sjhw5QrUkbom8YsUKQkNDOXToENevX8fLy4s6deoAcPDgQY4ePUrx4sV5/fXX2bVrF71792b8+PEEBQVR0Lwh2J07d6hUqRIjRowAoEKFCgwdOhSADh06sG7dOpo1a8YHH3zA4MGDadmyJVFRUcTFxTFmzBjGjRvHunXrACNBizds2DCqVKnCqlWr2Lp1Kx07diTUvDB//vknQUFBRERE8Morr/DRRx/hmMJfJwAuXrzIoEGDCAkJIX/+/DRs2JBVq1ZRvXp1vv76aw4cOICzszP16tWjcuXKKdYnhBBCCPGsOXYMunSB33+HZs1gyhQoXjyNlcTFQe/expi9Tz6BCRNS7Ib69fSvtJ/dnhsLbkAYtGvXjsmTJz+zy36nVvZMD23Azp07adu2Lfb29hQpUgQfHx/27dsHQPXq1SlZsiR2dnZ4eHgQFhaWaB329va8++67ltdBQUF4e3vj5ubG1q1bOXr0KBEREVy4cIGWLVsC4OTkRO7cuVOMrUOHDgDUq1ePGzduEB4eDkCTJk3ImTMnBQsWpHDhwqkeRrhv3z58fX0pVKgQDg4OfPDBB2zfvp29e/fi4+NDgQIFcHR0pFWrVqmqTwghhBDiWfHgAXzzjXH/19OnjVFyq1c/RpIUGwsffmgkSf37w8SJySZJ92Pu8/mvn9P4q8bcCriF01UnZs+ezfz587N9kgTZqEcpuZ4fa+m56l3FihVZtmxZotvih8UlJqfVJDt7e3tiYmISLefk5IS9vT0AUVFRfPzxx+zfv59SpUrh7+9PVFRUssdJSmL7KKXSFFtq6kzufSGEEEKI7CA01OhFOnjQWG/hxx+hcOHHqCgmBjp3Nm4o+9VXMHw4mL/fEvPn9T9pHdiaw3MPwz6o5FEpW9wbKS2kRykD1atXj/v37zNt2jTLe/v27WPbtm3UqVOHxYsXExsby7Vr19i+fTvVq1dPtj5nZ2ciIiIS3RYVFQVAwYIFiYyMtCRozz33HCVLlmTVqlUA3L9/n7t37yZbV506dViwYAFgDMkrWLBgin9VqF+/PhcuXEhyu7e3N9u2beP69evExsayaNEifHx8qF69Otu2bePWrVvExMSwfPnyZI8jhBBCCPEsiI6GoUPBywsuXjQWpFuy5DGTpAcPoF07I0kaORJGjEgySdJaMy1kGh5fe3B01FHYB/369cs290ZKi2zTo5QVlFKsXLmSPn36MGbMGJycnHB1dSUgIIA6deqwe/duKleujFKKsWPHUrRoUf78888k6+vRowdvvvkmxYoVIygo6KFt+fLlo3v37ri5ueHq6oqXl5dl27x58/jwww8ZOnQojo6OLF26FHd3dxwcHKhcuTKdOnWiSpUqlvL+/v507twZd3d3cufOzZw5c5I9z7i4OE6fPk2BAgWSLFOsWDFGjx5N3bp10Vrz1ltv8fbbbwMwZMgQvL29KV68OBUqVMDFxQWANWvWsH//fsscLCGEEEKIZ8G+fUYv0pEjxoJ0P/wAzz//mJXdvw/vvw9r1hirQPTrl2TRm/du0m1NN1YuWIndr3bkfy4/c9fP5a233nrMgz/jtNbPxKNatWo6oWPHjj3yXkp8fIzHk/r333+fvJKnxB9//KH79u372PtHRERorbV+8OCBbtq0qV6xYkW6xJWw/YOCgtKlXpG+pF1sj7SJbZJ2sT3SJrbJltvl7l2tBw7U2s5O6xIltF63Lh0qbNRIa9B60qRkiwadCdLFvi6mVUWlAV2/QX198eLFJwwgdWytTYD9OhX5hfQoJZAec5Oym0qVKjF+/PjH3t/f35/NmzcTFRVFw4YNadGiRTpGJ4QQQgiR9XbtMnqRTp6E7t3hu+/AHETzeCIjoXlz48frjBlG5Yl4EPsA/2B/vln4DQ4rHbCLsOObb7+hf//+2XbZ79SSRElkuXHjxmV1CEIIIYQQGeLOHfi//zNW6X7xRdi0CRo0eMJKw8OhSRPYvRvmzYMPPki02F83/6LtsrbsC9yH2qYo+UJJAjcE4u3t/YQBZA+SKAkhhBBCCJEBgoKga1c4cwZ69YLRoyFv3ies9OZNaNzYWCZv8WJ4771Ei807NI+ei3pyf8l9OANt2rZh8uTJlrngImWSKAkhhBBCCJGO/v0XBg0ybhj70kuwbRvUqZMOFV+7Bg0bGnemXbHCuCttAuFR4Xzy8ycsWLoAh7UO5CQnk2ZNws/Pz3K7F5E6kigJIYQQQgiRTn75BXr0gAsXjHu+Dh8OuXOnQ8WXL0P9+vD338YKd40aPVJk97ndtF3cln+W/gN7wa2KG4sWLeKVV15JhwCyH5nBlYCvry++8XedFUIIIYQQIhVu3TLu9/rmm8bwut9+MxZsSJck6fx58PGBs2fh558fSZJi42IZuX0ktcbW4uIPF9F7NX379mX37t2SJD0BSZQy2OXLl2nTpg1ly5alQoUKvPXWW5w8eTLDjxscHEzTpk0z9BhhYWFUqlTpicsIIYQQQjzNVq+GChWMdRX+7/+M6UPptl5CWJgxbu/SJfj1V6hb96HN/4T/g+9sX74a9xVqqsLlgQvr169n/Pjx5MyZM52CyJ5k6F0G0lrTsmVL/Pz8CAwMBCA0NJQrV67InY+FEEIIIZ5y165B794QGAiVKxudPVWqpOMBTp0yhttFRsKWLeDl9dDmZceW0XVJV+4uvwtHwLe+L/PmzaNYsWLpGET2JT1KGSgoKAhHR0d69uxpec/Dw4PatWsTGRlJ/fr1qVq1Km5ubqxevRp4tAdm3Lhx+Pv7AzBhwgQqVKiAu7s7bdq0AWDv3r289tprVKlShddee40TJ04kG9Ps2bNp0aIFzZo1o3Tp0vz444+MHz+eKlWqUKNGDW7evAkYCV2NGjVwd3enZcuW3Lp1C4CQkBAqV65MzZo1mTRpkqXe2NhYBgwYgJeXF+7u7vz0009pulbz58+nevXqeHh48OGHHxIbGwtA3rx5+fzzz6latSr169fn2rVraapXCCGEECK9aQ1LlkDFirB8OYwYAfv2pXOSdOyYMdzu3j3YuvWhJOlO9B26relGq+9bEfVjFPwJY8aMYePGjZIkpaNs06PUp08fQkNDUywXXyY185Q8PDwICAhIcvuRI0eoVq1aotucnJxYuXIlzz33HNevX6dGjRo0b9482eONGTOGM2fOkDNnTm7fvg1A+fLl2b59Ow4ODmzevJkhQ4awfPnyZOs5cuQIBw8eJCoqipdeeolvv/2WgwcP0rdvX+bOnUufPn3o2LEjEydOxMfHh6FDhzJ8+HACAgLo3Lmz5f0BAwZY6pwxYwYuLi7s27eP+/fv8/rrr9OwYcNUra5y/PhxFi9ezK5du3B0dOTjjz9mwYIFdOzYkTt37lC1alW+//57RowYwfDhw/nxxx9TrFMIIYQQIiNcvgwffwwrVxq5y8yZkO6zDA4dgjfeAHt744ayFStaNh24dIA2S9twavUpVLCixIslWLhuITVq1EjnIES2SZRsjdaaIUOGsH37duzs7Lhw4QJXrlxJdh93d3c++OADWrRoQYsWLQAIDw/Hz8+PU6dOoZTiwYMHKR67bt26ODs74+zsjIuLC83MpSXd3Nw4fPgw4eHh3L59Gx8fHwD8/Pxo1arVI+936NCBDRs2ALBx40YOHz7MsmXLLHGdOnUqVUMMt2zZQkhICF7mX0ru3btH4cKFAbCzs6N169YAtG/fnnfeeSfF+oQQQggh0pvWxhykPn3g7l0YOxb69gWH9P41vX+/sQR4njzGcDvzt1ScjmP87vF8sfIL7FbawV/Quk1rpkyZIvdGyiDZJlFKrufHWnxPUnBw8BMfs2LFipbEIaEFCxZw7do1QkJCcHR0xNXVlaioKBwcHIiLi7OUi4qKsjxfv34927dvZ82aNXz99dccPXqUr776irp167Jy5UrCwsJS1RNmPbHPzs7O8trOzo6YmJgk99NaJ9lDpLVm4sSJNEqwCktYWFiK8Wit8fPzY/To0SmWlfX/hRBCCJHZzp+HDz805iC9/jrMmAEZspjc7t3GzWQLFDCG25UuDcCliEv4rfJj04ZN5FiXA4dYB36a9ZPcGymDyRylDFSvXj3u37/PtGnTLO/t27ePbdu2ER4eTuHChXF0dCQoKIizZ88CUKRIEa5evcqNGze4f/8+69atAyAuLo5z585Rt25dxo4dy+3bt4mMjCQ8PJwSJUoAxvyj9ODi4kL+/PnZsWMHAPPmzcPHx4d8+fLh4uLCzp07ASPZi9eoUSMmT55s6dE6efIkd+7ceajeCxcuUL9+/UeOV79+fZYtW8bVq1cBuHnzpuV6xMXFWZLNhQsXUqtWrXQ5RyGEEEKIlGgN06YZI9+Cg+E//zFuHpshSdK2bcZwu8KFYft2S5K09sRa3Ca6sfW/W2ERVChbgQMHDtCpUydJkjJYtulRygpKKVauXEmfPn0YM2YMTk5OuLq6EhAQQMWKFWnWrBmenp54eHhQvnx5ABwdHRk6dCje3t6ULl3a8n5sbCzt27cnPDwcrY218fPly8fAgQPx8/Nj/Pjx1KtXL91inzNnDj179uTu3buUKVOGWbNmATBr1iy6dOlC7ty5H+o96tatG2FhYVStWhWtNYUKFWLVqlUP1Xnp0iUcEumfrlChAiNHjqRhw4bExcXh6OjIpEmTePHFF8mTJw9Hjx6lWrVquLi4sHjx4nQ7RyGEEEKIpJw5A927G6Pf6taF6dOhTJkMOtjGjdCiBbi6GgcsVox7D+4xYNMAJv08CadVTsReiLX8ppRlvzOH0lpndQzpwtPTU+/fv/+h944fP86rr76apnrSa+hdREQEzs7OT1THs+bHH3/khRdeSHHRCmt58+YlMjLysY6XsP2Dg4PlZsI2SNrF9kib2CZpF9sjbWKbnrRd4uJg0iQYPNhYS2HcOCNhyrDOm3Xr4N13oXx52LQJChfmjyt/0GZZG45tPIbDrw7kc87H7NmzadKkSQYFkbFs7builArRWnumVE56lBJIj7lJInG9evXK6hCEEEIIIZJ08iR07Qo7dxpThX76CV54IQMPuGIFtGkD7u6wcSM6f34m7f2Rz1d/jlqv4BD41PeReyNlEZmjJGza4/YmCSGEEEKkVmys0XNUuTIcOQKzZxsLN2RokrRwIbz/Pnh6wpYtXMsZS/PA5nz606fYT7Un5kgMo0ePlnsjZSHpURJCCCGEENnW0aPQpQvs3Qtvvw2TJ0OG5yWzZhldV3XqwNq1bLq6hw4rOnD91+vYBdtRpFQRFq1dJPdGymLPfI/SszIHS6SNtLsQQgghkvPgAYwaBVWrwt9/Q2CgcRPZDE+SpkwxMrM33iB67SoG7B5Bw/82JGJ6BLFbYmn1XitCQ0MlSbIBz3SPkpOTEzdu3OD555+X5ROzEa01N27cwMnJKatDEUIIIYQNCg2Fzp2Nf1u3hokToVChTDhwQIBxl9qmTTk5eRRtF9XnQPABnNY7QQzMnDlTlv22Ic90olSyZEnOnz/PtWvXMv3YUVFR8kM9Czk5OVGyZMmsDkMIIYQQmcjXF27f9iA0NPHt9+/DyJEwZgw8/7yxlkLLlpkU3OjRMGQI+t13mT3gDT6ZUYO4TXGwC8p7lCcwMJBXMuQGTeJxPdOJkqOjI6XNm3VltuDgYKpUqZIlxxZCCCGEEA/bu9cY8Xb0KPj5wfjxUKBAJhxYa/D3hxEjuN/6PTq2iGPJvJ7kXZuXe//c47PPPuPbb7+VeyPZoGc6URJCCCGEENnbvXswbBh8/z0UL26sZvfmm5l0cK2NGzKNHcvl99/C23M35wMv4firI055nVi0dhFNmzbNpGBEWmXoYg5KqcZKqRNKqdNKqcGJbO+plPpDKRWqlNqplKpgte0Lc78TSqlGGRmnEEIIIYR49uzcaSz5/d130K2bsfR3piZJffrA2LH83rwaJUr/zM1F4cStjqP2a7U5dOiQJEk2LsMSJaWUPTAJeBOoALS1ToRMC7XWblprD2AsMN7ctwLQBqgINAb+a9YnhBBCCCFEsiIjoXdvY/XtBw9g82bj5rEuLpkUQFwc9OwJEyaw6I2i1CgYQu5Zebl36B7ffPMNGzdupHjx4pkUjHhcGTn0rjpwWmv9N4BSKhB4GzgWX0Br/a9V+TxA/JrObwOBWuv7wBml1Gmzvt0ZGK8QQgghhHjKRUQ44OYGZ8/Cp58aS4DnzZuJAcTGGpOh5s7lWx9Hhqlb2M2xo2CpgixaLfdGepqojLrfjFLqPaCx1rqb+boD4K217pWg3CdAPyAHUE9rfUop9SOwR2s93ywzA9igtV6WYN8eQA+AIkWKVAsMDMyQc3kckZGR5M3Ub6VIibSJbZJ2sT3SJrZJ2sX2SJvYlnv37OjQwZsbN3JSqtRdBgw4gZtbeKbGoGJieHnUCIoH76DPazD9Wh7unLpD3bp16devX7b9vNjad6Vu3bohWmvPlMplZI9SYgvAP5KVaa0nAZOUUu2ALwG/NOw7FZgK4OnpqX19fZ8k3nQVHByMLcUjpE1slbSL7ZE2sU3SLrZH2sR2HD8O770HN25AoUJRnDiRm1y5Mnn14fv3ufl2IwoE7+BdD/jlSG6I0cyYMYPOnTtn63sjPa3flYxMlM4DpaxelwQuJlM+EJj8mPsKIYQQQohsaN48YzpQnjzg5gZ2dlHkypW597KMvRPJmfrVKPX7SbzL5mRv6H0qV36ZwMBAypcvn6mxiPSTkave7QNeVkqVVkrlwFicYY11AaXUy1YvmwCnzOdrgDZKqZxKqdLAy8DeDIxVCCGEEEI8Re7dM1ay69gRPD0hNDST7ouUwPmLJzhYvRTRv5/k5edzs/ev+3z22Wfs2bNHkqSnXIb1KGmtY5RSvYBfAXtgptb6qFJqBLBfa70G6KWUagA8AG5hDLvDLLcEY+GHGOATrXVsRsUqhBBCCCGeHidOQKtW8McfMGQIDB8ODllwd9DVe+dR8P3OHD8by6eODuQhF2vXLpZlv58RGfqR0lr/DPyc4L2hVs8/S2bfUcCojItOCCGEEEI8bRYtgh49IGdO2LABGjfO/BjuRN9hyPKPafb5XCZcgiVA3Vq1mTdvHiVKlMj8gESGyNAbzgohhBBCCJEeoqKMuUjt2hk3kQ0NzZok6eClg9QfX5mqvebS/RIst7Nj1KhRbNq0SZKkZ0wWdFIKIYQQQgiReqdPG0PtQkNh4EAYORIcHTM3hjgdR8CeAL5fOZD3J2u6RkLJwoXZsWoVNWvWzNxgRKaQREkIIYQQQtispUuha1cjMVq7FrJi+s/lyMv4rfLj0I6NvDzbnoDoON738eGnVavIly9f5gckMoUMvRNCCCGEEDbn/n3o1Qvefx8qVoSDB1NOkoKDISAgNF3jWH9yPe6T3TmyYisx0xUHomOZPnAggUFBkiQ946RHSQghhBBC2JS//zYSpJAQ6NcPRo+GHDkyN4aomCgGbhrIxN8m4ro5P2F7YqhsZ8eiRQt5tU2bzA1GZAlJlIQQQgghhM1YuRI6dwalYNUqePvtzI/h6NWjtF3elj+O/UGx1fkJO3eL3k5OfLt1K04yHynbkKF3QgghhBAiy0VHQ58+8M47UK4cHDiQ+UmS1pr/7vsv1aZWIyw4DKdpOYg+f5s1Li78Z98+SZKyGelREkIIIYQQWSosDFq3hr174bPPYOzYzB9qd/3udbqu6cqaQ2sotq0Yl3ZfwtfBgfmFC1MiOBjKl8/cgESWk0RJCCGEEEJkmTVrwM8P4uJg2TJ4993Mj2HL31vosLID105eo8C6Aly9cpWROXMyuHBh7IOCoGzZzA9KZDkZeieEEEIIITLdgwfQv78xvK5MGWOoXWYnSdGx0QzaNIgGcxoQsz0GZoJzXA6258jB/5Usif2OHZIkZWPSoySEEEIIITLVuXPGULvdu+Hjj+H778HJKXNjOHnjJO2WtyPkZAglNpfgwqELtKpTh6n79pHvxRdh82YoUSJzgxI2RXqUhBBCCCFEpvn5Z/DwgCNHIDAQJk3K3CRJa83MgzOp8lMVTuw5wXMzn+PmyZtM792bxXv2kO+ll4wbMkmSlO1JoiSEEEIIITJcTAwMHgxNmkCpUsY9klq3ztwYbt27RZvlbei6oisFthUgclYkrqVcCfn2W7pOnoyqVAmCgqBIkcwNTNgkGXonhBBCCCEy1IUL0KYN7NwJPXpAQADkypW5Mew4u4P2K9tz4cwFim8ozvlT5/n0008Z6+WFU+fO4OkJv/wC+fJlbmDCZkmiJIQQQgghMsyvv0L79nDvHixYAO3aZe7xY+Ji+Hrb13y9/WsKnixIjlU5iHKKYvXq1TS/dQs6dYLXX4f168HZOXODEzZNht4JIYQQQoh0FxMDX34Jb74JRYvC/v2ZnySduXWGOrPqMGLjCFy3uHJt4TW8q3tz+PBhml++bCRJ9erBhg2SJIlHSKIkhBBCCCHS1aVL0KABjBoFXbrA779n/v1aF/2xCI+fPDgUcohC8wrxz2//MHLkSDZv3kyJ5cvhww/hrbdg7VrIkydzgxNPBRl6J4QQQggh0s2WLUbPUWQkzJkDHTtm7vHvxtzFb5Ufcw/O5YWjL3Bx9QtJYtkAACAASURBVEUKlSjEqu2reO2112DsWBg0CFq2NJbdy5EjcwMUTw1JlIQQQgghxBOLjYWvv4YRI+DVV43F4ypUyNwY9l7YS/eQ7ly6fokyQWX4O+RvWrVqxdSpU8nn4mIEN2yYsbLE3Lng6Ji5AYqniiRKQgghhBDiiVy5wv+zd9/RWRRvG8e/kxCaVAEpgkhTpAgiooIUla6Ciqgo0kFaDGBoUoQgHelFauggvUkHQ+8QpQpIx9BbgJA67x+L748SIEKeNK7POTlJnuzuc89Z4+HKzN7D1187s0m1asHw4TG7mu1W2C26+nWl17pesAdS+6UmICiA0aNHU79+fQxAhw7QsyfUrg1jx4K7e8wVKPGSgpKIiIiIPDY/P6hRA65ccfJH3bpgTMy9//oT66m/oD4HzxzEbY4bEfsjyP5qdqZPn84rr7wC1kKrVk5P8kaNYMQIcNNj+vJo+q9ERERERP6ziAj46Sd4/31InRq2bnUaN8RUSAoMDsRzsSelfEsReCSQbNOzEbE/gnTp0rFlyxYnJEVEQNOmTkj67jv45ReFJIkyzSiJiIiIyH9y/ryzN9Ly5U7jhl9+idnu2ssOL6PRokacuHiCogeLsnPWTrJkyULBggVxc3MjadKkzkNTDRrA+PFO84aePWN2qkviPUVqEREREYmydeugcGFYswZGjoTJk2MuJF0KukSdeXWoOKUibgFu5JyZk+0ztlOnTh327NnDs88+6xwYFgbffOOEpC5dFJLksWhGSUREREQeKSLC6azdsSPkyAG//eYEppgye99smi1uxvlr53nn2DtsmrqJjBkz8ttvv1G5cmUA/Pz8WLNiBXzxBcyZ4wSkdu1irkhJUBSUREREROShLl50utktXgyffw6jR0OqVDHz3gGBATRf0pw5++fwctjLpJ6bmvV711OrVi0GDhxI2rRp/3dwqVIU9/eHwEAYMABatIiZIiVBUlASERERkQfauNGZoDl3DoYNgyZNYmYVm7WWCX9MoOWylty8dZNyJ8vx+4TfSZcuHfPmzaNq1ap3n3DhAuzejUdgoNPZrnFj1xcpCZqeURIRERGR+1gL/fpB6dKQOLETmJo2jZmQdOzKMSpMrkDd+XXJEZKDPHPzsGLsCqpXr87evXvvD0mLF0OBAnD1KjezZVNIkmihGSURERERuculS1CnDixcCJ9+CuPGOS3AXS3CRjBs6zDar2oPEVD1fFWWjF5CqlSpmDVrFtWqVbv7hBs3wNvbabtXoABkzUpIWBjJXV+qPAUUlERERETk/23Z4iy1++cfGDQIPD1jZhbpwIUDNFjQgA0nN1AiWQluzLzB/O3zqVatGsOHD+e55567v9CaNeHvv52w1K0bJE2Kv58fZVxfrjwFtPRORERERLDW2Ze1ZEnn+/XrnT1aXR2SQsND6bGuB4V+KcTes3v58tqXbO+8nRNHTjB9+nRmzpx5d0gKDYXOnaFECQgJgdWroW9fSJrUtYXKU0czSiIiIiJPuStXoF49mDsXqlYFX1+4s5mcq+wK2EW9BfXwP+NPhbQVuDT1EtO3TKdq1ar88ssvZMqU6e4TDhxwZpF27HDa8A0eHDNrAuWppBklERERkafY9u1QpIjzPNLPPzthydUh6VbYLdqvbM8bo98g4FoAdYPrsrbdWg79dYhJkyYxd+7cu0NSRAQMHQqvvQZHj8LMmTBhgkKSuJRmlERERESeQtY67b6//x4yZoR16+Ctt1z/vutPrKf+gvocvHiQzzJ9xj+T/8F3vS+VK1dm9OjRZMmS5e4TTp92pruWL4dKlWDsWMic2fWFylNPM0oiIiIiT5mrV52GDZ6eUK4c7Nrl+pAUGBxI88XNKelbkuDQYJrTnCXfL2HPn3sYN24cixYtuj8kzZgBBQs6D0yNGAG//aaQJDFGM0oiIiIiT5Fdu6B6dTh2DHr3dhrGubn4T+fLDi+j0aJGnLx6kjrZ63Bs4jGG/j6U8uXLM2bMGLJly3b3CVeuQPPmMGUKFCsGkybBSy+5tkiRe2hGSUREROQpYK2z3dDbb8OtW+DnB23auDYkXQq6RO15tak4pSLJEiWjTdI2zPKcxfZt2xk1ahRLly69PyStWuXMIk2fDl27woYNCkkSKzSjJCIiIpLABQbCt9/CtGlQoYIzQZMhg2vfc9a+WTRb3IyLNy/i+bInB3wP0Ht5b9577z3Gjh3Liy++ePcJt27BDz/AgAFOMNq0Cd54w7VFijyEgpKIiIhIAvbnn85Su8OHoXt3aNfOtbNIAYEBNF/SnDn751A4Y2GaeTTj529/JiwsjGHDhtG4cWPc7i1g1y6n7fe+fdCsGfTpA8mTu65IkShQUBIRERFJgKx1GsR5ejrtvlevhtKlXfl+lgl/TKDlspYEhQbxQ6Ef8B/tz4+Lf6RUqVKMGzeOXLly3X1SeLgTin78EdKnh6VLnSkvkThAQUlEREQkgbl+HZo0gcmToWxZ53PGjK57v2NXjtFoYSNWHFlBiWwlqBpclR51exAcHMzAgQPx9PS8fxbpyBFn09gNG5wprxEjIF061xUp8h+pmYOIiIhIArJ3r/Noz5QpTi+EpUtdF5IibARDtgyhwPACbDq1iZ5v9iT9wvS0adqGfPny4e/vj5eX190h6d+prkKFYM8eJ8X9+qtCksQ5mlESERERSSDGj4emTSFVKli5Et57z3Xvtf/8fhosbMDGkxupmLsiHwR/QJeaXbh+/Tp9+/alZcuWuLu7333SuXPQsCEsWADvvusU/MILritS5AloRklEREQknrt5E+rWdT7eegv8/V0XkkLDQ+mxrgeFRxbmwIUDDC01lJTzU+JZ35NcuXKxa9cuvL297w9JCxZAgQKwbBn07+8kOYUkicM0oyQiIiISj+3f7zzis28fdOrk9EW4N6NEl50BO6m/oD7+Z/ypnq86FUMq0u6Ldly9epWePXvi7e1NokT3/PMyMBBatvzfcrvVq53AJBLHaUZJREREJJ6aPNl5HuncOedZJB8f14SkoNAg2q9sT7HRxThz/QwTyk8g0dxE1K9Zn2zZsrFjxw7atWt3f0jasMEJR+PGOX3Jt25VSJJ4w6UzSsaYisAgwB0YY63tdc/PWwENgDDgPFDPWnv89s/Cgd23Dz1hra3iylpFRERE4ougIPjuOxgzBkqWhOnTIUsW17zX+hPrqb+gPgcvHqRu4bqUDSlLq09acenSJbp160bbtm3x8PC4+6SQEOjSBXr3dpbXrV0L77zjmgJFXMRlM0rGGHdgGFAJyAfUMMbku+ewXUBRa+2rwCygzx0/C7LWFr79oZAkIiIiAhw86DyHNGYMtG/vrGRzRUgKDA6k+eLmlPQtSUh4CLM/mk34nHC+/vxrMmXKxLZt2+jYseP9IWnvXnjzTejZ03lo6s8/FZIkXnLljFIx4LC19giAMWY6UBXY9+8B1trf7zh+M1DThfWIiIiIxGvTpztN45IkgcWLoVIl17zPssPLaLSoESevnuS7Yt9ROrQ0nh95cvbsWTp37kyHDh1InDjx3SdFRMDgwc4Su1SpYN48qFrVNQWKxABXPqP0PHDyju9P3X7tQeoDS+74PqkxZrsxZrMx5mNXFCgiIiISH9y65WwgW6MGvPoq7NrlmpB0KegStefVpuKUiiT3SM7Sz5ZyY/YNqlWtRtq0admyZQtdu3a9PySdPAnlyjlNG8qXh927FZIk3jPWWtdc2JjqQAVrbYPb338DFLPWekZybE2gOVDaWht8+7Us1tp/jDE5gdXA+9bav+85rxHQCCBjxoyvT58+3SVjeRzXr18nRYoUsV2G3EH3JG7SfYl7dE/iJt2XuKVFi8KEh4czZMjuRx/8hE6fTkbXrvk4dCglX3xxggYNjpIoUfT/+23N+TUMOjSIa2HXqJGtBvnO52PgzwO5cOECX375JbVr174/IFnLcytX8tKgQZjwcA43b05A5cpgTLTXF1X6XYl74to9effdd3dYa4s+6jhXLr07BWS74/uswD/3HmSMKQt04I6QBGCt/ef25yPGGD/gNeCuoGStHQWMAihatKgtU6ZM9I7gCfj5+RGX6hHdk7hK9yXu0T2Jm3Rf4pY0aeDKlSsuvyezZjkbyLq7w8KF8OGHLwDRu/dQQGAAzZc0Z87+ORTJXITB7w1mUr9J/DDyB/LmzcvChQspVqzY/SdeuuRMc82YAW+/DZMm8XKuXLwcrdX9d/pdiXvi6z1xZVDaBuQxxuQATgNfAl/deYAx5jVgJFDRWnvujtfTAjettcHGmPRACe5u9CAiIiKSYAUHg7c3DB3q9EX49VfInj1638Nay3j/8bRa3oqg0CB6vd+L14Nfp2a5mhw/fhxvb298fHxIlizZ/ScvX+40ajh3Drp3hzZt4N7W4CLxnMueUbLWhuEsp1sG7AdmWGv3GmN8jDH/drHrC6QAZhpj/I0xC26//gqw3RjzB/A70Mtauw8RERGRBO7oUadJ3NChziM/a9dGf0g6duUYFSZXoN6CehR4rgCbvtnEqV9PUa5sOTw8PFi/fj19+/a9PyTdvAmenlChAqRODVu2wA8/KCRJguTS/6qttYuBxfe81vmOr8s+4LyNQEFX1iYiIiIS18yd60zU/Pv1x9HczirCRjB061B+WPUDxhiGVR5G/qD8fPbeZxw9epQWLVrQvXt3kidPfv/J27dDzZrw11/QogX06AGRzTaJJBCu7HonIiIiIlEQEuLMHn36KeTJ43S1i+6QtP/8fkr6lsRrqRcls5dkW+1tHJ52mHfLvAs4z5EMGDDg/pAUFgY+Ps5zSDduwMqVMGCAQpIkeJonFREREYlFx4/DF184q9g8PaFvX2efpOgSGh5K34196bqmKykSp2DixxPJdSMXVd+tysGDB2nWrBm9evWKvCvZoUPwzTdOcV995awHTJs2+ooTicM0oyQiIiISSxYuhNdeg/37YeZMZ7/W6AxJOwN2UmxMMTqs7kDVl6uys95Odk/ZTcmSJQkODmbVqlUMHTr0/pBkLYwcCYULO0vtpk2DKVMUkuSpohklERERkRgWGur0QOjXzwlKM2ZA7tzRd/2g0CB81vjQd2NfMjyTgTmfzyHr9axUKlWJ/fv306hRI/r27UuqVKnuPzkgABo0gMWLnU1kfX3h+eejrziReEIzSiIiIiIx6ORJKFPGCUlNmsDGjdEbktafWE/hkYXptaEXtQvVZlf9XWyfvJ23336bwMBAli1bxsiRIyMPSXPmQMGCsHq1M721dKlCkjy1NKMkIiIiEkOWLHEe+QkOhunTnWeToktgcCDtV7Vn2LZhvJjmRZbXXE66q+koV7Ice/bsoV69evTv35/UqVPff/LVq+DlBRMmwOuvw+TJkDdv9BUnEg9pRklERETExcLCoH17qFzZmaDZsSN6Q9LSw0spMKIAw7cN57ti37Gj/g42TNrAm2++ycWLF1m0aBFjx46NPCStWQOFCsGkSdCpE2zapJAkgmaURERERFzq9GmoUQPWrYOGDWHQoOjrrH3x5kVaLW/FxD8mkjd9XtbXW0+Kyyl4v+T7+Pv788033zBo0CDSRtaEITjYCUb9+kGuXLB+vdMCXEQAzSiJiIiIuMzy5U6zhp07ndVso0ZFX0iatW8W+YbnY+ruqXQo2YFt9bfx+8TfKVq0KP/88w/z5s1j4sSJkYekP/+EN95wepE3auRs3KSQJHIXzSiJiIiIRLPwcOjSBbp3h3z5YNas6FvNFhAYQPMlzZmzfw5FMhdhWc1leFz0oMw7ZdixYwdffvklQ4YMIX369JEX1r8/dOzotPpetAg++CB6ChNJYDSjJCIiIhKNAgKgbFn46SeoUwe2bo2ekGStxXeXL/mG5+O3g7/R6/1ebKizgWUTllGkSBGOHz/OzJkzmTZtWuQh6dgxeO89aNPGCUe7dyskiTyEZpREREREosnq1fDVV3DtGowfD7VrR891j105RqOFjVhxZAUlXyjJmCpjsBcsZUqVYcuWLVSrVo3hw4fz3HPP3X+ytTBxInh6Ot/7+jqFGRM9xYkkUJpREhEREXlC4eHQtaszk/Tss7BtW/SEpPCIcAZvGUyB4QXYdGoTwyoPY9U3q1g0YRGFCxfm0KFDTJs2jZkzZ0Yeki5cgM8+c6a2Chd2nk2qU0chSSQKNKMkIiIi8gTOnoWaNWHlSmePpOHDIUWKJ7/u/vP7abCwARtPbqRi7oqM/HAkweeCebfMu2zYsIEqVaowcuRIMmXKFPkFFi+GevXg0iXo0wdatQJ39ycvTOQpoRklERERkce0Zo3T1W79ehgzxtmv9UlDUmh4KN3XdqfwyMIcuHCAiR9PZNGXi5g/cT6FChVi7969TJw4kXnz5kUekm7cgCZNnOePMmRwprdat1ZIEvmPNKMkIiIi8h9ZC2fPJuG99yB3bli6FF599cmvuzNgJ/Xm1+OPs39QPV91hlQawo1zN3j//fdZs2YNlStXZtSoUTz//PORX2DLFmd66++/wdsbunWDpEmfvDCRp5BmlERERET+g+PHnUd9zpxJxhdfwPbtTx6SgkKDaLeyHcVGF+PsjbPM+XwO06tNZ86kObz66qvs2rWLcePGsWjRoshDUmgodO4MJUpASIjTVaJvX4UkkSegGSURERGRKLDWaRjXogXcvAlZs95kypTkT9wXYf2J9dRfUJ+DFw9Sr3A9+pXvx7Vz1yhfvjyrVq2ifPnyjBkzhmzZskV+gQMHnFmkHTugVi0YPBhSp36yokREM0oiIiIij3LmDFSpAvXrQ5EiULQopEsX8kQhKTA4kOaLm1PStyQh4SGs+GYFY6qMYfaU2RQsWJAtW7YwcuRIli5dGnlIioiAoUOdh6SOHXN2tZ0wQSFJJJooKImIiIg8xIwZkD+/09VuwABnVduTrmhbengpBUYUYPi24Xi96cXuJrvJmzgvlSpVomHDhhQtWpTdu3fTqFEjTGRp7PRpqFTJ2Rvp3XedzWOrVXuyokTkLgpKIiIiIpG4eBFq1IAvvnAaNuza5Sy7c3uCfz1dvHmR2vNqU2lKJZJ7JGd9vfUMqDCA2dNmU6BAAdatW8ewYcNYuXIlL774YuQXmTEDChZ0Wu2NGAG//QaZMz9+USISKT2jJCIiInKPxYudZXYXLsBPP0HbtpDoCf7VZK1l9v7ZNFvcjEtBl+hQsgMdS3Xk8vnLVKlShUWLFlGyZEl8fX3JlStX5Be5cgWaN4cpU6BYMZg0CV566fGLEpGHUlASERERuS0w0NmXdcwYKFAAliyBwoWf7JoBgQE0W9yMuQfmUiRzEZbVXEahjIWYOnUqnp6e3Lp1i4EDB+Lp6Ynbg6arVq2COnUgIAC6doUffniy5CYij6SldyIiIiKAn5/T5nvcOGcGafv2JwtJ1lp8d/mSb3g+Fh9aTK/3e7GlwRYym8xUq1aNmjVrkjdvXvz9/fHy8oo8JAUFQcuWULYsJE8OmzY5bcAVkkRcTr9lIiIi8lQLCoL27WHQIOdZpHXroHjxJ7vm0ctHabSoESuPrKTkCyUZU2UML6V7iRkzZtC0aVOuX79O3759admyJe7u7pFfZNcup+33vn3QrBn06eOEJRGJEZpREhERkafW1q1Od+1Bg5zHf/z9nywkhUeEM3jLYAqMKMDmU5sZVnkYfnX8eNY+y+eff84XX3xBzpw52bVrF97e3pGHpPBw6NkT3nwTLl+GpUudNuAKSSIxSjNKIiIi8tQJCYFu3Zw8kiULrFjhrG57EvvP76fBwgZsPLmRirkrMvLDkbyQ+gXmzp1L48aNuXLlCj179sTb25tED1o6d+SIs2nshg1QvbrT1S5duicrTEQei4KSiIiIPFV273ayiL8/1K7tzCY9yR6toeGh9NnQB5+1PqRInIKJH0+k5qs1uXz5Ml9//TVTp06lSJEirFq1igIFCkR+EWudh6NatAB3d5g8Gb76iifa0VZEnoiCkoiIiDwVwsOhb1+nF0LatDBvHlSt+mTX3Bmwk3rz6/HH2T+onq86QyoNIWOKjCxcuJBGjRpx4cIFfHx8aNeuHR4eHpFf5OxZaNgQFi50No8dPx5eeOHJChORJ6agJCIiIgneoUPO7NGmTfDZZ86KtvTpH/964bs3c+HNERQbPYUMz2Rgzudz+OSVT7hy5Qp16tRhwoQJvPrqqyxZsoTCD2udt2ABNGgA165B//7g5fVkO9qKSLRRUBIREZEEKyIChg+HNm0gSRJnr9YaNR5/Rdu/G8dure1JSOoz1CtUj37l+5E2WVqWLFlCw4YNOXPmDJ06daJjx44kTpw48gsFBjptv8eOhUKFYPVqZ+MmEYkz9CcLERERSZBOnIDy5cHTE0qXhj17nuyxnz/O/MF7E9+j+szqeISkJP/0EYytOhb3UHcaNGhA5cqVSZMmDVu2bMHHx+fBIWnDBiccjRsH7do5rfcUkkTiHAUlERERSVCsdR7zKVgQNm+GkSNh8WJ4/vnHu975G+dpsqgJRUYVYffZ3QyvPJzXp0wlzcmirFy5kgIFCuDr60u7du3YsWMHr7/+euQXCgmBH36AUqWc79euddruPShQiUis0tI7ERERSTDOnoVGjZxHf0qVAl9fyJnz8a4VGh7K8G3D6bKmC4HBgTR/ozk/lvmRZ5M9y5SIDfwdPIBy5Wbz8ssvs3HjRt58880HX2zvXmfzWH9/qF8fBgyAlCkfrzARiREKSiIiIpIgzJoFjRvD9evw889Op+3H7Yuw9PBSWi5ryYELByifqzwDKgwgX4Z8hISEMHToUDZea4klDG9vb3x8fEiWLFnkF4qIcPqPt28PqVJFT6s9EYkRCkoiIiISr1265DyHNHUqFC0KEyfCK6883rUOXjxIq2Wt+O3Qb+R+NjcLvlzAhy99iLWW6dOn06FDB44cOUJq96Jk92hO3761H3yxkyehTh2nUcNHH8Ho0ZAx4+MVJiIxTs8oiYiISLy1ZInzLNKMGeDjAxs3Pl5IunrrKt7LvSkwvABrj6+lT9k+7Gmyh49e/ojVq1dTrFgxatSowTPPPMPixYsp9MwoUrrnj/xi1jrt9QoWhC1bnIA0f75Ckkg8o6AkIiIi8U5gIHz7LVSu7Gweu2ULdOoED9rT9UHCI8IZs3MMeYbkof+m/nzz6jcc9DxI6xKt2bd7HxUqVKBs2bKcP3+eiRMnsmvXLipVqoR5UOu8S5fgyy+d55Hy54c//nD2SXrcVnsiEmu09E5ERETilbVrnRVtx45B69bOTFLSpP/9OutPrMdrqRc7A3ZSPFtxFn+9mKJZinL06FFqNq7JlClTePbZZ/n5559p2rQpSR/1JsuXQ926cO4c9OjhbN7k7v44QxSROCDKQckY84y19oYrixERERF5kKAg6NABBg50OtmtWwclSvz365y4eoI2K9rw695fyZoqK1M/ncqXBb7k4sWLtGjRguHDh5MoUSLat29PmzZtSJMmzX3X8CvcgitXrgD+cPMmtG0LQ4c66/4WLoQiRZ58wCISqx4ZlIwxxYExQArgBWNMIeBba21TVxcnIiIiArB9O9SqBfv3Q9Om0Ls3pEjx365xM/QmfTb0oc+GPlgsP5b+kdbFW0Mo9OjRg969e3Pjxg3q1atHly5deD4qGy9t3+4ss/vrL6fNXo8e8KAOeCISr0RlRmkAUAFYAGCt/cMYU8qlVYmIiIjg7NHavbvzkSkTLFsG5cv/t2tYa/l176+0WdGGk9dO8nn+z+lTtg/Pp3iecePG0aVLFwICAvj444/p0aMHr0SlG0REBEnOnoW333YKW7kS3n//8QYpInFSlJbeWWtP3vPQYrhryhERERFx7NnjzCLt2uV8HjQIIlkF91A7/tmB11IvNpzcQOFMhZn86WRKvlCSuXPnUuGHCvz111+UKFGCWbNmUbx48Udf8NAhGDcOtmwhWUgIfPWVs+QubdrHG6SIxFlR6Xp38vbyO2uMSWyM8Qb2u7guEREReUqFh0OfPvD663DqFMydCxMm/LeQdPb6WRosaMAbo9/g4MWDjPpwFNsbbsecMBQvXpxq1arh5ubG/PnzWbdu3cND0o0bzuZMpUvDSy85xaVIwfUcOZw24ApJIglSVIJSY6AZ8DxwCigM6PkkERERiXaHDzt5pG1b+OADZ1bp44+jfn5IeAj9NvbjpaEvMeGPCbR8qyUHPQ/ydpK3+bjqx5QqVYqTJ08yduxY/vzzT6pUqRJ5q29rYetWpwd55sxQuzYEBEDPns5GsgULEpYqVfQNXETinKgsvXvZWvv1nS8YY0oAG1xTkoiIiDxtrIVffgFvb2cvpEmT4Ouvo779kLWW3w79RqtlrTh06RAf5PmAn8v/TPKg5LRq2ooJEyaQMmVKevXqhaenJ8mTJ4/8QhcuwOTJMHask9KSJYPq1aF+fShZUvshiTxFojKjNCSKr93HGFPRGPOXMeawMaZdJD9vZYzZZ4z50xizyhiT/Y6f1TbGHLr9UTsq7yciIiLxz8mTUKGC083unXecfFKzZtQzyf7z+6k0pRIfTfsIN+PG4q8WM6nSJMb2GUuePHmYMmUKLVu25MiRI7Rt2/b+kBQeDkuXOoEoSxZo2RKSJ4eRI+HMGWfdX6lSCkkiT5kHzigZY94GigMZjDGt7vhRKuCRu6cZY9yBYUA5nCV724wxC6y1++44bBdQ1Fp70xjTBOgDfGGMeRb4ESgKWGDH7XMv/7fhiYiISFxlrTNz9N13EBYGI0Y4K92imkcuB12m65quDN06lBSJUzCgwgDqFajHyBEj+arHV1y9epVatWrRtWtXsmfPfv8Fjh4FX18YP95Ja+nSQbNmzuxRgQLROlYRiX8etvQuMc7eSYmAlHe8fg34LArXLgYcttYeATDGTAeqAv8flKy1v99x/Gag5u2vKwArrLWXbp+7AqgITIvC+4qIiEgcd+6cE4rmzXNmkcaPh1y5onZuiPIGzQAAIABJREFUeEQ4o3eOpuPqjlwKukTDIg3pWrorS2YvIX/1/Jw6dYrKlSvTq1cvChYsePfJt27BnDnO0rrVq51UVqEC9O8PH30ESZJE+1hFJH56YFCy1q4B1hhjxltrjz/GtZ8HTt7x/SngzYccXx9Y8pBzo7Drm4iIiMR1c+Y4IenaNejb11np5v7ItSoOv2N+eC314s+zf1IqeykGVhjI6R2nKVu8LHv37qVYsWJMmjSJMmXK3H3irl1OOJoyBa5cgRdfBB8fqFMHsmWL5hGKSEIQlWYON40xfYH8QNJ/X7TWvveI8yKbOLeRHmhMTZxldqX/y7nGmEZAI4CMGTPi5+f3iJJizvXr1+NUPaJ7ElfpvsQ9uidxU0K4L4GBiRgyJDcrVmQiT55A+vTZT44cN1m37tHnBgQF8MuRX1h7YS0Zk2SkS74upDubjjoV6/Dnn3+SNWtWunTpQqlSpQDw8/MjUWAgGVeuJNPixaQ8fJgIDw/OlypFQOXKXClcGNzc4O+/nY//qPCVK4SHh8f7e5IQJYTflYQmvt6TqASlKcCvwIc4rcJrA+ejcN4p4M4/0WQF/rn3IGNMWaADUNpaG3zHuWXuOdfv3nOttaOAUQBFixa19/31KBb5+fnd/9csiVW6J3GT7kvco3sSN8X3+7JsGTRp4vRG+PFH6NAhJR4exR553vWQ6/Ra34t+O/rh7uZOt3e78dGzH+Hzow9z5swhY8aMjBgxgvr16+Ph4QEREfD7787s0Zw5EBwMr70GQ4fi9tVXZEyblozRMaA0abhy5Uq8vicJVXz/XUmI4us9iUpQSmetHWuM8bpjOd6aKJy3DchjjMkBnAa+BL668wBjzGvASKCitfbcHT9aBvQwxvy7g1t5oH0U3lNERETikOvXoXVrp/V3vnwwf76zkeyjRNgIpu6eStuVbfkn8B++Lvg1LfK3YHT/0bw+9nWSJUuGj48PLVu2JEWKFE4zBl9f5+PYMWcT2IYNoV49JyiJiPxHUQlKobc/BxhjPsCZFcr6qJOstWHGmOY4occdGGet3WuM8QG2W2sXAH1xGkbMvL3Z2wlrbRVr7SVjTDecsAXg829jBxEREYkf1q1zHgE6etTZH6lbN0ia9JGnsfX0VryWerH51GaKZimKbwVf1k5bS6mapQgLC6NZs2Z06NCB51KnhgULnNmj5cudNnrvvw89esAnn0TtzUREHiAqQeknY0xq4Huc/ZNSAS2jcnFr7WJg8T2vdb7j67IPOXccMC4q7yMiIiJxx61b0KkT/Pwz5MgBa9Y4e7U+SkBgAO1XtWfCHxPI+ExGRlUaxY2NN/iq9FdcvHiRGjVq0K1bN3LdvAk9ezq9xS9edJoxdOoEdes6TRpERKLBQ4PS7b2Q8lhrFwFXgXdjpCoRERGJl3bsgFq1YN8+aNzY6WqXIsXDz7kVdouBmwfSfV13QsJDaPN2G/L8k4fuX3Tn2LFjlC1blt4dO1LkwAGoUQO2bQMPD/j4Y2fPo7Jlo942T0Qkih4alKy14caYKsCAGKpHRERE4qHQUOjeHX76CTJmhKVLne2JHsZay/y/5vP98u85cvkIVV6qwseJP2Zw28H08e/Da6+9xqjmzSn3xx9QqRIEBUHBgjBwIHz9NaRPHzODi4yfH/5+fnd1nhKRhCUqS+82GmOG4nS+u/Hvi9banS6rSkREROKNffucWaQdO6BmTRg82Oml8DB7zu2hxdIWrDq6inwZ8jG08FDmDplLvVX1yPHCC0z94gu+2L4dN29vSJXKeYP69aFoUWeTWBERF4tKUCp++7PPHa9Z4FH7KImIiEgCFh4OAwZAx46QMiXMng2ffvrwcy7evMiPfj8yYvsIUidJTeeCnTnw6wGaz2hO+lSpGJQ/P9/u20eSEyegdGmnl3i1apA8ecwMSkTktkcGJWutnksSERGRu/z9t9M7Yd06qFoVRo50ltw9SFhEGL9s/4XOv3fmavBVaueujfs6d3p07EFioFPy5Hhfu0aqS5egXTunrXfu3DE2HhGRe0VlRklERERiUZkycOVKYfz9Y7sSpwP3yJFOu293d5gwAb755uGr4VYeWUmLpS3Ye34vpTKXouD+l5lQbyJBwcE0BDq7u5O5QgVnaV2FCpBI/zwRkdin/xOJiIhIlJw+7WSZZcucRnPjxjmduR/k70t/8/3y75n/13xeTJGdFserMLXXctbeWstnQPecOXmpSRMnaT1sOkpEJBYoKImIiMhDWQtTpoCnJ4SEwLBh0KTJg2eRAoMD6b6uOwM2DyDLDXc67yzM1N/3MjD0OKXc3Fjw0Ue82b49vPWWGjOISJz1yKBkjEmOs9nsC9bahsaYPMDLt/dWEhERkQTs/HlnP6Q5c6B4cWep3YMeHYqwEUz8YyIdl7ejsP9ZBu/KwNgD5/HBnwLJk/Nb06ZU6tYNkzJlzA5CROQxRGVGyRfYAbx9+/tTwExAQUlERCQBmzcPGjWCq1ehTx9o1erB+7puOrmJvhMa8cayPUzyT0Sf69CY82RLmZLx7dtTs00b3LUprIjEI1EJSrmstV8YY2oAWGuDjNE8uYiISEJ15Qp4ecHEifDaa7B6NRQoEPmxp88cYmGP2ryyYBP9j0MnoANhpEmRgn6dOtHsu+9ImjRpjNYvIhIdohKUQowxyXD2TsIYkwsIdmlVIiIiEitWrHA6cwcEQKdOzh5JiRPfc5C13Nq8nr29vif3sm1UD4ZOKZIw1j0MNw8P2nh50bZtW9I+atdZEZE4LCpB6UdgKZDNGDMFKAHUcWVRIiIiErNu3IDWrWHECMibFzZtgjfeuOegCxewkyZx9ZeBpDl4guzu4J0tNb+eC+HGzWDq1KlDly5dyPawVngiIvHEQ4PS7SV2B4BPgbcAA3hZay/EQG0iIiISAzZsgNq14cgR5zmkn36CZMlu/zA8HFauhLFjiZg/D7eQUPZmgd7F0rDpqBsXjl2iSpUq9OjRg/z588fqOEREotNDg5K11hpj5llrXwd+i6GaREREJAbcugU//gh9+0L27PD771C69O0fHj0Kvr4wfjycPMn1lEkZ/VooozIm58ruVJzZeoa3336bObN7U7JkydgchoiIS0Rl6d1mY8wb1tptLq9GREREYsTOnVCrFuzd63S269cPUnrcgmlzYexYWLUKawzH33yZziWT82viINJtzUzAlgDy5n2BEXNHULVqVdTfSUQSqqgEpXeBb40xx4EbOMvvrLX2VZdWJiIiItEuNBR69oRu3SBDBli8GCpl2gXtxzq7yl65Ai++yCGvb2iUfiN+AQfIsDkDITtvQmYYNWoUdevWJVEi7VkvIglbVP4vV8nlVYiIiMiD+fuTIiwMKPpEl9m/35lF2r4dvvosmCFvTOLZDsNh1y5IkgSqVePkZ+VpemMGi3ZOItVvqXDb6kZwimB69OiBl5cXyZMnj54xiYjEcVEJStblVYiIiIjLRETAwIHwww+WFElCmVliOJ8tbAezgp2NkoYO5eqnH9Jt9xAG+TXAbYMbiTYn4ha38PLyokOHDqRLly62hyEiEqOiEpR+wwlLBkgK5AD+AtTaRkREJI47ehTq1LjF2i1J+Sj5KkZdq0mmvcHQsCHUq0d4oVfx9felvW9RLqy5QOKNiQm9EUrNmjXx8fHhxRdfjO0hiIjEikcGJWttwTu/N8YUAb51WUUiIiLyxOytYEZ77abV2Py4h4fgS2Nqv3UK02AAfPIJJE3KuuPr+G5kUfyX+5N4bWK4BO9VfI9evXpRqFCh2B6CiEis+s9PYlprdxpj7t2CTkREROKCPXv4Z9BMGkx4hyWh5Xg/yXrGNd/KC14/Qo4cAJy4eoLWC1szY94MPH73gAB4teir9J7Zm/feey+WByAiEjc8MigZY1rd8a0bUAQ477KKRERE5L+5ehWmT8eOHce0bblozlBuuT/DkKb7aTrwbdw83gHgZuhN+mzoQ8/pPQldFgrHIFuubPT8tSfVq1dXq28RkTtEZUYp5R1fh+E8szTbNeWIiIhIlFgL69Y5ex7NnMn5oGdokmoKsynPW0VDmTDFg5deeuX2oZZf9/5KiyktOLvgLOyD9BnS03VYVxo2bIiHh0csD0ZEJO6JyjNKXWOiEBEREYmCf/6BCRNg3Dg4fBhSpWJBqX403NaQK9cT0asXeHt74O7uHL7jnx00md6EbdO2wU5IliwZbbu05fvvvydFihSxOxYRkTjsgUHJGLOQh7QGt9ZWcUlFIiIichd3G8rbYWvgo66wZAmEh0Pp0lz93ocWG6ozfnIiChWClZOg4O0WTGevn6X1otZMGjEJNoF7hDuNmzSmU6dOZMyYMXYHJCISDzxsRqlfjFUhIiIi9wsPhwkTmB7Yngz2HOzIDG3aQL16rDqem7p14fRp6NABOneGxIkhJDyE/uv706VfF4J/D4Yb8Olnn9K7Z29y584d2yMSEYk3HhiUrLVrYrIQERERuc1aWLrUCUV79nDOvSB9E7WjzwlPbgQnom1bGDYMXn4ZNm6EN990nkNacGAh3/b6ljMLzsBleKvkWwzpP4SiRYvG9ohEROKdhy29m2Gt/dwYs5tIluBZa191aWUiIiJPo507nYC0ahXkzg0zZ9Ksfi7CwsPZtC0RtWo5jya1aAE9ekCyZLD//H5q/VyL7RO3QwDkzJuT4dOGU758eXWyExF5TA9beud1+/OHMVGIiIjIU+34cejYESZPhvTpYfBg+PZbSJyYiPp/cCwkE++8A9mywe+/Q5kycDnoMvWHNmPawGnwNzyb+Vn6T+zPN19/g5ubW2yPSEQkXnvY0ruA25+Px1w5IiIiT5nLl6FnTycYGQPt20PbtpA6NRERMHsm7Lj+MjcjklK/PvTvD8+kCKfbvB781PUnQvxDSJoyKR16d6C1V2uSJEkS2yMSEUkQHvnnJmPMW8aYbcaY68aYEGNMuDHmWkwUJyIikmAFB8OAAc7yun79oEYNOHQIevQgPEVqpk93Oth9/rlz+CtJDjFmDKw6OJeMZTPSuVpnwvaF0cCrAWdOnqFjm44KSSIi0Sgq8/JDgRrAISAZ0AAY4sqiREREEixrYfp0eOUVaNUK3ngDdu0CX1/CM2dlyhQoUMDJTcY4h+ZNvB1SbyT/F/n5tMSnXFxzkbLVynLiyAlGDxxN6tSpY3tUIiIJziM3nAWw1h42xrhba8MBX2PMRhfXJSIikvCsXQve3rBtGxQqBMuXQ7lyhIXB1InQvTscPOjMJM2cCZ9+CpdvXuSr7JWJOB0IM+CVkq8wddhUChcsHNujERFJ0KIyo3TTGJMY8DfG9DHGtASecXFdIiIiCcf+/VClCpQuDQEBMGEC7NhBaJly+PpC3rxQu7bTwW72bPD3hw+qBFHnp1o89+JzRPwVCEkSMW/FPPat3aeQJCISA6ISlL65fVxz4AaQDajmyqJEREQShDNnnM51BQrAmjVO04aDBwn5shZjfN15+WWoVw9Sp4Z585wVeFU/DqfdL21IkyMNk36cRPLkyUmcLgvPXMxP1bJVY3tEIiJPjQcGJWPMC+B0vbPW3rLWXrPWdrXWtrLWHo65EkVEROKZ69ehSxenUYOvL3h6wt9/E9KqHaMmJeOll6BhQ0iXDhYuhO3boWpVGDRzIKlfTk3fZn0hFNr2b8uVo1d4u8Bpchfyi+1RiYg8VR42ozTv3y+MMbNjoBYREZH4LSwMRo2CPHmga1eoXBn27ye490BGzExP7tzOBFOmTLB4MWzdCh9+CDNW/UqGwhlo+UVLbp27RZ0Odbh26hq9WvbC3d09tkclIvJUelgzhzu38s7p6kJERETiLWth0SJn/6P9++Gdd2DePG4VepMxY6BXLzh9GooXhzFjoFw5p6Od304/6rSow/F1xzHJDB80+YBJvSaRNlXa2B6RiMhT72EzSvYBX4uIiMi/tm2Dd991mjVERMC8eQQtW8ugzW+SM6ez6i5nTli5Etavh/LlYe+RPbz64au8+8a7HN98nOI1inP076MsGr5IIUlEJI54WFAqZIy5ZowJBF69/fU1Y0ygNpwVEZGn3pEjzmZHxYo5s0jDh3Nzy276/12VHDkNLVrAyy/D6tVOH4f334fT505R6utSFHylILuX7CZfxXzs3LuTDVM3kD1z9tgekYiI3OGBS++stVoULSIicq+LF50Nj4YOBQ8P6NSJG01bM2JySvq+BOfOwXvvwYwZUKqUc8rVwKvUaV+H+ePmY4MsWd/Jytj+Yyn/RvnYHYuIiDxQVNqDi4iIyK1b0Lcv5MoFgwZB7doE7jpM72d8eLFgSlq3dvaQXbcOVq1yQlJwcDCNOjUi3fPpmDdsHmleSsOEZRM4ue6kQpKISBynoCQiIvIwEREwebKzjq5NGyhRgmsbdtMjx2hefDsz7dpB0aKwcSMsX+70cQgPD6fTwE6kzpqa0T+NJnHGxPSa2ouLuy5Sq3yt2B6RiIhEwcO63omIiDzdVq2C1q2dnWCLFOHqkIkM/qM0AyrD5cvwwQfQubPzmBKAtZbhU4bT/of2BJ4MxON5D7yGeNG3SV883D1idywiIvKfKCiJiIjca88eZ/ZoyRLInp3Lo2Yw6NRnDKxluHrVaXDXqZMzk/SvWUtm0axVM84dOIdbOje+/PFLRrcfTYokKWJvHCIi8tgUlERERP51+rQzRTR+PKRKxSWfoQy4+S2DvRNx7Rp88okTkF577X+nrN28ljrf1eHotqOQEsp6lWVi14lkTp051oYhIiJPzqXPKBljKhpj/jLGHDbGtIvk56WMMTuNMWHGmM/u+Vm4Mcb/9scCV9YpIiJPuWvXoGNHyJMHJk/mwrcd+KHOP2Tv04yfeiWifHnw94c5c/4Xkvbs38NrZV+j9NulObrnKEVqFWH/X/tZMXCFQpKISALgshklY4w7MAwoB5wCthljFlhr991x2AmgDuAdySWCrLWFXVWfiIgIoaEwejR06QLnz3P+k0b0y9CbYRPTcPMmVK/uzCAVKPC/U46fOE7tlrVZM28NuEPOqjkZ32c8JV8qGWvDEBGR6OfKpXfFgMPW2iMAxpjpQFXg/4OStfbY7Z9FuLAOERGRu1kLc+dCu3Zw6BBni39CvwrDGT4nE0FB8OWXzgRTvnz/O+XChQs0bteYORPnYMMtGUpnYHiv4XxW7LMHv4+IiMRbrlx69zxw8o7vT91+LaqSGmO2G2M2G2M+jt7SRETkqbVpE5QsCdWqEWAz0arq3+TYNZv+UzPx6aewbx9Mnfq/kHT9+nUat2lMphcyMXvsbJ4p/AyDFw/mzKozCkkiIgmYK2eUTCSv2f9w/gvW2n+MMTmB1caY3dbav+96A2MaAY0AMmbMiJ+f32MXG92uX78ep+oR3ZO4Svcl7kmo9yTZqVPkHD2aDGvXciRNfrq8tpZf9xYn7Igb5cqdpWbN42TNGsSZM3DmDISEhDBl7hSmTZlGaGAoHq948GXtL6n9Rm083DxYu2ZtjNV+5UphwsPDE+R9ic8S6u9KfKf7EvfE13viyqB0Csh2x/dZgX+ierK19p/bn48YY/yA14C/7zlmFDAKoGjRorZMmTJPVnE08vPzIy7VI7oncZXuS9yT4O7J+fPQrRuMGMEpjxw0L7aFMX+8Qdifhtq14YcfIFeuTEAmwNksdvjY4XTo1IHAc4G45XSjXs96DGgwgFRJUsXKENKkgStXriSs+5IAJLjflQRC9yXuia/3xJVBaRuQxxiTAzgNfAl8FZUTjTFpgZvW2mBjTHqgBNDHZZWKiEjCExQEAwdCr16cuP4sPfOuYtzhkkTsNNStC+3bQ44c/zvcWsv0WdPxauPF+WPnIQt82O1DRnmNInNKdbETEXnauCwoWWvDjDHNgWWAOzDOWrvXGOMDbLfWLjDGvAHMBdICHxljulpr8wOvACNvN3lwA3rd0y1PREQkcuHhMGkSdOrEsVPu9Mw+A9+g8nDIUL++078he/a7T1mxcgWNWjbi2J5jkA7eavUW49uP5+X0L8fKEEREJPa5dMNZa+1iYPE9r3W+4+ttOEvy7j1vI1DQlbWJiEgCtGwZtGnDkT8D6ZFhKBPcP8ItwI2GDZ2AlC3b3Ydv27aNBl4N+HPTn5AK8tTNg29nX0q8WCJ26hcRkTjDpUFJREQkRvj7Q5s2HF5xhO4pejHJ7VMSXTM0aWpo0way3vMnuQMHDtC4VWPWLFkDySBTtUyM6DKCqvmrYkxkvYhERORpo6AkIiLx14kT0KkTBydu5qfEPkwx1UkcZvD8ztC6NWTJcvfhJ0+exKudF3OnzQUPSFk+Jb079aZR8Ua4u7nHzhiiwM8P/Pz8gTKxXImIyNNDQUlEROKfq1ehZ0/291/CT+HtmW58SeJuaOlp8PaGTJnuPvzChQu079KecaPGERERQZLiSWjbri3tKrQjmUey2BmDiIjEaQpKIiLy/8qUcfbs8feP7UoeICQERoxg748z6HbVkxn0IFky+L65G97e8Nxzdx8eGBhI997dGTBgACFBIbi95sa3Lb+lZ7WepE2WNnbGICIi8YKCkoiIxH3WwsyZ7P7eF59T9ZjFBlIkD6ftd260agUZMtx9+K1btxgybAhdu3XlxtUb8Ap80vQTBn0ziGyps0X+HiIiIndQUBIRkbht3Tr8m4yk295PmMMSUiYPo0MLS8tW7qRLd/ehYWFhjB8/nrad2nLpzCXICe94v8OIRiMo8FyB2KlfRETiJQUlERGJmw4cYEfj0XRbU5L5TCZ1smA6fx9Bi1aJSHvPqjlrLbNnz6Zl25acOnIKskDeVnn5xfMXSr9YOnbqFxGReE1BSURE4pazZ9nW1BefOQVYxM+kSRpEV+8Qvvs+CWnS3H/4ypUr+c77O/b/sR/SQ+YGmRncYjDV8lVTq28REXlsCkoiIhI33LjBlpbT6TouK0vC2/Fskhv81OoGzds+Q+rU9x++detWvLy92LxuM6SGVJ+nomernjQs2hAPd4+Yr19ERBIUBSUREYldYWFs7LiYrgNSsTykPukSX6Nni/M0+zEDKVPef/i+ffvwbufNkoVL4BlI/EFi2nm1o3Xp1qRInCLm6xcRkQRJQUlERGKHtazrs4mu3QyrblQhQ6LL9G56jKa9XyRFJHnn+PHjdOjUgalTpmI9LG7vutGwWUN8Kvrw3DPP3X+CiIjIE1BQEhGRGOc38i+6truJ35XiPOd+gX61/6Tx0II8k+L+vY3OnTtHt5+6MeKXEYTbcHgTPmn4CX2r9iXXs7lioXoREXkaKCiJiEiMsBZ+n3aGri0us/b8K2RyO8uAautoNPYtkqdOf9/xV69epV+/fvTr349bt25BYShRswSDvhjE61lej4URiIjI00RBSUREXMpaWDnnGl2/u8iGf3KQhQgGl19Eg4mlSJax5H3HBwUFMXz4cHy6+3Dt8jXIB3k/z8ugmoMol7OcOtmJiEiMUFASERGXsBaWLQqhq+cFNh/PQlauMvStydSfVIakuT+87/h/N4vt0LkD5wLOQS7IXC8zfWv1pUbBGrgZt1gYhYiIPK0UlEREJFpZC4sXReDT8hJb/07PC4QyIt8Q6k58lySv17zv+IiICGbPnk3bH9py9PBRyAqpGqWia92uNCnahCSJksTCKERE5GmnoCQiItHCWli4EHxaX2PHwVS8SCCjsg2n9sgSJK7kGcnxluXLl9OmXRv+9P8TnoPEXyfm+zrf0/adtqROGsnmSSIiIjFEQUlERJ5IRATMnw8+PwThfyAZOTnP2LQ+fPNzYTxqdwS3+5fMbd68mTbt2rBuzTpMWoP51FDvm3r4vO9DlpRZYmEUIiIid1NQEhGRxxIRAXPmQLfOofy534PcnGJ8sv581SkXHi1/gqRJ7ztnz549dOjQgQULFuCWwg0qwYdffUjvCr15JcMrsTAKERGRyP0fe/cdHmWxt3H8O5tGCZEqvRcRFVAQEAFDCU2aiiIgRFDQo4j1taGoWLEXOCrYCCooKooCQlByBBQFld57lxogCWm78/7xJGZT0KBsdpPcn+vaK8lmHjLjuEnu/OaZUVASEZEz4nbDZ5/Bk0+4Wbs+iPPMNqYGPcv1t1cgeOxTUKFCrmu2b9/OY489xocffogJM9AJLr3mUl7q9RKX17rcD6MQERH5awpKIiKSL243fPopPDnOsn6D4fygLXzM41zXH4KefQrq5z789Y8//uCpp57irbffwo0be5mlQZ8GvNjvRXo36q2tvkVEJGApKImIyF9KT4fp0+GppywbNxouCN3MdB6l/2V/EPTS89CqVa5r4uPjefHFF3n5lZdJTk7GXmypfGVlnu77NNHNowl26cePiIgENv2kEhGRPKWnw0cfwdNPw+bNcFGpbczgAa6uuw7X889B796QoyKUlJTEhAkTeObZZzgefxwuhNLdSvNIv0cY3Xo0pUJK+Wk0IiIiZ0ZBSUREsqxYQak0N++914Knn4Zt26B52e18wT30DV+K6+XH4abpEJz9x0daWhrvvfceTzzxBPv378fVyEXwwGDu6HsHY9qPoUKp3PctiYiIBDIFJRERAZwK0v7U8uxMrsxNN8EllXbzVdCd9E6Zh3ns/+DeGChTJts1Ho+HTz/9lEcefYStW7YSVDsIboTBfQYzruM46pSt45exiIiI/Fu5D7cQEZFixeOBadOgSRPYdKoWlTnANyWvZfnhOvQZXhGzdQs8/ni2kGStZe7cubRo0YKBAweyK3EXDIQuT3VhxbMriLkqRiFJREQKNVWURESKKWudg2IffRTWrIGLKu3nY+7hejsd07kXjF/tpKcclixZwkMPPcSiRYsIrRgKV8NFURfxQrcX6FS3kx9GIiIicvapoiQiUsxYC/PnQ+vWcNVVkLJjP9PMIFYcrknV4MP8p8Q78PXXuULSqlWr6NWrF+3atePnVT9DT6j+UHWmPzGdZbcsU0gSEZEiRRUlEZGtm2qtAAAgAElEQVRiZNEiGPOwZdFiQ63Q/bzLGIa6viL43uEwaiuPNztGenp6tmu2bt3K2LFjmTZtGsGlgqEzRHSM4LGoxxjZYiShQaF+Go2IiIjvKCiJiBQDy5bBow+mMe/7EKq4DjGBJ7i5Zhxhd/0Hol/zuv/o2J/X7N+/nyeffJLJkydDENAOQq4I4aFOD3Ff2/soE1Ymz68lIiJSFCgoiYgUYatXw9h7TvLlgjJU4Dgv8By3tV9HqXv/A1e+Aa4cK7CbNyf+8A4eeughXnvtNVJSUwhqGYS7vZtbI29l7BVjqRJexT+DERERKUAKSiIiRdDmTZbHbv2D6QvPpQwexgU9zp3XHyTi/luhadM8rzl48CBLl7YiJWUP69Z5CG0eiqe9h6vbXc3TnZ6mUYVGBTwKERER/1FQEhEpQnZuTGbcTTuZsqQ+YZThgVIT+L9Rpyh/z3+gcuU8r9m0aRMvvfQSU6ZMISUlBeq5sF0tbVq3YXyX8bSu0bqARyEiIuJ/CkoiIkXA/hV/8PSI7UxafgmGOoyq+AkPPRpM5VtugbCwXO2ttfz444+88MILzJo1C1ewi+CLg6EVuFwN+HrUK/Ro0ANjjB9GIyIi4n8KSiIihdjh71YyfvReJqzrSDotGF77ex55PoKa1w6CPEKO2+3myy+/5MUXX2Tp0qWEhodCB/C08tCjRQ9iJ16J3deMnq9d6ofRiIiIBA4FJRGRwsbt5vjHs3n5kSO8susaEriIGxov57GJlanfqVuelyQlJfHBBx/w0ssvsW3rNsIqhUFPKNG6BHe0uYPbL72duuXqEvkmxIfHF/CAREREAo+CkohIYXH8OIlvxvDG+CSejx/BMcrTv9kmnni7Kk1at8rzkkOHDjFx4kQmTJjAkSNHCKkZAtdC7Xa1ufOyOxnabCjhoeEFPBAREZHAp6AkIhLotm4l+ZU3efudIJ5JuYeDVKbnJQd48s10LmmV9050mzZt4uWXX+aDKR+QkpyCq7EL+kCnTp24q81ddK3fFZdx5XmtiIiIKCiJiAQma+GHH0h7+Q3en1WBJ3mEPdSkY8sTzHwN2rbN+yyjH3/8keeff55Zs2ZBENimlpIdSjKsyzDuaH0HjSs2LuCBiIiIFE4KSiIigSQlBT75BPcrr/PxivN53PUC26hLm0tSmfICdOoUkesSt9vNrFmzeHb8syz7eRmuUi5se0vNqJrc2elObrrkJsqWKOuHwYiIiBReCkoiIoHg4EF46y08E99k5sG2jA2bzjoa0PxCD988Az17hubaxO7UqVNMmTKF5154jp3bdmLKGegBl/e7nLvb302f8/oQ5Aryz3hEREQKOQUlERF/WrUKXnsN++FHzE3txCMRi/idBjSua/l0HFxzjQtXjluJDh06xIQJE3j1jVc5cewEVIPgAcHccN0N3NX2LppVaeafsYiIiBQhCkoiIgXN44E5c+CVV+D771kY1p1Hyq/lxwP1qVsBprwBgwcbgnIUgzZv3sz4F8YTExNDWkoaNIIKAytw13V3cUvLW6hUupJ/xiMiIlIEKSiJiBSUhAT44AN4/XXYvJmllXrzSIPtfLelDtWD4K23YNgwCA3NftlPP/3E4888zvzZ88EFNIOm/ZryYL8HuabJNYQGheb11URERORfUFASEfG1nTthwgSYPBmOH2fFhTfw6CUL+ea36lTCKSzdcguULJl1SeYGDY8+/Shrf10LJcC0N/Qd0pcHuz9I6xqt/TYcERGR4kBBSUTEF6yFn36CV1+FL74AYH3X0TyWMoYZ31egbFl4+mkYPRrCvc57PXXqFO+8/w5PjX+Kg7sOQlko3bc0t424jTvb30n1iOp+GpCIiEjx4tPTBo0x3Y0xG40xW4wxD+bx+Q7GmN+MMenGmP45PhdtjNmc8Yj2ZT9FRM6atDSYNg1at4bLL4fYWLbd9DTR/eK5cN7LzP2lAo88Atu3w8MPZ4Wkw4cPc+/D91KhagVG3z6ag+kHqXVzLSbNn8Thzw7z/JXPKySJiIgUIJ9VlIwxQcBEIArYAywzxsyy1q7zarYLuBG4L8e15YHHgJaABX7NuPaYr/orIvKvHDkCkybBxImwdy80asSepz7gqW2DePe9EIKD4e674YEHoJLXngubN2/mgScfYNYns3CnuqERtLuzHeNuHEdknUhMzj3BfSwuDuLiVgCRBfp1RUREAo0vl961ArZYa7cBGGOmA32BP4OStXZHxuc8Oa7tBsRaa49mfD4W6A5M82F/RUTO3Pr18NprEBMDp05Bly4cfP4DnlvWmf8+afB4YORIp3pU3asgtGjJIu597F6Wfb8MXBBycQhDRg5hbP+x1C1X13/jEREREcC3Qak6sNvr4z1Afu8+zutarTkRkcBgLcyf79x/9O23EBYGQ4Zw7Ma7eXFOE14b6WSm6GgYOxbq1HEu83g8TJ0xlbFPjWXXml1QAspHlee+u+7jjs53EB4a/pdfVkRERAqOL4NSXutF7Nm81hgzEhgJULlyZeLi4vLdOV9LSEgIqP6I5iRQFaZ5cSUnUzk2lhqff07pnTtJKV+efcOHs6XLVUxfcAGfdKtJYiJ07HiQG2/cTq1ap9ixAzZuTGHqrKnM/GwmSQeToCzUuroWN199M5dXuxyXcbH8x+X+Ht6fCtOcFCeal8CjOQlMmpfAU1jnxJdBaQ9Q0+vjGsC+M7g2Mse1cTkbWWsnAZMAWrZsaSMjI3M28Zu4uDgCqT+iOQlUhWJe9u517j16+204ehQuvhiefBJPnwF88U4oz42Gw4ehTx948klo2vRc4FwOHDzAXePu4ouYL0g7mYarmouo+6N4+e6XubDKhf4e1WkVijkphjQvgUdzEpg0L4GnsM6JL3e9WwY0NMbUNcaEAtcDs/J57TygqzGmnDGmHNA14zkRkYKzbBkMHuysnXvuObjiCvjhB1J/+pX/nhxC/fNDue8+JzctXQpffQVNm8Jva3/j8msup1qNanwy8ROCawZz6xu3cnjLYeaPnx/QIUlEREQcPqsoWWvTjTGjcAJOEPCetXatMWYcsNxaO8sYcykwEygH9DbGPGGtvcBae9QY8yRO2AIYl7mxg4iIT6Wnw5dfOqfA/vgjlCkDd9wBo0aRXqseH34ITwyFHTuc3b+nTXPyE8D0b6cz5skxbPtpG7igStsqPHjfg4zqNYogV5BfhyUiIiJnxqcHzlpr5wBzcjw31uv9ZTjL6vK69j3gPV/2T0TkT/Hx8O678MYbsHMn1KvnbNYwbBie8AhmzIDHesLGjdCiBbz5JnTrBm5POmPfGscbr7xB/KZ4KAFNr27KS4++RJdmXfw9KhEREfmHfBqUREQC3ubN8Prr8P77kJjolIdefRV698a6gvj6a3j0UVi1Ci64AL74Avr1g8MnDjFozGg+f/dz0g6mEVQuiJ539GTCmAnUraztvUVERAo7BSURKX6shYULnUD0zTcQHAyDBsGdd8LFF2MtLFgAjzwCv/wC9evDhx/C9dfDih2/cvmNd7D0i6XYBEupWqW4ZfwtjL9zPKXCSvl7ZCIiInKW+HIzBxGRwJKc7FSOmjeHzp2dHRgefRR27YIPPoCLL2bxYujYEbp2hf37YfJkWLfOYmt8SIOedWnZuCU/xfxE1UZVmfjJRBJ2JPDG/W8oJImIiBQxqiiJSNH3xx/OTUVvvgkHD8JFFzn3Iw0aBCVKALB8uZOZvv0WKld2VuMNGXaKF754ikptJnBixQlwQdOoprzy+Ct0at3Jz4MSERERX1JQEpGia8UKZ3ndtGmQmgq9esFdd0GnTmCcc63XrIGxY2HmTChfHsaPh7437OaR9+7hnqZfkr49HVdJFz1v7Mkbj79BvVr1/DwoERERKQgKSiJStLjdzn1Hr74KcXFQqhSMGAGjR0OjRn8227IFHnvMyVDh4fDYY5ZL+yzm8cn38ECz5XAYSlYsyS2P3sIz9z1DRESE/8YkIiJSGKQCB4D9Xm+fgzbJbZyPCxkFJREpGk6edO4/ev112LoVatWCF16Am26CcuX+bLZrFzz5pNM0NBTuuddNlQ5TePXdsTzx4l5IhHMbnMvDzz7M7TfeTnCwvk2KiEgxZoETOKHHOwAdyOO505x6GhIWUgAdPfv0G4CIFG7btztnH737Lpw4AW3bwrPPwlVXObvZZThwAJ55Bt5+2/n4xhFJmKZP8eZHr5H0WhKkQZO2TXh+7PP07NoTk7E0T0REpEhKBw6RvwCUnMf1YUBVoArQCLgi4/2qXm+rApVg0ZJFRBLpw8H4hoKSiBQ+1sLixc7yui+/BJcLrr3Wuf+oVatsTY8cgeefd7JUair0GXCY+DqjeX/WJ3je9mBchqi+Ubz4+Is0vaipnwYkIiJyliSSd9jJ+dwhwJPH9eXICjttyR58vAPQOUAR/5uigpKIFB6pqfDpp05A+vVXZ0nd/ffD7bdDjRrZmp44AS+/7DwSEiyX99zJgQpDmfm/RfAxhJYOZeiooTzx4BNUq1bNTwMSERHJBw9whL+u+mS+PZnH9cFAZZyAUxNoRd4BqApOpUgABSURKQwOH3bWzE2c6Bxu1LgxvPUWDBnibNbgJTERJkxwqkhHj0KT9qvZU3oAi39eD4ehbOWy/N/4/+OO/9xBmTJl/DQgERERIAUn4PxdADqAs1QupzJkhZzmQA/yDkAV0Omp/4CCkogErrVr4bXXYOpU57DYbt3gvfec02Bd2b/jp6Q4WeqZZ5xjk6o1W0Jww0Gs+20XJELdxnUZ98o4BgwYQEhI4bypVERECgELHOfv7/s5QN6bHxjgXLJCzoVkLXfzDkBVgHAfjkMUlETEjyIjaR4f75x3lMnjcU59ffVViI11DoQdOhTuvBOaNMn1T6SlwZQpMG6cZfduQ0S9OXD+zexbvx9S4fKOl/PEmCfo1KmTNmgQESnqIqF5fHNY8bctz1w6cJD8BaC8Nj8oQVbIaez0Nc8AdC76DT1AaBpEJDAkJkJMjFNB2rgRqlVzykMjRkDFirmau90wfTqMfczDtq0uQqpMg9p3c2L7QYKCgug/YABjHhjDRRdd5IfBiIhIoZFI/nZ+O4RTLcqpPFkhpx3ZNzzwDkDFYPODokZBSUT8yqSmwoMPwqRJcOwYtGwJH30E/fs7Bx3lYC3MnAkPjkll84ZgTNk3odJjpB04Qsnwktx2773cfdfdVK9e3Q+jERGRgJC5+cHfbXywH0jI4/pgspa31QJak3cAqow2PyjCFJREpOB5PPD997BuHRGHDjkVpKuvdrb3btsW8lgiZy3MnWu564GTbF4TBqVfhDLPY+NPULlaZe5/6SVuvvlmIiIi/DAgEREpcMeAzTkev0FEcoQTXk63+UFm0LmE0299XR5tfiAKSiJSgPbuhQ8+cA6H3b4dgoNJqVSJEr/8AnXqnPayeQtSGHXfMbasDIMSz2BK/BebmMQFF13AQw88xHXXXacNGkREiqIT5A5DmY8jXu0MUBsIgrTwNML+E5b31telC7DvUugpKImIb6Wnw5w58M47MHu2U03q1AmefhrefJPkEycocZqQ9PX3Bxn9f8fZ8VsIhDyFCZ6KTU6lS9co7v+/++ncubM2aBARKewSgS1kBaBNXu8fzNG2BtAQuCbjbaOMt/VwqkiRcCr+FGFPaz2c/HsKSiLiG9u2OZWj9993zj6qUgUeeACGD4cGDZw2b7+d6zJrLTHzV/LwmHT2/Wog6CkwXxFkXQweNJh7772Xpk2bFvBgRETkXzkFbCXvytC+HG2r4oSf3hlvMx/1gVKIFBgFJRE5e1JS4MsvYfJk+O4756yjHj2cnet69oS/WB6X6k7l1W++5dknw4j/1Q2uZ4HFhJcqw39uvY/Ro0dTo0aNghuLiIicmVRgG9krQpmPPWTfMa4STviJIqsq1BBogM4GkoChoCQi/966dc7SupgYOHIEateGceNg2DD4i3ATSRyHwjbRdfrrvPVCOZJ/SwXzIrCBqlWqc+89LzJixAht0CAiEijSgB3kXRnaibPbXKbyOOHnCrJXhhribJXtC3GwIm4FkUT66AtIcaKgJCL/TGIifPqpE5B+/NGpFvXt61SPunRxqkmn4bEeFm5fyJJKU0nffBHrBiWDfQ7YzwVNmvHgg1MZMGCANmgQEfEHN07oySsM7SD7bnIROMGnNTCE7GGofIH1WMQnFJREJP+shd9+c5bWffwxnDwJ550HL7wAQ4fCuef+5eW/79rIcx/9yOxvU0lcfQ4cKwM8BiRyxRVdGTNmCl26dNEGDSIivubBWQ6XVxjahrOMLlNpnOBzMXAd2cNQJXSIqhRZCkoi8vfi451gNHkyrFgBJUvCtdc61aPLL8/z3CNwNrhb+FM8r320nrjvQzi5uQJ4DgMfAOuAYIKCqvHrr0to1qxZAQ5IRKQYsDgbJeQVhrYCyV5tS+DcH3Q+0Ifs9w1VQWFIiiUFJRHJm7WweLGztG7GDDh1Cpo3h4kTYdAgKFs2z8t27oS589L5cOYfLFtShtSTocAOXGH/Bfsj4KF168sYNuwt7r8/BrfbKCSJiPxTFmcLbe8QlLmZwhYgyattKM7OcQ2B7mSvDFVHB6yK5KCgJCLZHToEU6Y4AWnjRihTBqKj4eaboUWLXM2PH4eFC2H+fMvsb1PYtb0E4IKSPxNUagJBoT/hTk2mRuVaDB36MEOHDqVhw4YATJt2C/Hx8QU8QBGRQsbiHK56uoNXT3q1DQbq4oSfTmQPQzWBoALrtUihp6AkIs4auQULnKV1X30FaWnQtq1zBtK110LprKPM09Lgl18gNtZ5/Pyzxe02mNBT2KofYxq8R4mjazl19AQlg8LpP+h6oqOj6dChA64cGzzExUFc3ArQ7kQiInCM04ch778puYA6OOGnLdnDUB30253IWaKXkkhxtmePE4befddZM1ehAowa5VSPmjQBnBV4mzc5oWj+fKd6dPIkGGMpU3cj7lYfA58QfugAJ7ecAGO4vHNnoqOjueqqqyjtFbJERIq9k5w+DB32amdwKkCNgIFkD0N1cZbRiYhPKSiJFDdpaTB7tlM9+vZbp5rUpQuMHw/9+kFYGIcPw3efZFWNdu1yLq1S4xRVL/uZ1HKTSHF/TfpWD8G/ppKemk71xo2JfvYhbrjhBh0MKyLFWyLO/UF5haE/crStjhN+riJ7GKqPs8GCiPiNgpJIcbFli1M5+uADOHAAqlaFhx6C4cNJqV6PJUsg9nGnavT7704l6ZxzoFW7BC646ntWln6JfUd/4MiaEIKXBcOxU5QoX55hI4YRHR1Ny5Ytta23iBQfHeCSg5fAc+TeSGFfjrZVcMLPleQOQyq6iwQsBSWRoiw5GWbOdKpHCxc6h8BeeSX25hGsrtGD2IXBxN4GP/zgbGoXHAxt2sADY07hqfctP6S9TOzmxZg1hvD14bATbLCl65VdiY6O5sorryQ0VOs/RKQISwE24pxosNbr7UaIIMKpBAFUxAk/XcgehhrgHMoqIoWOgpJIUbRmjbNr3dSpcPQo1K3LvvtfZUG1IcQuL0/sSPgjY/lH48bOLUkdO6WTViuWz7a+z8trvyJ1birhG8JxrXPhcXto1KIR0fdGM3DgQCpWrOjf8YmInG2Zgcg7DK3DWULnzmjjwgk+FwCnIJFESn9W2glEeZ+YICKFmIKSSFGRkACffOIEpKVLSQwpy//aPEBspUHEbqzJ2uedZXEVKzq3JHXtCp07W46GrmTKiincsvojDn1ziBJrS2DWGEiAiGoR3HbvbQwdOpQLLrjAzwMUETkLknGWx3kHorU4gciT0cY7EF0LNMl4vxHZ7htaFreMyEsjC6bfIlLgFJRECjNrYflymDwZ98ef8FtiI2IrDSa2/qcs2VWDtEWGsDBo3x6GDoWoKGjWDP5I3M/Hqz+m1+wprN60GtdqF6XWlYL9YEoarr7qaqKjo+ncuTNBQTp0Q0QKoWTyXjLnHYiCyApE12W8bQKcB4QVcH9FJOAoKIkURseOwUcfsX3iHGI31CDW1Z3vQ17mKOFwCJpVgzvvdIJR+/ZQsiScSjvFVxu/4uFpU5i3bh52nSVifQRmk8FjPVzS4RKin4qmf//+RERoQb2IFBKZgSivJXM5A9GFZAWizAqRApGInIaCkkhhYS3xs5ew8IXlxC4uSaynG1sYBUD1Kh76dHURFQWdO0PlypmXWJbsXsKUFVP4ZM0nnNx4klLrShG8Jpi05DQq1a/EvY/fy5AhQ6hbt64fByci8jfyCkRrga3kHYgGkH3JnAKRiJwhBSWRAJaWBj/PPUrs6+uZv6QUvyRfhod2lA5OIbJtMqP6O1Wj88934b0z97Zj25i6cioxq2LYtnkbIatDCFkbAochOCKYwUMGEx0dTdu2bbWlt4gElmRgA7mXzOUMRA2BpsD1ZC2ZUyASkbNIQUmKhchIiI9vzooV/u7JX7MWNm6E2HkeYqcdIu7XMpxML4+LNlxaZgMPd11L1O2NaBNZgtDQ7L8NHE8+zox1M4hZGcOiDYtgDURsiIBt4Ha56dKtC9HR0fTp04eSJUv6aYQiIhkyA1HOJXOnC0QDyaoQNUSBSER8TkFJxM8OHYLvvnMOel0wL53d+4IBF/VIYFCJuUT1MHQacxnlWufedS7dk86CbQuYsnIKM9fOJGV9CuHrwwlaF4Q7zU3ti2oT/WI0gwcPpkqVKgU/OBGRU+S9ZG4bWYEomOyByLtCpKPaRMRPFJREClhyMixeDLGxzuP3353nywafpHP6PMawgKh2p6g3uhf0HQR5HOi6+o/VxKyMYeqqqfyx+Q/C1oQ5W3qfgJKVSnLz7TcTHR1Ns2bNtLRORArGKfJeMpdXIGoODCJrU4WGKBCJSMBRUBLxMY8HVq/OCkY//OCEpeBgS9sq23my9KdEJc6k5bn7CbrpRhj+INSpk+vf+SPhD6atmcaUlVNYsWkFrjUuSq8rDXvAhlp69+lNdHQ03bp1IyQkpIBHKSLFRmYgyrlk7nSBaDDZl8wpEIlIIaGgJOIDe/dmBaMFC+DgQef58xt7uOWKjUTtncIVayYQvj8ZevWCEWOhWzcIzv6STE5P5uuNXxOzKoY5a+fg2eAhYkMEZr3B4/FwQZsLiB4TzYABAyhXrpwfRioiRZZ3IMpZIbIZbYJxlsddjBOIMpfMKRCJSBGgoCRyFiQkwP/+lxWO1q1znj/3XOjSBaIa76bLtknU+HICbIiHevXgmTFw441QtWq2f8tay9I9S5mycgrT10zn+KbjlFrrbOmdmpRK2VplueOhOxg6dCiNGjUq+MGKSMGLhObxzcEXG9IkkX3JnHeFKGcgugQYQlaFqAEKRCJSZCkoifwDbjf8+quzAUNsLPz0k7OVd4kS0KEDDBsGUW0TuWj1x7jenQwfL3PuNbrmGrj5ZmcbPpcr27+5M34nU1dNJWZlDJu3bCZ4dTAl1paAg2BKGwZeO5Do6GiuuOIKXDmuFRH5W5mBKOemCtvJHojOI3cgaghoRa+IFDMKSiL5tG1bVsXo++/h2DHn+Ysvhrvvds4zane5pcTKn+Gdd+Dx6ZCYCBdcAK++CjfcABUqZPs3T6ac5LN1nxGzKoa4DXGwFs7ZeA5sArdx06ZzG4YOHcrVV19N6dKlC37QIlL4eAci71DkHYhCcCpELYGhZF8yp0AkIgIoKImcVny8E4gyq0bbtjnP16gB/fo5wahzZ2d5HUePwtSpcPc7sGYNlC4N11/vVI9at8b7NFi3x833279nysopfL7mc5I3JRO+PpzgNcGkp6ZT5bwqPPDMA9xwww3UrFnTP4MXkcCXBKwn95K50wWiaLIvmVMgEhH5SwpKIhlSU2Hp0qyq0bJlzo514eHQsSPcdZcTjs47LyP3eDzOjUl3TYYvvoCUFLj0Upg0CQYMgIiIbP/+ukPriFkZw4erPmTvlr2ErQ0jaHUQHIOQciEMvXko0dHRXHrppdrSW0SynABOQsjREHiQrFC0g+yB6DzgUpxAlFkhUiASEfnHfBqUjDHdgddwztZ+x1r7XI7PhwExQAvgCDDAWrvDGFMH5+9kGzOaLrXW3urLvkrxYy1s2OCEovnzIS7OWSnnckGrVjBmDHTt6hSEsu22vX8/TJniLK/buhXKloURI5zqUbNm2b7G4aTDTFs9jZhVMSzftByzxlBmQxnYAe5gN916diM6Oporr7ySsDAdMy9SbKXibJ6wKeOx0ev9A06T0pSGl3ECUStgGFkVovooEImInGU+C0rGmCBgIhAF7AGWGWNmWWvXeTW7CThmrW1gjLkeGA8MyPjcVmttc1/1T4qngwed7bozq0Z79zrPN2gAQ4c6FaOOHZ3sk43bDd9+64Sjr792Pu7QAR5/3NmgoWTJP5umulOZvWk2U1ZO4Zv13+Be7yZiYwSutS48bg8NWzRk6N1DGThwIJUqVSqwsYuIn3mAfeQOQptwlsu5vdpWwglEPXGWzk2FE+kniFgTobUgIiIFxJffblsBW6y12wCMMdOBvjgrqDP1BR7PeP8zYILRmiM5yw4dgt27Yd++cCpXdp4rV865vygqynnUrXuai3fsgPfecx5790KlSnDPPU71yGtrbmsty/YtI2ZlDB+v/phjm49Rcl1JQlaH4E5wU7pqaW655xaGDh3KhRde6PMxi4gfHSN7CMoMRZtx7ivKVIqsLbevxwlGjXA2VMh5LNpc8MR7FJJERAqQsdb+fat/8g8b0x/obq29OePjIUBra+0orzZrMtrsyfh4K9AaCMdZgb0JZ3X2I9baRXl8jZHASIDKlSu3mD59uk/G8k8kJCQQHh7u724UWx4P/P57Wb75phqLF1ckPd1FyZJpDBq0m5Ytj9Gw4UmCgvK+1qSlUfHHH6n6zTeU+/VXAI5eein7e/bkSNu2WK91eAeTDxJ7MJb5f8xn175dBK0OImxNGEl/JBEaGkq7du3o1q0bLbyRDHQAAB/XSURBVFq0IOh0X7CY02sl8GhO/p4r1UWJvSUotacUpXaXouTukpTaU4qSe0oSGp91sJB1WU5VPcWpmqdIqpGU7W1KxRTI558Gm9/VHLfbzeo3VvtoRPJP6LUSmDQvgSfQ5qRjx46/Wmtb/l07X/5tKq9v/zlT2ena7AdqWWuPGGNaAF8aYy6w1p7I1tDaScAkgJYtW9rIyMh/3+uzJC4ujkDqT3Fx4AB88EHW7UPlysGoUbD4nQ2E2QTeeecvXhMbNsC77zr3Hx06BDVrwtixMGwYFWrXJnNj74TUBL5Y/wUxK2P4bsN3sN7Z0ttsMLitmxbtWxD9dDTXXnstETk2dJDc9FoJPJqTDB5gN7mXyW0EdpL9J1pVnGrQZRlvM6pDpq6hVGgpSlGKCmQ/HuCMlIX4+HjNS4DRayUwaV4CT2GdE18GpT2A997GNXBWZ+fVZo8xJhg4BzhqnTJXCoC19teMSlMjYLkP+yuFlMfj3G80eTJ89RWkp8MVV8ATTzi3D5UoAZHvJ5OensfFSUnw2WdOslq0CIKDoU8fZ2ld165klp081kPcjjhiVsYwY80MkjYnEb4+nJDVIaQlp1GhXgXufuxuhgwZQr169Qr2P4CI/DuHyXup3BYg2atdGbLC0I0Z72culdPfREREihxfBqVlQENjTF1gL84K7EE52szC2cj0J6A/8L211hpjKuEEJrcxph7Oj6FtPuyrFEL79sH77zsZZ8cOqFgR7rzTyTiNG//NxStWOMnqo4/g+HFo2BDGj3d2dKhS5c9mGw9vJGZlDFNXTWX3tt2ErgklZE0IHAZXhIvoG6KJjo7m8ssv15beIoEsCSf45KwObQKOerULwdlBrhHQnWzVISqT76VyZ10crIhbQSSRfuqAiEjx47OgZK1NN8aMAubhbA/+nrV2rTFmHLDcWjsLeBeYaozZgvOj6vqMyzsA44wx6Tj7AN1qrT2a+6tIceN2w7x5zlFF33zjfNypEzz3nHMI7F/tsF3KJsDbbzsB6ddfncb9+ztbe3fo8OehsEdPHeWTNZ8wZeUUft78M2atIWJDBGyFdFc6nbp2Ijo6mr59+1LSa7c7EfEzN87ZQnlVh3bnaFsDJ/xcR1YQagTUQRsmiIgI4OMfB9baOcCcHM+N9Xo/Gbg2j+s+Bz73Zd+kcNm929l47t13nffPPRfuu8+pHjVo8BcX7twJc+fyVOJ0WqT/DLcmw0UXweuvww03ODcxAWnuNOZumcuUlVP4ev3XpG1II2JjBEFrgnCnual5YU0eeeERBg8eTNWqVQtm0CKSmwUOkvd5Q1txziPKdA5OCIokKwhlLpUrXWA9FhGRQkp/N5OAlZ4Oc+Y4BaA5c5x7kbp2hVdegd69ITQ0j4tSUmDxYpg713msc3ajr2+qMTe4F1cv+T+49FIwBmstv+37lZiVMXy0+iOObD1CyXUlCV4dTNrxNMIqhTHstmFER0fTvHlzLa0TKUgJ5F4ilxmKvLf1CcUJPo2BPmRfKlcR/y2VExGRQk9BSQLOzp1O5ejdd537kKpUgQcfhJtugjz3Sdi1ywlFc+bAd99BYqKToq64wik59ejBwNanSHe7ubpVS/ad3MeHqz4kZmUMa7etJWhNEKXXlYbd4A5107t3b6Kjo+nevTshITrqXsRn0nAOWs2rOuS99Y8BauGEn6Fkrw7VwlncLSIicpYpKElASEtz7jmaNMm5Bwmge3eYOBGuvBKy5ZXTVI2oU8fZjKFHD+jYEbz2608PW8Sh2v+j24djiN0Yi11vKbuxLGadwe1xc37r84l+KJoBAwZQvnz5Ahu3SJGXeeBDziC0CWeLHu/dKCvgVIO6khWEzsPZXEG3A4qISAFTUBK/2rbN2bXu/fedM5CqV4dHH4Xhw6F2ba+Gp6sadejwZ9WI8877c0MGay3rDq5lzuY5zNkyhyUjf4B9HvZNDCd0dSgpiSmUqVmG2x68jaFDh3Leeef55z+ASFFxnNMvlUv0alcSZ6lcU5y9TjOXyTWEf3PMkIiIyNmmoCQFLjXVOe9o8mTn/COXy6kajRjh5J3g4IxG3y06o6pRYmoiC3csZPam2czZModdO3bBVjhn3zmwGkgDW9oy4JoBREdHExkZicvl8sd/ApHCKQWnCpRXdegPr3YunN3jGuHsYeq9VK5GxudFREQCnIKSFJjNm7OqR4cOQa1azqGww4dDjRo4VaN3M4LRd99BQkJW1eimm5xw1Ljxn1UjgC1HtzhVo81zWLh+IalbUwneHkzYrjA44LQpXa00Jcr3IyysHWvXXk+4V7gSkRw8EHYwDBaQuzq0w/n8nyrjhJ9eZF8qVw/4i636RURECgMFJfGplBSYOdO592jhQggKcnasGzkSukamEvTTYngtY0ldZtWodm0YMiTPqlFKego/7PyB2ZtnM3vDbLas2gJbocSuEqTtSnN+ySsdRmRkJFFRUURFRXH++efTsaMhPj5eIUkEnMNXt+Nsp70tx9tNcJm9LKttaZwAdClwA9m32C5bkJ0WEREpWApK4hMbNjhL66ZMgSNHnBVzTz8Nw6L2UPW32fD2XLguf1WjXcd3MXfzXGZvnk3sz7Ekb0zGtd2F2WkgGVwuF80ubUbUDU4watOmDaE59g6Pi4O4uBWgU+2lOMg8ayivILQNZ3MFb2VwNky4EEiEJJIoFVPKqQ5VRVtsi4hIsaSgJGfNqVPw+edO9WjRIudeo359PIxovYouBz/G9dFsGONVNbrhBujZM1fVKM2dxo+7f2TO5jnM+n0WG37ZAFshaEcQ7ni3c3m92nS7sRtRUVF07NiRchkHx4oUG6k4S+G8A5D3+94bKBigOk4Y6p7xtp7X2wpkC0O/xP1CZGSkb/svIiIS4BSU5F9bu9YJR1OnwrFjUL92GuOv+pXopDepPP8L+OLvq0YHEg7w7ZZv+Xrt13z7/bckbUhyftnLuM8o4pwIorpE/bmcrl6eByqJFDHHyF4N8n5/D9nvFyqJE3rqAZ3JHoTqACUKqtMiIiJFg4KS/CNJSTBjhhOQfvwRQoI9XF1/FSMjXidy5we4dtqsqlGPHtCpU7aqkdvjZtneZczeOJvPF37O+p/XO78A7gLSITg4mDaXtaH7qO5ERUXRokULgoJ0qqQUMek4gSev5XFbgfgc7SvjBJ8OZA9C9YEqaImciIjIWaSgJGdk5Urn3qMPp3o4fsJFo9J7eTF0IkNTJ1Np23GnajT6xTyrRkeSjjB/63xmLJ1BbGwsCesTnBvKM5YI1T+vPr1u70XXrl3p0KGDNl6QoiGB0wehHWQ/cDUEp/pTH2hN9iBUF9BLQkREpMAoKMnfSkiATz5KZ9Krifyy4RzCTAr97QxGMon2FXZhevaAHu/mqhpZa1mx/3dmrpzJjDkz/rzXiMPO58+pcA5RvaPo1b0XXbp0oXr16v4ZoMi/4cFZInq6jRMO5mhfDif4XAJcS/bKUA1AhVMREZGAoKAkp/XbnANMGn+Uj3+sw8n0UjRhD6+6nmBIu+2U79MOer6dq2p0IuUE8zbNI2ZuDHHfxZGwIeHPeymCw4Jp2aYlV/e6mm5du3HRRRdhjNYKSSGQjFP9zCsIbcv4fCYXUAsn+PQlexCqhxOUREREJOApKEmW1FROxi5l2msHmbTofH5NvoASnMOA0t8w4sodtB12HqbzuFxVo3UH1zI1biozZ89k87LN2G0WUgADdRrXofddvel3ZT/atm1LiRK6o1wCkMWpdJ5uidzeHO3DccLPeUBPsoeh2jhL6ERERKRQU1Aq7nbvxs6Zy/Jpm5m05AKmpfcnkXAuCt/GG/2+Y/D91SnXpn+2qlFSWhKzfp/F+zPf58f//ejca5Rx03nEuRG079eegX0H0i2qGxUrVvTTwERySMPZLOR0S+RO5mhfHSf4RJF744SKaOMEERGRIk5BqbhJTYUlS2DuXI5//QMfbbiESYxkJSMpFZzC9Z0PMPJhQ6uO9TAmawvudfvX8ebMN5nz7Ry2/7Ydu9cCEFwymGatmtG/V3+u63MdDRs21HI68Z/jnD4I7QLcXm3DyAo+V5A9CNXB2W5bREREii0FpeJg926YOxfmzsXGLmBp4oVMMrfyiRnHKUrQvPEp3hxtGTgojHPOqQ1AcloyUxdM5aMvP2LZomUkbUly/iLvgmqNq9H5ms4Mv2Y47dq2IzhY/xvJPxQJzeObw4p8tnfjLIM73RK5oznaV8IJPpcBN5C9MlQV534iERERkTzoN9yiyKtqxNy5sGYNxyjL1HKjmRw2gTWJ1QkvbRkyyDBiBLRoURJjYPnG5fz3tf8SuyCWvSv2Yk86VaNSVUrRvm97BvcbzMDeA4mIiPDzAKVIS8TZOOF022mnerUNxqn+1AMGkHvjhDIF1GcREREpchSUigqvqhELFkBCAjY4hMVNb2Nyi+nMWHM+ycdctGwJk56D6683eDjOpM8n8Z/nPmX1T6tJ2ZcCgKu0i/qX1KdHtx7cNuA2Gjdo7OfBSZGSDuzDCT0HoER8CRhKViA6kKP9OTjhpxlwFdmXyNVA38VERETEJ/QrRmGVR9UIgFq1OHLNSGKCbmTS4iZs+C2IMmVg2HAYPtzNkaQFTJ4xmTGv/cChDYecpUzBUK5ROTr37cywa4ZxVeRVBAXpMBf5h9JxtoTfAezMeOv92EO2Q1bDCIP/4QSfK8kehOoB5Quk1yIiIiLZKCgVJnv2OKFozhz47js4eRJCQqB9e+zzL/C/itcwKbYOn08zpKZCmzbw3PhtHE59lzkLvmRS5Ebcic7d7MHVgrmw94X069mP2665jarlq/p5cFJopJEVhLwfmaFoD9k3TTA4O8jVAS7PeJv5eBiOJx+n7Kqyvu61iIiIyBlRUApkp6sa1awJgwZBjx4cvKgzUz4PZ/Jk2LwZIiLi6dBxHglMZe2qH1j6QMaex2WgUrNKXNHpCm659hY6XdQJl9Gd7JKHVGA3uQNQ5mMv4PFq7yIrCHUgKwTVznhbEwg9zdd6iuz3HImIiIgECAWlQJNZNcq818irasQLL0CPHngaN2FhnGHSJPjiizTS0xdTpdpsylefydF9G1kwDwiBkPohtOjeguv6XMfwqOFULK0zjQTnMGDvIJT5yAxEe3EOYM3kwgk7dYCOZK8I1cG5T0gHrIqIiEgRo6Dkb2lpTtVozpzcVaOBA6FnT+jUCcqU4cABeP99y3+7b2TPnliCgudhWQgkcWA/UA2q9KhC16iu3NznZtrWaUuQS/caFTvJOGcG7SDvitB+sgehILKCUBdyV4Sq47sgFAcr4lYQSaSPvoCIiIjIP6Og5A/5qBrRpAkYg8cDM2Yc4qWXvmb58lisXYBzEwi4wyGkUQit2rVhcJ/B9G/RnyrhVfw7NvG9U2QPQpmPzEC0P0f7YKAWTujpRu6KUDX0nUBEREQkB/16VBAyq0aZGzHkrBr16AGdO0MZ59CX5ORkvvzkO96Y8C2//BJLetoqp31QSagTRLVW1ejVvReDOgyibc22hARp3VORkkRW6Mlr17g/crQPISsI9SR3RagaTtVIRERERPJNQckHIiMh9GAlIu+enLtq1K5dHlUjD6tWrWLevFhiPvqG9Wt/xnpSgBAocT5BjZvT+qpzGNzzOno17kWtc2r5e4jybySSdwDKfO5gjvahZIWe3uSuCFVBQUhERETkLFNQ8oEXl7ShZfrPMJLTVo327NlD7AcfMG/+POZ+O48T8fEZVzeB4KGENw2jz4iyRHdrT4faHSgRXMJv45EzdJLsQShnKDqco30YWUGoH7krQlVwNlQQERERkQKjoOQDy4Pb8LNpze2/j/yzanTy5Eni4uKIjY1l7ry5bNm0xWkcVA7cPYGulG1ciauGWu69sREXVG3o1zHIXzhB3hWhHRnPH8nRvgRZ4acFuStC56IgJCIiIhJgFJR8YHrrVzl27DAtTm4h9qmnmB87n59++gl3uhsT4sKG14OwRyGlPyUjatJ7wCHG3lWDC84r5e+uC8Bx8l4Sl/k4lqN9SbJCT2tyV4TOxTl0VUREREQKDQUlH9i4cTgHD33GZZedBAOuqkF4GtSHE8Ow+0Zj4kvSrnMCd98WTq9ehpCQcv7uctEXCc3jm8PvQDx/XRGKz3FtabLCz2XkrghVREFIREREpIhRUPKBY5W+x1P1JFSuRMmEO2HNKE7tO4dq1TzcPNbF8OFQu3YZf3ez6DmFszV2zscBYBWUOVUGyuIsnfMWTlboaU/uilAFFIREREREihkFpbPMWogo9xLHNzYj9fcGpLgsV15pGDkSund3Eaz/4mfG4iyFyysAeQeh/RntcgoGKgPp4An1EBQdlLsiVA4FIRERERHJRr+2n2XGQMqKa7CnPIwbB8OGGWrU8HevApAbOET2oHO6EJScx/WlgKoZjwuBKK+PvR8VcDZKiITE+ETKvl7WZ0MSERERkaJDQckHmjSBpKQTPPpoMfylPIXcwSevIHQQJyzlVI6skNMOZ2vsvAJQGc6sChQHK+JWEEnkmY5IRERERIohBSUfCAuDU6f83Yuz7CR/v/RtP3A0j2tdODu/ZYaci73er5LjfR0XJSIiIiIBQEGpOPPgnPnzV0vfMoNQYh7Xh5IVchoBV5C96pMZgs4Fgnw4DhERERGRs0xBqShKA/7gr5e+7c9ok5bH9RFkBZ1LyXvpW1WcHeS0CYKIiIiIFEEKSoVJEn+/9G0/cBhnt7icKpEVci4g7/t/quCcGyQiIiIiUowpKPmbxTngND/bX+c8/wecGcwMPHVwDkTN6/6fykCI74YhIiIiIlKUKCj5QFwcxH23AvZH5m/765Q8/hHv7a+bAt3I+/6fzO2vRURERETkrFFQ8oWOcMUPVzibJeRUnqyg057T3/8Tju7/ERERERHxEwUlX+gNO2vupE6bOrmrQGF+7ZmIiIiIiOSDgpIv3AM74nZQJ7KOv3siIiIiIiL/gO5uERERERERycGnQckY090Ys9EYs8UY82Aenw8zxnyS8fmfjTF1vD73UMbzG40x3XzZTxEREREREW8+C0rGmCBgItADaAIMNMY0ydHsJuCYtbYB8AowPuPaJsD1OKf9dAf+m/HviYiIiIiI+JwvK0qtgC3W2m3W2lRgOtA3R5u+wJSM9z8DOhtjTMbz0621Kdba7cCWjH9PRERERETE53wZlKoDu70+3pPxXJ5trLXpwHGck4Hyc62IiIiIiIhP+HLXu7xOAbL5bJOfazHGjARGAlSuXJm4uLgz7KLvJCQkBFR/RHMSqDQvgUdzEpg0L4FHcxKYNC+Bp7DOiS+D0h6gptfHNYB9p2mzxxgTDJwDHM3ntVhrJwGTAFq2bGkjIyPPVt//tbi4OAKpP6I5CVSal8CjOQlMmpfAozkJTJqXwFNY58SXS++WAQ2NMXWNMaE4mzPMytFmFhCd8X5/4Htrrc14/vqMXfHqAg2BX3zYVxERERERkT/5rKJkrU03xowC5gFBwHvW2rXGmHHAcmvtLOBdYKoxZgtOJen6jGvXGmM+BdYB6cDt1lq3r/oqIiIiIiLizZdL77DWzgHm5HhurNf7ycC1p7n2aeBpX/ZPREREREQkLz49cFZERERERKQwUlASERERERHJQUFJREREREQkBwUlERERERGRHBSUREREREREclBQEhERERERyUFBSUREREREJAcFJRERERERkRyMtdbffTgrjDGHgJ3+7oeXisBhf3dCstGcBCbNS+DRnAQmzUvg0ZwEJs1L4Am0Oaltra30d42KTFAKNMaY5dbalv7uh2TRnAQmzUvg0ZwEJs1L4NGcBCbNS+AprHOipXciIiIiIiI5KCiJiIiIiIjkoKDkO5P83QHJRXMSmDQvgUdzEpg0L4FHcxKYNC+Bp1DOie5REhERERERyUEVJRERERERkRwUlP4lY0x3Y8xGY8wWY8yDeXy+gzHmN2NMujGmvz/6WNzkY07uMcasM8asMsZ8Z4yp7Y9+Fjf5mJdbjTGrjTErjDGLjTFN/NHP4uTv5sSrXX9jjDXGFLodiwqbfLxObjTGHMp4nawwxtzsj34WN/l5rRhjrsv42bLWGPNxQfexuMnHa+UVr9fJJmNMvD/6WdzkY15qGWMWGmN+z/g9rKc/+plfWnr3LxhjgoBNQBSwB1gGDLTWrvNqUweIAO4DZllrPyv4nhYf+ZyTjsDP1tokY8x/gEhr7QC/dLiYyOe8RFhrT2S83we4zVrb3R/9LQ7yMycZ7coAs4FQYJS1dnlB97W4yOfr5EagpbV2lF86WQzlc14aAp8Cnay1x4wx51prD/qlw8VAfr9/ebW/A7jYWju84HpZ/OTztTIJ+N1a+2bGH0TnWGvr+KO/+aGK0r/TCthird1mrU0FpgN9vRtYa3dYa1cBHn90sBjKz5wstNYmZXy4FKhRwH0sjvIzLye8PiwN6K84vvW3c5LhSeB5ILkgO1dM5XdOpGDlZ15GABOttccAFJJ87kxfKwOBaQXSs+ItP/NicQoIAOcA+wqwf2dMQenfqQ7s9vp4T8Zz4j9nOic3AXN92iOBfM6LMeZ2Y8xWnF/MRxdQ34qrv50TY8zFQE1r7TcF2bFiLL/fv67JWLLymTGmZsF0rVjLz7w0AhoZY5YYY5YaY1QN9618/6zPWF5fF/i+APpV3OVnXh4HbjDG7AHmAHcUTNf+GQWlf8fk8Zz+Cu5f+Z4TY8wNQEvgBZ/2SCCf82KtnWitrQ88ADzi814Vb385J8YYF/AKcG+B9Ujy8zr5GqhjrW0KLACm+LxXkp95CQYaApE41Yt3jDFlfdyv4uxMfv+6HvjMWuv2YX/EkZ95GQh8YK2tAfQEpmb8vAlIAduxQmIP4P3XvBoEeAmxGMjXnBhjugBjgD7W2pQC6ltxdqavlelAP5/2SP5uTsoAFwJxxpgdQBtgljZ08Km/fZ1Ya494fc+aDLQooL4VZ/n5/rUH+Mpam2at3Q5sxAlO4htn8jPlerTsrqDkZ15uwrmfD2vtT0AJoGKB9O4fUFD6d5YBDY0xdY0xoTgvxll+7lNx97dzkrGc6G2ckKR15AUjP/Pi/UvFlcDmAuxfcfSXc2KtPW6trWitrZNxo+1SnNeMNnPwnfy8Tqp6fdgHWF+A/Suu8vOz/kugI4AxpiLOUrxtBdrL4iVfv38ZY84DygE/FXD/iqv8zMsuoDOAMeZ8nKB0qEB7eQYUlP4Fa206MAqYh/PD6lNr7VpjzLiMXbswxlyasQ7zWuBtY8xa//W46MvPnOAstQsHZmRsG6pw62P5nJdRGdvqrgDuAaL91N1iIZ9zIgUon3MyOuN1shLnPr4b/dPb4iOf8zIPOGKMWQcsBP7PWnvEPz0u+s7g+9dAYLrVFs8FIp/zci8wIuN72DTgxkCeH20PLvL/7d1ZqJVVGIfx529RIdpgg9lgRrNUhDSZDRYiBAVNBAZhlERE2GwXFWhEeSEVdNFw0UQjDYIFlRUWZRaZpTbRTdFwlRRlNlzE28VehzZfHjscy1P0/G722u+3pu+ci82719rrkyRJkjpcUZIkSZKkDhMlSZIkSeowUZIkSZKkDhMlSZIkSeowUZIkSZKkDhMlSdJmSXJmkkpy8BYc84oko7fUeMORZHqS40Z6HpKk4TFRkiRtrlnAG/QeLrilXAGMeKKUZOtNXJ4OmChJ0n+UiZIkadiSjAGmARfRSZSSzEuyNsnqJAtbbP8kL7fYqiT7tfi1Sd5JsibJghablOSTJA+2+FNJRieZC+wBLEuyrNW9K8nK9jDWBX1z+DzJgjbW2oFVryRjktzfYmuSnN3iM5OsaPWfbPfXvedXk9yS5DXg8iSnJ3k7yXvt3sYnmQRcAlzZHmx9QpJdkzzd7vOdJNP+3v+GJOnvtKlvwiRJ+itnAC9U1adJvk0ypapWJTm1XTumqn5KMq7VfwRYWFWLk2wHjEoyEzgAOBoIsCTJicAXwEHARVW1PMl9wKVVtSjJVcDJVbWu9Xt9VX2bZCvglSSHV9Wadm1dVU1JcilwDTAHuBH4vqoOA0iyU5JdgBuAGVW1Icl1wFXATRu57x2r6qSBtsCxVVVJ5gDzqurqJHcDP1bVolbvUeD2qnojyUR6T68/ZDP//pKkf4iJkiRpc8wC7mjlx9v7VcAM4P6q+gmgJTFjgT2ranGL/QK9VRxgJvBe62cMvcTpC+DLqlre4g8Dc4FFG5nHuUkupve5NgGYDAwkSs+013eBs1p5Bn0rYFX1XZLTWrvlSQC2AVYMct9P9JX3Ap5IMqG1+WyQNjOAya1vgO2TjK2q9YPUlySNIBMlSdKwJNkZOAU4NEkBWwGVZB69laHqNhmsK+DWqrqn0/+kjfTRfU+SfemtFB3VEp4HgO36qvzaXn/jj8+9web3UlXNGmSe/Tb0le8EbquqJUmmA/MHaTMKmFpVPw+hf0nSCPM3SpKk4ToHeKiq9qmqSVW1N73VlOOBpcCFAyfTJRlXVT8AXyU5o8W2bddfbHXHtPieSXZrY0xMMrWVBw6NAFgPjG3l7eklLt8nGQ+cOoS5LwUuG3jTts+9BUxLsn+LjU5y4BD62gH4upVn98X757ixMY8YQt+SpBFioiRJGq5ZwOJO7GngvKp6AVgCrEzyPr0VH4DzgblJ1gBvArtX1VLgUWBFkrXAU/yRYHwMzG71xwF3tfi9wPNJllXVanrb9j4E7gMGtuptys3ATkk+SLKa3u+dvgEuAB5r470FDOXI8/nAk0leB9b1xZ8Fzhw4zIHetsEj2+ERH9E77EGS9C+Vqj/tYpAkacS1rXfPVdWhIzwVSdL/kCtKkiRJktThipIkSZIkdbiiJEmSJEkdJkqSJEmS1GGiJEmSJEkdJkqSJEmS1GGiJEmSJEkdJkqSJEmS1PE7QaZDpZv3DdQAAAAASUVORK5CYII=\n", - "text/plain": [ - "<Figure size 1008x576 with 1 Axes>" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[[0.01526 0.00628 0.01889946 0.01396761 0.01605884]\n", - " [0.04178 0.01518 0.04507529 0.05034328 0.04077152]\n", - " [0.07558 0.02656 0.08102275 0.075079 0.07462003]\n", - " [0.11526 0.0389 0.12120447 0.12251311 0.11627801]\n", - " [0.1648 0.05258 0.1714974 0.16779408 0.16470203]\n", - " [0.21774 0.06782 0.20684378 0.23026316 0.21417139]\n", - " [0.27726 0.08108 0.27048099 0.29930628 0.27578153]\n", - " [0.3431 0.08988 0.35903947 0.35946718 0.34240791]]\n", - "\n", - "Mean absolute errors:\n", - "0.10906249999999998\n", - "0.007329259700714057\n", - "0.008942559709348354\n", - "0.0012028047169419824\n" - ] - } - ], - "source": [ - "f_rates = np.zeros((8, 5))\n", - "f_sems = np.zeros((8, 5))\n", - "\n", - "nIter = 2\n", - "\n", - "#npr.seed(0)\n", - "\n", - "for r in np.arange(1, 9):\n", - "\n", - " print(\"[\", r, \"]\", sep='', end=\" \")\n", - "\n", - " s_f_rate_true = np.zeros(nIter)\n", - " s_f_rate_labeled = np.zeros(nIter)\n", - " s_f_rate_human = np.zeros(nIter)\n", - " s_f_rate_cont = np.zeros(nIter)\n", - " s_f_rate_caus = np.zeros(nIter)\n", - "\n", - " for i in range(nIter):\n", - "\n", - " print(i, end=\" \")\n", - "\n", - " s_train_labeled, s_train, s_test_labeled, s_test, s_df = dataWithoutUnobservables()\n", - "\n", - " s_logreg, predictions = fitLogisticRegression(\n", - " s_train_labeled.dropna().X,\n", - " s_train_labeled.dropna().result_Y, s_test.X, 0)\n", - " s_test = s_test.assign(B_prob_0_logreg=predictions)\n", - "\n", - " s_logreg, predictions_labeled = fitLogisticRegression(\n", - " s_train_labeled.dropna().X,\n", - " s_train_labeled.dropna().result_Y, s_test_labeled.X, 0)\n", - " s_test_labeled = s_test_labeled.assign(\n", - " B_prob_0_logreg=predictions_labeled)\n", - "\n", - " #### True evaluation\n", - " # Sort by actual failure probabilities, subjects with the smallest risk are first.\n", - " s_sorted = s_test.sort_values(by='B_prob_0_logreg',\n", - " inplace=False,\n", - " ascending=True)\n", - "\n", - " to_release = int(round(s_sorted.shape[0] * r / 10))\n", - "\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", - " s_f_rate_true[i] = np.sum(\n", - " s_sorted.result_Y[0:to_release] == 0) / s_sorted.shape[0]\n", - "\n", - " #### Labeled outcomes\n", - " # Sort by estimated failure probabilities, subjects with the smallest risk are first.\n", - " s_sorted = s_test_labeled.sort_values(by='B_prob_0_logreg',\n", - " inplace=False,\n", - " ascending=True)\n", - "\n", - " to_release = int(round(s_test_labeled.dropna().shape[0] * r / 10))\n", - "\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", - " s_f_rate_labeled[i] = np.sum(\n", - " s_sorted.result_Y[0:to_release] == 0) / s_sorted.shape[0]\n", - "\n", - " #### Human error rate\n", - " # Get judges with correct leniency as list\n", - " correct_leniency_list = s_test_labeled.judgeID_J[\n", - " s_test_labeled['acceptanceRate_R'].round(1) == r / 10].values\n", - "\n", - " # Released are the people they judged and released, T = 1\n", - " released = s_test_labeled[\n", - " s_test_labeled.judgeID_J.isin(correct_leniency_list)\n", - " & (s_test_labeled.decision_T == 1)]\n", - "\n", - " # Get their failure rate, aka ratio of reoffenders to number of people judged in total\n", - " s_f_rate_human[i] = np.sum(\n", - " released.result_Y == 0) / correct_leniency_list.shape[0]\n", - "\n", - " #### Contraction\n", - " s_f_rate_cont[i] = contraction(s_test_labeled, 'judgeID_J',\n", - " 'decision_T', 'result_Y',\n", - " 'B_prob_0_logreg', 'acceptanceRate_R',\n", - " r / 10)\n", - " #### Causal model\n", - "\n", - " #released = bailIndicator(r * 10, s_logreg, s_train.X, s_test.X)\n", - "\n", - " released = cdf(s_test.X, s_logreg, 0) < r/10\n", - "\n", - " s_f_rate_caus[i] = np.mean(s_test.B_prob_0_logreg * released)\n", - "\n", - " ########################\n", - " #percentiles = estimatePercentiles(s_train_labeled.X, s_logreg)\n", - "\n", - " #def releaseProbability(x):\n", - " # return calcReleaseProbabilities(r * 10,\n", - " # s_train_labeled.X,\n", - " # x,\n", - " # s_logreg,\n", - " # percentileMatrix=percentiles)\n", - "\n", - " #def integrand(x):\n", - " # p_y0 = s_logreg.predict_proba(x.reshape(-1, 1))[:, 0]\n", - "\n", - " # p_t1 = releaseProbability(x)\n", - "\n", - " # p_x = scs.norm.pdf(x)\n", - "\n", - " # return p_y0 * p_t1 * p_x\n", - "\n", - " #s_f_rate_caus[i] = si.quad(lambda x: integrand(np.ones((1, 1)) * x),\n", - " # -10, 10)[0]\n", - "\n", - " f_rates[r - 1, 0] = np.mean(s_f_rate_true)\n", - " f_rates[r - 1, 1] = np.mean(s_f_rate_labeled)\n", - " f_rates[r - 1, 2] = np.mean(s_f_rate_human)\n", - " f_rates[r - 1, 3] = np.mean(s_f_rate_cont)\n", - " f_rates[r - 1, 4] = np.mean(s_f_rate_caus)\n", - "\n", - " f_sems[r - 1, 0] = scs.sem(s_f_rate_true)\n", - " f_sems[r - 1, 1] = scs.sem(s_f_rate_labeled)\n", - " f_sems[r - 1, 2] = scs.sem(s_f_rate_human)\n", - " f_sems[r - 1, 3] = scs.sem(s_f_rate_cont)\n", - " f_sems[r - 1, 4] = scs.sem(s_f_rate_caus)\n", - "\n", - "x_ax = np.arange(0.1, 0.9, 0.1)\n", - "\n", - "plt.figure(figsize=(14, 8))\n", - "plt.errorbar(x_ax,\n", - " f_rates[:, 0],\n", - " label='True Evaluation',\n", - " c='green',\n", - " yerr=f_sems[:, 0])\n", - "plt.errorbar(x_ax,\n", - " f_rates[:, 1],\n", - " label='Labeled outcomes',\n", - " c='magenta',\n", - " yerr=f_sems[:, 1])\n", - "plt.errorbar(x_ax,\n", - " f_rates[:, 2],\n", - " label='Human evaluation',\n", - " c='red',\n", - " yerr=f_sems[:, 2])\n", - "plt.errorbar(x_ax,\n", - " f_rates[:, 3],\n", - " label='Contraction, log.',\n", - " c='blue',\n", - " yerr=f_sems[:, 3])\n", - "plt.errorbar(x_ax,\n", - " f_rates[:, 4],\n", - " label='Causal model, ep',\n", - " c='black',\n", - " yerr=f_sems[:, 4])\n", - "\n", - "plt.title('Failure rate vs. Acceptance rate without unobservables')\n", - "plt.xlabel('Acceptance rate')\n", - "plt.ylabel('Failure rate')\n", - "plt.legend()\n", - "plt.grid()\n", - "plt.show()\n", - "\n", - "print(f_rates)\n", - "print(\"\\nMean absolute errors:\")\n", - "for i in range(1, f_rates.shape[1]):\n", - " print(np.mean(np.abs(f_rates[:, 0] - f_rates[:, i])))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### With unobservables in the data\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." - ] - }, - { - "cell_type": "code", - "execution_count": 74, - "metadata": { - "scrolled": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[1] 0 1 [2] 0 1 [3] 0 1 [4] 0 1 [5] 0 1 [6] 0 1 [7] 0 1 [8] 0 1 " - ] - }, - { - "data": { - "image/png": "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Fi+vK4tZGzZsyMKFC68ojys1ZcoUqlevzi233ALA1KlTc7U+IiIiIiKXSz1KuWDPnj1UqVKFAQMGUL16dfbt23dBT87cuXPp27cvANHR0Tz44IMEBgZSs2ZNNm7cmOVynn32WT766KOU1y+++CLvvvsu//zzD40aNaJ69er4+/uzdOnSi65dtWoV7dq1S3k9YMAAPvvsMwBefvllgoKCUt6DtZZ58+YRGRlJly5dUnrM6tevnxIofvbZZ/j5+VGlShWGDx8O/K8Ha9iwYVStWpU6depw+PDhbNxJERERERH3uGF6lAZ9PYjIQ5GXTJecJivzlAJuCWB88/GXVZ8dO3YwdepUPvjgAxISEjJM99RTT/H8889Tu3ZtoqKiaNWqFT///PNF6cLCwggICEh5vXDhQrp27cqwYcPo378/AF988QVhYWEUKFCARYsW4evry+HDh6lXrx6tWrXKct2ffvppRo4cibWWbt268fXXX9OlSxcmTpzIe++9d0E9wFl98MUXX2TLli0ULVqUJk2asHTpUpo3b05MTAzBwcGMHj2aZ555hilTpjBs2LAs10VERERExB1umEDJ09x5550EBQVdMt2qVasumOdz4sQJzp49S4ECBS5Il97Qu/Lly7Nv3z6io6PZv38/t9xyC2XKlCE+Pp6hQ4eybt06vLy82LdvH0ePHs3y/KTvvvuOt956i7i4OI4ePUqNGjVo0aJFhul//PFHGjVqRMmSJQHo1q0ba9asoXnz5hQoUCDl2ho1arB27dos1UFERERExJ1umEApqz0/yT1J4b3D3VcZoFChQinPvby8sNamvE69rLW1lk2bNpEvX77LKqdDhw58+eWXREVF0bVrVwBmzJhBTEwMW7duJW/evJQrV+6ipbTz5s1LUlLSRXU6c+YMAwcOZOvWrZQtW5YXX3zxkstwp35vaaV+X3ny5Mm0d01EREREJKdojpIH8PLyonjx4vz2228kJSWxYMGClHNNmjRh0qRJKa+T5/xkVdeuXZk7dy5fffUVHTp0ACAmJobSpUuTN29evv32Ww4cOHDRdbfffju//PIL8fHxnDhxgu+//x6As2fP4uXlRcmSJYmNjeXLL79MucbX15fY2NiL8qpduzZhYWEcO3aMhIQE5s6dS3BwcLbeh4iIiIhITlKg5CHefPNNmjdvTuPGjSlXrlzK8UmTJrF+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3bthzhzo0sUtxXg0Db1LIyQkhJDkXWdFRERERHLDuXMwcCA89BD4+8O2bUwv9Tet5rTizuJ3unWPpB07oG5d+PNPWLHixgySQIGS2x06dIiuXbty5513UqlSJR544AF2797t9nLDw8Np1aqVW8uIioqiSpUqV5xGRERERFKJioL774dJk+DZZ7FhYby+dwa9F/Um+PZgt+6RtH491K8P58/DmjXOfkk3Kg29cyNrLe3bt6dXr17MnTsXgMjISKKjo6lYsWIu105EREREPM6yZfDww85Sc19+SWK7tjy54kkmb5lMd7/uTGk7hXx53LOawsKFTgfWv/4F33wD5cu7pZhrhnqU3CgsLAxvb28GDBiQciwgIID777+fU6dO0bhxY6pXr46fnx+LFi0CLu6BGTt2LKGhoQBMmDCBSpUq4e/vT9euXQHYtGkTdevWpVq1atStW5ddu3ZlWqdp06bRrl07WrduTYUKFXjvvfcYN24c1apVo3bt2hw/fhxwArratWvj7+9P+/btOXHiBAARERFUrVqVOnXqMGnSpJR8ExMTee655wgKCsLf358PP/wwW/fqs88+o2bNmgQEBPDYY4+RmJgIQOHChXn22WepXr06jRs35siRI9nKV0REROSakJAAw4dDq1Zw++0QEcHZ1i3o+EVHJm+ZzNB6Q5nRfobbgqQPP4QOHaBqVadX6UYPkuAG6lEaNGgQkZGRl0yXnCYr85QCAgIYP358hud//vlnatSoke65/Pnzs2DBAooUKcLRo0epXbs2bdq0ybS80aNHs3fvXnx8fDh58iQA9957L2vWrCFv3rysWrWK4cOH8+WXX2aaz88//8y2bduIi4vjrrvu4s0332Tbtm0MHjyYGTNmMGjQIHr27MnEiRMJDg5mxIgRjBw5kvHjx/PII4+kHH/uuedS8vz0008pWrQomzdv5ty5c9SrV4+mTZtijMm0LgA7d+5k3rx5rF+/Hm9vb5544glmzZpFz549OX36NNWrV+ftt99m1KhRjBw5kvfee++SeYqIiIhcMw4dgq5dYfVqZ+GGd9/lmD1D6xmN2bh/o1v3SLIWQkNh1Cho2RLmzYNChdxS1DXnhgmUPI21luHDh7NmzRq8vLw4cOAA0dHRmV7j7+9P9+7dadeuHe3atQMgJiaGXr168dtvv2GM4fz585csu2HDhvj6+uLr60vR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\n", - "text/plain": [ - "<Figure size 1008x576 with 1 Axes>" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[[0.0055 0.00276 0.01342565 0.00618992 0.00381115]\n", - " [0.02222 0.00974 0.02697824 0.02987324 0.01296137]\n", - " [0.04612 0.01816 0.05032907 0.02793117 0.02842223]\n", - " [0.08052 0.0301 0.08272431 0.0629776 0.0499887 ]\n", - " [0.12892 0.04876 0.12535567 0.11325511 0.08063283]\n", - " [0.18022 0.0635 0.18180218 0.15531875 0.11735564]\n", - " [0.24572 0.07712 0.25421899 0.22589487 0.16578486]\n", - " [0.31992 0.1095 0.31794241 0.30081773 0.23036298]]\n", - "\n", - "Mean absolute errors:\n", - "0.0836875\n", - "0.004340044672262239\n", - "0.015445989730460349\n", - "0.04247753106139743\n" - ] - } - ], - "source": [ - "failure_rates = np.zeros((8, 5))\n", - "failure_sems = np.zeros((8, 5))\n", - "\n", - "nIter = 2\n", - "\n", - "for r in np.arange(1, 9):\n", - "\n", - " print(\"[\", r, \"]\", sep='', end=\" \")\n", - "\n", - " f_rate_true = np.zeros(nIter)\n", - " f_rate_label = np.zeros(nIter)\n", - " f_rate_human = np.zeros(nIter)\n", - " f_rate_cont = np.zeros(nIter)\n", - " f_rate_caus = np.zeros(nIter)\n", - "\n", - " for i in range(nIter):\n", - "\n", - " print(i, end=\" \")\n", - "\n", - " # Create data\n", - " train_labeled, train, test_labeled, test, df = dataWithUnobservables()\n", - "\n", - " # Fit model and calculate predictions\n", - " logreg, predictions = fitLogisticRegression(\n", - " train_labeled.dropna().X,\n", - " train_labeled.dropna().result_Y, test.X, 0)\n", - "\n", - " # Attach the predictions to data\n", - " test = test.assign(B_prob_0_logreg=predictions)\n", - "\n", - " logreg, predictions_labeled = fitLogisticRegression(\n", - " train_labeled.dropna().X,\n", - " train_labeled.dropna().result_Y, test_labeled.X, 0)\n", - "\n", - " test_labeled = test_labeled.assign(B_prob_0_logreg=predictions_labeled)\n", - "\n", - "# # Regress T on X\n", - "# lr_t, __ = fitLogisticRegression(train_labeled.X,\n", - "# train_labeled.decision_T, np.ones(1),\n", - "# 1)\n", - "# # Calculate the residuals from previous regression\n", - "# residuals_T = train_labeled.decision_T - \\\n", - "# lr_t.predict(train_labeled.X.values.reshape(-1, 1))\n", - "# train_labeled = train_labeled.assign(residuals_T=residuals_T)\n", - "\n", - "# # Convert residuals from -1, 0 and 1 values to one-hot-encoded.\n", - "# # this way there will be separate betas for each type of residual.\n", - "# enc = OneHotEncoder(categories='auto', drop='first')\n", - "# resid_tf = train_labeled.residuals_T.values.reshape(-1, 1)\n", - "# tmp = enc.fit_transform(resid_tf).toarray()\n", - "# train_labeled = train_labeled.assign(residuals_1=tmp[:, 0],\n", - "# residuals_2=tmp[:, 1])\n", - "\n", - "# # Regress Y on X and residuals from step 2.\n", - "# lr_y, __ = fitLogisticRegression(\n", - "# train_labeled.dropna()[['X', 'residuals_1', 'residuals_2']],\n", - "# train_labeled.dropna().result_Y, np.ones((1, 3)), 0)\n", - "# # With the test data, predict Y by\n", - "# # repeating steps 1 and 2\n", - "# # (Regress T on X)\n", - "# lr_t, __ = fitLogisticRegression(test.X,\n", - "# test.decision_T, np.ones(1),\n", - "# 1)\n", - "\n", - "# # (Calculate the residuals from previous regression)\n", - "# residuals_T = test.decision_T - \\\n", - "# lr_t.predict(test.X.values.reshape(-1, 1))\n", - "# test = test.assign(residuals_T=residuals_T)\n", - "\n", - "# # (Convert residuals from -1, 0 and 1 values to one-hot-encoded.\n", - "# # this way there will be separate betas for each type of residual.)\n", - "# enc = OneHotEncoder(categories='auto', drop='first')\n", - "# resid_tf = test.residuals_T.values.reshape(-1, 1)\n", - "# tmp = enc.fit_transform(resid_tf).toarray()\n", - "# test = test.assign(residuals_1=tmp[:, 0], residuals_2=tmp[:, 1])\n", - "\n", - "# # by using the model from step 3 with X and the residuals from 4.a. as input\n", - "\n", - "# preds = getProbabilityForClass(\n", - "# test[['X', 'residuals_1', 'residuals_2']], lr_y, 0)\n", - "\n", - "# test = test.assign(preds=preds)\n", - "\n", - " # True evaluation\n", - " #\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", - "\n", - " to_release = int(round(test.shape[0] * r / 10))\n", - "\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", - " f_rate_true[i] = np.sum(\n", - " test.result_Y[0:to_release] == 0) / test.shape[0]\n", - "\n", - " # Labeled outcomes only\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", - "\n", - " f_rate_label[i] = np.sum(\n", - " test_labeled.result_Y[0:to_release] == 0) / test_labeled.shape[0]\n", - "\n", - " # Human evaluation\n", - " #\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[\n", - " 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", - " f_rate_human[i] = np.sum(\n", - " released.result_Y == 0) / correct_leniency_list.shape[0]\n", - "\n", - " # Contraction, logistic regression\n", - " #\n", - " f_rate_cont[i] = contraction(test_labeled, 'judgeID_J', 'decision_T',\n", - " 'result_Y', 'B_prob_0_logreg',\n", - " 'acceptanceRate_R', r / 10)\n", - "\n", - " # Causal model - empirical performance\n", - "\n", - "# released = bailIndicator(\n", - "# r * 10, lr_y, train_labeled[['X', 'residuals_1', 'residuals_2']],\n", - "# test[['X', 'residuals_1', 'residuals_2']])\n", - "\n", - " released = cdf(test.X, logreg, 0) < r / 10\n", - "\n", - " f_rate_caus[i] = np.mean(test.B_prob_0_logreg * released)\n", - "\n", - " #percentiles = estimatePercentiles(train_labeled.X, logreg, N_sample=train_labeled.shape[0])\n", - "\n", - " # def releaseProbability(x):\n", - " # return calcReleaseProbabilities(r*10, train_labeled.X, x, logreg, percentileMatrix=percentiles)\n", - "\n", - " # def integraali(x):\n", - " # p_y0 = logreg.predict_proba(x.reshape(-1, 1))[:, 0]\n", - "\n", - " # p_t1 = releaseProbability(x)\n", - "\n", - " # p_x = scs.norm.pdf(x)\n", - "\n", - " # return p_y0 * p_t1 * p_x\n", - "\n", - " #f_rate_caus[i] = si.quad(lambda x: integraali(np.ones((1, 1))*x), -10, 10)[0]\n", - "\n", - " failure_rates[r - 1, 0] = np.mean(f_rate_true)\n", - " failure_rates[r - 1, 1] = np.mean(f_rate_label)\n", - " failure_rates[r - 1, 2] = np.mean(f_rate_human)\n", - " failure_rates[r - 1, 3] = np.mean(f_rate_cont)\n", - " failure_rates[r - 1, 4] = np.mean(f_rate_caus)\n", - "\n", - " failure_sems[r - 1, 0] = scs.sem(f_rate_true)\n", - " failure_sems[r - 1, 1] = scs.sem(f_rate_label)\n", - " failure_sems[r - 1, 2] = scs.sem(f_rate_human)\n", - " failure_sems[r - 1, 3] = scs.sem(f_rate_cont)\n", - " failure_sems[r - 1, 4] = scs.sem(f_rate_caus)\n", - "\n", - "x_ax = np.arange(0.1, 0.9, 0.1)\n", - "\n", - "plt.figure(figsize=(14, 8))\n", - "plt.errorbar(x_ax,\n", - " failure_rates[:, 0],\n", - " label='True Evaluation',\n", - " c='green',\n", - " yerr=failure_sems[:, 0])\n", - "plt.errorbar(x_ax,\n", - " failure_rates[:, 1],\n", - " label='Labeled outcomes',\n", - " c='magenta',\n", - " yerr=failure_sems[:, 1])\n", - "plt.errorbar(x_ax,\n", - " failure_rates[:, 2],\n", - " label='Human evaluation',\n", - " c='red',\n", - " yerr=failure_sems[:, 2])\n", - "plt.errorbar(x_ax,\n", - " failure_rates[:, 3],\n", - " label='Contraction, log.',\n", - " c='blue',\n", - " yerr=failure_sems[:, 3])\n", - "plt.errorbar(x_ax,\n", - " failure_rates[:, 4],\n", - " label='Causal model, ep',\n", - " c='black',\n", - " yerr=failure_sems[:, 4])\n", - "\n", - "plt.title('Failure rate vs. Acceptance rate with unobservables')\n", - "plt.xlabel('Acceptance rate')\n", - "plt.ylabel('Failure rate')\n", - "plt.legend()\n", - "plt.grid()\n", - "plt.show()\n", - "\n", - "print(failure_rates)\n", - "print(\"\\nMean absolute errors:\")\n", - "for i in range(1, failure_rates.shape[1]):\n", - " print(np.mean(np.abs(failure_rates[:, 0] - failure_rates[:, i])))" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "scrolled": true - }, - "outputs": [], - "source": [ - "# import pystan\n", - "\n", - "# code = \"\"\"\n", - "# data {\n", - "# int<lower=0> N_obs;\n", - "# int<lower=0> N_mis;\n", - " \n", - "# int y_obs[N_obs];\n", - "# vector[N_obs] x_obs;\n", - "# int t_obs[N_obs];\n", - " \n", - "# vector[N_mis] x_mis;\n", - "# int t_mis[N_mis];\n", - " \n", - "# // int<lower = 1, upper = N_obs + N_mis> ii_obs[N_obs];\n", - "# // int<lower = 1, upper = N_obs + N_mis> ii_mis[N_mis];\n", - "# }\n", - "\n", - "# transformed data {\n", - "# int N = N_mis + N_obs;\n", - "# // vector[N] X;\n", - "# // X[ii_obs] = x_obs;\n", - "# // X[ii_mis] = x_mis;\n", - "# // real[N] T;\n", - "# // T[ii_obs] = t_obs;\n", - "# // T[ii_mis] = t_mis;\n", - "# }\n", - "\n", - "# parameters {\n", - "# real a_;\n", - "# real b_;\n", - "# real c_;\n", - "# real d_;\n", - "# real e_;\n", - "# real f_;\n", - "# vector[N_obs] z_obs;\n", - "# vector[N_mis] z_mis;\n", - "# }\n", - "\n", - "# // transformed parameters {\n", - "# // vector[N] Z;\n", - "# // Z[ii_obs] = z_obs;\n", - "# // Z[ii_mis] = z_mis;\n", - "# // }\n", - "\n", - "# model {\n", - "# z_obs ~ normal(0, 1);\n", - "# z_mis ~ normal(0, 1);\n", - "# //Z ~ normal(0, 1);\n", - "# y_obs ~ bernoulli_logit(d_ * x_obs + e_ * z_obs + f_);\n", - "# t_obs ~ bernoulli_logit(a_ * x_obs + b_ * z_obs + c_);\n", - "# t_mis ~ bernoulli_logit(a_ * x_mis + b_ * z_mis + c_);\n", - "# //t_obs ~ bernoulli_logit(d_ * X + e_ * Z + f_);\n", - "# }\n", - "# \"\"\"\n", - "\n", - "# dat = dict(N_obs = int(train_labeled.dropna().shape[0]/5), \n", - "# N_mis = int(train_labeled[train_labeled.decision_T==0].shape[0]/5),\n", - "# y_obs = train_labeled.dropna().result_Y[::5].astype(int),\n", - "# x_obs = train_labeled.dropna().X[::5],\n", - "# t_obs = train_labeled.dropna().decision_T[::5],\n", - "# x_mis = train_labeled.X[train_labeled.decision_T==0][::5],\n", - "# t_mis = train_labeled.decision_T[train_labeled.decision_T==0][::5])\n", - "\n", - "# sm = pystan.StanModel(model_code=code)\n", - "# fit = sm.sampling(data=dat, iter=8000, chains=4)\n", - "\n", - "import pystan\n", - "\n", - "code = \"\"\"\n", - "data {\n", - " int<lower=0> N_obs; \n", - " int y_obs[N_obs];\n", - " vector[N_obs] x_obs;\n", - "}\n", - "\n", - "parameters {\n", - " real d_;\n", - " real e_;\n", - " vector[N_obs] Z;\n", - "}\n", - "\n", - "model {\n", - " Z ~ normal(0, 1);\n", - " y_obs ~ bernoulli_logit(d_ * x_obs + e_ * Z);\n", - "}\n", - "\"\"\"\n", - "\n", - "# dat = dict(N_obs = int(train_labeled.dropna().shape[0]/18), \n", - "# y_obs = train_labeled.dropna().result_Y[::18].astype(int),\n", - "# x_obs = train_labeled.dropna().X[::18])\n", - "\n", - "# sm = pystan.StanModel(model_code=code)\n", - "# fit = sm.sampling(data=dat, iter=10000, chains=4, control=dict(max_treedepth=17))" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.7.3" - }, - "toc": { - "base_numbering": 1, - "nav_menu": {}, - "number_sections": true, - "sideBar": true, - "skip_h1_title": true, - "title_cell": "Table of Contents", - "title_sidebar": "Contents", - "toc_cell": true, - "toc_position": { - "height": "calc(100% - 180px)", - "left": "10px", - "top": "150px", - "width": "300.7px" - }, - "toc_section_display": true, - "toc_window_display": true - }, - "varInspector": { - "cols": { - "lenName": 16, - "lenType": 16, - "lenVar": 40 - }, - "kernels_config": { - "python": { - "delete_cmd_postfix": "", - "delete_cmd_prefix": "del ", - "library": "var_list.py", - "varRefreshCmd": "print(var_dic_list())" - }, - "r": { - "delete_cmd_postfix": ") ", - "delete_cmd_prefix": "rm(", - "library": "var_list.r", - "varRefreshCmd": "cat(var_dic_list()) " - } - }, - "position": { - "height": "352.85px", - "left": "1070px", - "right": "20px", - "top": "120px", - "width": "350px" - }, - "types_to_exclude": [ - "module", - "function", - "builtin_function_or_method", - "instance", - "_Feature" - ], - "window_display": false - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/analysis_and_scripts/Analysis_07MAY2019_old.ipynb b/analysis_and_scripts/Analysis_07MAY2019_old.ipynb new file mode 100644 index 0000000..afd68c0 --- /dev/null +++ b/analysis_and_scripts/Analysis_07MAY2019_old.ipynb @@ -0,0 +1,1237 @@ +{ + "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=\"#Data-sets\" data-toc-modified-id=\"Data-sets-1\"><span class=\"toc-item-num\">1 </span>Data sets</a></span><ul class=\"toc-item\"><li><span><a href=\"#Data-without-unobservables\" data-toc-modified-id=\"Data-without-unobservables-1.1\"><span class=\"toc-item-num\">1.1 </span>Data without unobservables</a></span></li><li><span><a href=\"#Synthetic-data-with-unobservables\" data-toc-modified-id=\"Synthetic-data-with-unobservables-1.2\"><span class=\"toc-item-num\">1.2 </span>Synthetic data with unobservables</a></span></li></ul></li><li><span><a href=\"#Algorithms\" data-toc-modified-id=\"Algorithms-2\"><span class=\"toc-item-num\">2 </span>Algorithms</a></span><ul class=\"toc-item\"><li><span><a href=\"#Contraction-algorithm\" data-toc-modified-id=\"Contraction-algorithm-2.1\"><span class=\"toc-item-num\">2.1 </span>Contraction algorithm</a></span></li><li><span><a href=\"#Causal-approach---metrics\" data-toc-modified-id=\"Causal-approach---metrics-2.2\"><span class=\"toc-item-num\">2.2 </span>Causal approach - metrics</a></span></li></ul></li><li><span><a href=\"#Performance-comparison\" data-toc-modified-id=\"Performance-comparison-3\"><span class=\"toc-item-num\">3 </span>Performance comparison</a></span><ul class=\"toc-item\"><li><span><a href=\"#Without-unobservables-in-the-data\" data-toc-modified-id=\"Without-unobservables-in-the-data-3.1\"><span class=\"toc-item-num\">3.1 </span>Without unobservables in the data</a></span></li><li><span><a href=\"#With-unobservables-in-the-data\" data-toc-modified-id=\"With-unobservables-in-the-data-3.2\"><span class=\"toc-item-num\">3.2 </span>With unobservables in the data</a></span></li></ul></li></ul></div>" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<!-- ## Causal model\n", + "\n", + "Our model is defined by the probabilistic expression \n", + "\n", + "\\begin{equation} \\label{model_disc}\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", + "\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.) -->\n", + "\n", + "Imports and settings." + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "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", + "from sklearn.model_selection import train_test_split\n", + "\n", + "# Settings\n", + "\n", + "%matplotlib inline\n", + "\n", + "plt.rcParams.update({'font.size': 16})\n", + "plt.rcParams.update({'figure.figsize': (10, 6)})\n", + "\n", + "# Suppress deprecation warnings.\n", + "\n", + "import warnings\n", + "\n", + "\n", + "def fxn():\n", + " warnings.warn(\"deprecated\", DeprecationWarning)\n", + "\n", + "\n", + "with warnings.catch_warnings():\n", + " warnings.simplefilter(\"ignore\")\n", + " fxn()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Data sets\n", + "\n", + "### 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", + "* $\\beta_X$ = `beta_X`, coefficient for $X$\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=0)$\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}(\\frac{1}{1+exp\\{-X\\}})$" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [], + "source": [ + "def dataWithoutUnobservables(nJudges_M=100,\n", + " nSubjects_N=500,\n", + " sigma=0.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(range(0, nJudges_M), 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(0, 1).\n", + " df = df.assign(X=npr.normal(size=nJudges_M * nSubjects_N))\n", + "\n", + " # Calculate P(Y=0|X=x) = 1 / (1 + exp(-X)) = sigmoid(X)\n", + " df = df.assign(probabilities_Y=sigmoid(df.X))\n", + "\n", + " # Draw Y ~ Bernoulli(1 - sigmoid(X))\n", + " # Note: P(Y=1|X=x) = 1 - P(Y=0|X=x) = 1 - sigmoid(X)\n", + " results = npr.binomial(n=1, p=1 - df.probabilities_Y,\n", + " size=nJudges_M * nSubjects_N)\n", + "\n", + " df = df.assign(result_Y=results)\n", + "\n", + " # Assign the prediction probabilities and add some Gaussian noise\n", + " # if sigma is set to != 0.\n", + " df = df.assign(probabilities_T=df.probabilities_Y)\n", + "\n", + " df.probabilities_T += npr.normal(size=nJudges_M * nSubjects_N) * sigma\n", + "\n", + " # Sort by judges then probabilities in decreasing order\n", + " # I.e. the most dangerous for each judge are first.\n", + " df.sort_values(by=[\"judgeID_J\", \"probabilities_T\"],\n", + " ascending=False,\n", + " inplace=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", + " # Halve the data set to test and train\n", + " train, test = train_test_split(df, test_size=0.5)\n", + "\n", + " train_labeled = train.copy()\n", + " test_labeled = test.copy()\n", + "\n", + " # Set results as NA if decision is negative.\n", + " train_labeled.loc[train_labeled.decision_T == 0, 'result_Y'] = np.nan\n", + " test_labeled.loc[test_labeled.decision_T == 0, 'result_Y'] = np.nan\n", + "\n", + " return train_labeled, train, test_labeled, test, df" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 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." + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [], + "source": [ + "def sigmoid(x):\n", + " '''Return value of sigmoid function (inverse of logit) at x.'''\n", + "\n", + " return 1 / (1 + np.exp(-1*x))\n", + "\n", + "\n", + "def dataWithUnobservables(nJudges_M=100,\n", + " nSubjects_N=500,\n", + " beta_X=1.0,\n", + " beta_Z=1.0,\n", + " beta_W=0.2):\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(range(0, nJudges_M), 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", + " df = df.assign(Z=npr.normal(size=nJudges_M * nSubjects_N))\n", + " df = df.assign(W=npr.normal(size=nJudges_M * nSubjects_N))\n", + "\n", + " # Calculate P(Y=0|X, Z, W)\n", + " probabilities_Y = sigmoid(beta_X * df.X + beta_Z * df.Z + beta_W * df.W)\n", + "\n", + " df = df.assign(probabilities_Y=probabilities_Y)\n", + "\n", + " # Result is 0 if P(Y = 0| X = x; Z = z; W = w) >= 0.5 , 1 otherwise\n", + " df = df.assign(result_Y=np.where(df.probabilities_Y >= 0.5, 0, 1))\n", + "\n", + " # For the conditional probabilities of T we add noise ~ N(0, 0.1)\n", + " probabilities_T = sigmoid(beta_X * df.X + beta_Z * df.Z)\n", + " probabilities_T += np.sqrt(0.1) * npr.normal(size=nJudges_M * nSubjects_N)\n", + "\n", + " df = df.assign(probabilities_T=probabilities_T)\n", + "\n", + " # Sort by judges then probabilities in decreasing order\n", + " # Most dangerous for each judge are at the top.\n", + " df.sort_values(by=[\"judgeID_J\", \"probabilities_T\"],\n", + " ascending=False,\n", + " inplace=True)\n", + "\n", + " # Iterate over the data. Subject will be given a negative decision\n", + " # if they are in the top (1-r)*100% of the individuals the judge will judge.\n", + " # I.e. if their within-judge-index is under 1 - acceptance threshold times\n", + " # the number of subjects assigned to each judge they will receive a\n", + " # negative decision.\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", + " # Halve the data set to test and train\n", + " train, test = train_test_split(df, test_size=0.5)\n", + "\n", + " train_labeled = train.copy()\n", + " test_labeled = test.copy()\n", + "\n", + " # Set results as NA if decision is negative.\n", + " train_labeled.loc[train_labeled.decision_T == 0, 'result_Y'] = np.nan\n", + " test_labeled.loc[test_labeled.decision_T == 0, 'result_Y'] = np.nan\n", + "\n", + " return train_labeled, train, test_labeled, test, df" + ] + }, + { + "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": 14, + "metadata": {}, + "outputs": [], + "source": [ + "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", + " Arguments:\n", + " -----------\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", + " --------\n", + " (1) The estimated failure rate at acceptance rate r.\n", + " '''\n", + " # Get ID of the most lenient judge.\n", + " most_lenient_ID_q = df[judgeIDJ_col].loc[df[accRateR_col].idxmax()]\n", + "\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", + "\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", + "\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": [ + "### Causal approach - metrics\n", + "\n", + "Generalized performance:\n", + "\n", + "$$\n", + "\\mathbf{gp} = \\sum_{x\\in\\mathcal{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}_{test}} f(x) ~ \\delta(F(x) < r)\n", + "$$\n", + "\n", + "where\n", + "\n", + "$$\n", + "f(x) = P(Y=0|T=1, X=x)\n", + "$$\n", + "\n", + "is a predictive model trained on the labeled data 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", + "\n", + "NB: in code the direction of inequality was changed. CDF changed to `bailIndicator` algorithm.\n", + "\n", + "**Rationale for `bailIndicator`:**\n", + "\n", + "* Bail decision is based on prediction $P(Y=0|T=1, X=x)$.\n", + " * Uniform over all judges\n", + "* Judges rationing: \"If this defendant is in the top 10% of 'dangerousness rank' and my $r = 0.85$, I will jail him.\"\n", + "* Overall: this kind of defendant $(X=x)$ is usually in the $z^{th}$ percentile in dangerousness (sd $\\pm~u$ percentiles). Now, what is the probability that this defendant has $z \\leq 1-r$?\n", + "\n", + "\n", + "<!--- **Proposal**\n", + "\n", + "1. Train model for $P(Y=0|T=1, X=x)$\n", + "* Estimate quantile function for $P(T=1|R=r, X=x)$\n", + "* Calculate $P(Y=0|do(r'), do(x'))=P(Y=0|T=1, X=x') \\cdot P(T=1|R=r', X=x')$ for all instances of the training data\n", + "* Order in ascending order based on the probabilities obtained from previous step\n", + "* Calculate $$\\dfrac{\\sum_{i=0}^{r\\cdot |\\mathcal{D}_{all}|}}{|\\mathcal{D}_{all}|}$$--->" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [], + "source": [ + "def getProbabilityForClass(x, model, class_value):\n", + " '''\n", + " Function (wrapper) for obtaining the probability of a class given x and a \n", + " predictive model.\n", + "\n", + " Arguments:\n", + " -----------\n", + " x -- individual features, an array of shape (observations, features)\n", + " model -- a trained sklearn model. Predicts probabilities for given x. \n", + " Should accept input of shape (observations, features)\n", + " class_value -- the resulting class to predict (usually 0 or 1).\n", + "\n", + " Returns:\n", + " --------\n", + " (1) 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", + "\n", + "def cdf(x_0, model, class_value):\n", + " '''\n", + " Cumulative distribution function as described above. Integral is \n", + " approximated using Simpson's rule for efficiency.\n", + " \n", + " Arguments:\n", + " ----------\n", + " \n", + " x_0 -- private features of an instance for which the value of cdf is to be\n", + " calculated.\n", + " model -- a trained sklearn model. Predicts probabilities for given x. \n", + " Should accept input of shape (observations, features)\n", + " class_value -- the resulting class to predict (usually 0 or 1).\n", + "\n", + " '''\n", + " def prediction(x): return getProbabilityForClass(\n", + " np.array([x]).reshape(-1, 1), model, class_value)\n", + "\n", + " prediction_x_0 = prediction(x_0)\n", + "\n", + " x_values = np.linspace(-15, 15, 40000)\n", + "\n", + " x_preds = prediction(x_values)\n", + "\n", + " y_values = scs.norm.pdf(x_values)\n", + "\n", + " results = np.zeros(x_0.shape[0])\n", + "\n", + " for i in range(x_0.shape[0]):\n", + "\n", + " y_copy = y_values.copy()\n", + "\n", + " y_copy[x_preds > prediction_x_0[i]] = 0\n", + "\n", + " results[i] = si.simps(y_copy, x=x_values)\n", + "\n", + " return results\n", + "\n", + "\n", + "def bailIndicator(r, y_model, x_train, x_test):\n", + " '''\n", + " Indicator function for whether a judge will bail or jail a suspect.\n", + " Rationale explained above.\n", + "\n", + " Algorithm:\n", + " ----------\n", + "\n", + " (1) Calculate recidivism probabilities from training set with a trained \n", + " model and assign them to predictions_train.\n", + "\n", + " (2) Calculate recidivism probabilities from test set with the trained \n", + " model and assign them to predictions_test.\n", + "\n", + " (3) Construct a quantile function of the probabilities in\n", + " in predictions_train.\n", + "\n", + " (4)\n", + " For pred in predictions_test:\n", + "\n", + " if pred belongs to a percentile (computed from step (3)) lower than r\n", + " return True\n", + " else\n", + " return False\n", + "\n", + " Arguments:\n", + " ----------\n", + "\n", + " r -- float, acceptance rate, between 0 and 1\n", + " y_model -- a trained sklearn predictive model to predict the outcome\n", + " x_train -- private features of the training instances\n", + " x_test -- private features of the test instances\n", + "\n", + " Returns:\n", + " --------\n", + " (1) Boolean list indicating a bail decision (bail = True) for each \n", + " instance in x_test.\n", + " '''\n", + "\n", + " predictions_train = getProbabilityForClass(x_train, y_model, 0)\n", + "\n", + " predictions_test = getProbabilityForClass(x_test, y_model, 0)\n", + "\n", + " return [\n", + " scs.percentileofscore(predictions_train, pred, kind='weak') < r\n", + " for pred in predictions_test\n", + " ]\n", + "\n", + "\n", + "def estimatePercentiles(x_train, y_model, N_bootstraps=2000, N_sample=100):\n", + " '''\n", + " Estimate percentiles based on bootstrapped samples of original data.\n", + " Bootstrapping is done N_bootstraps times and size of the sample is\n", + " N_sample.\n", + "\n", + "\n", + " '''\n", + "\n", + " res = np.zeros((N_bootstraps, 101))\n", + "\n", + " percs = np.arange(101)\n", + "\n", + " for i in range(N_bootstraps):\n", + "\n", + " sample = npr.choice(x_train, size=N_sample)\n", + "\n", + " predictions_sample = getProbabilityForClass(sample, y_model, 0)\n", + "\n", + " res[i, :] = np.percentile(predictions_sample, percs)\n", + "\n", + " return res\n", + "\n", + "\n", + "def calcReleaseProbabilities(r,\n", + " x_train,\n", + " x_test,\n", + " y_model,\n", + " N_bootstraps=2000,\n", + " N_sample=100,\n", + " percentileMatrix=None):\n", + " '''\n", + " Similar to bailIndicator, but calculates probabilities for bail decisions\n", + " by bootstrapping the data set.\n", + "\n", + " Returns:\n", + " --------\n", + " (1) Probabilities for positive bail decisions.\n", + " '''\n", + "\n", + " if percentileMatrix is None:\n", + " percentileMatrix = estimatePercentiles(x_train, y_model, N_bootstraps,\n", + " N_sample)\n", + "\n", + " probs = np.zeros(len(x_test))\n", + "\n", + " for i in range(len(x_test)):\n", + "\n", + " if np.isnan(x_test[i]):\n", + "\n", + " probs[i] = np.nan\n", + "\n", + " else:\n", + "\n", + " pred = getProbabilityForClass(x_test[i], y_model, 0)\n", + "\n", + " probs[i] = np.mean(pred < percentileMatrix[:, r])\n", + "\n", + " return probs" + ] + }, + { + "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." + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [], + "source": [ + "def fitPredictiveModel(x_train, y_train, x_test, class_value, model_type=None):\n", + " '''\n", + " Fit a predictive model (default logistic regression) with given training \n", + " instances and return probabilities for test instances to obtain a given \n", + " class label.\n", + " \n", + " Arguments:\n", + " ----------\n", + " \n", + " x_train -- x values of training instances\n", + " y_train -- y values of training instances\n", + " x_test -- x values of test instances\n", + " class_value -- class label for which the probabilities are counted for.\n", + " model_type -- type of model to be fitted.\n", + " \n", + " Returns:\n", + " --------\n", + " (1) Trained predictive model\n", + " (2) Probabilities for given test inputs for given class.\n", + " '''\n", + "\n", + " if model_type is None or model_type in [\"logistic_regression\", \"lr\"]:\n", + " # Instantiate the model (using the default parameters)\n", + " logreg = LogisticRegression(solver='lbfgs')\n", + "\n", + " # Check shape and fit the model.\n", + " if x_train.ndim == 1:\n", + " logreg = logreg.fit(x_train.values.reshape(-1, 1), y_train)\n", + " else:\n", + " logreg = logreg.fit(x_train, y_train)\n", + "\n", + " label_probs_logreg = getProbabilityForClass(x_test, logreg, class_value)\n", + "\n", + " return logreg, label_probs_logreg\n", + " \n", + " elif model_type in [\"random_forest\", \"rf\"]:\n", + " # Instantiate the model \n", + " forest = RandomForestClassifier(n_estimators=100, max_depth=3)\n", + "\n", + " # Check shape and fit the model.\n", + " if x_train.ndim == 1:\n", + " forest = forest.fit(x_train.values.reshape(-1, 1), y_train)\n", + " else:\n", + " forest = forest.fit(x_train, y_train)\n", + "\n", + " label_probs_forest = getProbabilityForClass(x_test, forest, class_value)\n", + "\n", + " return forest, label_probs_forest\n", + " \n", + " elif model_type == \"fully_random\":\n", + " \n", + " label_probs = np.ones_like(x_test) / 2\n", + " \n", + " model_object = lambda x: 0.5\n", + " \n", + " return model_object, label_probs\n", + " else:\n", + " raise ValueError(\"Invalid model_type!\", model_type) " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Without unobservables in the data\n", + "\n", + "The underlying figure is attached to the preliminary paper. When conducting finalization, last analysis should be conducted with a preset random seed." + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": { + "scrolled": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[1] 0 1 2 3 4 5 6 7 [2] 0 1 2 3 4 5 6 7 [3] 0 1 2 3 4 5 6 7 [4] 0 1 2 3 4 5 6 7 [5] 0 1 2 3 4 5 6 7 [6] 0 1 2 3 4 5 6 7 [7] 0 1 2 3 4 5 6 7 [8] 0 1 2 3 4 5 6 7 " + ] + }, + { + "data": { + "image/png": "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ZcFNWsrWaDQajRMuX4YuXeDHH6F7dz59yp/327ZB/acoVqkXBdw/TtQWZyXa6dOkCts5YxY8PDxwd3cnNjbWTn7x4kW73wULFgRg7NixNHCykilnzpzpoqObmxudO3dmxowZTJo0iTlz5pA/f36eeeYZa5rw8HCio6NZsmSJXe9fdHS0sywT6el4rgkJCVy5csVOtmDBAlq2bGk3ZH03C1YsDUdkZCRly5a1ymNiYoiKirLaV6PRaDSZwL590KYNnDrF7clf8PTJ5fwUMh0PLw/mrZjHh++159ChBP74Ax57LKuVNdCzuTV3jbu7OyXi90fpAAAgAElEQVRKlGDfvn128vDwcLvfVatWpXjx4hw8eJCAgIBEW3rGo3vxxRe5fPkyy5cvZ/78+XTs2NEutMyNGzcAyJHjznvPvn372LlzZ4p5+/v7c+jQIeLj462ydevWcevWLbt0N27cSDT/cObMmYny8/LyIiYmJsVy69atS44cORKthp43bx5KKRo2bJhiHhqNRqNJBxYtgtq14fp1Ti+bw0NLRvDT6J8oXq44+3b9xS+r2nPoEOTMmUCRIlmt7B10T58mXXj++ecZN24co0ePJiAggPXr11tXo1pwd3fniy++oEOHDty4cYN27dpRsGBBIiMj2bJlCxUqVOB//0t5squzOX0eHh7UqFHD+rtq1apUq1aNd955h8jISLp27WqX/qmnnmLgwIGEhITQt29fzpw5w9ChQylVqpRL5/rtt9/SvXt3unTpwpEjR5g0aVKilczNmzfn888/59NPP+WJJ55gzZo1LFu2LFF+jz76KN9++y0zZszgsccew8fHh8qVE3+4xs/PjzfeeIMJEyaQM2dO6tWrZ12927hxY5o2bZqi7hqNRqO5C+LjYdAgGD0a6tZl0YDOdH69C3En4ni669NMGLKUzp092bEDSpaEAgWi8fPLl9VaW9FOnyZdGDp0KNeuXWP8+PHcuHGDZ599llmzZlkXUlho27Yt69ev5+OPP+bVV18lJiaGYsWKUadOnUQLFJwRHx9PnTp1EskLFizIhQsX7GRdu3alX79+PPzwwwQGBtrte/zxx5k9ezbDhw/n2WefpXz58owfP55FixaxN4XvJLZo0YJJkyYxYcIEFixYQEBAAPPnz0+0wGXEiBFER0fz2WefcevWLRo3bkx4eDgVK1a0S9e7d292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\n", + "text/plain": [ + "<Figure size 720x432 with 1 Axes>" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[[0.015455 0.005975 0.02128927 0.01824005 0.01504878]\n", + " [0.041615 0.01541 0.04449708 0.04952796 0.04207918]\n", + " [0.075705 0.02737 0.07408005 0.07451198 0.07586959]\n", + " [0.114615 0.03845 0.11454849 0.1089716 0.11612646]\n", + " [0.161915 0.055585 0.16090506 0.170813 0.16261346]\n", + " [0.214345 0.067335 0.21142173 0.21125308 0.21550736]\n", + " [0.275515 0.079615 0.27699615 0.271816 0.27544641]\n", + " [0.340255 0.091685 0.34350266 0.33641304 0.33994187]]\n", + "\n", + "Mean absolute errors:\n", + "0.10724937500000001\n", + "0.00238372897518402\n", + "0.004633164376337144\n", + "0.0005986237333166415\n" + ] + } + ], + "source": [ + "f_rates = np.zeros((8, 5))\n", + "f_sems = np.zeros((8, 5))\n", + "\n", + "nIter = 8\n", + "\n", + "#npr.seed(0)\n", + "\n", + "for r in np.arange(1, 9):\n", + "\n", + " print(\"[\", r, \"]\", sep='', end=\" \")\n", + "\n", + " s_f_rate_true = np.zeros(nIter)\n", + " s_f_rate_labeled = np.zeros(nIter)\n", + " s_f_rate_human = np.zeros(nIter)\n", + " s_f_rate_cont = np.zeros(nIter)\n", + " s_f_rate_caus = np.zeros(nIter)\n", + "\n", + " for i in range(nIter):\n", + "\n", + " print(i, end=\" \")\n", + "\n", + " s_train_labeled, s_train, s_test_labeled, s_test, s_df = dataWithoutUnobservables()\n", + "\n", + " s_logreg, predictions = fitPredictiveModel(\n", + " s_train_labeled.dropna().X,\n", + " s_train_labeled.dropna().result_Y, s_test.X, 0)\n", + " s_test = s_test.assign(B_prob_0_model=predictions)\n", + "\n", + " s_logreg, predictions_labeled = fitPredictiveModel(\n", + " s_train_labeled.dropna().X,\n", + " s_train_labeled.dropna().result_Y, s_test_labeled.X, 0)\n", + " s_test_labeled = s_test_labeled.assign(\n", + " B_prob_0_model=predictions_labeled)\n", + "\n", + " #### True evaluation\n", + " # Sort by actual failure probabilities, subjects with the smallest risk are first.\n", + " s_sorted = s_test.sort_values(by='B_prob_0_model',\n", + " inplace=False,\n", + " ascending=True)\n", + "\n", + " to_release = int(round(s_sorted.shape[0] * r / 10))\n", + "\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", + " s_f_rate_true[i] = np.sum(\n", + " s_sorted.result_Y[0:to_release] == 0) / s_sorted.shape[0]\n", + "\n", + " #### Labeled outcomes\n", + " # Sort by estimated failure probabilities, subjects with the smallest risk are first.\n", + " s_sorted = s_test_labeled.sort_values(by='B_prob_0_model',\n", + " inplace=False,\n", + " ascending=True)\n", + "\n", + " to_release = int(round(s_test_labeled.dropna().shape[0] * r / 10))\n", + "\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", + " s_f_rate_labeled[i] = np.sum(\n", + " s_sorted.result_Y[0:to_release] == 0) / s_sorted.shape[0]\n", + "\n", + " #### Human error rate\n", + " # Get judges with correct leniency as list\n", + " correct_leniency_list = s_test_labeled.judgeID_J[\n", + " s_test_labeled['acceptanceRate_R'].round(1) == r / 10].values\n", + "\n", + " # Released are the people they judged and released, T = 1\n", + " released = s_test_labeled[\n", + " s_test_labeled.judgeID_J.isin(correct_leniency_list)\n", + " & (s_test_labeled.decision_T == 1)]\n", + "\n", + " # Get their failure rate, aka ratio of reoffenders to number of people judged in total\n", + " s_f_rate_human[i] = np.sum(\n", + " released.result_Y == 0) / correct_leniency_list.shape[0]\n", + "\n", + " #### Contraction\n", + " s_f_rate_cont[i] = contraction(s_test_labeled, 'judgeID_J',\n", + " 'decision_T', 'result_Y',\n", + " 'B_prob_0_model', 'acceptanceRate_R',\n", + " r / 10)\n", + " #### Causal model\n", + "\n", + " #released = bailIndicator(r * 10, s_logreg, s_train.X, s_test.X)\n", + "\n", + " released = cdf(s_test.X, s_logreg, 0) < r / 10\n", + "\n", + " s_f_rate_caus[i] = np.mean(s_test.B_prob_0_model * released)\n", + "\n", + " ########################\n", + " #percentiles = estimatePercentiles(s_train_labeled.X, s_logreg)\n", + "\n", + " #def releaseProbability(x):\n", + " # return calcReleaseProbabilities(r * 10,\n", + " # s_train_labeled.X,\n", + " # x,\n", + " # s_logreg,\n", + " # percentileMatrix=percentiles)\n", + "\n", + " #def integrand(x):\n", + " # p_y0 = s_logreg.predict_proba(x.reshape(-1, 1))[:, 0]\n", + "\n", + " # p_t1 = releaseProbability(x)\n", + "\n", + " # p_x = scs.norm.pdf(x)\n", + "\n", + " # return p_y0 * p_t1 * p_x\n", + "\n", + " #s_f_rate_caus[i] = si.quad(lambda x: integrand(np.ones((1, 1)) * x),\n", + " # -10, 10)[0]\n", + "\n", + " f_rates[r - 1, 0] = np.mean(s_f_rate_true)\n", + " f_rates[r - 1, 1] = np.mean(s_f_rate_labeled)\n", + " f_rates[r - 1, 2] = np.mean(s_f_rate_human)\n", + " f_rates[r - 1, 3] = np.mean(s_f_rate_cont)\n", + " f_rates[r - 1, 4] = np.mean(s_f_rate_caus)\n", + "\n", + " f_sems[r - 1, 0] = scs.sem(s_f_rate_true)\n", + " f_sems[r - 1, 1] = scs.sem(s_f_rate_labeled)\n", + " f_sems[r - 1, 2] = scs.sem(s_f_rate_human)\n", + " f_sems[r - 1, 3] = scs.sem(s_f_rate_cont)\n", + " f_sems[r - 1, 4] = scs.sem(s_f_rate_caus)\n", + "\n", + "x_ax = np.arange(0.1, 0.9, 0.1)\n", + "\n", + "plt.errorbar(x_ax,\n", + " f_rates[:, 0],\n", + " label='True Evaluation',\n", + " c='green',\n", + " yerr=f_sems[:, 0])\n", + "plt.errorbar(x_ax,\n", + " f_rates[:, 1],\n", + " label='Labeled outcomes',\n", + " c='magenta',\n", + " yerr=f_sems[:, 1])\n", + "plt.errorbar(x_ax,\n", + " f_rates[:, 2],\n", + " label='Human evaluation',\n", + " c='red',\n", + " yerr=f_sems[:, 2])\n", + "plt.errorbar(x_ax,\n", + " f_rates[:, 3],\n", + " label='Contraction, log.',\n", + " c='blue',\n", + " yerr=f_sems[:, 3])\n", + "plt.errorbar(x_ax,\n", + " f_rates[:, 4],\n", + " label='Causal model, ep',\n", + " c='black',\n", + " yerr=f_sems[:, 4])\n", + "\n", + "plt.title('Failure rate vs. Acceptance rate without unobservables')\n", + "plt.xlabel('Acceptance rate')\n", + "plt.ylabel('Failure rate')\n", + "plt.legend()\n", + "plt.grid()\n", + "plt.show()\n", + "\n", + "print(f_rates)\n", + "print(\"\\nMean absolute errors:\")\n", + "for i in range(1, f_rates.shape[1]):\n", + " print(np.mean(np.abs(f_rates[:, 0] - f_rates[:, i])))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### With unobservables in the data\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." + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": { + "scrolled": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[1] 0 1 2 3 4 5 6 7 [2] 0 1 2 3 4 5 6 7 [3] 0 1 2 3 4 5 6 7 [4] 0 1 2 3 4 5 6 7 [5] 0 1 2 3 4 5 6 7 [6] 0 1 2 3 4 5 6 7 [7] 0 1 2 3 4 5 6 7 [8] 0 1 2 3 4 5 6 7 " + ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "<Figure size 720x432 with 1 Axes>" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[[0.00543 0.002235 0.01173347 0.00462072 0.00371409]\n", + " [0.02073 0.00829 0.02260202 0.02491425 0.01286922]\n", + " [0.046295 0.01716 0.05069571 0.04167522 0.02791597]\n", + " [0.081615 0.030765 0.0848586 0.0723175 0.05149991]\n", + " [0.12755 0.048135 0.12889808 0.12994054 0.08148183]\n", + " [0.18077 0.06486 0.18545546 0.16258617 0.11982914]\n", + " [0.24507 0.083195 0.25131055 0.23464198 0.16797487]\n", + " [0.319775 0.11032 0.32569484 0.30929089 0.23272432]]\n", + "\n", + "Mean absolute errors:\n", + "0.082784375\n", + "0.0042517158692163435\n", + "0.007549662902501246\n", + "0.0411532050110707\n" + ] + } + ], + "source": [ + "failure_rates = np.zeros((8, 5))\n", + "failure_sems = np.zeros((8, 5))\n", + "\n", + "nIter = 8\n", + "\n", + "for r in np.arange(1, 9):\n", + "\n", + " print(\"[\", r, \"]\", sep='', end=\" \")\n", + "\n", + " f_rate_true = np.zeros(nIter)\n", + " f_rate_label = np.zeros(nIter)\n", + " f_rate_human = np.zeros(nIter)\n", + " f_rate_cont = np.zeros(nIter)\n", + " f_rate_caus = np.zeros(nIter)\n", + "\n", + " for i in range(nIter):\n", + "\n", + " print(i, end=\" \")\n", + "\n", + " # Create data\n", + " train_labeled, train, test_labeled, test, df = dataWithUnobservables()\n", + "\n", + " # Fit model and calculate predictions\n", + " logreg, predictions = fitPredictiveModel(\n", + " train_labeled.dropna().X,\n", + " train_labeled.dropna().result_Y, test.X, 0)\n", + "\n", + " # Attach the predictions to data\n", + " test = test.assign(B_prob_0_model=predictions)\n", + "\n", + " logreg, predictions_labeled = fitPredictiveModel(\n", + " train_labeled.dropna().X,\n", + " train_labeled.dropna().result_Y, test_labeled.X, 0)\n", + "\n", + " test_labeled = test_labeled.assign(B_prob_0_model=predictions_labeled)\n", + "\n", + "# # Regress T on X\n", + "# lr_t, __ = fitPredictiveModel(train_labeled.X,\n", + "# train_labeled.decision_T, np.ones(1),\n", + "# 1)\n", + "# # Calculate the residuals from previous regression\n", + "# residuals_T = train_labeled.decision_T - \\\n", + "# lr_t.predict(train_labeled.X.values.reshape(-1, 1))\n", + "# train_labeled = train_labeled.assign(residuals_T=residuals_T)\n", + "\n", + "# # Convert residuals from -1, 0 and 1 values to one-hot-encoded.\n", + "# # this way there will be separate betas for each type of residual.\n", + "# enc = OneHotEncoder(categories='auto')\n", + "# resid_tf = train_labeled.residuals_T.values.reshape(-1, 1)\n", + "# tmp = enc.fit_transform(resid_tf).toarray()\n", + "# train_labeled = train_labeled.assign(residuals_1=tmp[:, 0],\n", + "# residuals_2=tmp[:, 1])\n", + "\n", + "# # Regress Y on X and residuals from step 2.\n", + "# lr_y, __ = fitPredictiveModel(\n", + "# train_labeled.dropna()[['X', 'residuals_1', 'residuals_2']],\n", + "# train_labeled.dropna().result_Y, np.ones((1, 3)), 0)\n", + "# # With the test data, predict Y by\n", + "# # repeating steps 1 and 2\n", + "# # (Regress T on X)\n", + "# lr_t, __ = fitPredictiveModel(test.X,\n", + "# test.decision_T, np.ones(1),\n", + "# 1)\n", + "\n", + "# # (Calculate the residuals from previous regression)\n", + "# residuals_T = test.decision_T - \\\n", + "# lr_t.predict(test.X.values.reshape(-1, 1))\n", + "# test = test.assign(residuals_T=residuals_T)\n", + "\n", + "# # (Convert residuals from -1, 0 and 1 values to one-hot-encoded.\n", + "# # this way there will be separate betas for each type of residual.)\n", + "# enc = OneHotEncoder(categories='auto')\n", + "# resid_tf = test.residuals_T.values.reshape(-1, 1)\n", + "# tmp = enc.fit_transform(resid_tf).toarray()\n", + "# test = test.assign(residuals_1=tmp[:, 0], residuals_2=tmp[:, 1])\n", + "\n", + "# # by using the model from step 3 with X and the residuals from 4.a. as input\n", + "\n", + "# preds = getProbabilityForClass(\n", + "# test[['X', 'residuals_1', 'residuals_2']], lr_y, 0)\n", + "\n", + "# test = test.assign(preds=preds)\n", + "\n", + " # True evaluation\n", + " #\n", + " # Sort by failure probabilities, subjects with the smallest risk are first.\n", + " test.sort_values(by='B_prob_0_model', inplace=True, ascending=True)\n", + "\n", + " to_release = int(round(test.shape[0] * r / 10))\n", + "\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", + " f_rate_true[i] = np.sum(\n", + " test.result_Y[0:to_release] == 0) / test.shape[0]\n", + "\n", + " # Labeled outcomes only\n", + " #\n", + " # Sort by failure probabilities, subjects with the smallest risk are first.\n", + " test_labeled.sort_values(by='B_prob_0_model',\n", + " inplace=True,\n", + " ascending=True)\n", + "\n", + " to_release = int(round(test_labeled.shape[0] * r / 10))\n", + "\n", + " f_rate_label[i] = np.sum(\n", + " test_labeled.result_Y[0:to_release] == 0) / test_labeled.shape[0]\n", + "\n", + " # Human evaluation\n", + " #\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[\n", + " 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", + " f_rate_human[i] = np.sum(\n", + " released.result_Y == 0) / correct_leniency_list.shape[0]\n", + "\n", + " # Contraction, logistic regression\n", + " #\n", + " f_rate_cont[i] = contraction(test_labeled, 'judgeID_J', 'decision_T',\n", + " 'result_Y', 'B_prob_0_model',\n", + " 'acceptanceRate_R', r / 10)\n", + "\n", + " # Causal model - empirical performance\n", + "\n", + "# released = bailIndicator(\n", + "# r * 10, lr_y, train_labeled[['X', 'residuals_1', 'residuals_2']],\n", + "# test[['X', 'residuals_1', 'residuals_2']])\n", + " \n", + " released = bailIndicator(r * 10, logreg, train_labeled.X, test.X)\n", + " \n", + " #released = cdf(test.X, logreg, 0) < r / 10\n", + "\n", + "# released = npr.choice([True, False], size = test.X.shape, p=[r/10, 1-r/10])\n", + " f_rate_caus[i] = np.mean(test.B_prob_0_model * released)\n", + "\n", + " #percentiles = estimatePercentiles(train_labeled.X, logreg, N_sample=train_labeled.shape[0])\n", + "\n", + " # def releaseProbability(x):\n", + " # return calcReleaseProbabilities(r*10, train_labeled.X, x, logreg, percentileMatrix=percentiles)\n", + "\n", + " # def integraali(x):\n", + " # p_y0 = logreg.predict_proba(x.reshape(-1, 1))[:, 0]\n", + "\n", + " # p_t1 = releaseProbability(x)\n", + "\n", + " # p_x = scs.norm.pdf(x)\n", + "\n", + " # return p_y0 * p_t1 * p_x\n", + "\n", + " #f_rate_caus[i] = si.quad(lambda x: integraali(np.ones((1, 1))*x), -10, 10)[0]\n", + "\n", + " failure_rates[r - 1, 0] = np.mean(f_rate_true)\n", + " failure_rates[r - 1, 1] = np.mean(f_rate_label)\n", + " failure_rates[r - 1, 2] = np.mean(f_rate_human)\n", + " failure_rates[r - 1, 3] = np.mean(f_rate_cont)\n", + " failure_rates[r - 1, 4] = np.mean(f_rate_caus)\n", + "\n", + " failure_sems[r - 1, 0] = scs.sem(f_rate_true)\n", + " failure_sems[r - 1, 1] = scs.sem(f_rate_label)\n", + " failure_sems[r - 1, 2] = scs.sem(f_rate_human)\n", + " failure_sems[r - 1, 3] = scs.sem(f_rate_cont)\n", + " failure_sems[r - 1, 4] = scs.sem(f_rate_caus)\n", + "\n", + "x_ax = np.arange(0.1, 0.9, 0.1)\n", + "\n", + "plt.errorbar(x_ax,\n", + " failure_rates[:, 0],\n", + " label='True Evaluation',\n", + " c='green',\n", + " yerr=failure_sems[:, 0])\n", + "plt.errorbar(x_ax,\n", + " failure_rates[:, 1],\n", + " label='Labeled outcomes',\n", + " c='magenta',\n", + " yerr=failure_sems[:, 1])\n", + "plt.errorbar(x_ax,\n", + " failure_rates[:, 2],\n", + " label='Human evaluation',\n", + " c='red',\n", + " yerr=failure_sems[:, 2])\n", + "plt.errorbar(x_ax,\n", + " failure_rates[:, 3],\n", + " label='Contraction, log.',\n", + " c='blue',\n", + " yerr=failure_sems[:, 3])\n", + "plt.errorbar(x_ax,\n", + " failure_rates[:, 4],\n", + " label='Causal model, ep',\n", + " c='black',\n", + " yerr=failure_sems[:, 4])\n", + "\n", + "plt.title('Failure rate vs. Acceptance rate with unobservables')\n", + "plt.xlabel('Acceptance rate')\n", + "plt.ylabel('Failure rate')\n", + "plt.legend()\n", + "plt.grid()\n", + "plt.show()\n", + "\n", + "print(failure_rates)\n", + "print(\"\\nMean absolute errors:\")\n", + "for i in range(1, failure_rates.shape[1]):\n", + " print(np.mean(np.abs(failure_rates[:, 0] - failure_rates[:, i])))" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.3" + }, + "toc": { + "base_numbering": 1, + "nav_menu": {}, + "number_sections": true, + "sideBar": true, + "skip_h1_title": true, + "title_cell": "Table of Contents", + "title_sidebar": "Contents", + "toc_cell": true, + "toc_position": { + "height": "1084px", + "left": "228px", + "top": "111.133px", + "width": "300.7px" + }, + "toc_section_display": true, + "toc_window_display": true + }, + "varInspector": { + "cols": { + "lenName": 16, + "lenType": 16, + "lenVar": 40 + }, + "kernels_config": { + "python": { + "delete_cmd_postfix": "", + "delete_cmd_prefix": "del ", + "library": "var_list.py", + "varRefreshCmd": "print(var_dic_list())" + }, + "r": { + "delete_cmd_postfix": ") ", + "delete_cmd_prefix": "rm(", + "library": "var_list.r", + "varRefreshCmd": "cat(var_dic_list()) " + } + }, + "position": { + "height": "352.85px", + "left": "1070px", + "right": "20px", + "top": "120px", + "width": "350px" + }, + "types_to_exclude": [ + "module", + "function", + "builtin_function_or_method", + "instance", + "_Feature" + ], + "window_display": false + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/analysis_and_scripts/Analysis_25JUN2019_modular.ipynb b/analysis_and_scripts/Analysis_25JUN2019_modular.ipynb new file mode 100644 index 0000000..3f50102 --- /dev/null +++ b/analysis_and_scripts/Analysis_25JUN2019_modular.ipynb @@ -0,0 +1,1145 @@ +{ + "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=\"#Data-generation-modules\" data-toc-modified-id=\"Data-generation-modules-1\"><span class=\"toc-item-num\">1 </span>Data generation modules</a></span></li><li><span><a href=\"#Decider-modules\" data-toc-modified-id=\"Decider-modules-2\"><span class=\"toc-item-num\">2 </span>Decider modules</a></span></li><li><span><a href=\"#Evaluator-modules\" data-toc-modified-id=\"Evaluator-modules-3\"><span class=\"toc-item-num\">3 </span>Evaluator modules</a></span><ul class=\"toc-item\"><li><span><a href=\"#Convenience-functions\" data-toc-modified-id=\"Convenience-functions-3.1\"><span class=\"toc-item-num\">3.1 </span>Convenience functions</a></span></li><li><span><a href=\"#Contraction-algorithm\" data-toc-modified-id=\"Contraction-algorithm-3.2\"><span class=\"toc-item-num\">3.2 </span>Contraction algorithm</a></span></li><li><span><a href=\"#Evaluators\" data-toc-modified-id=\"Evaluators-3.3\"><span class=\"toc-item-num\">3.3 </span>Evaluators</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=\"#Without-unobservables-in-the-data\" data-toc-modified-id=\"Without-unobservables-in-the-data-4.1\"><span class=\"toc-item-num\">4.1 </span>Without unobservables in the data</a></span></li><li><span><a href=\"#With-unobservables-in-the-data\" data-toc-modified-id=\"With-unobservables-in-the-data-4.2\"><span class=\"toc-item-num\">4.2 </span>With unobservables in the data</a></span></li></ul></li></ul></div>" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Refer to the `notes.tex` file for explanations about the modular framework." + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "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", + "from sklearn.model_selection import train_test_split\n", + "\n", + "# Settings\n", + "\n", + "%matplotlib inline\n", + "\n", + "plt.rcParams.update({'font.size': 16})\n", + "plt.rcParams.update({'figure.figsize': (10, 6)})\n", + "\n", + "# Suppress deprecation warnings.\n", + "\n", + "import warnings\n", + "\n", + "\n", + "def fxn():\n", + " warnings.warn(\"deprecated\", DeprecationWarning)\n", + "\n", + "\n", + "with warnings.catch_warnings():\n", + " warnings.simplefilter(\"ignore\")\n", + " fxn()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Data generation modules" + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "metadata": {}, + "outputs": [], + "source": [ + "def sigmoid(x):\n", + " '''Return value of sigmoid function (inverse of logit) at x.'''\n", + "\n", + " return 1 / (1 + np.exp(-1 * x))\n", + "\n", + "\n", + "def coinFlipDGWithoutUnobservables(N_total=50000):\n", + "\n", + " df = pd.DataFrame()\n", + "\n", + " # Sample feature X from standard Gaussian distribution, N(0, 1).\n", + " df = df.assign(X=npr.normal(size=N_total))\n", + "\n", + " # Calculate P(Y=0|X=x) = 1 / (1 + exp(-X)) = sigmoid(X)\n", + " df = df.assign(probabilities_Y=sigmoid(df.X))\n", + "\n", + " # Draw Y ~ Bernoulli(1 - sigmoid(X))\n", + " # Note: P(Y=1|X=x) = 1 - P(Y=0|X=x) = 1 - sigmoid(X)\n", + " results = npr.binomial(n=1, p=1 - df.probabilities_Y, size=N_total)\n", + "\n", + " df = df.assign(result_Y=results)\n", + "\n", + " return df\n", + "\n", + "\n", + "def thresholdDGWithUnobservables(N_total=50000):\n", + "\n", + " df = pd.DataFrame()\n", + "\n", + " # Sample the variables from standard Gaussian distributions.\n", + " df = df.assign(X=npr.normal(size=N_total))\n", + " df = df.assign(Z=npr.normal(size=N_total))\n", + " df = df.assign(W=npr.normal(size=N_total))\n", + "\n", + " # Calculate P(Y=0|X, Z, W)\n", + " probabilities_Y = sigmoid(beta_X * df.X + beta_Z * df.Z + beta_W * df.W)\n", + "\n", + " df = df.assign(probabilities_Y=probabilities_Y)\n", + "\n", + " # Result is 0 if P(Y = 0| X = x; Z = z; W = w) >= 0.5 , 1 otherwise\n", + " df = df.assign(result_Y=np.where(df.probabilities_Y >= 0.5, 0, 1))\n", + "\n", + " return df\n", + "\n", + "\n", + "def coinFlipDGWithUnobservables(N_total=50000,\n", + " beta_X=1.0,\n", + " beta_Z=1.0,\n", + " beta_W=0.2):\n", + "\n", + " df = pd.DataFrame()\n", + "\n", + " # Sample feature X, Z and W from standard Gaussian distribution, N(0, 1).\n", + " df = df.assign(X=npr.normal(size=N_total))\n", + " df = df.assign(Z=npr.normal(size=N_total))\n", + " df = df.assign(W=npr.normal(size=N_total))\n", + "\n", + " # Calculate P(Y=0|X=x) = 1 / (1 + exp(-X)) = sigmoid(X)\n", + " probabilities_Y = sigmoid(beta_X * df.X + beta_Z * df.Z + beta_W * df.W)\n", + "\n", + " df = df.assign(probabilities_Y=probabilities_Y)\n", + "\n", + " # Draw Y from Bernoulli distribution\n", + " results = npr.binomial(n=1,\n", + " p=1 - df.probabilities_Y,\n", + " size=N_total)\n", + "\n", + " df = df.assign(result_Y=results)\n", + "\n", + " return df" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Decider modules" + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "metadata": {}, + "outputs": [], + "source": [ + "def humanDeciderLakkaraju(df,\n", + " result_Y,\n", + " featureX_col,\n", + " featureZ_col,\n", + " nJudges_M=100,\n", + " beta_X=1,\n", + " beta_Z=1,\n", + " hide_unobserved=True):\n", + "\n", + " # Assert that every judge will have the same number of subjects.\n", + " assert df.shape[0] % nJudges_M == 0, \"Can't assign subjets evenly!\"\n", + "\n", + " # Compute the number of subjects allocated for each judge.\n", + " nSubjects_N = int(df.shape[0] / nJudges_M)\n", + "\n", + " # Assign judge IDs as running numbering from 0 to nJudges_M - 1\n", + " df = df.assign(judgeID_J=np.repeat(range(0, nJudges_M), 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", + " probabilities_T = sigmoid(beta_X * df[featureX_col] + beta_Z * df[featureZ_col])\n", + " probabilities_T += np.sqrt(0.1) * npr.normal(size=nJudges_M * nSubjects_N)\n", + "\n", + " df = df.assign(probabilities_T=probabilities_T)\n", + "\n", + " # Sort by judges then probabilities in decreasing order\n", + " # Most dangerous for each judge are at the top.\n", + " df.sort_values(by=[\"judgeID_J\", \"probabilities_T\"],\n", + " ascending=False,\n", + " inplace=True)\n", + "\n", + " # Iterate over the data. Subject will be given a negative decision\n", + " # if they are in the top (1-r)*100% of the individuals the judge will judge.\n", + " # I.e. if their within-judge-index is under 1 - acceptance threshold times\n", + " # the number of subjects assigned to each judge they will receive a\n", + " # negative decision.\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", + " if hide_unobserved:\n", + " df.loc[df.decision_T == 0, result_Y] = np.nan\n", + "\n", + " return df\n", + "\n", + "\n", + "def coinFlipDecider(df,\n", + " featureX_col,\n", + " featureZ_col,\n", + " nJudges_M=100,\n", + " beta_X=1,\n", + " beta_Z=1,\n", + " hide_unobserved=True):\n", + "\n", + " # Assert that every judge will have the same number of subjects.\n", + " assert df.shape[0] % nJudges_M == 0, \"Can't assign subjets evenly!\"\n", + "\n", + " # Compute the number of subjects allocated for each judge.\n", + " nSubjects_N = int(df.shape[0] / nJudges_M)\n", + "\n", + " # Assign judge IDs as running numbering from 0 to nJudges_M - 1\n", + " df = df.assign(judgeID_J=np.repeat(range(0, nJudges_M), 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", + " # No real leniency here???\n", + " acceptance_rates = np.ones(nJudges_M)*0.5\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", + " probabilities_T = sigmoid(beta_X * df[featureX_col] + beta_Z * df[featureZ_col])\n", + " #probabilities_T += np.sqrt(0.1) * npr.normal(size=nJudges_M * nSubjects_N)\n", + "\n", + " df = df.assign(probabilities_T=probabilities_T)\n", + "\n", + " # Draw T from Bernoulli distribution\n", + " decisions = npr.binomial(n=1, p=1 - df.probabilities_T, size=df.shape[0])\n", + "\n", + " df = df.assign(decision_T=decisions)\n", + " \n", + " if hide_unobserved:\n", + " df.loc[df.decision_T == 0, 'result_Y'] = np.nan\n", + " \n", + " return df" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Evaluator modules\n", + "\n", + "### Convenience functions" + ] + }, + { + "cell_type": "code", + "execution_count": 94, + "metadata": {}, + "outputs": [], + "source": [ + "def fitPredictiveModel(x_train, y_train, x_test, class_value, model_type=None):\n", + " '''\n", + " Fit a predictive model (default logistic regression) with given training \n", + " instances and return probabilities for test instances to obtain a given \n", + " class label.\n", + " \n", + " Arguments:\n", + " ----------\n", + " \n", + " x_train -- x values of training instances\n", + " y_train -- y values of training instances\n", + " x_test -- x values of test instances\n", + " class_value -- class label for which the probabilities are counted for.\n", + " model_type -- type of model to be fitted.\n", + " \n", + " Returns:\n", + " --------\n", + " (1) Trained predictive model\n", + " (2) Probabilities for given test inputs for given class.\n", + " '''\n", + "\n", + " if model_type is None or model_type in [\"logistic_regression\", \"lr\"]:\n", + " # Instantiate the model (using the default parameters)\n", + " logreg = LogisticRegression(solver='lbfgs')\n", + "\n", + " # Check shape and fit the model.\n", + " if x_train.ndim == 1:\n", + " logreg = logreg.fit(x_train.values.reshape(-1, 1), y_train)\n", + " else:\n", + " logreg = logreg.fit(x_train, y_train)\n", + "\n", + " label_probs_logreg = getProbabilityForClass(x_test, logreg,\n", + " class_value)\n", + "\n", + " return logreg, label_probs_logreg\n", + "\n", + " elif model_type in [\"random_forest\", \"rf\"]:\n", + " # Instantiate the model\n", + " forest = RandomForestClassifier(n_estimators=100, max_depth=3)\n", + "\n", + " # Check shape and fit the model.\n", + " if x_train.ndim == 1:\n", + " forest = forest.fit(x_train.values.reshape(-1, 1), y_train)\n", + " else:\n", + " forest = forest.fit(x_train, y_train)\n", + "\n", + " label_probs_forest = getProbabilityForClass(x_test, forest,\n", + " class_value)\n", + "\n", + " return forest, label_probs_forest\n", + "\n", + " elif model_type == \"fully_random\":\n", + "\n", + " label_probs = np.ones_like(x_test) / 2\n", + "\n", + " model_object = lambda x: 0.5\n", + "\n", + " return model_object, label_probs\n", + " else:\n", + " raise ValueError(\"Invalid model_type!\", model_type)\n", + "\n", + "\n", + "def getProbabilityForClass(x, model, class_value):\n", + " '''\n", + " Function (wrapper) for obtaining the probability of a class given x and a \n", + " predictive model.\n", + "\n", + " Arguments:\n", + " -----------\n", + " x -- individual features, an array of shape (observations, features)\n", + " model -- a trained sklearn model. Predicts probabilities for given x. \n", + " Should accept input of shape (observations, features)\n", + " class_value -- the resulting class to predict (usually 0 or 1).\n", + "\n", + " Returns:\n", + " --------\n", + " (1) 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", + "\n", + "def cdf(x_0, model, class_value):\n", + " '''\n", + " Cumulative distribution function as described above. Integral is \n", + " approximated using Simpson's rule for efficiency.\n", + " \n", + " Arguments:\n", + " ----------\n", + " \n", + " x_0 -- private features of an instance for which the value of cdf is to be\n", + " calculated.\n", + " model -- a trained sklearn model. Predicts probabilities for given x. \n", + " Should accept input of shape (observations, features)\n", + " class_value -- the resulting class to predict (usually 0 or 1).\n", + "\n", + " '''\n", + "\n", + " def prediction(x):\n", + " return getProbabilityForClass(\n", + " np.array([x]).reshape(-1, 1), model, class_value)\n", + "\n", + " prediction_x_0 = prediction(x_0)\n", + "\n", + " x_values = np.linspace(-15, 15, 40000)\n", + "\n", + " x_preds = prediction(x_values)\n", + "\n", + " y_values = scs.norm.pdf(x_values)\n", + "\n", + " results = np.zeros(x_0.shape[0])\n", + " print(\"en loop\")\n", + " for i in range(x_0.shape[0]):\n", + "\n", + " y_copy = y_values.copy()\n", + "\n", + " y_copy[x_preds > prediction_x_0[i]] = 0\n", + " \n", + " results[i] = si.simps(y_copy, x=x_values)\n", + " print(\"jlk loop\")\n", + " return results\n", + "\n", + "\n", + "def bailIndicator(r, y_model, x_train, x_test):\n", + " '''\n", + " Indicator function for whether a judge will bail or jail a suspect.\n", + " Rationale explained above.\n", + "\n", + " Algorithm:\n", + " ----------\n", + "\n", + " (1) Calculate recidivism probabilities from training set with a trained \n", + " model and assign them to predictions_train.\n", + "\n", + " (2) Calculate recidivism probabilities from test set with the trained \n", + " model and assign them to predictions_test.\n", + "\n", + " (3) Construct a quantile function of the probabilities in\n", + " in predictions_train.\n", + "\n", + " (4)\n", + " For pred in predictions_test:\n", + "\n", + " if pred belongs to a percentile (computed from step (3)) lower than r\n", + " return True\n", + " else\n", + " return False\n", + "\n", + " Arguments:\n", + " ----------\n", + "\n", + " r -- float, acceptance rate, between 0 and 1\n", + " y_model -- a trained sklearn predictive model to predict the outcome\n", + " x_train -- private features of the training instances\n", + " x_test -- private features of the test instances\n", + "\n", + " Returns:\n", + " --------\n", + " (1) Boolean list indicating a bail decision (bail = True) for each \n", + " instance in x_test.\n", + " '''\n", + "\n", + " predictions_train = getProbabilityForClass(x_train, y_model, 0)\n", + "\n", + " predictions_test = getProbabilityForClass(x_test, y_model, 0)\n", + "\n", + " return [\n", + " scs.percentileofscore(predictions_train, pred, kind='weak') < r\n", + " for pred in predictions_test\n", + " ]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 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": 40, + "metadata": {}, + "outputs": [], + "source": [ + "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", + " Arguments:\n", + " -----------\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", + " --------\n", + " (1) The estimated failure rate at acceptance rate r.\n", + " '''\n", + " # Get ID of the most lenient judge.\n", + " most_lenient_ID_q = df[judgeIDJ_col].loc[df[accRateR_col].idxmax()]\n", + "\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", + "\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", + "\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": [ + "### Evaluators" + ] + }, + { + "cell_type": "code", + "execution_count": 96, + "metadata": {}, + "outputs": [], + "source": [ + "def contractionEvaluator(df, featureX_col, judgeIDJ_col, decisionT_col,\n", + " resultY_col, accRateR_col, r):\n", + "\n", + " train, test = train_test_split(df, test_size=0.5)\n", + "\n", + " B_model, predictions = fitPredictiveModel(\n", + " train.loc[train[decisionT_col] == 1, featureX_col],\n", + " train.loc[train[decisionT_col] == 1, resultY_col], test[featureX_col],\n", + " 0)\n", + "\n", + " test = test.assign(B_prob_0_model=predictions)\n", + "\n", + " # Invoke the original contraction.\n", + " FR = contraction(test,\n", + " judgeIDJ_col=judgeIDJ_col,\n", + " decisionT_col=decisionT_col,\n", + " resultY_col=resultY_col,\n", + " modelProbS_col=\"B_prob_0_model\",\n", + " accRateR_col=accRateR_col,\n", + " r=r)\n", + "\n", + " return FR\n", + "\n", + "\n", + "def trueEvaluationEvaluator(df, featureX_col, decisionT_col, resultY_col, r):\n", + "\n", + " train, test = train_test_split(df, test_size=0.5)\n", + "\n", + " B_model, predictions = fitPredictiveModel(train[featureX_col],\n", + " train[resultY_col],\n", + " test[featureX_col], 0)\n", + "\n", + " test = test.assign(B_prob_0_model=predictions)\n", + "\n", + " test.sort_values(by='B_prob_0_model', inplace=True, ascending=True)\n", + "\n", + " to_release = int(round(test.shape[0] * r / 10))\n", + "\n", + " return np.sum(test[resultY_col][0:to_release] == 0) / test.shape[0]\n", + "\n", + "\n", + "def labeledOutcomesEvaluator(df, featureX_col, decisionT_col, resultY_col, r):\n", + "\n", + " train, test = train_test_split(df, test_size=0.5)\n", + "\n", + " B_model, predictions = fitPredictiveModel(\n", + " train.loc[train[decisionT_col] == 1, featureX_col],\n", + " train.loc[train[decisionT_col] == 1, resultY_col], test[featureX_col],\n", + " 0)\n", + "\n", + " test = test.assign(B_prob_0_model=predictions)\n", + "\n", + " test_observed = test.loc[test[decisionT_col] == 1, :]\n", + "\n", + " test_observed = test_observed.sort_values(by='B_prob_0_model',\n", + " inplace=False,\n", + " ascending=True)\n", + "\n", + " to_release = int(round(test_observed.shape[0] * r / 10))\n", + "\n", + " return np.sum(\n", + " test_observed[resultY_col][0:to_release] == 0) / test.shape[0]\n", + "\n", + "\n", + "def humanEvaluationEvaluator(df, judgeIDJ_col, decisionT_col, resultY_col,\n", + " accRateR_col, r):\n", + "\n", + " # Get judges with correct leniency as list\n", + " is_correct_leniency = df[accRateR_col].round(1) == r / 10\n", + "\n", + " correct_leniency_list = df.loc[is_correct_leniency, judgeIDJ_col]\n", + "\n", + " # Released are the people they judged and released, T = 1\n", + " released = df[df[judgeIDJ_col].isin(correct_leniency_list)\n", + " & (df.decision_T == 1)]\n", + "\n", + " # Get their failure rate, aka ratio of reoffenders to number of people judged in total\n", + " return np.sum(released[resultY_col] == 0) / correct_leniency_list.shape[0]\n", + "\n", + "\n", + "def causalEvaluator(df, featureX_col, decisionT_col, resultY_col, r):\n", + "\n", + " train, test = train_test_split(df, test_size=0.5)\n", + "\n", + " B_model, predictions = fitPredictiveModel(\n", + " train.loc[train[decisionT_col] == 1, featureX_col],\n", + " train.loc[train[decisionT_col] == 1, resultY_col], test[featureX_col],\n", + " 0)\n", + "\n", + " test = test.assign(B_prob_0_model=predictions)\n", + "\n", + " released = cdf(test[featureX_col], B_model, 0) < r / 10\n", + "\n", + " return np.mean(test.B_prob_0_model * released)" + ] + }, + { + "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." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "heading_collapsed": true + }, + "source": [ + "### Without unobservables in the data\n", + "\n", + "The underlying figure is attached to the preliminary paper. When conducting finalization, last analysis should be conducted with a preset random seed." + ] + }, + { + "cell_type": "code", + "execution_count": 42, + "metadata": { + "hidden": true, + "scrolled": false + }, + "outputs": [], + "source": [ + "# f_rates = np.zeros((8, 5))\n", + "# f_sems = np.zeros((8, 5))\n", + "\n", + "# nIter = 15\n", + "\n", + "# #npr.seed(0)\n", + "\n", + "# for r in np.arange(1, 9):\n", + "\n", + "# print(\"[\", r, \"]\", sep='', end=\" \")\n", + "\n", + "# s_f_rate_true = np.zeros(nIter)\n", + "# s_f_rate_labeled = np.zeros(nIter)\n", + "# s_f_rate_human = np.zeros(nIter)\n", + "# s_f_rate_cont = np.zeros(nIter)\n", + "# s_f_rate_caus = np.zeros(nIter)\n", + "\n", + "# for i in range(nIter):\n", + "\n", + "# print(i, end=\" \")\n", + "\n", + "# s_train_labeled, s_train, s_test_labeled, s_test, s_df = dataWithoutUnobservables(sigma=2)\n", + "\n", + "# s_logreg, predictions = fitPredictiveModel(\n", + "# s_train_labeled.dropna().X,\n", + "# s_train_labeled.dropna().result_Y, s_test.X, 0)\n", + "# s_test = s_test.assign(B_prob_0_model=predictions)\n", + "\n", + "# s_logreg, predictions_labeled = fitPredictiveModel(\n", + "# s_train_labeled.dropna().X,\n", + "# s_train_labeled.dropna().result_Y, s_test_labeled.X, 0)\n", + "# s_test_labeled = s_test_labeled.assign(\n", + "# B_prob_0_model=predictions_labeled)\n", + "\n", + "# #### True evaluation\n", + "# # Sort by actual failure probabilities, subjects with the smallest risk are first.\n", + "# s_sorted = s_test.sort_values(by='B_prob_0_model',\n", + "# inplace=False,\n", + "# ascending=True)\n", + "\n", + "# to_release = int(round(s_sorted.shape[0] * r / 10))\n", + "\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", + "# s_f_rate_true[i] = np.sum(\n", + "# s_sorted.result_Y[0:to_release] == 0) / s_sorted.shape[0]\n", + "\n", + "# #### Labeled outcomes\n", + "# # Sort by estimated failure probabilities, subjects with the smallest risk are first.\n", + "# s_sorted = s_test_labeled.sort_values(by='B_prob_0_model',\n", + "# inplace=False,\n", + "# ascending=True)\n", + "\n", + "# to_release = int(round(s_test_labeled.dropna().shape[0] * r / 10))\n", + "\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", + "# s_f_rate_labeled[i] = np.sum(\n", + "# s_sorted.result_Y[0:to_release] == 0) / s_sorted.shape[0]\n", + "\n", + "# #### Human error rate\n", + "# # Get judges with correct leniency as list\n", + "# correct_leniency_list = s_test_labeled.judgeID_J[\n", + "# s_test_labeled['acceptanceRate_R'].round(1) == r / 10].values\n", + "\n", + "# # Released are the people they judged and released, T = 1\n", + "# released = s_test_labeled[\n", + "# s_test_labeled.judgeID_J.isin(correct_leniency_list)\n", + "# & (s_test_labeled.decision_T == 1)]\n", + "\n", + "# # Get their failure rate, aka ratio of reoffenders to number of people judged in total\n", + "# s_f_rate_human[i] = np.sum(\n", + "# released.result_Y == 0) / correct_leniency_list.shape[0]\n", + "\n", + "# #### Contraction\n", + "# s_f_rate_cont[i] = contraction(s_test_labeled, 'judgeID_J',\n", + "# 'decision_T', 'result_Y',\n", + "# 'B_prob_0_model', 'acceptanceRate_R',\n", + "# r / 10)\n", + "# #### Causal model\n", + "\n", + "# #released = bailIndicator(r * 10, s_logreg, s_train.X, s_test.X)\n", + "# released=0\n", + "# #released = cdf(s_test.X, s_logreg, 0) < r / 10\n", + "\n", + "# s_f_rate_caus[i] = np.mean(s_test.B_prob_0_model * released)\n", + "\n", + "# ########################\n", + "# #percentiles = estimatePercentiles(s_train_labeled.X, s_logreg)\n", + "\n", + "# #def releaseProbability(x):\n", + "# # return calcReleaseProbabilities(r * 10,\n", + "# # s_train_labeled.X,\n", + "# # x,\n", + "# # s_logreg,\n", + "# # percentileMatrix=percentiles)\n", + "\n", + "# #def integrand(x):\n", + "# # p_y0 = s_logreg.predict_proba(x.reshape(-1, 1))[:, 0]\n", + "\n", + "# # p_t1 = releaseProbability(x)\n", + "\n", + "# # p_x = scs.norm.pdf(x)\n", + "\n", + "# # return p_y0 * p_t1 * p_x\n", + "\n", + "# #s_f_rate_caus[i] = si.quad(lambda x: integrand(np.ones((1, 1)) * x),\n", + "# # -10, 10)[0]\n", + "\n", + "# f_rates[r - 1, 0] = np.mean(s_f_rate_true)\n", + "# f_rates[r - 1, 1] = np.mean(s_f_rate_labeled)\n", + "# f_rates[r - 1, 2] = np.mean(s_f_rate_human)\n", + "# f_rates[r - 1, 3] = np.mean(s_f_rate_cont)\n", + "# f_rates[r - 1, 4] = np.mean(s_f_rate_caus)\n", + "\n", + "# f_sems[r - 1, 0] = scs.sem(s_f_rate_true)\n", + "# f_sems[r - 1, 1] = scs.sem(s_f_rate_labeled)\n", + "# f_sems[r - 1, 2] = scs.sem(s_f_rate_human)\n", + "# f_sems[r - 1, 3] = scs.sem(s_f_rate_cont)\n", + "# f_sems[r - 1, 4] = scs.sem(s_f_rate_caus)\n", + "\n", + "# x_ax = np.arange(0.1, 0.9, 0.1)\n", + "\n", + "# plt.errorbar(x_ax,\n", + "# f_rates[:, 0],\n", + "# label='True Evaluation',\n", + "# c='green',\n", + "# yerr=f_sems[:, 0])\n", + "# plt.errorbar(x_ax,\n", + "# f_rates[:, 1],\n", + "# label='Labeled outcomes',\n", + "# c='magenta',\n", + "# yerr=f_sems[:, 1])\n", + "# plt.errorbar(x_ax,\n", + "# f_rates[:, 2],\n", + "# label='Human evaluation',\n", + "# c='red',\n", + "# yerr=f_sems[:, 2])\n", + "# plt.errorbar(x_ax,\n", + "# f_rates[:, 3],\n", + "# label='Contraction, log.',\n", + "# c='blue',\n", + "# yerr=f_sems[:, 3])\n", + "# # plt.errorbar(x_ax,\n", + "# # f_rates[:, 4],\n", + "# # label='Causal model, ep',\n", + "# # c='black',\n", + "# # yerr=f_sems[:, 4])\n", + "\n", + "# plt.title('Failure rate vs. Acceptance rate without unobservables')\n", + "# plt.xlabel('Acceptance rate')\n", + "# plt.ylabel('Failure rate')\n", + "# plt.legend()\n", + "# plt.grid()\n", + "# plt.show()\n", + "\n", + "# print(f_rates)\n", + "# print(\"\\nMean absolute errors:\")\n", + "# for i in range(1, f_rates.shape[1]):\n", + "# print(np.mean(np.abs(f_rates[:, 0] - f_rates[:, i])))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### With unobservables in the data\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." + ] + }, + { + "cell_type": "code", + "execution_count": 97, + "metadata": { + "scrolled": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[1] 0 en loop\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/Users/rikulain/anaconda3/lib/python3.7/site-packages/ipykernel_launcher.py:78: RuntimeWarning: invalid value encountered in long_scalars\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "jlk loop\n", + "1 en loop\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/Users/rikulain/anaconda3/lib/python3.7/site-packages/ipykernel_launcher.py:78: RuntimeWarning: invalid value encountered in long_scalars\n" + ] + }, + { + "ename": "KeyboardInterrupt", + "evalue": "", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m<ipython-input-97-03cd8a3c6103>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[1;32m 65\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 66\u001b[0m f_rate_caus[i] = causalEvaluator(df_labeled, 'X', 'decision_T',\n\u001b[0;32m---> 67\u001b[0;31m 'result_Y', r / 10)\n\u001b[0m\u001b[1;32m 68\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 69\u001b[0m \u001b[0mfailure_rates\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mr\u001b[0m \u001b[0;34m-\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmean\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mf_rate_true\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m<ipython-input-96-4ef6c6b281a2>\u001b[0m in \u001b[0;36mcausalEvaluator\u001b[0;34m(df, featureX_col, decisionT_col, resultY_col, r)\u001b[0m\n\u001b[1;32m 90\u001b[0m \u001b[0mtest\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mtest\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0massign\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mB_prob_0_model\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mpredictions\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 91\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 92\u001b[0;31m \u001b[0mreleased\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mcdf\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mtest\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mfeatureX_col\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mB_model\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m0\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m<\u001b[0m \u001b[0mr\u001b[0m \u001b[0;34m/\u001b[0m \u001b[0;36m10\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 93\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 94\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmean\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mtest\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mB_prob_0_model\u001b[0m \u001b[0;34m*\u001b[0m \u001b[0mreleased\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m<ipython-input-94-f0303c92af6c>\u001b[0m in \u001b[0;36mcdf\u001b[0;34m(x_0, model, class_value)\u001b[0m\n\u001b[1;32m 123\u001b[0m \u001b[0my_copy\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mx_preds\u001b[0m \u001b[0;34m>\u001b[0m \u001b[0mprediction_x_0\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mi\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;36m0\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 124\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 125\u001b[0;31m \u001b[0mresults\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mi\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0msi\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msimps\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0my_copy\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mx\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mx_values\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 126\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"jlk loop\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 127\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mresults\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m~/anaconda3/lib/python3.7/site-packages/scipy/integrate/quadrature.py\u001b[0m in \u001b[0;36msimps\u001b[0;34m(y, x, dx, axis, even)\u001b[0m\n\u001b[1;32m 477\u001b[0m \u001b[0mfirst_dx\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mx\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mtuple\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mslice2\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m-\u001b[0m \u001b[0mx\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mtuple\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mslice1\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 478\u001b[0m \u001b[0mval\u001b[0m \u001b[0;34m+=\u001b[0m \u001b[0;36m0.5\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0mfirst_dx\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0my\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mslice2\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m+\u001b[0m\u001b[0my\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mslice1\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 479\u001b[0;31m \u001b[0mresult\u001b[0m \u001b[0;34m+=\u001b[0m \u001b[0m_basic_simps\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0my\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mN\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0;36m2\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mx\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdx\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0maxis\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 480\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0meven\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;34m'avg'\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 481\u001b[0m \u001b[0mval\u001b[0m \u001b[0;34m/=\u001b[0m \u001b[0;36m2.0\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m~/anaconda3/lib/python3.7/site-packages/scipy/integrate/quadrature.py\u001b[0m in \u001b[0;36m_basic_simps\u001b[0;34m(y, start, stop, x, dx, axis)\u001b[0m\n\u001b[1;32m 358\u001b[0m \u001b[0mh0divh1\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mh0\u001b[0m \u001b[0;34m/\u001b[0m \u001b[0mh1\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 359\u001b[0m tmp = hsum/6.0 * (y[slice0]*(2-1.0/h0divh1) +\n\u001b[0;32m--> 360\u001b[0;31m \u001b[0my\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mslice1\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0mhsum\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0mhsum\u001b[0m\u001b[0;34m/\u001b[0m\u001b[0mhprod\u001b[0m \u001b[0;34m+\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 361\u001b[0m y[slice2]*(2-h0divh1))\n\u001b[1;32m 362\u001b[0m \u001b[0mresult\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msum\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mtmp\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0maxis\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0maxis\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;31mKeyboardInterrupt\u001b[0m: " + ] + } + ], + "source": [ + "failure_rates = np.zeros((8, 5))\n", + "failure_sems = np.zeros((8, 5))\n", + "\n", + "nIter = 8\n", + "\n", + "for r in np.arange(1, 9):\n", + "\n", + " print(\"[\", r, \"]\", sep='', end=\" \")\n", + "\n", + " f_rate_true = np.zeros(nIter)\n", + " f_rate_label = np.zeros(nIter)\n", + " f_rate_human = np.zeros(nIter)\n", + " f_rate_cont = np.zeros(nIter)\n", + " f_rate_caus = np.zeros(nIter)\n", + "\n", + " for i in range(nIter):\n", + "\n", + " print(i, end=\" \")\n", + "\n", + " # Create data\n", + " df = coinFlipDGWithUnobservables()\n", + "\n", + " # Decider\n", + " df_labeled = coinFlipDecider(df,\n", + " featureX_col=\"X\",\n", + " featureZ_col=\"Z\",\n", + " nJudges_M=100,\n", + " beta_X=1,\n", + " beta_Z=1,\n", + " hide_unobserved=True)\n", + "\n", + " df_unlabeled = coinFlipDecider(df,\n", + " featureX_col=\"X\",\n", + " featureZ_col=\"Z\",\n", + " nJudges_M=100,\n", + " beta_X=1,\n", + " beta_Z=1,\n", + " hide_unobserved=False)\n", + "\n", + " # True evaluation\n", + "\n", + " f_rate_true[i] = trueEvaluationEvaluator(df_unlabeled, 'X',\n", + " 'decision_T', 'result_Y',\n", + " r / 10)\n", + "\n", + " # Labeled outcomes only\n", + "\n", + " f_rate_label[i] = labeledOutcomesEvaluator(df_labeled, 'X',\n", + " 'decision_T', 'result_Y',\n", + " r / 10)\n", + "\n", + " # Human evaluation\n", + "\n", + " f_rate_human[i] = humanEvaluationEvaluator(df_labeled, 'judgeID_J',\n", + " 'decision_T', 'result_Y',\n", + " 'acceptanceRate_R', r / 10)\n", + "\n", + " # Contraction\n", + "\n", + " f_rate_cont[i] = contractionEvaluator(df_labeled, 'X', 'judgeID_J',\n", + " 'decision_T', 'result_Y',\n", + " 'acceptanceRate_R', r / 10)\n", + "\n", + " # Causal model - empirical performance\n", + "\n", + " f_rate_caus[i] = causalEvaluator(df_labeled, 'X', 'decision_T',\n", + " 'result_Y', r / 10)\n", + "\n", + " failure_rates[r - 1, 0] = np.mean(f_rate_true)\n", + " failure_rates[r - 1, 1] = np.mean(f_rate_label)\n", + " failure_rates[r - 1, 2] = np.mean(f_rate_human)\n", + " failure_rates[r - 1, 3] = np.mean(f_rate_cont)\n", + " failure_rates[r - 1, 4] = np.mean(f_rate_caus)\n", + "\n", + " failure_sems[r - 1, 0] = scs.sem(f_rate_true)\n", + " failure_sems[r - 1, 1] = scs.sem(f_rate_label)\n", + " failure_sems[r - 1, 2] = scs.sem(f_rate_human)\n", + " failure_sems[r - 1, 3] = scs.sem(f_rate_cont)\n", + " failure_sems[r - 1, 4] = scs.sem(f_rate_caus)\n", + "\n", + "x_ax = np.arange(0.1, 0.9, 0.1)\n", + "\n", + "plt.errorbar(x_ax,\n", + " failure_rates[:, 0],\n", + " label='True Evaluation',\n", + " c='green',\n", + " yerr=failure_sems[:, 0])\n", + "plt.errorbar(x_ax,\n", + " failure_rates[:, 1],\n", + " label='Labeled outcomes',\n", + " c='magenta',\n", + " yerr=failure_sems[:, 1])\n", + "plt.errorbar(x_ax,\n", + " failure_rates[:, 2],\n", + " label='Human evaluation',\n", + " c='red',\n", + " yerr=failure_sems[:, 2])\n", + "plt.errorbar(x_ax,\n", + " failure_rates[:, 3],\n", + " label='Contraction, log.',\n", + " c='blue',\n", + " yerr=failure_sems[:, 3])\n", + "plt.errorbar(x_ax,\n", + " failure_rates[:, 4],\n", + " label='Causal model, ep',\n", + " c='black',\n", + " yerr=failure_sems[:, 4])\n", + "\n", + "plt.title('Failure rate vs. Acceptance rate with unobservables')\n", + "plt.xlabel('Acceptance rate')\n", + "plt.ylabel('Failure rate')\n", + "plt.legend()\n", + "plt.grid()\n", + "plt.show()\n", + "\n", + "print(failure_rates)\n", + "print(\"\\nMean absolute errors:\")\n", + "for i in range(1, failure_rates.shape[1]):\n", + " print(np.mean(np.abs(failure_rates[:, 0] - failure_rates[:, i])))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [ + "import pystan\n", + "\n", + "code = \"\"\"\n", + "functions{\n", + " // below taken from https://discourse.mc-stan.org/t/quantile-function-in-stan/3642/13\n", + " // as Stan doesn't have a quantile function nor supports real-to-int conversion.\n", + " int ub(real x) {\n", + " int ub = 1;\n", + " while (ub < x) ub *= 2;\n", + " return ub;\n", + " }\n", + "\n", + " int closest(real x, int a, int b) {\n", + " return fabs(x - a) < fabs(x - b) ? a : b;\n", + " }\n", + "\n", + " // L <= x <= U\n", + " int to_int_bsearch(real x, int L, int U);\n", + "\n", + " int to_int_bsearch(real x, int L, int U) {\n", + " int mid = (L + U) / 2;\n", + " if (L == U) return L;\n", + " if (L + 1 == U) return closest(x, L, U);\n", + " return x <= mid? to_int_bsearch(x, L, mid) : to_int_bsearch(x, mid, U);\n", + " }\n", + "\n", + " int to_int(real x);\n", + "\n", + " int to_int(real x) {\n", + " if (fabs(x) >= 2^31) reject(\"to_int arugment must be < 2^31, found x = \", x);\n", + " if (x < 0) return -to_int(-x);\n", + " return to_int_bsearch(x, 0, ub(x));\n", + " }\n", + "}\n", + "\n", + "data {\n", + " int<lower=0> N;\n", + " int<lower=0> N_quantiles;\n", + " real<lower=0, upper=1> r;\n", + " int<lower=0, upper=1> decision[N];\n", + " real X[N];\n", + " real<lower=0, upper=1> quantiles[N_quantiles];\n", + "}\n", + "\n", + "parameters {\n", + " real Z[N];\n", + "}\n", + "\n", + "model {\n", + " Z ~ normal(0, 1);\n", + " \n", + " for(i in 1:N){\n", + " decision ~ bernoulli(inv_logit(X[i] + Z[i]) >= quantiles[to_int(r*N_quantiles)] ? 1 : 0);\n", + " }\n", + "}\n", + "\"\"\"\n", + "\n", + "dat = dict()\n", + "\n", + "sm = pystan.StanModel(model_code=code)\n", + "fit = sm.sampling(data=dat, iter=4000, chains=4)" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.3" + }, + "toc": { + "base_numbering": 1, + "nav_menu": {}, + "number_sections": true, + "sideBar": true, + "skip_h1_title": true, + "title_cell": "Table of Contents", + "title_sidebar": "Contents", + "toc_cell": true, + "toc_position": { + "height": "1084px", + "left": "228px", + "top": "111.133px", + "width": "300.7px" + }, + "toc_section_display": true, + "toc_window_display": true + }, + "varInspector": { + "cols": { + "lenName": 16, + "lenType": 16, + "lenVar": 40 + }, + "kernels_config": { + "python": { + "delete_cmd_postfix": "", + "delete_cmd_prefix": "del ", + "library": "var_list.py", + "varRefreshCmd": "print(var_dic_list())" + }, + "r": { + "delete_cmd_postfix": ") ", + "delete_cmd_prefix": "rm(", + "library": "var_list.r", + "varRefreshCmd": "cat(var_dic_list()) " + } + }, + "position": { + "height": "352.85px", + "left": "1070px", + "right": "20px", + "top": "120px", + "width": "350px" + }, + "types_to_exclude": [ + "module", + "function", + "builtin_function_or_method", + "instance", + "_Feature" + ], + "window_display": false + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/analysis_and_scripts/notes.tex b/analysis_and_scripts/notes.tex index fadd1b1..3721511 100644 --- a/analysis_and_scripts/notes.tex +++ b/analysis_and_scripts/notes.tex @@ -87,7 +87,7 @@ \graphicspath{ {../figures/} } \title{Notes} -\author{RL, 20 June 2019} +\author{RL, 25 June 2019} %\date{} % Activate to display a given date or no date \begin{document} @@ -458,7 +458,7 @@ Now the equation \ref{eq:ep} simply calculates the mean of the probabilities for \STATE Sort $\D_{observed}$ by the probabilities $\s$ to ascending order. \STATE \hskip3.0em $\rhd$ Now the most dangerous subjects are last. \STATE Calculate the number to release $N_{free} = |\D_{observed}| \cdot r$. -\RETURN $\frac{1}{|\D|}\sum_{i=1}^{N_{free}}\delta\{y_i=0\}$ +\RETURN $\frac{1}{|\D_{observed}|}\sum_{i=1}^{N_{free}}\delta\{y_i=0\}$ \end{algorithmic} \end{algorithm} @@ -517,35 +517,35 @@ Now the equation \ref{eq:ep} simply calculates the mean of the probabilities for Results obtained from running algorithm \ref{alg:perf_comp} with $N_{iter}$ set to 3 are presented in table \ref{tab:results} and figure \ref{fig:results}. All parameters are in their default values and a logistic regression model is trained. \begin{table}[H] -\caption{Mean absolute error (MAE) w.r.t true evaluation} -\begin{center} +\centering +\caption{Mean absolute error (MAE) w.r.t true evaluation. \\ \emph{RL: Updated 26 June.}} \begin{tabular}{l | c c} Method & MAE without Z & MAE with Z \\ \hline -Labeled outcomes & 0.107563333 & 0.0817483\\ -Human evaluation & 0.004403964 & 0.0042597\\ -Contraction & 0.011049707 & 0.0054146\\ -Causal model, ep & 0.001074039 & 0.0414928\\ +Labeled outcomes & 0.107249375 & 0.0827844\\ +Human evaluation & 0.002383729 & 0.0042517\\ +Contraction & 0.004633164 & 0.0075497\\ +Causal model, ep & 0.000598624 & 0.0411532\\ \end{tabular} -\end{center} \label{tab:results} -\end{table}% +\end{table} \begin{figure}[H] \centering \begin{subfigure}[b]{0.5\textwidth} - \includegraphics[width=\textwidth]{sl_without_Z_3iter} + \includegraphics[width=\textwidth]{sl_without_Z_8iter} \caption{Results without unobservables} \label{fig:results_without_Z} \end{subfigure} ~ %add desired spacing between images, e. g. ~, \quad, \qquad, \hfill etc. %(or a blank line to force the subfigure onto a new line) \begin{subfigure}[b]{0.5\textwidth} - \includegraphics[width=\textwidth]{sl_with_Z_3iter_betaZ_1_0} + \includegraphics[width=\textwidth]{sl_with_Z_8iter_betaZ_1_0} \caption{Results with unobservables, $\beta_Z=1$.} \label{fig:results_with_Z} \end{subfigure} - \caption{Failure rate vs. acceptance rate with varying levels of leniency. Logistic regression was trained on labeled training data. $N_{iter}$ was set to 3.}\label{fig:results} + \caption{Failure rate vs. acceptance rate with varying levels of leniency. Logistic regression was trained on labeled training data. $N_{iter}$ was set to 8. \emph{RL: Updated 26 June.}} + \label{fig:results} \end{figure} \subsection{$\beta_Z=0$ and data generated with unobservables.} @@ -646,11 +646,27 @@ Different types of modules are presented in this section. Summary table is prese Data generation modules usually take only some generative parameters as input. +\begin{algorithm}[H] % enter the algorithm environment +\caption{Data generation module: "coin-flip results" without unobservables} % give the algorithm a caption +%\label{alg:} % and a label for \ref{} commands later in the document +\begin{algorithmic}[1] % enter the algorithmic environment +\REQUIRE Parameters: Total number of subjects $N_{total}$ +\ENSURE +\FORALL{$i$ in $1, \ldots, N_{total}$} + \STATE Draw $x_i$ from from a standard Gaussian. + \STATE Draw $y_i$ from Bernoulli$(1-\sigma(X))$. + \STATE Attach to data. +\ENDFOR +\RETURN data +\end{algorithmic} +\end{algorithm} + + \begin{algorithm}[H] % enter the algorithm environment \caption{Data generation module: "results by threshold" with unobservables} % give the algorithm a caption %\label{alg:} % and a label for \ref{} commands later in the document \begin{algorithmic}[1] % enter the algorithmic environment -\REQUIRE Total number of subjects $N_{total},~\beta_X=1,~\beta_Z=1$ and $\beta_W=0.2$. +\REQUIRE Parameters: Total number of subjects $N_{total},~\beta_X=1,~\beta_Z=1$ and $\beta_W=0.2$. \ENSURE \FORALL{$i$ in $1, \ldots, N_{total}$} \STATE Draw $x_i, z_i$ and $w_i$ from from standard Gaussians independently. @@ -665,11 +681,11 @@ Data generation modules usually take only some generative parameters as input. \caption{Data generation module: "coin-flip results" with unobservables} % give the algorithm a caption %\label{alg:} % and a label for \ref{} commands later in the document \begin{algorithmic}[1] % enter the algorithmic environment -\REQUIRE Total number of subjects $N_{total},~\beta_X=1,~\beta_Z=1$ and $\beta_W=0.2$. +\REQUIRE Parameters: Total number of subjects $N_{total},~\beta_X=1,~\beta_Z=1$ and $\beta_W=0.2$. \ENSURE \FORALL{$i$ in $1, \ldots, N_{total}$} \STATE Draw $x_i, z_i$ and $w_i$ from from standard Gaussians independently. - \STATE Draw $y_i$ from Bernoulli$(\sigma(\beta_XX+\beta_ZZ+\beta_WW))$. + \STATE Draw $y_i$ from Bernoulli$(1-\sigma(\beta_XX+\beta_ZZ+\beta_WW))$. \STATE Attach to data. \ENDFOR \RETURN data @@ -684,15 +700,16 @@ Data generation modules usually take only some generative parameters as input. \caption{Decider module: human judge as specified by Lakkaraju et al.} % give the algorithm a caption %\label{alg:} % and a label for \ref{} commands later in the document \begin{algorithmic}[1] % enter the algorithmic environment -\REQUIRE Data with features $X, Z$ of size $N_{total}$, knowledge that both of them affect the outcome Y and that they are independent, $\beta_X=1, \beta_Z=1$. +\REQUIRE Data with features $X, Z$ of size $N_{total}$, knowledge that both of them affect the outcome Y and that they are independent / Parameters: $M=100, \beta_X=1, \beta_Z=1$. \ENSURE \STATE Sample acceptance rates for each M judges from $U(0.1; 0.9)$ and round to tenth decimal place. \STATE Assign each observation to a judge at random. -\STATE Calculate $P(T=0|X, Z) = \sigma(\beta_XX+\beta_ZZ)$ for each observation and attach to data. +\STATE Calculate $P(T=0|X, Z) = \sigma(\beta_XX+\beta_ZZ) + \epsilon$ for each observation and attach to data. \STATE Sort the data by (1) the judges' and (2) by probabilities $P(T=0|X, Z)$ in descending order. \STATE \hskip3.0em $\rhd$ Now the most dangerous subjects for each of the judges are at the top. \STATE If subject belongs to the top $(1-r) \cdot 100 \%$ of observations assigned to that judge, set $T=0$ else set $T=1$. -\RETURN data with decisions +\STATE Set $Y=$ NA if decision is negative ($T=0$). \emph{Might not be performed.} +\RETURN data with decisions. \end{algorithmic} \end{algorithm} @@ -700,13 +717,14 @@ Data generation modules usually take only some generative parameters as input. \caption{Decider module: "coin-flip decisions"} % give the algorithm a caption %\label{alg:} % and a label for \ref{} commands later in the document \begin{algorithmic}[1] % enter the algorithmic environment -\REQUIRE Data with features $X, Z$ of size $N_{total}$, knowledge that both of them affect the outcome Y and that they are independent, $\beta_X=1, \beta_Z=1$. +\REQUIRE Data with features $X, Z$ of size $N_{total}$, knowledge that both of them affect the outcome Y and that they are independent / Parameters: $\beta_X=1, \beta_Z=1$. \ENSURE \FORALL{$i$ in $1, \ldots, N_{total}$} \STATE Draw $t_i$ from Bernoulli$(\sigma(\beta_XX+\beta_ZZ)))$. \STATE Attach to data. \ENDFOR -\RETURN data with decisions +\STATE Set $Y=$ NA if decision is negative ($T=0$). \emph{Might not be performed.} +\RETURN data with decisions. \end{algorithmic} \end{algorithm} @@ -716,9 +734,9 @@ Data generation modules usually take only some generative parameters as input. \caption{Evaluator module: Contraction algorithm \cite{lakkaraju17}} % give the algorithm a caption %\label{alg:} % and a label for \ref{} commands later in the document \begin{algorithmic}[1] % enter the algorithmic environment -\REQUIRE Data $\D$ with properties $\{x_i, t_i, y_i\}$, acceptance rate r, knowledge that X affects Y +\REQUIRE Data $\D$ with properties $\{x_i, j_i, t_i, y_i\}$, acceptance rate r, knowledge that X affects Y \ENSURE -\STATE Split data to a test set and training set. +\STATE Split data to test set and training set. \STATE Train a predictive model $\B$ on training data. \STATE Estimate probability scores $\s$ using $\B$ for all observations in test data and attach to test data. \STATE Let $q$ be the decision-maker with highest acceptance rate in $\D$. @@ -745,7 +763,7 @@ Data generation modules usually take only some generative parameters as input. \begin{algorithmic}[1] % enter the algorithmic environment \REQUIRE Data $\D$ with properties $\{x_i, t_i, y_i\}$ and \emph{all outcome labels}, acceptance rate r, knowledge that X affects Y \ENSURE -\STATE Split data to a test set and training set. +\STATE Split data to test set and training set. \STATE Train a predictive model $\B$ on training data. \STATE Estimate probability scores $\s$ using $\B$ for all observations in test data and attach to test data. \STATE Sort the data by the probabilities $\s$ to ascending order. @@ -761,49 +779,61 @@ Data generation modules usually take only some generative parameters as input. \begin{algorithmic}[1] % enter the algorithmic environment \REQUIRE Data $\D$ with properties $\{x_i, t_i, y_i\}$, acceptance rate r, knowledge that X affects Y \ENSURE -\STATE Split data to a test set and training set. +\STATE Split data to test set and training set. \STATE Train a predictive model $\B$ on training data. \STATE Estimate probability scores $\s$ using $\B$ for all observations in test data and attach to test data. \STATE Assign observations in test data with observed outcomes (T=1) to $\D_{observed}$. \STATE Sort $\D_{observed}$ by the probabilities $\s$ to ascending order. \STATE \hskip3.0em $\rhd$ Now the most dangerous subjects are last. \STATE Calculate the number to release $N_{free} = |\D_{observed}| \cdot r$. -\RETURN $\frac{1}{|\D|}\sum_{i=1}^{N_{free}}\delta\{y_i=0\}$ +\RETURN $\frac{1}{|\D_{observed}|}\sum_{i=1}^{N_{free}}\delta\{y_i=0\}$ +\end{algorithmic} +\end{algorithm} + +\begin{algorithm}[] % enter the algorithm environment +\caption{Evaluator module: Human evaluation} % give the algorithm a caption +%\label{alg:human_eval} % and a label for \ref{} commands later in the document +\begin{algorithmic}[1] % enter the algorithmic environment +\REQUIRE Data $\D$ with properties $\{x_i, j_i, t_i, y_i\}$, acceptance rate r +\ENSURE +\STATE \emph{Split data to test set and training set and discard the training set.} +\STATE Assign judges with acceptance rate in $[r-0.05, r+0.05]$ to $\mathcal{J}$ +\STATE $\D_{released} = \{(x, j, t, y) \in \D~|~t=1 \wedge j \in \mathcal{J}\}$ +\STATE \hskip3.0em $\rhd$ Subjects judged \emph{and} released by judges with correct leniency. +\RETURN $\frac{1}{|\mathcal{J}|}\sum_{i=1}^{\D_{released}}\delta\{y_i=0\}$ \end{algorithmic} \end{algorithm} \subsection{Summary} -%\begin{table}[H] -%\centering -%\begin{tabular}{l | l | l} -%\multicolumn{3}{c}{ \textbf{Module}} \\ -%\textbf{Data generator} & \textbf{Decider} & \textbf{Evaluator} \\ \hline -% With unobservables, see \ref{fig:dgm} & independent decisions & Contraction algorithm, input: \\ -% Without unobservables & & \tabitem jotain \\ -% & & \tabitem lisaaa -%\end{tabular} -%\caption{Types of evaluation algorithms} -%\label{tab:jotain} -%\end{table} - -\begin{table} +\begin{table}[H] \centering \begin{tabular}{lll} \toprule \multicolumn{3}{c}{Module type} \\[.5\normalbaselineskip] \textbf{Data generator} & \textbf{Decider} & \textbf{Evaluator} \\ \midrule - With unobservables (figs TBA) & Independent decisions & {\ul Labeled outcomes} \\ - Without unobservables & \tabitem $P(T=0|X, Z)$ & \tabitem Data $\D$ with properties $\{x_i, t_i, y_i\}$ \\ - & \tabitem "threshold rule" & \tabitem acceptance rate r \\ - & & \tabitem knowledge that X affects Y \\[.5\normalbaselineskip] - & & {\ul True evaluation} \\ - & & \tabitem Data $\D$ with properties $\{x_i, t_i, y_i\}$ \\ - & & and \emph{all outcome labels} \\ - & & \tabitem acceptance rate r \\ - & & \tabitem knowledge that X affects Y \\[.5\normalbaselineskip] + Without unobservables & Independent decisions & {\ul Labeled outcomes} \\ + & \tabitem $P(T=0|X, Z)$ & \tabitem Data $\D$ with properties $\{x_i, t_i, y_i\}$ \\ + With unobservables & \tabitem "threshold rule" & \tabitem acceptance rate r \\ + \tabitem $P(Y=0|X, Z, W)$ & & \tabitem knowledge that X affects Y \\[.5\normalbaselineskip] + + With unobservables & & {\ul True evaluation} \\ + \tabitem "threshold rule" & & \tabitem Data $\D$ with properties $\{x_i, t_i, y_i\}$ \\ + & & and \emph{all outcome labels} \\ + & & \tabitem acceptance rate r \\ + & & \tabitem knowledge that X affects Y \\[.5\normalbaselineskip] + + & & {\ul Human evaluation} \\ + & & \tabitem Data $\D$ with properties $\{x_i, j_i, t_i, y_i\}$ \\ + & & \tabitem acceptance rate r \\[.5\normalbaselineskip] + & & {\ul Contraction algorithm} \\ + & & \tabitem Data $\D$ with properties $\{x_i, j_i, t_i, y_i\}$ \\ + & & \tabitem acceptance rate r \\ + & & \tabitem knowledge that X affects Y \\[.5\normalbaselineskip] + + & & {\ul Causal model (?)} \\ & & \tabitem Data $\D$ with properties $\{x_i, t_i, y_i\}$ \\ & & \tabitem acceptance rate r \\ & & \tabitem knowledge that X affects Y \\[.5\normalbaselineskip] diff --git a/figures/sl_with_Z_8iter_betaZ_1_0.png b/figures/sl_with_Z_8iter_betaZ_1_0.png new file mode 100644 index 0000000000000000000000000000000000000000..c3a2f46150807e8fa4b5d22a4977c8984cb5d05a GIT binary patch literal 54730 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	F#B`L;HEuoVCaA<<EmAAH9B3<6?OhSCwC# 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 V$hJD{g#i92$f~}od};dOe*t!Y4SfIr literal 0 HcmV?d00001 diff --git a/figures/sl_without_Z_8iter.png b/figures/sl_without_Z_8iter.png new file mode 100644 index 0000000000000000000000000000000000000000..3ee797927988d15468d3c4dd87d1aca77767c26d GIT binary patch literal 46720 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 IxsH7CKkx(6A^-pY literal 0 HcmV?d00001 -- GitLab