Last active
September 20, 2016 04:18
-
-
Save jlln/3aa754ca25573e5d1c9131878764749d to your computer and use it in GitHub Desktop.
RHC Propensity Analysis
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"metadata": { | |
"name": "", | |
"signature": "sha256:28c0888f3d8442a5cfcb604c74e4841af41c3b4b3f24fdeca5484dfa01f11542" | |
}, | |
"nbformat": 3, | |
"nbformat_minor": 0, | |
"worksheets": [ | |
{ | |
"cells": [ | |
{ | |
"cell_type": "heading", | |
"level": 2, | |
"metadata": {}, | |
"source": [ | |
"Propensity score matching for the evaluation of relative treatment efficacies." | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"In this dataset, the treatments of patients in the ICU is recorded. Some of these patients recieved a treatment called Right-Heart-Catheterization (RHC). If we are interested in finding out if RHC changes a patient's chances of survival, we need to compare those patients that recieved RHC with those patients that did not.\n", | |
"\n", | |
"Imagine if 100 pairs of identical twins were admitted to the ICU, with both members of each pair suffering from identical illnesses. It would then be very easy to find out if RHC was helpful, by giving RHC to only one member of each pair, and seeing if more of the RHC-treated twins survived. \n", | |
"\n", | |
"However, this dataset wasn't built that way (and this would probably be unethical). Instead, the patients are considered individually, and the likelihood of a patient receiving RHC might have been dependent on how sick their doctor thought they were and the specifics of their individual cases. This means that patients recieving RHC might have been more or less likely to die regardless of whether they recieved RHC, which makes direct comparison of the treated/untreated patients meaningless.\n", | |
"\n", | |
"However, there is a way to make useful comparisons from the dataset. We have quite a lot of information about each patient, and we can use this information to find, for each patient that recieved RHC, a very similar patient that did not recieve RHC. We can think of this as finding an \"adopted twin\" for the patient. By comparing these paired treated and untreated patients we can now make a meaningful evaluation of the effectiveness of the treatment. This approach is called propensity score matching, meaning that we match control and experimental cases based on their having similar propensities for recieving the treatment.\n", | |
"\n", | |
"One weakness of this approach is that it relies on knowing all of the variables that might make a difference to whether a patient was given the treatment or not. In this example, doctors may be using knowledge and experience not captured in the patient data to make their treatment decisions. We can assess this to some extent by evaluating how accurately the model predicts treatment group assignnment. Another weakness stems from the assumption that good matching pairs exist within the sample. If the two groups are sufficiently different, then this technique will not work. This means that this approach is most suitable when the best choice governing treatment assignment is ambiguous." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"collapsed": false, | |
"input": [ | |
"import pandas\n", | |
"import numpy as np\n", | |
"import matplotlib.pyplot as plt\n", | |
"import seaborn as sns\n", | |
"from sklearn.linear_model import LogisticRegression\n", | |
"from sklearn.linear_model import BayesianRidge\n", | |
"from sklearn.metrics import roc_auc_score, auc,roc_curve\n", | |
"%matplotlib inline" | |
], | |
"language": "python", | |
"metadata": {}, | |
"outputs": [], | |
"prompt_number": 1 | |
}, | |
{ | |
"cell_type": "code", | |
"collapsed": false, | |
"input": [ | |
"rhc = pandas.read_csv(\"rhc.csv\")" | |
], | |
"language": "python", | |
"metadata": {}, | |
"outputs": [], | |
"prompt_number": 2 | |
}, | |
{ | |
"cell_type": "code", | |
"collapsed": false, | |
"input": [ | |
"rhc.head()" | |
], | |
"language": "python", | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"html": [ | |
"<div style=\"max-height:1000px;max-width:1500px;overflow:auto;\">\n", | |
"<table border=\"1\" class=\"dataframe\">\n", | |
" <thead>\n", | |
" <tr style=\"text-align: right;\">\n", | |
" <th></th>\n", | |
" <th>Unnamed: 0</th>\n", | |
" <th>cat1</th>\n", | |
" <th>cat2</th>\n", | |
" <th>ca</th>\n", | |
" <th>sadmdte</th>\n", | |
" <th>dschdte</th>\n", | |
" <th>dthdte</th>\n", | |
" <th>lstctdte</th>\n", | |
" <th>death</th>\n", | |
" <th>cardiohx</th>\n", | |
" <th>...</th>\n", | |
" <th>meta</th>\n", | |
" <th>hema</th>\n", | |
" <th>seps</th>\n", | |
" <th>trauma</th>\n", | |
" <th>ortho</th>\n", | |
" <th>adld3p</th>\n", | |
" <th>urin1</th>\n", | |
" <th>race</th>\n", | |
" <th>income</th>\n", | |
" <th>ptid</th>\n", | |
" </tr>\n", | |
" </thead>\n", | |
" <tbody>\n", | |
" <tr>\n", | |
" <th>0</th>\n", | |
" <td>1</td>\n", | |
" <td>COPD</td>\n", | |
" <td>NaN</td>\n", | |
" <td>Yes</td>\n", | |
" <td>11142</td>\n", | |
" <td>11151</td>\n", | |
" <td>NaN</td>\n", | |
" <td>11382</td>\n", | |
" <td>No</td>\n", | |
" <td>0</td>\n", | |
" <td>...</td>\n", | |
" <td>No</td>\n", | |
" <td>No</td>\n", | |
" <td>No</td>\n", | |
" <td>No</td>\n", | |
" <td>No</td>\n", | |
" <td>0</td>\n", | |
" <td>NaN</td>\n", | |
" <td>white</td>\n", | |
" <td>Under $11k</td>\n", | |
" <td>5</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>1</th>\n", | |
" <td>2</td>\n", | |
" <td>MOSF w/Sepsis</td>\n", | |
" <td>NaN</td>\n", | |
" <td>No</td>\n", | |
" <td>11799</td>\n", | |
" <td>11844</td>\n", | |
" <td>11844</td>\n", | |
" <td>11844</td>\n", | |
" <td>Yes</td>\n", | |
" <td>1</td>\n", | |
" <td>...</td>\n", | |
" <td>No</td>\n", | |
" <td>No</td>\n", | |
" <td>Yes</td>\n", | |
" <td>No</td>\n", | |
" <td>No</td>\n", | |
" <td>NaN</td>\n", | |
" <td>1437</td>\n", | |
" <td>white</td>\n", | |
" <td>Under $11k</td>\n", | |
" <td>7</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>2</th>\n", | |
" <td>3</td>\n", | |
" <td>MOSF w/Malignancy</td>\n", | |
" <td>MOSF w/Sepsis</td>\n", | |
" <td>Yes</td>\n", | |
" <td>12083</td>\n", | |
" <td>12143</td>\n", | |
" <td>NaN</td>\n", | |
" <td>12400</td>\n", | |
" <td>No</td>\n", | |
" <td>0</td>\n", | |
" <td>...</td>\n", | |
" <td>No</td>\n", | |
" <td>No</td>\n", | |
" <td>No</td>\n", | |
" <td>No</td>\n", | |
" <td>No</td>\n", | |
" <td>NaN</td>\n", | |
" <td>599</td>\n", | |
" <td>white</td>\n", | |
" <td>$25-$50k</td>\n", | |
" <td>9</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>3</th>\n", | |
" <td>4</td>\n", | |
" <td>ARF</td>\n", | |
" <td>NaN</td>\n", | |
" <td>No</td>\n", | |
" <td>11146</td>\n", | |
" <td>11183</td>\n", | |
" <td>11183</td>\n", | |
" <td>11182</td>\n", | |
" <td>Yes</td>\n", | |
" <td>0</td>\n", | |
" <td>...</td>\n", | |
" <td>No</td>\n", | |
" <td>No</td>\n", | |
" <td>No</td>\n", | |
" <td>No</td>\n", | |
" <td>No</td>\n", | |
" <td>NaN</td>\n", | |
" <td>NaN</td>\n", | |
" <td>white</td>\n", | |
" <td>$11-$25k</td>\n", | |
" <td>10</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>4</th>\n", | |
" <td>5</td>\n", | |
" <td>MOSF w/Sepsis</td>\n", | |
" <td>NaN</td>\n", | |
" <td>No</td>\n", | |
" <td>12035</td>\n", | |
" <td>12037</td>\n", | |
" <td>12037</td>\n", | |
" <td>12036</td>\n", | |
" <td>Yes</td>\n", | |
" <td>0</td>\n", | |
" <td>...</td>\n", | |
" <td>No</td>\n", | |
" <td>No</td>\n", | |
" <td>No</td>\n", | |
" <td>No</td>\n", | |
" <td>No</td>\n", | |
" <td>NaN</td>\n", | |
" <td>64</td>\n", | |
" <td>white</td>\n", | |
" <td>Under $11k</td>\n", | |
" <td>11</td>\n", | |
" </tr>\n", | |
" </tbody>\n", | |
"</table>\n", | |
"<p>5 rows \u00d7 63 columns</p>\n", | |
"</div>" | |
], | |
"metadata": {}, | |
"output_type": "pyout", | |
"prompt_number": 3, | |
"text": [ | |
" Unnamed: 0 cat1 cat2 ca sadmdte dschdte \\\n", | |
"0 1 COPD NaN Yes 11142 11151 \n", | |
"1 2 MOSF w/Sepsis NaN No 11799 11844 \n", | |
"2 3 MOSF w/Malignancy MOSF w/Sepsis Yes 12083 12143 \n", | |
"3 4 ARF NaN No 11146 11183 \n", | |
"4 5 MOSF w/Sepsis NaN No 12035 12037 \n", | |
"\n", | |
" dthdte lstctdte death cardiohx ... meta hema seps trauma ortho \\\n", | |
"0 NaN 11382 No 0 ... No No No No No \n", | |
"1 11844 11844 Yes 1 ... No No Yes No No \n", | |
"2 NaN 12400 No 0 ... No No No No No \n", | |
"3 11183 11182 Yes 0 ... No No No No No \n", | |
"4 12037 12036 Yes 0 ... No No No No No \n", | |
"\n", | |
" adld3p urin1 race income ptid \n", | |
"0 0 NaN white Under $11k 5 \n", | |
"1 NaN 1437 white Under $11k 7 \n", | |
"2 NaN 599 white $25-$50k 9 \n", | |
"3 NaN NaN white $11-$25k 10 \n", | |
"4 NaN 64 white Under $11k 11 \n", | |
"\n", | |
"[5 rows x 63 columns]" | |
] | |
} | |
], | |
"prompt_number": 3 | |
}, | |
{ | |
"cell_type": "heading", | |
"level": 3, | |
"metadata": {}, | |
"source": [ | |
"Firstly, the data needs to be tidied up and converted into a format suitable for the analysis." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"collapsed": false, | |
"input": [ | |
"rhc.swang1 = np.where(rhc.swang1==\"RHC\",1,0)" | |
], | |
"language": "python", | |
"metadata": {}, | |
"outputs": [], | |
"prompt_number": 4 | |
}, | |
{ | |
"cell_type": "code", | |
"collapsed": false, | |
"input": [ | |
"for c in rhc.columns:\n", | |
" if \"Yes\" in rhc[c].values:\n", | |
" rhc[c] = np.where(rhc[c]==\"Yes\",1,0)" | |
], | |
"language": "python", | |
"metadata": {}, | |
"outputs": [], | |
"prompt_number": 5 | |
}, | |
{ | |
"cell_type": "code", | |
"collapsed": false, | |
"input": [ | |
"def oneHot(dataframe):\n", | |
" msk = dataframe.dtypes == object\n", | |
" nominals = dataframe.loc[:,msk].columns\n", | |
" nom_dfs = [pandas.get_dummies(dataframe[n]) for n in nominals]\n", | |
" p=pandas.concat(nom_dfs,axis=1) \n", | |
" dataframe.drop(nominals,axis=1,inplace=True)\n", | |
" return pandas.concat([dataframe,p],axis=1) \n", | |
" " | |
], | |
"language": "python", | |
"metadata": {}, | |
"outputs": [], | |
"prompt_number": 6 | |
}, | |
{ | |
"cell_type": "code", | |
"collapsed": false, | |
"input": [ | |
"rhc = oneHot(rhc)" | |
], | |
"language": "python", | |
"metadata": {}, | |
"outputs": [], | |
"prompt_number": 7 | |
}, | |
{ | |
"cell_type": "code", | |
"collapsed": false, | |
"input": [ | |
"from sklearn.preprocessing import Imputer\n", | |
"imp = Imputer(missing_values='NaN', strategy='mean', axis=0)\n", | |
"imputed = imp.fit_transform(rhc.values)" | |
], | |
"language": "python", | |
"metadata": {}, | |
"outputs": [], | |
"prompt_number": 8 | |
}, | |
{ | |
"cell_type": "heading", | |
"level": 3, | |
"metadata": {}, | |
"source": [ | |
"The second step is to build a model to predict if a patient recieves RHC treatment, based on the other observed variables. The most common model type for this step is logistic regression, but I am also going to try Bayesian Ridge Regression." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"collapsed": false, | |
"input": [ | |
"rhc = pandas.DataFrame(imputed,columns=rhc.columns)" | |
], | |
"language": "python", | |
"metadata": {}, | |
"outputs": [], | |
"prompt_number": 9 | |
}, | |
{ | |
"cell_type": "code", | |
"collapsed": false, | |
"input": [ | |
"X = rhc.drop([\"death\",\"swang1\"],axis=1).values\n", | |
"Y=rhc.swang1.values" | |
], | |
"language": "python", | |
"metadata": {}, | |
"outputs": [], | |
"prompt_number": 10 | |
}, | |
{ | |
"cell_type": "code", | |
"collapsed": false, | |
"input": [ | |
"logit = LogisticRegression(C=1.0, penalty='l1', tol=1e-6)\n", | |
"logit.fit(X,Y)\n" | |
], | |
"language": "python", | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"metadata": {}, | |
"output_type": "pyout", | |
"prompt_number": 11, | |
"text": [ | |
"LogisticRegression(C=1.0, class_weight=None, dual=False, fit_intercept=True,\n", | |
" intercept_scaling=1, penalty='l1', random_state=None, tol=1e-06)" | |
] | |
} | |
], | |
"prompt_number": 11 | |
}, | |
{ | |
"cell_type": "code", | |
"collapsed": false, | |
"input": [ | |
"brr = BayesianRidge()\n", | |
"brr.fit(X,Y)" | |
], | |
"language": "python", | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"metadata": {}, | |
"output_type": "pyout", | |
"prompt_number": 12, | |
"text": [ | |
"BayesianRidge(alpha_1=1e-06, alpha_2=1e-06, compute_score=False, copy_X=True,\n", | |
" fit_intercept=True, lambda_1=1e-06, lambda_2=1e-06, n_iter=300,\n", | |
" normalize=False, tol=0.001, verbose=False)" | |
] | |
} | |
], | |
"prompt_number": 12 | |
}, | |
{ | |
"cell_type": "code", | |
"collapsed": false, | |
"input": [ | |
"propensities = logit.predict_proba(X)\n", | |
"logit_predict = logit.predict(X)\n", | |
"bayesian_ridge = brr.predict(X)\n" | |
], | |
"language": "python", | |
"metadata": {}, | |
"outputs": [], | |
"prompt_number": 13 | |
}, | |
{ | |
"cell_type": "code", | |
"collapsed": false, | |
"input": [ | |
"rhc[\"logit_propensities\"] = propensities[:,1]\n", | |
"rhc[\"bayes_propensities\"]=bayesian_ridge\n", | |
"rhc.head()" | |
], | |
"language": "python", | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"html": [ | |
"<div style=\"max-height:1000px;max-width:1500px;overflow:auto;\">\n", | |
"<table border=\"1\" class=\"dataframe\">\n", | |
" <thead>\n", | |
" <tr style=\"text-align: right;\">\n", | |
" <th></th>\n", | |
" <th>Unnamed: 0</th>\n", | |
" <th>ca</th>\n", | |
" <th>sadmdte</th>\n", | |
" <th>dschdte</th>\n", | |
" <th>dthdte</th>\n", | |
" <th>lstctdte</th>\n", | |
" <th>death</th>\n", | |
" <th>cardiohx</th>\n", | |
" <th>chfhx</th>\n", | |
" <th>dementhx</th>\n", | |
" <th>...</th>\n", | |
" <th>Private & Medicare</th>\n", | |
" <th>black</th>\n", | |
" <th>other</th>\n", | |
" <th>white</th>\n", | |
" <th>$11-$25k</th>\n", | |
" <th>$25-$50k</th>\n", | |
" <th>> $50k</th>\n", | |
" <th>Under $11k</th>\n", | |
" <th>logit_propensities</th>\n", | |
" <th>bayes_propensities</th>\n", | |
" </tr>\n", | |
" </thead>\n", | |
" <tbody>\n", | |
" <tr>\n", | |
" <th>0</th>\n", | |
" <td>1</td>\n", | |
" <td>1</td>\n", | |
" <td>11142</td>\n", | |
" <td>11151</td>\n", | |
" <td>11753.869156</td>\n", | |
" <td>11382</td>\n", | |
" <td>0</td>\n", | |
" <td>0</td>\n", | |
" <td>0</td>\n", | |
" <td>0</td>\n", | |
" <td>...</td>\n", | |
" <td>0</td>\n", | |
" <td>0</td>\n", | |
" <td>0</td>\n", | |
" <td>1</td>\n", | |
" <td>0</td>\n", | |
" <td>0</td>\n", | |
" <td>0</td>\n", | |
" <td>1</td>\n", | |
" <td>0.334628</td>\n", | |
" <td>0.383577</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>1</th>\n", | |
" <td>2</td>\n", | |
" <td>0</td>\n", | |
" <td>11799</td>\n", | |
" <td>11844</td>\n", | |
" <td>11844.000000</td>\n", | |
" <td>11844</td>\n", | |
" <td>1</td>\n", | |
" <td>1</td>\n", | |
" <td>1</td>\n", | |
" <td>0</td>\n", | |
" <td>...</td>\n", | |
" <td>1</td>\n", | |
" <td>0</td>\n", | |
" <td>0</td>\n", | |
" <td>1</td>\n", | |
" <td>0</td>\n", | |
" <td>0</td>\n", | |
" <td>0</td>\n", | |
" <td>1</td>\n", | |
" <td>0.564612</td>\n", | |
" <td>0.590311</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>2</th>\n", | |
" <td>3</td>\n", | |
" <td>1</td>\n", | |
" <td>12083</td>\n", | |
" <td>12143</td>\n", | |
" <td>11753.869156</td>\n", | |
" <td>12400</td>\n", | |
" <td>0</td>\n", | |
" <td>0</td>\n", | |
" <td>0</td>\n", | |
" <td>0</td>\n", | |
" <td>...</td>\n", | |
" <td>0</td>\n", | |
" <td>0</td>\n", | |
" <td>0</td>\n", | |
" <td>1</td>\n", | |
" <td>0</td>\n", | |
" <td>1</td>\n", | |
" <td>0</td>\n", | |
" <td>0</td>\n", | |
" <td>0.550065</td>\n", | |
" <td>0.572651</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>3</th>\n", | |
" <td>4</td>\n", | |
" <td>0</td>\n", | |
" <td>11146</td>\n", | |
" <td>11183</td>\n", | |
" <td>11183.000000</td>\n", | |
" <td>11182</td>\n", | |
" <td>1</td>\n", | |
" <td>0</td>\n", | |
" <td>0</td>\n", | |
" <td>0</td>\n", | |
" <td>...</td>\n", | |
" <td>1</td>\n", | |
" <td>0</td>\n", | |
" <td>0</td>\n", | |
" <td>1</td>\n", | |
" <td>1</td>\n", | |
" <td>0</td>\n", | |
" <td>0</td>\n", | |
" <td>0</td>\n", | |
" <td>0.341432</td>\n", | |
" <td>0.354446</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>4</th>\n", | |
" <td>5</td>\n", | |
" <td>0</td>\n", | |
" <td>12035</td>\n", | |
" <td>12037</td>\n", | |
" <td>12037.000000</td>\n", | |
" <td>12036</td>\n", | |
" <td>1</td>\n", | |
" <td>0</td>\n", | |
" <td>0</td>\n", | |
" <td>0</td>\n", | |
" <td>...</td>\n", | |
" <td>0</td>\n", | |
" <td>0</td>\n", | |
" <td>0</td>\n", | |
" <td>1</td>\n", | |
" <td>0</td>\n", | |
" <td>0</td>\n", | |
" <td>0</td>\n", | |
" <td>1</td>\n", | |
" <td>0.431838</td>\n", | |
" <td>0.464717</td>\n", | |
" </tr>\n", | |
" </tbody>\n", | |
"</table>\n", | |
"<p>5 rows \u00d7 89 columns</p>\n", | |
"</div>" | |
], | |
"metadata": {}, | |
"output_type": "pyout", | |
"prompt_number": 14, | |
"text": [ | |
" Unnamed: 0 ca sadmdte dschdte dthdte lstctdte death cardiohx \\\n", | |
"0 1 1 11142 11151 11753.869156 11382 0 0 \n", | |
"1 2 0 11799 11844 11844.000000 11844 1 1 \n", | |
"2 3 1 12083 12143 11753.869156 12400 0 0 \n", | |
"3 4 0 11146 11183 11183.000000 11182 1 0 \n", | |
"4 5 0 12035 12037 12037.000000 12036 1 0 \n", | |
"\n", | |
" chfhx dementhx ... Private & Medicare black other \\\n", | |
"0 0 0 ... 0 0 0 \n", | |
"1 1 0 ... 1 0 0 \n", | |
"2 0 0 ... 0 0 0 \n", | |
"3 0 0 ... 1 0 0 \n", | |
"4 0 0 ... 0 0 0 \n", | |
"\n", | |
" white $11-$25k $25-$50k > $50k Under $11k logit_propensities \\\n", | |
"0 1 0 0 0 1 0.334628 \n", | |
"1 1 0 0 0 1 0.564612 \n", | |
"2 1 0 1 0 0 0.550065 \n", | |
"3 1 1 0 0 0 0.341432 \n", | |
"4 1 0 0 0 1 0.431838 \n", | |
"\n", | |
" bayes_propensities \n", | |
"0 0.383577 \n", | |
"1 0.590311 \n", | |
"2 0.572651 \n", | |
"3 0.354446 \n", | |
"4 0.464717 \n", | |
"\n", | |
"[5 rows x 89 columns]" | |
] | |
} | |
], | |
"prompt_number": 14 | |
}, | |
{ | |
"cell_type": "code", | |
"collapsed": false, | |
"input": [ | |
"sns.jointplot(\"logit_propensities\", \"swang1\",data=rhc, kind=\"kde\", size=7)" | |
], | |
"language": "python", | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"metadata": {}, | |
"output_type": "pyout", | |
"prompt_number": 15, | |
"text": [ | |
"<seaborn.axisgrid.JointGrid at 0x109771690>" | |
] | |
}, | |
{ | |
"metadata": {}, | |
"output_type": "display_data", | |
"png": "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\nRU5ErkJggg==\n", | |
"text": [ | |
"<matplotlib.figure.Figure at 0x109771410>" | |
] | |
} | |
], | |
"prompt_number": 15 | |
}, | |
{ | |
"cell_type": "code", | |
"collapsed": false, | |
"input": [ | |
"roc_auc_score(Y, logit_predict, average='macro', sample_weight=None)" | |
], | |
"language": "python", | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"metadata": {}, | |
"output_type": "pyout", | |
"prompt_number": 16, | |
"text": [ | |
"0.70704364864460612" | |
] | |
} | |
], | |
"prompt_number": 16 | |
}, | |
{ | |
"cell_type": "code", | |
"collapsed": false, | |
"input": [ | |
"sns.jointplot(\"bayes_propensities\", \"swang1\",data=rhc, kind=\"kde\", size=7, space=0)" | |
], | |
"language": "python", | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"metadata": {}, | |
"output_type": "pyout", | |
"prompt_number": 17, | |
"text": [ | |
"<seaborn.axisgrid.JointGrid at 0x103454250>" | |
] | |
}, | |
{ | |
"metadata": {}, | |
"output_type": "display_data", | |
"png": "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\n7rfxeLwsWbqMTz7w6aD+XEl+BgC1xzuZWJwVtfElMsVdRCQB7NnzLlu3bOKRX/6OhmPH+NuvfIlH\nfvW7U77G3LObz/71F7n0sitiMqZv//u/8h/f+R4VEyfxpc9/lr3mHmYZs8f9cyNxP3y8gyVzy6I9\nzISkuItI0nr2mad46811tLa10Nbayv2feoiVl1zG5k0b+cn/+wFut4dJkybz1a9/g77eXv7tX75J\nZ2cnTY3Huf3Oe7jtjrt46FOfoLCoiPa2Nv7mq1/nW//0D3i9XgIBP//8L/9BadkE/vP7/x/bt20B\n4KprruPuez7EP3/z70lLTaO+vo6mpia+8Y/fwpg9h1tuuJpp06czbXolX/jS35wc68Nf/Bw93e8t\nU8+YUcmXv/r1kx9v27qFJUuXA1A2YQKDvkHaWlvJy88/+TV7dr/LXnMPf3j0N8ydN5/P/tUX8Xg8\nfObBT/Kjn/z8lO/NQ5/6BIYxG9Pcg9vt4lv/9m0KC4tO3v7EY79n1asvn/zY5YJ/+Oa/UjZhaFWg\nq7OT/oF+KiYO7Q+/ZNly3tnwVlBxn1CUicsFe4+0jvu1cmaKu4gkLZcLAgE/P/zRz2huauKTH7+P\niz5wMf/+r//Ezx75Ffn5Bfz0x//Nc88+xezZc7ny6mu55NLLaWw8zmce/CS33XEXLpeLq6++josv\nuZQnHv89889ZwGf/6gts27qZzs5O9u5dS/3ROn7+v79lcHCQB+//KIsXX4jL5aK8ooKvfv0bPPXk\nH3nyz0/w1b/9BsePN/Cr3z1Obm7uKWP97vd/OObfpburi7y890KelZVFZ2fnKXG/cMkyVl56GRUV\nE/k///Yt/vzHx7njrnveF/ah742LC5Ys5QsPf4XH//Ao//vIz/jSl7928vY77rqHO+6656zj6erq\nJCvrvSX1rMws6upqx/w7jEhL8VBWkMmB+g76+n2kpXqC+nPyHtvibhjGEuA/TNO89LTP3wt8HhgE\ndgCfMU1TmwyLSFQsvmAJAEXFxeTk5NDc1ERzcxNf/+qXAejr62XJ0uUsv2gFf3j0N6xZ9SpZ2Vn4\nfO/toDZl2jQAbrr5Nn79y0f4wl8/RHZWNg999q85dPAAi849DwCv18v8cxZw4MB+gJOz2NLSMrZv\n2wpAXn7++8IO8PAXPkdPz3sz9+kzZvA3X/27kx9nZWXT3d118uOuri6yc069NvqNN99CdvbQ51as\nvITVq14Z83tz4ZJlACxYuIh161475bbH//Do+/78P/7TezP3ofF0jxpP5/vGM5YppdkcO9HN3tpW\nzplRNP4fkFPYEnfDML4C3Ad0nvb5DOBbwHzTNHsNw/gdcAPwTOxHKSLJ4N13d3Lr7XfS3NxMb28v\nJaWllJaW8Z3v/RdZWVmsXbOKnJxcfvebXzH/nIXcdsddbNq4gXVvvH7yPkauZPba2tUsOvc8PvnA\np3npxef59S9/waWXX8GzTz/JPR/8MIODA+zYto3rrr+J9WcZj9t15pOYvvt/x565L1i0iB/+1/f5\n0Ic/RkPDMQKBAHl5eSdvDwQC3Hfvnfz057+ktLSMdza8zZw588a8z107t7Po3PPZsX0blZUzT7nt\nzrvv5c677z3rn83KzibFm0JdbS0VEyfy9lvruf9TD435eKPNmJjLhj3H2by3UXEPg10z92rgNuDX\np32+F1hmmubI7gVeQOdCiEjU1B45zOc+8wDdnV185Wt/h9vt5osPf5Uvff4z+P0BsrOz+Yd/+hcC\ngQDf+86/s3bNKqbPqCQrM5OBgVO3SJ0zZx7//M2/IyXlp/h8fr748FeYZcxm86Z3eOATH2ZgYIAr\nrrwaY/YcYGjpe+R3F65TPheq2bPnsmjRedz/8fsI+AMnZ/WbNm5g29YtfOL+B/m7b3yTv/3Kl0hN\nTaOysoqbb70d4IzvuQM88dgf+Mn/+2+ysrL45rf+LeQxfeXrf88/fuNr+H1+lixb/r6j98cyqTib\nzDQvm8xGPnyVgdsd3vclWbkCAXtWvA3DmAY8aprmsrPc/lfANaZpXj/W/bR09GnJXkTC8tyzT9Ha\n2sqH7vuo3UOx1f/97rf5wsNfOeVzn3nwk/z7t793yuw/FmoONtHT5wPgL+8cZlt1M1+6eyHzp2v2\nfrqSkpyzvuJx3AF1hmG4gW8DVcDtNg9HRBLcyIw5mX3wvo/YPYSTcnMzSBsY2plu+YKJbKtu5s1d\nDVx64TR7BxZnHBd34CcMLc/fqgPpRCSarr/hZruH4Agjm9qMdqZl+lhob+85OXPPTnVTVpDB27uO\nYdY0UpibbsuYnKqk5OwHKNq9/WwAho6QNwzjAcMwzgU+AcwHVhmGsdowjFtsHaGIiNjC5XJx7swS\nAgF4ZVNwp9HJENvec7eK3nMXEUkco99zBxj0+fnpM+/SP+Dj/zy0nLysVBtH5yxx9Z67iNiv2uKd\nwaom54//RSJn4PW4WTavjJc31vLCW4e45/KZ4/8hUdxFko3V4bbiMRV/Gcs5M4p4690GVm2u5dLz\nJlJWkGn3kBxPy/IiCcqOiFtJwU9Opy/Lj9hzuIWn1x1k3rQCvnT3orD3A0gkWpYXSXDxHvIzOdPf\nScFPXsbkfKZNyGHXwRbe2XOcC+foanFjUdxF4lAixjwYp/+9Ffvk4XK5uHLxZB55fje/eWkvxuR8\n8rLT7B6WY2lZXiQOJGvMQ6XYx7+zLcuP2GgeZ9XmOuZNK+CLdy86ua9/MtKyvEgcUtBDN/p7ptAn\npvNnlXCwvoNdB1t4acMRrlkyxe4hOZLiLuIgCrp1tISfmFwuF9cuncIvXtjDE2uqmVqWzZxphXYP\ny3G0LC9iMwU99hR65xpvWX5EbWMnv19VTXqKh298bHFSnh431rK84i5iEydGvbo2umOqmuS8qCr0\nzhJs3AG21zTz4obDTCjM5O8/cj6Z6SlRHp2zKO4iDuGEoEc74OFwSvQVevuFEneAVZtr2Wg2MnNS\nHg/fvYjUFE8UR+csiruIzeyKuhNDHgwnxF6ht0eocff7Azzz5kHMI60sqCzic7edg9dj9zXRYkNx\nF7GBLdu8xmnMx2Nn7BX52Ao17gA+n58/vb6fA/UdLJlTygM3zsPtTvxT5BR3kRiKddQTNehnY1fo\nFfnYCCfuAP2DPh5fXUNdUxfL5k3gk9fPSfjAK+4iMRDLqCdb0M8m1qFX4KMv3LgD9PX7eGxNNfXN\n3SyZW8b9N8zB407cJXrFXSSKYhX1WAe9pq7NkvupnJhnyf2MJ5ahV+SjJ5K4A/QNDM3gjzZ3ccHs\nUh64cW7CvgevuItEQaJE3aqIhyqa0Y9F6BX46Ig07jAU+CfWDC3RnzOjkM/ccg5pqYl3FL3iLmKh\neI66XSEPRjRir8jHHyviDkPvwT/1xgEO1HdQWZHL5+9cSHZGYp0Hr7iLWCTaYbc66E6O+VjiLfQK\nvHWsijuAzx/g+bcOsftQC+VFmTx89yIKc9MtuW8nUNxFIhSL2bpVYY/XoJ+N1aGPVuQVeGtYGXeA\nQCDAqi11bDIbKchJ48v3LKK8KMuy+7eT4i4SgXiYrccq6PuOjP84MydH7710K0Mfjcgr8JGzOu4w\nFPi3dzfw2rZ6stK9fPGuRcyoyLX0MeyguIuEwelRj1bQgwl4uKwKv5Mjr8BHJhpxH7GtpomX3jlC\nitfN5247h/nTi6LyOLGiuIuEKJphd1LUoxny8VgReqdGXoEPXzTjDrCvtpWn1x0E4IEb53LhnLKo\nPVa0Ke5cEwUzAAAgAElEQVQiIYhW2J2w/G5nzMcSaeidGHkFPjzRjjvA4YYO/vTafgYG/Xz4aoNL\nzp0Y1ceLFsVdJEhODXskUXdq0M8mktBbFXkF3j6xiDvAsRPdPL6mhp6+QW67eAbXL5uKyxVf29Uq\n7iJBcGLYkynqp0uUyCvwoYlV3AFOtPfyh9XVdHQPcNUFk7nrsirccRR4xV1kHNEIux2zdSuDXl9f\nb8n9lJeXR3wf4YbeishHGnjFPTSxjDtAR3c/j62uprm9j+XzJ/Dx62bHzX70irvIOKyOe6xn61ZE\n3aqYjyfc2CvwySHWcQfo6Rvk8TU1HDvRzaKqYh66ZT4pXucHXnEXGUMyhz1WQT+TeIu8Ah8bdsQd\noH/Ax59f38+hhk4WVRXzmVvnO/6CM4q7yFnEc9jDjbqdQT+bcEIfTuTtDLziHhy74g4w6PPzx7U1\nHGroZLFRwoM3z3P0Ev1YcXfuqEXijNPDXl9f78iwQ3hjC+d7UFPXFtFBipH8jGN1wSEJn9fj5raL\nK5lUksVGs5FHntuNP04nwIq7JC0rn2xjFfZ9R9pCjlo0ot7WsO99v6wQi8BD4u2/L9ZJ8bq5fWUl\n5UWZrN/VwNNvHLB7SGHRsrwkLaviHsuwh8KqoEcS7ryymWH/2VCW6mP9PryW56PHzmX50bp7B/j1\nS3tp6+rnwZvmsWSu83ay07K8yGniLeyhiiTsVs7II7mfUP4OmsGL1TLTU7h95QxSvW4eeW43B+rb\n7R5SSBR3kTA58T32SJbgrVxet+r+Qw18uO/Dh0rvvSeH4rwMbrxoGgM+Pz975l0GBu1fUQiW4i7i\ncNHeaS7aUT/T44XCqQcBSnKorMjjvJnFHDvRzVNvHLR7OEFT3CXpWDFzcuL77OFEMJZRj+Rxo71E\nH+vZu8SXixdWkJeVygtvH+LgsfhYnlfcRWIoWu/xhhr2WM/WrRiDEwMvySE1xcPVF04mEICn4uTo\necVdxKFCeZ89FHZH/XTRCryT6X33+DNtQi4VRZlsq27maFOX3cMZl+IuEiItx8aHWMze9f9Ccrlw\nztDpcC+9c9jmkYxPcZekYueMKRrLvvE+ax/h1HGJjFY1MY+sDC9b9jXh9D1ibIu7YRhLDMNYfYbP\n32gYxgbDMN40DON+O8YmYrdoHCGfKAFNlKV5iT9ut4vJJdl0dA/Q2Npj93DGZEvcDcP4CvAzIO20\nz6cA3wOuBFYCnzIMozT2IxSRsbQeq37fr0hF48VHtE8jlOQzsTgLgH21zv5/y66ZezVwG3D61nlz\ngGrTNNtM0xwA3gAujvXgREREzqQgZ2hO2tLRZ/NIxua140FN0/yTYRjTznBTLjD65VAHENk1GkVE\nJG7k5maQNuC3exhnldnWC0BebjolJTk2j+bsbIn7GNqA0d+tHKDFprGIiEiMtbf3OOLCMWfT0TEU\n9+7ufhobO2wdy1gvLpwW9z3ATMMwCoAuhpbkv2PvkERERIacGF6Oz8tOtXkkY7M77gEAwzDuBbJN\n0/yZYRhfAv7C0PEAPzdNU4fGilggr2ymZQet5U+osuR+Rovk8rBnE+6lYEXO5nDD0Gx99pQCm0cy\nNtvibprmQWD58H8/OurzzwLP2jQsEUeYOTlPR3qfRSjXeRex0qDPT21jFxMKM8nPThv/D9hIm9hI\nUqmanG/bY1dOtH4WGWroojE7toJTxhWNn5Ekjp0HTjAw6OfcmcV2D2VcirtIiKom2fcCIdmF8mIm\nFkvy+n8hefj9Ad5+twGvx8WVF0y2ezjjUtxFYiiUmWGwcQpn9u6UmbKTxhJLdq4gSXh2HjhBW1c/\nKxZWOH5JHhR3kbA4bcYWzvvQdkc11MeP9qxdS/JyNh3d/azeUkdqipvrlky1ezhBUdwl6dg9a4rG\n7B3CD7wdkU+EsDvtBZ5ERyAQ4IW3D9M34OOey2ZSlJdu95CCoriLhClWT+7RDjzEdhbvtLCLjGXT\n3kYOHutg/vRCVi6qsHs4QVPcRWwQ6kwxVoGP1kw+3PuORdhjPWu3e+VIgldztI3VW+rIyUzh49fN\nweU6/XIozuVy+jVpx9PS0RfffwGxjVXXdq+uDf9+Qr3Ge6jnvltxedRwN76J5EVCqC9QYhl2UNyj\nqeZgkyO2nz3e0s1vX9kHAfjKh86lssJ5q0IlJTlnfbWhuEvSsirukPiBjyWFPbk5Ie5tnX389pV9\ndPYM8Jlb5rN4tjOvPD5W3LUsL0nLyifaSJ7wo7lED0OxjIdd3cIZZ7gHz9kRdokP7V39PLqqms6e\nAe68tNKxYR+P4i5iEScHHt6Lp9NCH27U4+10N83ana+ju59HX91He1c/t6yYzrVxctrbmWhZXpKe\nlcvzENslegh9mf50di3bh/siI9bL8CMinbUr7sGxa1m+rbOPP6yuprWzn5sumsYtK2bEfAyh0nvu\nIuNwUuDBnshD9EMfyaqBXVEHhT2W7Ih7Y2sPj62upqt3kBuWT+PWFdPj4sh4xV0kCIkQeLAm8iMi\njb0VbwHEc9RBYQ9VrONe19jJE2v3D29SU8VVF06J2WNHSnEXCYLVcT95vwkQeTtEsiGNwh6/Yhn3\n/UfbePKNA/j9AT5+3RwuOsdZx6OMR3EXCVKiBX5EPIXe7qiDdUfFK+6hi1Xcdx08wQtvHcLjdvPQ\nrfNZVOX8y7ieTnEXCUG0Ag/2Rx6cGfpIt411WtRBYQ9XLOK+yTzOq5vryEj18Pk7FzIrTn9WirtI\niJwceLAm8iPsir0V+8BbeWqbwu4M0Yx7IBDgjR3HWL/rGLmZKTx8z7lMLs2OymPFguIuEqZkivxo\n0Qi+lRd1cWrUQWGPVLTi7vcHeGVTLVurmyjJT+fhe86lND/D8seJJcVdJALRDDw4O/LjGf0iINpX\nZLN6A5po7DansEcuGnEf9Pl5bv0hzCOtTCrN4uG7FpGXnWbpY9hBcReJULQDD9ZEHuwLfTTEQ9BP\n3rfCbgmr49434OPPr+/ncEMnsybn8de3LyQz3WvZ/dtJcRexSDxFfkS8xT4aW8RGe094hd06Vsa9\nu3eAJ9bWcOxED4uqivn0zfNITfFYct9OoLiLWCgWgQfrIz/CibGP1p7vinr8sSru7V39PLa6mhMd\nfXzgnHI+eq2Bx51Yl1NR3EWiIN4jP1qsgx/NC7jE6sptCnt0WBH3lo4+fr9qHx3dA1yzZAp3XlIZ\nF9vJhkpxF4miWEUeYhP600US/lhdhS3Wl2JV2KMn0ri3dPTx6KtD12K/feUMrl82zbrBOYziLhID\niR55p7Hj2uqKevRFEvcTHb38/tWha7HfdWkV1yyJn33iwzFW3BPjkEERBxh54o9F5EeHLZlCb0fQ\nQVGPB21d/UkV9vEo7iIWGx2CWIceEi/2dgUdFPV40dU7wGOrh8J+5yWVSR92UNxFoiqWs/mTjxnn\nsbcz5ifHoKjHjb4BH0+sqaGlo49rl07h2qVT7R6SIyjuIjEQ69n8KY99hlg6KfhOiPkIRT2++P0B\nnnrjAA0tPaxYUM4dKyvtHpJjKO4iMWbHbP59YxgjqNEKv5MiPpqCHr/WbK3j4LEOzplRyEeuMRLy\ndLdwKe4iNrFzNj8Wp0bYKop5Yti5v5mNZiMTCjN58Kb5CbdBTaQUdxEHcGroE4WCnliOt/Twl3eO\nkJHm5fN3LEiYveKtpO+IiMMo9NZQ0BPTwKCfZ9YfxOcP8Kkb51JWmGn3kBxJcRdxMIU+eIp5cli7\ntY7mtl4uP28SC6uK7R6OYynuInHi9Hgle+wV8+RzuKGDzfuaKC/K5M5LdWT8WBR3kTiVbLFXzJOb\nzx/gpY1HcAH33zA3oS7dGg2Ku0iCOFP84jX4CrmcbqN5nBPtfVxy7kSml+faPRzHU9xFEtjZIumk\n6CvkMp7uvkHe3HmM7Awvt108w+7hxAXFXSQJhRLUSF4IKNxihXd2NzAw6OeOlZVkZ6TYPZy4EPO4\nG4bhBn4ELAD6gPtN06wZdfutwNeBAPCIaZo/jvUYReQ9CrTYqbt3gM37msjLSmXlogq7hxM37NjS\n5xYg1TTN5cDXgO+edvv3gCuBi4CHDcPIi/H4RETEITbva2Jg0M91y6bqILoQ2BH3i4AXAUzTfBtY\nfNrtA0A+kAG4GJrBi4hIkvH5A2yrbiIj1cPFCzRrD4Udcc8F2kd97Bteqh/xXWATsBN4xjTN0V8r\nIiJJoqauja7eQZafU05aqmbtobDjgLp2IGfUx27TNP0AhmFMAT4HTAW6gd8YhnGHaZpPxH6YIiIS\na7m5GaQN+AHYve4gALdeNpOSkpwx/pSczo64rwNuBB43DGMpsH3UbemAD+gzTdNvGMZxhpboRUQk\nCbS399DT56NvwEd1bSuTSrPI9LhobOywe2iOM9YLHjvi/mfgSsMw1g1//HHDMO4Fsk3T/JlhGL8E\n3jQMoxeoBv7XhjGKiIiNaura8PkDLDZK7R5KXIp53E3TDAAPnfbpvaNu/z7w/ZgOSkREHKW6rg2A\n82eV2DyS+KSr24uIiKMEAgEOH+8kLyuViuIsu4cTlxR3ERFxlBPtfXT3DjJnagEul8vu4cQlxV1E\nRBzlSGMnALOm6HjqcCnuIiLiKA0t3QBMn6Crv4VLcRcREUdpONGDx+1iYonebw+X4i4iIo4RCARo\nauuhvCgTr0eJCpe+cyIi4hgd3QMM+gKUF2nWHgnFXUREHKO5vReAssIMm0cS3xR3ERFxjJaOPgBK\n8hX3SCjuIiLiGB3dAwAU5qTbPJL4priLiIhjtHf3A5Cfk2bzSOKb4i4iIo7R1TMIQH52qs0jiW+K\nu4iIOEZP3yAuICPNjouWJg7FXUREHKOnf5D0NC9u7SkfEcVdREQco7ffR1a6Zu2RUtxFRMQx+vp9\nZGpJPmKKu4iIOEb/oJ9MzdwjpriLiIij6GC6yCnuIiLiKClepSlS+g6KiIijeNxKU6T0HRQREUdJ\n8eo0uEgp7iIi4ii6jnvk9B0UERFHUdwjp++giIg4iuIeOX0HRUTEUbweveceKcVdREQcRTP3yOk7\nKCIijuLRzD1iiruIiDiKC8U9Uoq7iIhIglHcRUREEoziLiIikmAUdxERkQSjuIuIiKO4dDxdxBR3\nERGRBKO4i4iIJBjFXUREHEWr8pFT3EVERBKM4i4iIpJgFHcREXEWHS4fMcVdREQkwSjuIiLiKJq3\nR84b6wc0DMMN/AhYAPQB95umWTPq9guA7zL0860DPmKaZn+sxykiIhKv7Ji53wKkmqa5HPgaQyEH\nwDAMF/BT4GOmaa4AXgWm2zBGERGRuGVH3C8CXgQwTfNtYPGo22YBzcCXDMNYA+SbpmnGfIQiImIf\nrctHzI645wLtoz72DS/VAxQDy4EfAFcAlxuGcWmMxyciIhLXYv6eO0Nhzxn1sds0Tf/wfzcD1SOz\ndcMwXmRoZr86tkMUERG7ZGenUVKSM/4XylnZEfd1wI3A44ZhLAW2j7ptP5BtGEbl8EF2K4D/sWGM\nIiJik67OPhobO+wehuON9QLIjrj/GbjSMIx1wx9/3DCMe4Fs0zR/ZhjGJ4HfDR9ct840zRdsGKOI\niEjcinncTdMMAA+d9um9o25fDSyJ6aBERMQxXNqhLmLaxEZERCTBKO4iIiIJRnEXERFJMIq7iIhI\nglHcRUREEsxZj5Y3DGMnkMmZNwIMmKY5I2qjEhGRpKWD5SM31qlw9wIvDP9+JDbDERERkUidNe6m\nae4wDOPrwOdN07wjhmMSEZEkpol75MZ8z900zV8Bn4zRWERERMQC4x5QZ5pmWywGIiIiItYYd/tZ\nwzCOABOB1uFP5Q//dw3wgGmaW6M3PBERSTo6oi5iwZwKtxa4zTTNQtM0C4HrgaeAB4EfRXNwIiIi\nErpg4n6OaZpPjnwwfJW2haZpbgbSozYyERERCUswV4VrNQzj08CvAQ/wQaDZMIw5aBMcERGxmBbl\nIxdMnD8EXAkcBQ4ClwIfAa4Avha1kYmIiEhYxp25m6ZZC9x+hpt+YP1wREREJFLBHC1/DfAvQCHv\nrZZo+1kREYkOrctHLJj33H8AfBHYBQSiOxwRERGJVDBxbzRN89moj0RERARN3K0QTNxfNwzje8CL\nQO/IJ03TfC1qoxIREZGwBRP3JQwtx5972ucvtX44IiIiEqlgjpa/JAbjEBERAcCl7WcjFszR8iuA\nvwGyGDov3gNMMU1zWnSHJiIiIuEIZhOb/wGeZOiFwA+BfcD3ozkoERERCV8wce8xTfMRhi4g0wI8\nANwR1VGJiIhI2IKKu2EYhYAJLGXo4LqSqI5KREREwhZM3L8HPAY8DXyUoc1sNkdzUCIikrx0OF3k\ngr2e+5WmaXYA5wP3Df8SERERBwrmPPc1QJthGM8Bzw5fx11EREQcatyZu2macxm+hjvwz4Zh7DYM\n48dRH5mIiCQnrctHbNy4G4bhBop57zz3tOGPRURExIGCWZZvBboYOsf9703T3BrdIYmIiEgkgon7\n7cDlwLXANYZhvA6sMU3zpaiOTEREkpJL6/IRC2Zv+ZeBlw3DyAduA74O/DWQHeWxiYiISBiC2Vv+\nPxiauecBLwCfZegIehEREcvpujGRC+Y893aG9pZfAMwFfgvcGM1BiYiISPiCifvNwBsMLcl3A+cB\nX4vmoERERCR8wcTdbZrmWuB64I+maR5m6LKvIiIi4kDBxL3bMIwvM/S++7OGYXwe6IjusEREJFkF\nAnaPIP4FE/cPAZnAbaZpngAmMLRjnYiIiOUCqO6RCuZUuFrgn0d9/LdRHZGIiIhEJJhNbCw1vJ3t\njxg6+r4PuN80zZozfN1PgWa9mBARSTKauEcsmGV5q90CpJqmuZyho+6/e/oXGIbxIDAf/YhFRJKO\nnvgjZ0fcLwJeBDBN821g8egbDcNYDlwI/ARdG0hERCRkdsQ9l6GNcUb4hpfqMQyjHPgH4HMo7CIi\nImGJ+XvuDIU9Z9THbtM0/cP/fQdDl5N9nqGj8jMNw9htmuavYjxGERGxSXZ2OiUlOeN/oZyVHXFf\nx9D2tY8bhrEU2D5yg2maPwB+AGAYxkeB2Qq7iEhy6ejoobFR26mMZ6wXQHbE/c/AlYZhrBv++OOG\nYdwLZJum+bPTvlbHVYiIJBk98Ucu5nE3TTMAPHTap/ee4et+GZsRiYiIJBY7DqgTERE5O03dI6a4\ni4iIo6jtkVPcRUREEoziLiIizqLLwkVMcRcREUkwiruIiDiK5u2RU9xFRMRRtCofOcVdREQkwSju\nIiLiKAFN3SOmuIuIiKP4/Yp7pBR3ERFxFJ/iHjHFXUREHGVQcY+Y4i4iIo6iZfnIKe4iIuIoPr/f\n7iHEPcVdREQcxefTzD1SiruIiDiKDqiLnOIuIiKOorhHTnEXERFHGRjUe+6RUtxFRMRR+gZ8dg8h\n7inuIiLiKH39inukFHcREXGU3v5Bu4cQ9xR3ERFxjBSPm54+zdwjpbiLiIhjpKa4NXO3gOIuIiKO\nkZ7qoat3wO5hxD3FXUREHCMnM5XOnkGdDhchxV1ERBwjNzMFgLbOPptHEt8UdxERcYyczFQAWjv7\nbR5JfFPcRUTEMXKGZ+4tmrlHRHEXERHHGJm5t3Qo7pFQ3EVExDHys4fi3tjSY/NI4pviLiIijlGc\nlw5AXVOnzSOJb4q7iIg4RmqKh7ysVGobu+weSlxT3EVExFFKCzLo7Bmgua3X7qHELcVdREQcZWJx\nFgD76lptHkn8UtxFRMRRJpVkA7DvSJvNI4lfiruIiDhKWUEGqV43O/Y3EwgE7B5OXFLcRUTEUTwe\nNzMqcmlq66VOB9aFRXEXERHHqZqYB8DmvY02jyQ+Ke4iIuI4lRV5eD0u3thRj19L8yFT3EVExHHS\nUj3MmVpAU1svuw6csHs4cUdxFxERR1pUVQLAqk21No8k/nhj/YCGYbiBHwELgD7gftM0a0bdfi/w\neWAQ2AF8xjRNrcmIiCSZ8qJMKooy2VbTzIH6dqaX59o9pLhhx8z9FiDVNM3lwNeA747cYBhGBvAt\n4BLTND8A5AE32DBGERFxgBULKwD409qacb5SRrMj7hcBLwKYpvk2sHjUbb3AMtM0R/Yc9AK6NJCI\nSJKaWpbD1LIcdh1sYddBvfcerJgvywO5QPuoj32GYbhN0/QPL783AhiG8VdAlmmar9gwRhERsUFu\nbgZpA/5TPnfDihn86I/b+M1Le/nhly8lPc2OdMUXO75D7UDOqI/dpmme/EkOvyf/baAKuD3GYxMJ\nWfUR6/e/rpqcb/l9isSD9vYeevp8p3wuK8XNBbNL2bD7OD/50zY+eMUsm0bnLCUlOWe9zY64rwNu\nBB43DGMpsP2023/C0PL8rTqQTuwUjWhH+7H1okAS1QfOKae6ro1XN9ayqKqYudMK7R6So7livW+v\nYRgu3jtaHuDjwPlANrBx+Ndro/7If5qm+eTZ7q+lo08vACQsdsbbTnoBIE5Wc7DpfTP3EUebuvjd\nq/vISPXwDx+7gJL8jBiPzllKSnJcZ7st5nG3muIuZ5Os8Q6Xoi9OMFbcAbZVN/GXd44wsTiLv/vI\n+aSnJu/774q7JCwFPLoUfIm18eIO8PLGI2zZ18TCyiI+e9s5eD3JuR+b4i4JQSG3n2Iv0RZM3H3+\nAE+sqeFQQwfnzyrhwZvnJWXgFXeJS4q58yn2YrVg4g4wMOjnibU1HDneyQWzS/nUTXPxuJMr8Iq7\nxA0FPT4p8mKVYOMO0D/g4/E1NdQ1dXG+UcIDN8wlNcUT5RE6h+IujpUIMa+ujc7foWpSfAZToZdI\nhBJ3gL4BH39cW0NtYxeVFbn81R0LyM1MjeIInUNxF0eJt6BHK95WcuoLAYVeQhVq3AEGfX5eePsw\nuw+1UJyXzhfvWkh5UVaURugcirvYzulBj4eAR8Lu+CvyEqxw4g4QCAR4Y0c963c1kJnm5f4b57Ko\nqjgKI3QOxV1s4cSgJ3rEQxXr6CvyMp5w4z5ix/5mXnrnCD5/gGuWTOG2i2ck7JH0irvEjBOCroBH\nJlbBV+jlTCKNO8Dxlm6eeuMALZ39VE7M5aGb51OYm27RCJ1DcZeosyvqTg55TV3buF9TOTEvBiOJ\nTLRjr8jLaFbEHYYOtPvLhsPsOdxKZpqX+66axZK5ZbhcZ+1h3FHcJWpiHXUnxDyYaEeL3S8Gohl6\nRV7AurjD0Pvw22qaWbW5jkGfn3NnFvORqw3ystMsuX+7Ke5iuVhG3a6g2xnxcMUy/tEKvSKf3KyM\n+4jWzj5eeOsQRxq7yEwfnsXPif9ZvOIulop22O2IeTyGPFTRCr8iL1aKRtxhaBa/ZV8Ta7YeZdDn\nZ0FlER+6clZcX1lOcRdLJELUkyHiobAy+Iq8WCFacR/R0tHHXzYc5vDxTlI8bm64aBrXXDiFFG/8\nHVGvuEvEohX2aAU9lhHfd8T6x5o52Z731q2IfTQir8Anj2jHHYZm8bsPtbBqSx3dvYOUFWbw4asM\n5k4rjOrjWk1xl4hEI+xWRz0WMY9GxCMRixcAkcRekZdwxCLuI/r6fby+o54t+xoJBOC8WSXcdWkl\npQWZMXn8SCnuEharo25l0KMdc6eFPFRWh99JkVfgE1ss4z7i2IluXtl4hKPN3XjcLq5cPJkblk8l\nMz0lpuMIleIuIbMy7FZFPVpBj/eQB8uK4IcbeQVegmVH3GFoqd480sqarUdp7+onK93LLStmcMm5\nFY69lKziLiGxKuxOjbrVMa+vr7f0/gDKy8stv88ziST44YRekZfx2BX3EYM+P5vMRtbvOkb/oJ/y\nokzuvqyKc2YUOe7UOcVdguaUsFsV9HgIeaiiFf5wQu+EmbwCn1jsjvuIrp4B3thZz/aaZgIBmDut\ngHsum8mk0my7h3aS4i5BizTudkc9EWMeLCujH2ro7Z7FK/CJwylxH9HY2sPqLXUcPNaBywUXL6zg\nlhUzyMuy/5rxirsExc6whxv1ZI55sCKJfrQjr8DL6ZwWdxh6P/5AfTurttRxor2PtFQPNyybylUX\nTCbF67FtXIq7jCuSsMdz1K2IeVvDPgtGcqq8spmW3+eIcGIfSuTtmsUr7onBiXEf4fcH2FbTxOvb\n6+nt91GYm8Zdl1ZxwexSW96PV9xlTHaE3a6oRxrzaIQ8VFaGP9TQBxt5BV7C5eS4j+jtH2T9rgY2\n7W3E7w9QOTGXey+fxYyK3JiOQ3GXMYUb91iGPdyoO3VmbjUrgh9K6KMVeQVe4iHuI1o6+li7tY69\ntUPPT0vmlnHHykqK8mJz7XjFXc4qlmGPVdSdFPTWY9Vn/Hz+hCpL7v9sIol9sJF38ixegY9f8RT3\nEUeOd7Jqcy0NLT2keNxcvWQK1y2dQnqqN6qPq7jLGTk57KFG3c7l9rMFPFJWvgAIJ/ZWRj7WgVfc\n41c8xh2GDrrbdfAEr207SmfPILmZqdy+cgYXLSjHHaX34xV3OaNw4h5q2J0c9XCDHq2Yj8eq2Ica\n+mAir8CLVeI17iP6B31s2H2cDbsbGPQFmFGRy0evmc3kKJwfr7jL+8R72MONerwFfTyRBj/Y0NsV\neC3PJ594j/uIju5+Vm+pY8/hVtwuuPrCKdx00XTSUq07dU5xl/eJdtyjFfZwou7EJfdoCTf2VkXe\naYFX3ONPosR9xP6j7by88QhtXf0U5abz4asNFlQWWXLfirucwklhj+ZsPZaz9LaGmrAe60zyyiot\nuZ9wQh9M5BV4iaZEizvAwKCfN3ce4509DfgDcMm5E7n7sirSUiKbxSvucopoxt0JYY9V1K0M+lgi\njX2okU+0wCvu8SUR4z7ieEsPz64/SFNbL+VFmXz65vkRvRevuMspQo17NGbt0ViGT7Son0msQh9p\n4BV3CVcixx2Grjq3ZutRNu9txOtxceelVVxx/qSwdrhT3OWkRAx7LKJuZ9DPJpLQWxV5BV6sluhx\nH1Fd18YLbx+ip8/HigXlfOQaI+Trxo8Vd2degV7ijtXXXI9m2FuPVcc07K0N0Tkor62h5uSvUAX7\n9+xoPsoAABaQSURBVI/kYMRgXsRZ/f+NSLyompjHx66ZQ1lBBq9vr+eHf9xB34B1L2qiu32OyGms\nvIpbqOGJxfL72UI+XuDzyyI7pW1krKHM5ke+H5GcTldfXx+168ufSXVtq6VXkhOxU05mCvdcPpMn\nXz/AtppmvvPoFr5w50KyM1Iivm/N3JNItJbk7ViOd1rYWxuqI5qhj/z5SGf54czkx/veJMLsPdLL\nGYtES1qKhztWzmDu1AL2H23nv57YzqDPH/H9Ku7iKFaHPdQl+KH7Dz6OVgT5bPcZyf3GMvBW7OUf\nikguMSziRB6Pm+uXTcWYnE91XRuPrY78OUVxl5iwcjk+WNE8Xz0aUbf6cZxyEKBTZu8iTuZyubh2\nyRQKc9N4ZWMtb+06FtH9Ke4SESuflKOxHB8Kp8TwTGIR+HiavYskotQUD7eumEGq182vX9pLX3/4\nB9jF/IA6wzDcwI+ABUAfcL9pmjWjbr8R+AYwCDximub/xHqMEv+iuW1sLGbsZ3vccA68a2uosWzX\nOxGJrqLcdM43Slm/6xhv727g4oUVYd2PHTP3W4BU0zSXA18Dvjtyg2EYKcD3gCuBlcCnDMMotWGM\nSc/K9zWtWpIPdtYe7eV4O0V7Bh9ve+mHQgfVSbxYVFWEywWvbqol3L1o7Ij7RcCLAKZpvg0sHnXb\nHKDaNM020zQHgDeAi2M/RBEREXvkZKYyozyXI8c7aW7vDes+7Ih7LtA+6mPf8FL9yG2jp3kdQOgX\ngRYREYljOZmpAPQNhHdanB2b2LQDOaM+dpumOTL6ttNuywFaYjUwERGxV25uBmlhBi2RZAxvZJOX\nl0FJSc44X/1+dsR9HXAj8LhhGEuB7aNu2wPMNAyjAOhiaEn+O7EfooiI2KG9vScp9pYfT9vwcnxr\nazeNKWdeZB8r+nbE/c/AlYZhrBv++OOGYdwLZJum+TPDML4E/IWhtwx+bpqmzrEREZGk0T/oY19d\nG0W56VQUZ4V1HzGPu2maAeCh0z69d9TtzwLPxnRQ8j5Vk/ItO2J+5uQ8S46YzyubGdQR8/kTqqJ2\n1Hd+WZWtR8yHuwd9sKfCRbLPvIhYY19tGwODfpbPn4A7jEvBgjaxEQEiv056LEQ77IlOl32VeNA3\n4GPdjnpcwPL5E8K+H8VdIhLq9bjHYuXVxcKZgQY9u43wCm7hsOMxTzfWtd1jeWU4kUQVCAR48e3D\ntHb2c92yqZQVZoZ9X4q7xMTMyda8CBgrMKeL5hJzrGKbX1YV0WOFMmuP1vcrmJ+9lS8SReLV1upm\nzCOtVE3M45YV0yO6L8VdHCWYGWA0A59XVhnSDD5akbci6laG3Umzdl3PXRLRtuomXtl0hMx0L5++\neR4ed2R5VtyTSKjvOQb7JBrsrMuq2TuEHvhwIh/0/Q+HONLQW3E/oUYdorvCoVm7yPjefreBv7xz\nhMw0Lw/fvYjC3PSI79OOU+FExlReXh7UVcaCPXp+RKhH0eeVVYZ8pbjTwzzWkfVWzvrDPWgumLA7\nadYeLh1MJ07k9wdYu+0o7+w5TkF2Kg/fc27Yp76dzhXupvRO0dLRF99/gRgL9eIZoZwOF+zlX4M9\nLS7Yy4iGcxnYUE+Vc+rlYKMZ9aH7H3uFZKy4R2PWHu6SvOIeP2oONiXFJjYd3QM8u/4gR453UlqQ\nwZfvWURxXkZI91FSknPW8+Q0c5cxWXm++4hgz3uP1gwe3otbsJEfiagTIh/JqW2hLMFHEvZo0Hvt\nkij2H23jubcO0dPnY9HMYj5x3Ryyh7ebtYpm7knICbN3sH4GD+HN4keEMpuPdeQjPVc99GMOIgu7\nZu0SrkSeuQ8M+nl9+1E2mo143C7uuXwml503EVeYG9WMNXNX3JNQONe1jqfAQ+wiP/RY1ofeqo1n\nrI46xFfYQXGPN4ka90PHOvjLO0PnsJcVZPDQLfOZUhb6BWFGU9zlfeIx8BB65CH80EeyhW2wwY/G\n7nHhbeAT3NkHdoQdNGtPJokW956+QVZvqWPngRO4XHDVBZO55QMzSEv1RHzfiru8T7TjDqEFHqIf\neYjNwXexFsmpbKGcUhhvYQfFPR4lStwDgQC7Dpxg9dY6evp8TCnN5mPXzWbahFzLHkNxlzNK1sCP\niNfQW3FeupVRB4VdrJMIca9t7Pz/27v3KCnr+47j791lWRZYEJCLilFx4SsCKnjBiFHwoI1aL9Eq\nilEPsU0iaXo0p0lMTtK0/pHYJqY1NY1J1Gqqzck51ZhwYr2BUQSJYJAA0W/FG9dFYGEBWXbZ3ekf\nzzM4DOxtduZ5npn5vM7huHP/wjj73ueZ2efHwtc3snVnM/37VXL1p8Zx8dlj+3xgmmyKuxxRLnGH\nZAUe+h55iGfXfU/k8wAzvQl6WrGGHRT3YlXMcd+1t4WX3tiMh99bp08cxV/NrGfE0L4flOZIFHfp\nVFSBh8JHHuINfVouwS/EUeJyiXlaT3/NTWGXfCvGuLccaGfZ2q2s8A9p70hx0jF1zJ09oeBHX1Tc\npVO5xh2iCTzkFnlIRuij1JeYp+Uz6qCwS+8VU9w7OlKsfm8Hi1dtYV9LG8Pqarhu5slMP3V0zr/e\n1huKu3Qp6sBDtJFPi+M9+kLJR8jTenswmkKFPR8HqVHYi1+xxP2Dhj0sWrmRbbv2079fJZd/8gQu\nOecT1FT3/VPwPaW4S7eKJfDQ98inFUPs8xnxTLkcXa43C//EEXZQ3EtB0uPeuHs/v39jE+s27QZg\nxuQxXHPhyQyrq4l8FsVdutWXuEPugYfcIw/5Cz3kZzd+pp7Ev1DxztaXQ8UWMuqgsMuhkhr35pY2\nlq5pYOXb2+hIwfixQ7lx9vi8/mpbbynu0iN9DTzEF3nIb+gh/7GPSr6O+d7bJXrj2loHhb2UJC3u\n7e0drHx7O0vXNrC/tZ2RRw3g+ln1TJswMpL31buiuEuPxR34tKSFHpIX+0Is3NLboEO8W+ugsJea\npMQ9lUqxblMTL67cxK69rdTWVHHljJO4aNpYqvvl9/fVc6W4S6/kI/CQjMhnKsbgR7HyWi5Bh/ij\nDgp7KUpC3Bsa97HojxvZuO0jKisrmDX1OK6ccSJ1A/vHOlc2xV16LV+Bh+RFPlMhgp90ucY8Ldff\n3VXYpSfijPuefa28vGoza9/fCcAZ9Udz3ayTOWbEoFjm6Y7iLjnJZ+AhP5GHwoU+rVSC39eIZ0tK\n1EFhL2VxxP1AWwevvbmVP7y5lbb2FMePGswNF9Uz8cThkc7RW4q75CzfgYf8RT6t3GOf74hn6ssR\nthR1yUXUcX9ncxMvrNhI00etDBnYn2tnjmPG5GOorIz3w3I9obhLnxVD5NMKHfu0qKJfyHgfST4O\nmamwS66iinvTR60sfH0j6zY1UVkBs886nqvOP4namn4Ff+x8UdwlLwoR+IP3XaDQp0UV/GKVr2Ng\nK+rSV4WOe0dHiuX+IUtWb6GtPcX4sUO5+RJj7KjBBXvMQlHcJW8KGfiDj1Hg0Gcqx+gXYjELRV3y\npZBx397UzNPL1tPQuI/BtdXMuaie8yaPif331XOluEveRRF5iDb0mYo9+oVejQoKE3RQ1MtdIeLe\n3pHitTe3snRNA+0dKc6dNJq5sycwuLY6r48TNcVdCiaqyEN8oU9LUvCjiHdnFHUppHzHvXH3fhYs\nfZ+tO5sZOqg/t3zamDp+ZN7uP06KuxRclJE/+Jgxxz5bPuIfZ7S7Uqigg6Iuh8pn3Ne+18hzKzZw\noK2DGZPHcMPs8QwaUNxb65kUd4lMHJE/+NgJi30xK2TMDz6Goi5HkI+4t7a188KKjax5r5Ga/lXM\nu/QUzpk4Ok8TJkdXcS+ez/xLUUh/w44j8p0FSdHvXhQxP/hYiroUUOOe/Tz58rs07m7hhNGDuf3q\nyYwaNjDusSKnuEtBZH4Dj3NrHroOV7mFP8qIH/bYiroU2PoP9/DU4vfY39rO7LPGct3M+sQs8hI1\nxV0KLkmhz1aK4Y8z4NkUdInK6nd38OzyDQDMu+wUPnXasTFPFC/FXSKV5NBnS1L4kxTsnlDUJSqp\nVIqlaxpYsqaBgTX9+NI1U5h4wrC4x4qd4i6xyQ5A0mOfqdhiGwUFXaKWSqV4ZXUDr65t4OihA7jz\n+tMTu4Jb1BR3SYxi2qqXgIIucckM+8ijBvD1udMYPmRA3GMlhuIuiVTMW/WlTkGXJFj2560KexcU\ndykKRwqKgh8dBV2S5K31O1n8py0MH1KjsHdCcZei1VlwFP2+UcglyRoa9/H0sg+oqa7ijutOV9g7\nEWnczawWeAwYCewBbnX37VnXuROYE5582t3vjnJGKX7dxUnxDyjiUmz2tbTx5Mvv0t6eYv5nJjF2\nZPEt0xqVqLfcbwdWufvdZjYH+BZwR/pCMxsHzAXOcfeUmb1iZr9299URzyklrFzir3hLqXl++Qb2\nNh/g2gvHcUb90XGPk2hRx30G8M/h188A3866fD3wF+6ePl58NdAc0WwiQM+iGPUPAAq1lLu31u/E\nN+yi/rihXDr9hLjHSbyCxd3MbiNjqzy0Fdgdfr0HOGQJLHdvAxrNrAL4PvBHd19XqBlFcqXYikSn\nuaWN55ZvoLpfJbddPpHKyk7XS5FQweLu7g8BD2WeZ2ZPAHXhyTrgsM0fMxsAPAw0AfMLNZ+IiCTP\nkCG11BzoOOS8pUuD48XP+8tJTLbSW92tEKLeLb8EuAxYDlwKvJx5YbjF/htgobv/S8SziYhIzHbv\nbj5kydfdH7Xy6uotDK+r4dxTjmbbtj0xTpcsI0fWdXpZ1HH/CfComS0GWgg+PJf+hPw6oAq4AKg2\ns0vD23zD3ZdFPKeIiCTA0rUNtHek+MwF46juVxX3OEUj0ri7ezNw/RHO/9eMk7XRTSQiIknV3NLG\n2vcbGXVULZ+cNCbucYpKeS50KyIiibf63R20t6eYNe04fYiulxR3ERFJnFQqxap126muqmTGlGPi\nHqfoKO4iIpI423Y1s3NvK1MnHM3g2uq4xyk6iruIiCTO25uaAJg2YWTMkxQnxV1ERBJn3cYmqior\nmDJuRNyjFCXFXUREEqXlQDsf7mpm3LFDqK3R4qW5UNxFRCRRtuz4iFQK6scO7f7KckSKu4iIJMrm\n7fsAqD9Wcc+V4i4iIomyY/d+AI4fpfXac6W4i4hIojTu3k91VSXDhw6Ie5SipbiLiEhipFIpGve0\nMGpYLZUVOipdrhR3ERFJjNa2Dg60dTBCW+19oriLiEhifNR8AIAhA/vHPElxU9xFRCQxWg8Ea7kP\nHay490VFKpWKewYRERHJI225i4iIlBjFXUREpMQo7iIiIiVGcRcRESkxiruIiEiJUdxFRERKjOIu\nIiJSYvrFPUA+mFkt8BgwEtgD3Oru27Oucx8wI7w8BVzt7rujnrXcmFkl8B/AaUAL8Nfu/k7G5VcA\n3wbagIfd/cFYBi1jPXiO7gRuA7aFZ33B3f8v8kEFM5sO3OPus7LO1+tIDlEScQduB1a5+91mNgf4\nFnBH1nWmAZe4e2Pk05W3q4H+7n5e+I3p3vA8zKwa+CFwFrAPWGJmv3X3D2Obtjx1+hyFpgE3u/vK\nWKYTAMzsa8Bngb1Z5+t1JIcpld3yM4Bnwq+fAWZnXhhumYwHfm5mr5jZvIjnK2cHnxt3/wPBN6C0\nicA6d29y9wPAK8AF0Y9Y9rp6jgDOBL5pZovN7K6oh5OD1gHXANlLpel1JIcpurib2W1mtjrzDzAU\nSO9i3xOezjQQ+BFwE/BpYL6ZTYls6PI2hI+fG4D28Iet9GVNGZcd6bmTwuvqOQL4JfAF4CLgfDO7\nPMrhJODuTxLsds+m15Ecpuh2y7v7Q8BDmeeZ2RNAXXiyDtiVdbN9wI/cfX94/UXA6cDqwk4rBNGo\nyzhd6e4d4ddNWZfVATujGkwO6uo5Argv/fkUM/sdMBX4XYTzSdf0OpLDFN2WeyeWAJeFX18KvJx1\nuQGvmFll+P7U+cDrEc5Xzg4+N2Z2LvCnjMveAsab2TAz60+wK/HV6Ecse50+R2Y2FFhtZoPMrIJg\n631FLFNKZ/Q6ksMU3ZZ7J34CPGpmiwk+7TsXDn7Kd527LzCzXxD8D38AeMTd34xt2vLya+BiM1sS\nnp5nZjcCg93952b2FeBZgh80H3L3LXENWsa6e47uAl4keG294O7PdHZHEokUgF5H0hUt+SoiIlJi\nSmW3vIiIiIQUdxERkRKjuIuIiJQYxV1ERKTEKO4iIiIlRnEXEREpMYq7lBUzm2lmC+KeoxiY2crw\nv+eY2T3h11eY2T/FO5mIdKdUDmIjInnm7lPDL08FRofnLQD0w5FIwukgNlJWzGwm8AOgERhDcNTC\nvyVYGOWzwCCgA5gDHAfc7e4zwtveCkwPr/8D4EKgiuCIh/9mZmOBxwkWKuoA/i5cZa2zWX5PsL7B\necAA4A53f97MHgFGACcDXwV2APcBNcB2gvXU3+ni9qOBB4Djwzm+4e4Lzewfw79TPXAC8KC7f9fM\nTgN+SvDD/n5gnruvM7MOYFj4GIMIloLdDFzo7vPM7GyCpUYHZsz1fni0tFvCx37N3b/Ys2dHRPJF\nu+WlHI0H/sbdTyNYPet24EqCaE0BngLmu/tCYIyZnRTe7hbgP4HPAyl3P5Mg9leZ2fnA54AF7n42\n8DWCNQy6kgL6hfdzE8EhlKvDy7a5+6nA8wSrss139zMIov3Lbm5/H/Cwu58FXAX81MwGh7eZAlwc\nzn1XeOz4O4B7w7n/PbwMAHdvAr4N/Mbdv5t+3PBxHgRuDB//hwRLKlcBdxEsE3sm0GFmx3bz7yAi\neaa4Szla6O4fhF8/TrAFfhMw18y+B1xBsKUK8Chws5l9Ahjt7suB2cCV4XvSywi2hicDLwB/b2aP\nh+fd34NZHgBw9zeALcBpBNFOb/FPAHa6++vh9f4HqDezIV3cfjZwdzjf0wRb5CeH97vI3dvcfRvB\n3oshBCu83W9mDwKtfPzDQ1oFh64hXhHONQ5YED7OPcBJ7t4OLCVYXOY7wI/dfXMP/h1EJI8UdylH\nmWtiVxLsen6Vj0P3CB+/Nh4Bbgj/PJpxm6+6+9TwfekZBLvmlxK8P/0swW79nrw33Z41S3q2/Rnn\nZasgeDugs9tXArOy5ksvb9yScf0UUOHuTwDTgNcItuIf6MHcVcC7GY9xJsFqZLj71cAXwzmfMbML\nenB/IpJHiruUo5lmdqyZVRLsav9fgtUD7wOWEyx/WgXg7uuBjQS77v8rvP0i4PNm1s/M6giWGJ4e\nbvXf7O6/AL5MEMzu3ARgZmcBR/FxhNMcGBFejpldD7zv7jsJ4nmk2y8CvhSePwlYRfC+eAWHqzCz\n/wbOcfefAf9AsF57pjYO//DtW8Dw8O0ICN6SeNzMRpjZn4E17v4d4DmCtwJEJEKKu5SbFLAWeIxg\n3fINBB8mqzSzNQRb3S8BJ2bc5lfAWndvCE8/ALwNrCTY2n3Y3V8CfgxcG+6mfpJg67U79Wb2enif\nc9y9I2NO3L2FYC/A/Wa2Gpgfnk5f50i3/zJwrpmtItjFfpO77w2vn/0J2hTBLvVvhvfzfeArmTOE\nf8dzwx9eUgSfN2gFrgPuDR/nFuBz7r4D+Bmw3MxWEPzA8UgP/h1EJI/0aXmRLphZP4It9l+5+1N5\nvu8Xga+7+2tx3F5ESpd+z12kE2ZWAWwCnss17Gb2GDDpCBf9lsO3okVE8kJb7iIiIiVG77mLiIiU\nGMVdRESkxCjuIiIiJUZxFxERKTGKu4iISIn5f45XjvvwfxxeAAAAAElFTkSuQmCC\n", | |
"text": [ | |
"<matplotlib.figure.Figure at 0x1034540d0>" | |
] | |
} | |
], | |
"prompt_number": 17 | |
}, | |
{ | |
"cell_type": "code", | |
"collapsed": false, | |
"input": [ | |
"roc_auc_score(Y, bayesian_ridge, average='macro', sample_weight=None)" | |
], | |
"language": "python", | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"metadata": {}, | |
"output_type": "pyout", | |
"prompt_number": 18, | |
"text": [ | |
"0.80408410466844715" | |
] | |
} | |
], | |
"prompt_number": 18 | |
}, | |
{ | |
"cell_type": "code", | |
"collapsed": false, | |
"input": [ | |
"brr_fpr,brr_tpr, _ = roc_curve(Y, bayesian_ridge) \n", | |
"logit_fpr,logit_tpr,_ = roc_curve(Y,logit_predict)" | |
], | |
"language": "python", | |
"metadata": {}, | |
"outputs": [], | |
"prompt_number": 19 | |
}, | |
{ | |
"cell_type": "code", | |
"collapsed": false, | |
"input": [ | |
"plt.plot(brr_fpr,brr_tpr,color=\"blue\",label=\"BayesianRidgeRegression\")\n", | |
"plt.plot(logit_fpr,logit_tpr,color=\"red\",label=\"LogisticRegression\")\n", | |
"plt.xlabel('False Positive Rate')\n", | |
"plt.ylabel('True Positive Rate')\n", | |
"plt.legend(loc=\"lower right\")" | |
], | |
"language": "python", | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"metadata": {}, | |
"output_type": "pyout", | |
"prompt_number": 20, | |
"text": [ | |
"<matplotlib.legend.Legend at 0x10ad12bd0>" | |
] | |
}, | |
{ | |
"metadata": {}, | |
"output_type": "display_data", | |
"png": "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\n", | |
"text": [ | |
"<matplotlib.figure.Figure at 0x10aae9e90>" | |
] | |
} | |
], | |
"prompt_number": 20 | |
}, | |
{ | |
"cell_type": "heading", | |
"level": 3, | |
"metadata": {}, | |
"source": [ | |
"It looks like the Bayesian Ridge Regression Model has a better ROC, but it is also crucial to minimize the differences in confounding variables between the paired partners. For this reason, the Mahalanobis Distance across all pairings might be a more useful evaluation method. This is a way of describing how similar two cases are, taking into consideration how much variation naturally occurs between the cases for each of their variables. So now we will use the BRR and LR models to match cases, and compare their performance based on the average Mahalanobis Distance between the pairs they generate." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"collapsed": false, | |
"input": [ | |
"rhc['propensities']=propensities[:,1]\n", | |
"rhc['bayesprop'] = bayesian_ridge" | |
], | |
"language": "python", | |
"metadata": {}, | |
"outputs": [], | |
"prompt_number": 21 | |
}, | |
{ | |
"cell_type": "code", | |
"collapsed": false, | |
"input": [ | |
"untreated_df = rhc[rhc.swang1==0].reset_index()\n", | |
"matchings=[]\n", | |
"differences=[]\n", | |
"def greedyMatcher(treated_row,untreated_df=untreated_df,matchings=matchings):\n", | |
" delta_p = np.abs(untreated_df.bayesprop - treated_row.bayesprop)\n", | |
" partner_index = np.argmin(delta_p)\n", | |
" partner = untreated_df.loc[partner_index]\n", | |
" matchings.append((treated_row.death,partner.death,delta_p[partner_index],partner[\"Unnamed: 0\"]))\n", | |
" differences.append((treated_row - partner).values)\n", | |
" untreated_df.drop(partner_index,inplace=True)\n", | |
" \n", | |
" " | |
], | |
"language": "python", | |
"metadata": {}, | |
"outputs": [], | |
"prompt_number": 22 | |
}, | |
{ | |
"cell_type": "code", | |
"collapsed": false, | |
"input": [ | |
"treated = rhc[rhc.swang1==1].reset_index()\n" | |
], | |
"language": "python", | |
"metadata": {}, | |
"outputs": [], | |
"prompt_number": 23 | |
}, | |
{ | |
"cell_type": "code", | |
"collapsed": false, | |
"input": [ | |
"treated.apply(greedyMatcher,axis=1)" | |
], | |
"language": "python", | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"metadata": {}, | |
"output_type": "pyout", | |
"prompt_number": 24, | |
"text": [ | |
"0 None\n", | |
"1 None\n", | |
"2 None\n", | |
"3 None\n", | |
"4 None\n", | |
"5 None\n", | |
"6 None\n", | |
"7 None\n", | |
"8 None\n", | |
"9 None\n", | |
"10 None\n", | |
"11 None\n", | |
"12 None\n", | |
"13 None\n", | |
"14 None\n", | |
"15 None\n", | |
"16 None\n", | |
"17 None\n", | |
"18 None\n", | |
"19 None\n", | |
"20 None\n", | |
"21 None\n", | |
"22 None\n", | |
"23 None\n", | |
"24 None\n", | |
"25 None\n", | |
"26 None\n", | |
"27 None\n", | |
"28 None\n", | |
"29 None\n", | |
" ... \n", | |
"2154 None\n", | |
"2155 None\n", | |
"2156 None\n", | |
"2157 None\n", | |
"2158 None\n", | |
"2159 None\n", | |
"2160 None\n", | |
"2161 None\n", | |
"2162 None\n", | |
"2163 None\n", | |
"2164 None\n", | |
"2165 None\n", | |
"2166 None\n", | |
"2167 None\n", | |
"2168 None\n", | |
"2169 None\n", | |
"2170 None\n", | |
"2171 None\n", | |
"2172 None\n", | |
"2173 None\n", | |
"2174 None\n", | |
"2175 None\n", | |
"2176 None\n", | |
"2177 None\n", | |
"2178 None\n", | |
"2179 None\n", | |
"2180 None\n", | |
"2181 None\n", | |
"2182 None\n", | |
"2183 None\n", | |
"dtype: object" | |
] | |
} | |
], | |
"prompt_number": 24 | |
}, | |
{ | |
"cell_type": "code", | |
"collapsed": false, | |
"input": [ | |
"bayes_matchings = matchings" | |
], | |
"language": "python", | |
"metadata": {}, | |
"outputs": [], | |
"prompt_number": 25 | |
}, | |
{ | |
"cell_type": "code", | |
"collapsed": false, | |
"input": [ | |
"std_dv = rhc.std(axis=0)\n", | |
"differences_df = (pandas.DataFrame(np.array(differences),columns=treated.columns).drop(\"index\",axis=1))\n", | |
"zdifferences_df = (pandas.DataFrame(np.array(differences),columns=treated.columns).drop(\"index\",axis=1))/std_dv" | |
], | |
"language": "python", | |
"metadata": {}, | |
"outputs": [], | |
"prompt_number": 26 | |
}, | |
{ | |
"cell_type": "code", | |
"collapsed": false, | |
"input": [ | |
"bayes_rr_total_mismatch = zdifferences_df.sum().sum()" | |
], | |
"language": "python", | |
"metadata": {}, | |
"outputs": [], | |
"prompt_number": 55 | |
}, | |
{ | |
"cell_type": "code", | |
"collapsed": false, | |
"input": [ | |
"bayes_mahalanobis = zdifferences_df.apply(lambda x : np.sqrt((x.map(lambda y: y**2)).sum()) ,axis=1)" | |
], | |
"language": "python", | |
"metadata": {}, | |
"outputs": [], | |
"prompt_number": 56 | |
}, | |
{ | |
"cell_type": "code", | |
"collapsed": false, | |
"input": [ | |
"np.mean(bayes_mahalanobis)" | |
], | |
"language": "python", | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"metadata": {}, | |
"output_type": "pyout", | |
"prompt_number": 57, | |
"text": [ | |
"12.84069183344517" | |
] | |
} | |
], | |
"prompt_number": 57 | |
}, | |
{ | |
"cell_type": "code", | |
"collapsed": false, | |
"input": [ | |
"untreated_df = rhc[rhc.swang1==0].reset_index()\n", | |
"matchings=[]\n", | |
"differences=[]\n", | |
"def greedyMatcher(treated_row,untreated_df=untreated_df,matchings=matchings):\n", | |
" delta_p = np.abs(untreated_df.propensities - treated_row.propensities)\n", | |
" partner_index = np.argmin(delta_p)\n", | |
" partner = untreated_df.loc[partner_index]\n", | |
" matchings.append((treated_row.death,partner.death,delta_p[partner_index],partner[\"Unnamed: 0\"]))\n", | |
" differences.append((treated_row - partner).values)\n", | |
" untreated_df.drop(partner_index,inplace=True)" | |
], | |
"language": "python", | |
"metadata": {}, | |
"outputs": [], | |
"prompt_number": 58 | |
}, | |
{ | |
"cell_type": "code", | |
"collapsed": false, | |
"input": [ | |
"treated = rhc[rhc.swang1==1].reset_index()\n", | |
"treated.apply(greedyMatcher,axis=1)" | |
], | |
"language": "python", | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"metadata": {}, | |
"output_type": "pyout", | |
"prompt_number": 59, | |
"text": [ | |
"0 None\n", | |
"1 None\n", | |
"2 None\n", | |
"3 None\n", | |
"4 None\n", | |
"5 None\n", | |
"6 None\n", | |
"7 None\n", | |
"8 None\n", | |
"9 None\n", | |
"10 None\n", | |
"11 None\n", | |
"12 None\n", | |
"13 None\n", | |
"14 None\n", | |
"...\n", | |
"2169 None\n", | |
"2170 None\n", | |
"2171 None\n", | |
"2172 None\n", | |
"2173 None\n", | |
"2174 None\n", | |
"2175 None\n", | |
"2176 None\n", | |
"2177 None\n", | |
"2178 None\n", | |
"2179 None\n", | |
"2180 None\n", | |
"2181 None\n", | |
"2182 None\n", | |
"2183 None\n", | |
"Length: 2184, dtype: object" | |
] | |
} | |
], | |
"prompt_number": 59 | |
}, | |
{ | |
"cell_type": "code", | |
"collapsed": false, | |
"input": [ | |
"std_dv = rhc.std(axis=0)\n", | |
"differences_df = (pandas.DataFrame(np.array(differences),columns=treated.columns).drop(\"index\",axis=1))\n", | |
"logit_zdifferences_df = (pandas.DataFrame(np.array(differences),columns=treated.columns).drop(\"index\",axis=1))/std_dv" | |
], | |
"language": "python", | |
"metadata": {}, | |
"outputs": [], | |
"prompt_number": 60 | |
}, | |
{ | |
"cell_type": "code", | |
"collapsed": false, | |
"input": [ | |
"logit_total_mismatch = logit_zdifferences_df.sum().sum()" | |
], | |
"language": "python", | |
"metadata": {}, | |
"outputs": [], | |
"prompt_number": 61 | |
}, | |
{ | |
"cell_type": "code", | |
"collapsed": false, | |
"input": [ | |
"logit_mahalanobis = logit_zdifferences_df.apply(lambda x : np.sqrt((x.map(lambda y: y**2)).sum()) ,axis=1)" | |
], | |
"language": "python", | |
"metadata": {}, | |
"outputs": [], | |
"prompt_number": 62 | |
}, | |
{ | |
"cell_type": "code", | |
"collapsed": false, | |
"input": [ | |
"logit_total_mismatch,bayes_rr_total_mismatch" | |
], | |
"language": "python", | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"metadata": {}, | |
"output_type": "pyout", | |
"prompt_number": 63, | |
"text": [ | |
"(5471.3492512385146, 5170.1015348706787)" | |
] | |
} | |
], | |
"prompt_number": 63 | |
}, | |
{ | |
"cell_type": "code", | |
"collapsed": true, | |
"input": [ | |
"np.mean(logit_mahalanobis),np.mean(bayes_mahalanobis)" | |
], | |
"language": "python", | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"metadata": {}, | |
"output_type": "pyout", | |
"prompt_number": 64, | |
"text": [ | |
"(12.799443242725493, 12.84069183344517)" | |
] | |
} | |
], | |
"prompt_number": 64 | |
}, | |
{ | |
"cell_type": "heading", | |
"level": 3, | |
"metadata": {}, | |
"source": [ | |
"While there is little difference in the overall matching performance, with the total mismatch being slightly lower for the Bayesian Ridge Regression model, the Logistic Regression based approach is slightly better, according to the Mahalanobis score. There is not much difference between the two methods, but since the Bayesian Ridge Regression model is slightly better at predicting treatment group assignment, it is probably the better choice." | |
] | |
}, | |
{ | |
"cell_type": "heading", | |
"level": 3, | |
"metadata": {}, | |
"source": [ | |
"Having now chosen a matching scheme, we can use the matched pairs to calculate the odds ratio between the RHC-treated and untreated cohorts. " | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"collapsed": false, | |
"input": [ | |
"treated_deaths = sum([x[0] for x in bayes_matchings])\n", | |
"untreated_deaths = sum([x[1] for x in bayes_matchings])\n", | |
"treated_survivors = 2184-treated_deaths\n", | |
"untreated_survivors = 2184-untreated_deaths" | |
], | |
"language": "python", | |
"metadata": {}, | |
"outputs": [], | |
"prompt_number": 28 | |
}, | |
{ | |
"cell_type": "code", | |
"collapsed": false, | |
"input": [ | |
"contingency = pandas.DataFrame(np.array([[treated_deaths,untreated_deaths],[treated_survivors,untreated_survivors]]),columns=[\"Treated\",\"Untreated\"],index=[\"Deaths\",\"Survivals\"])" | |
], | |
"language": "python", | |
"metadata": {}, | |
"outputs": [], | |
"prompt_number": 29 | |
}, | |
{ | |
"cell_type": "code", | |
"collapsed": false, | |
"input": [ | |
"contingency = contingency.T\n", | |
"contingency" | |
], | |
"language": "python", | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"html": [ | |
"<div style=\"max-height:1000px;max-width:1500px;overflow:auto;\">\n", | |
"<table border=\"1\" class=\"dataframe\">\n", | |
" <thead>\n", | |
" <tr style=\"text-align: right;\">\n", | |
" <th></th>\n", | |
" <th>Deaths</th>\n", | |
" <th>Survivals</th>\n", | |
" </tr>\n", | |
" </thead>\n", | |
" <tbody>\n", | |
" <tr>\n", | |
" <th>Treated</th>\n", | |
" <td>1486</td>\n", | |
" <td>698</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>Untreated</th>\n", | |
" <td>1409</td>\n", | |
" <td>775</td>\n", | |
" </tr>\n", | |
" </tbody>\n", | |
"</table>\n", | |
"</div>" | |
], | |
"metadata": {}, | |
"output_type": "pyout", | |
"prompt_number": 30, | |
"text": [ | |
" Deaths Survivals\n", | |
"Treated 1486 698\n", | |
"Untreated 1409 775" | |
] | |
} | |
], | |
"prompt_number": 30 | |
}, | |
{ | |
"cell_type": "code", | |
"collapsed": false, | |
"input": [ | |
"odds = contingency/2184\n", | |
"odds" | |
], | |
"language": "python", | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"html": [ | |
"<div style=\"max-height:1000px;max-width:1500px;overflow:auto;\">\n", | |
"<table border=\"1\" class=\"dataframe\">\n", | |
" <thead>\n", | |
" <tr style=\"text-align: right;\">\n", | |
" <th></th>\n", | |
" <th>Deaths</th>\n", | |
" <th>Survivals</th>\n", | |
" </tr>\n", | |
" </thead>\n", | |
" <tbody>\n", | |
" <tr>\n", | |
" <th>Treated</th>\n", | |
" <td>0.680403</td>\n", | |
" <td>0.319597</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>Untreated</th>\n", | |
" <td>0.645147</td>\n", | |
" <td>0.354853</td>\n", | |
" </tr>\n", | |
" </tbody>\n", | |
"</table>\n", | |
"</div>" | |
], | |
"metadata": {}, | |
"output_type": "pyout", | |
"prompt_number": 31, | |
"text": [ | |
" Deaths Survivals\n", | |
"Treated 0.680403 0.319597\n", | |
"Untreated 0.645147 0.354853" | |
] | |
} | |
], | |
"prompt_number": 31 | |
}, | |
{ | |
"cell_type": "code", | |
"collapsed": false, | |
"input": [ | |
"log_odds_ratio = np.log((treated_deaths*treated_survivors)/(untreated_deaths*untreated_survivors))\n", | |
"log_odds_ratio" | |
], | |
"language": "python", | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"metadata": {}, | |
"output_type": "pyout", | |
"prompt_number": 32, | |
"text": [ | |
"-0.05143621321195032" | |
] | |
} | |
], | |
"prompt_number": 32 | |
}, | |
{ | |
"cell_type": "code", | |
"collapsed": false, | |
"input": [ | |
"log_odds_se = np.sqrt((1/treated_deaths + 1/treated_survivors+ 1/untreated_deaths + 1/untreated_survivors))" | |
], | |
"language": "python", | |
"metadata": {}, | |
"outputs": [], | |
"prompt_number": 33 | |
}, | |
{ | |
"cell_type": "code", | |
"collapsed": false, | |
"input": [ | |
"lower_log_ci = log_odds_ratio - 1.96*log_odds_se\n", | |
"upper_log_ci = log_odds_ratio + 1.96*log_odds_se" | |
], | |
"language": "python", | |
"metadata": {}, | |
"outputs": [], | |
"prompt_number": 34 | |
}, | |
{ | |
"cell_type": "code", | |
"collapsed": false, | |
"input": [ | |
"np.exp(lower_log_ci),np.exp(log_odds_ratio),np.exp(upper_log_ci)" | |
], | |
"language": "python", | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"metadata": {}, | |
"output_type": "pyout", | |
"prompt_number": 35, | |
"text": [ | |
"(0.83775966539415103, 0.94986423681860843, 1.0769700495935293)" | |
] | |
} | |
], | |
"prompt_number": 35 | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"An odds ratio of 1.0 means there is no effect. Since the 95% confidence interval subsumes the value 1.0, the odds of surviving is not significantly altered by recieving RHC. So, as other analyses of this dataset have shown, the data suggests that patients recieving RHC do not have higher rates of surivival, and that in fact it is more likely that the opposite, since the predicted mean of the log-odds ratio is 0.94. However, it is entirely possible that the dataset fails to capture information upon which doctors base their decision of whether to treat a patient with RHC or not. This could mean that the patients who recieve RHC are already predisposed to die, and that RHC is not responsible for the increased mortality associated with its use.\n" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"collapsed": false, | |
"input": [], | |
"language": "python", | |
"metadata": {}, | |
"outputs": [] | |
} | |
], | |
"metadata": {} | |
} | |
] | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment