Skip to content

Instantly share code, notes, and snippets.

@shlomihod
Last active February 26, 2024 19:26
Show Gist options
  • Save shlomihod/2b9f3a582dc41ad577b976abc522787c to your computer and use it in GitHub Desktop.
Save shlomihod/2b9f3a582dc41ad577b976abc522787c to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {
"id": "Fyjq_FPc56mU"
},
"source": [
"![banner](https://learn.responsibly.ai/assets/banner.jpg)\n",
"\n",
"# Class 4 - Discrimination & Fairness: Technical Report Playground\n",
"\n",
"https://learn.responsibly.ai"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "k8TteJfD56mY"
},
"source": [
"![logo](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABS0AAAFkCAYAAADFbR7IAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAABANpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDYuMC1jMDA2IDc5LjE2NDc1MywgMjAyMS8wMi8xNS0xMTo1MjoxMyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgeG1wTU06T3JpZ2luYWxEb2N1bWVudElEPSJ1dWlkOjVEMjA4OTI0OTNCRkRCMTE5MTRBODU5MEQzMTUwOEM4IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjlDNTRFRjY1QkQ4QzExRUI5RkI0RDEwNkIzNzMzNzIxIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjlDNTRFRjY0QkQ4QzExRUI5RkI0RDEwNkIzNzMzNzIxIiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIElsbHVzdHJhdG9yIDI1LjIgKFdpbmRvd3MpIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InV1aWQ6YTA4NTRjY2EtOWI0OC00ODgwLWFjNmQtNGFhOGFlNGE1ZWYyIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOmY3YTI1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)"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "OBu6_muW56mc"
},
"source": [
"## 1. Setup (NOT IMPORTANT)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "zFWBky1K56md",
"inputHidden": false,
"outputHidden": false,
"outputId": "6a497e1f-f9ea-4175-d2e9-71db96fe5723"
},
"outputs": [],
"source": [
"!wget -q https://stash.responsibly.ai/4-fairness/activity/patients_data.csv -O patients_data.csv\n",
"\n",
"%pip install -qqq git+https://github.com/ResponsiblyAI/railib.git"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"id": "Mjl_wbZN56me",
"inputHidden": false,
"outputHidden": false
},
"outputs": [],
"source": [
"import pandas as pd\n",
"import matplotlib.pyplot as plt\n",
"import seaborn as sns\n",
"from sklearn.model_selection import train_test_split\n",
"from railib.fairness.second import (data_statistics, column_distribution,\n",
" preprocessing, predict_risk_score,\n",
" plot_x_vs_y)\n",
"\n",
"sns.set()"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "Eu6kOmc556mf"
},
"source": [
"## Dataset\n",
"\n",
"The information here is just for reference and it is copied from the pre-calss task. No need to dive into that as a team, because the Data Science students worked with this dataset at home.\n",
"\n",
"### Meaning of column suffixes (endings)\n",
"* _t: indicates this is a time dependent variable from year t (e.g. t = 2020)\n",
"* _tm1: indicates this is a time dependent variable from year t minus 1 (t-1) (e.g. if t = 2021 then t - 1 = 2020).\n",
"\n",
"### Variables categories\n",
"\n",
"#### Can be used as target variables (because they are \"at time t\" ):\n",
"\n",
"* Outcomes at time t: \"outcomes\" for a given calendar year (t): cost, health, program enrollment, and the commercial risk score. \n",
"\n",
"In particular, we have:\n",
"\n",
"| Column Name | Description | Note |\n",
"|--------------------|--------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------|\n",
"| cost_t | Total medical expenditures, rounded to the nearest 100 | The actual target variable used to train the model and produce the risk score |\n",
"| risk_score_t | Commercial algorithmic risk score prediction for cost in year t, formed using data from year t-1 | The actual risk score used by the healthcare insurance company |\n",
"| program_enrolled_t | Indicator for whether patient-year was enrolled in program | |\n",
"| illnesses_sum_t | Total number of active illnesses | |\n",
"\n",
"#### Can be used as \"predictors\" (features): \n",
"\n",
"* **Demographic**: e.g `gender`, `race`, `age`.\n",
"* **Comorbidity variables** at time t-1: indicators for specific illnesses that were active in the previous year. <br> E.g `liver_elixhauser_tm1` which is an indicator for liver disease.\n",
"* **Cost variables** at time t-1: Costs claimed from the patients' insurance payer over the previous year. <br> E.g `cost_laboratory_tm1` which is the total cost for laboratory tests.\n",
"* **Biomarker\\medication** variables at time t-1: indicators capturing normal or abnormal values (or missingness) of biomarkers or relevant medications, over the previous year. <br> E.g `ghba1c_min-low_tm1` which is an indicator for low (< 4) minimum GHbA1c test result.\n",
"\n",
"An indicator is a binary variable: 1 stands for 'True' or 'Has the condition', 0 stands for 'False' or 'Doesn't Have'.\n",
"\n",
"For a detailed description of the dataset and the columns see [this document](https://docs.google.com/document/d/1OFGh7Hkqo8FjcPfBGql7mr8to9Il16XwvLdJkXF1IeU/edit?usp=sharing), but you don't need it.\n",
"\n",
"The EHR (Electronic Health Record) dataset contains 48,784 rows (patients) and 160 columns/variables. "
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 317
},
"id": "WGuKJRdy56mg",
"outputId": "4b7df329-2223-43be-b429-8387830f14a8"
},
"outputs": [],
"source": [
"data = pd.read_csv('patients_data.csv')\n",
"data.head(5)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"id": "QrQSZSpP56mg"
},
"outputs": [],
"source": [
"# Outcome variables at time T (see above)\n",
"outcomes_t = ['illnesses_sum_t', 'cost_t', 'cost_avoidable_t', 'bps_mean_t', 'ghba1c_mean_t', 'hct_mean_t', 'cre_mean_t', 'ldl_mean_t']\n",
"\n",
"# Demographic variables at time T-1\n",
"demographic_tm1 = ['gender', 'race', 'age']\n",
"\n",
"# illness condition variables at time T-1\n",
"comorbidities_tm1 = ['illnesses_sum_tm1', 'alcohol_elixhauser_tm1', 'anemia_elixhauser_tm1', 'arrhythmia_elixhauser_tm1', 'arthritis_elixhauser_tm1', 'bloodlossanemia_elixhauser_tm1', 'coagulopathy_elixhauser_tm1', 'compdiabetes_elixhauser_tm1', 'depression_elixhauser_tm1', 'drugabuse_elixhauser_tm1', 'electrolytes_elixhauser_tm1', 'hypertension_elixhauser_tm1', 'hypothyroid_elixhauser_tm1', 'liver_elixhauser_tm1', 'neurodegen_elixhauser_tm1', 'obesity_elixhauser_tm1', 'paralysis_elixhauser_tm1', 'psychosis_elixhauser_tm1', 'pulmcirc_elixhauser_tm1', 'pvd_elixhauser_tm1', 'renal_elixhauser_tm1', 'uncompdiabetes_elixhauser_tm1', 'valvulardz_elixhauser_tm1', 'wtloss_elixhauser_tm1', 'cerebrovasculardz_romano_tm1', 'chf_romano_tm1', 'dementia_romano_tm1', 'hemiplegia_romano_tm1', 'hivaids_romano_tm1', 'metastatic_romano_tm1', 'myocardialinfarct_romano_tm1', 'pulmonarydz_romano_tm1', 'tumor_romano_tm1', 'ulcer_romano_tm1']\n",
"\n",
"# Cost variables at time T-1\n",
"costs_tm1 = ['cost_dialysis_tm1', 'cost_emergency_tm1', 'cost_home_health_tm1', 'cost_ip_medical_tm1', 'cost_ip_surgical_tm1', 'cost_laboratory_tm1', 'cost_op_primary_care_tm1', 'cost_op_specialists_tm1', 'cost_op_surgery_tm1', 'cost_other_tm1', 'cost_pharmacy_tm1', 'cost_physical_therapy_tm1', 'cost_radiology_tm1']\n",
"\n",
"# Biomarkers (e.g., blood test result) varbles at time T-1\n",
"biomarkers_tm1 = ['lasix_dose_count_tm1', 'lasix_min_daily_dose_tm1', 'lasix_mean_daily_dose_tm1', 'lasix_max_daily_dose_tm1', 'cre_tests_tm1', 'crp_tests_tm1', 'esr_tests_tm1', 'ghba1c_tests_tm1', 'hct_tests_tm1', 'ldl_tests_tm1', 'nt_bnp_tests_tm1', 'sodium_tests_tm1', 'trig_tests_tm1', 'cre_min-low_tm1', 'cre_min-high_tm1', 'cre_min-normal_tm1', 'cre_mean-low_tm1', 'cre_mean-high_tm1', 'cre_mean-normal_tm1', 'cre_max-low_tm1', 'cre_max-high_tm1', 'cre_max-normal_tm1', 'crp_min-low_tm1', 'crp_min-high_tm1', 'crp_min-normal_tm1', 'crp_mean-low_tm1', 'crp_mean-high_tm1', 'crp_mean-normal_tm1', 'crp_max-low_tm1', 'crp_max-high_tm1', 'crp_max-normal_tm1', 'esr_min-low_tm1', 'esr_min-high_tm1', 'esr_min-normal_tm1', 'esr_mean-low_tm1', 'esr_mean-high_tm1', 'esr_mean-normal_tm1', 'esr_max-low_tm1', 'esr_max-high_tm1', 'esr_max-normal_tm1', 'ghba1c_min-low_tm1', 'ghba1c_min-high_tm1', 'ghba1c_min-normal_tm1', 'ghba1c_mean-low_tm1', 'ghba1c_mean-high_tm1', 'ghba1c_mean-normal_tm1', 'ghba1c_max-low_tm1', 'ghba1c_max-high_tm1', 'ghba1c_max-normal_tm1', 'hct_min-low_tm1', 'hct_min-high_tm1', 'hct_min-normal_tm1', 'hct_mean-low_tm1', 'hct_mean-high_tm1', 'hct_mean-normal_tm1', 'hct_max-low_tm1', 'hct_max-high_tm1', 'hct_max-normal_tm1', 'ldl_min-low_tm1', 'ldl_min-high_tm1', 'ldl_min-normal_tm1', 'ldl-mean-low_tm1', 'ldl-mean-high_tm1', 'ldl-mean-normal_tm1', 'ldl_max-low_tm1', 'ldl_max-high_tm1', 'ldl_max-normal_tm1', 'nt_bnp_min-low_tm1', 'nt_bnp_min-high_tm1', 'nt_bnp_min-normal_tm1', 'nt_bnp_mean-low_tm1', 'nt_bnp_mean-high_tm1', 'nt_bnp_mean-normal_tm1', 'nt_bnp_max-low_tm1', 'nt_bnp_max-high_tm1', 'nt_bnp_max-normal_tm1', 'sodium_min-low_tm1', 'sodium_min-high_tm1', 'sodium_min-normal_tm1', 'sodium_mean-low_tm1', 'sodium_mean-high_tm1', 'sodium_mean-normal_tm1', 'sodium_max-low_tm1', 'sodium_max-high_tm1', 'sodium_max-normal_tm1', 'trig_min-low_tm1', 'trig_min-high_tm1', 'trig_min-normal_tm1', 'trig_mean-low_tm1', 'trig_mean-high_tm1', 'trig_mean-normal_tm1', 'trig_max-low_tm1', 'trig_max-high_tm1', 'trig_max-normal_tm1']"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "OIP_uxla56mh"
},
"source": [
"## 3. Data Analysis (USEFUL FUNCTIONS, WE'LL USE THEM IN SECTION 5)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "I8opBRYI56mh",
"outputId": "d9a6b5f3-7dc8-4fca-8307-9d7d9bf9b5c4"
},
"outputs": [],
"source": [
"help(data_statistics)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "FLhxuYAB56mh",
"outputId": "5247f18d-7589-43dc-cd40-203665f01428"
},
"outputs": [],
"source": [
"help(column_distribution)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 300
},
"id": "lYZcJ46x56mh",
"outputId": "8913d921-7744-49c5-b61e-aaec2f2dfabd"
},
"outputs": [],
"source": [
"# describing the outcomes data\n",
"\n",
"data_statistics(data[outcomes_t])"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 285
},
"id": "8Ycv7nHg56mi",
"inputHidden": false,
"outputHidden": false,
"outputId": "a41f6afb-da28-4ef8-f20a-00df02fe8ba8"
},
"outputs": [],
"source": [
"# distribution of the costs\n",
"\n",
"column_distribution(data, 'cost_t', group_column=None, is_count=False)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 285
},
"id": "CD674vZ256mi",
"outputId": "307344ba-172e-41fa-f1be-be9b16beeafc"
},
"outputs": [],
"source": [
"# distribution of the costs for blacks and whites\n",
"\n",
"column_distribution(data, 'cost_t', group_column='race', is_count=False)"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "csBFZSEo56mi"
},
"source": [
"## 4. Model Training (THE TEXT IS IMPORTANT, BUT NOT THE CODE)\n",
"\n",
"The model is **Linear Regression**.\n",
"\n",
"### Features (inputs)\n",
"1. Demographics\n",
"2. illnesses (Comorbidity variables at time t-1)\n",
"3. Detailed healthcare costs (Cost variables at time t-1)\n",
"4. Biomarkers (Biomarker/medication variables at time t-1) \n",
"\n",
"Note: The **race** variable is not included as a feature.\n",
"\n",
"### Objective (output)\n",
"To allocate resources in a cost-efficient manner, the model predicts future expenditures costs (costs at year t: `cost_t`).\n",
"\n",
"### The Risk Score\n",
"The risk score (`risk_score`) of each patient is based on the percentile he belongs to according to the model predictions. Percentiles are important for the company because the assingment to the “high-risk care management” program is based on them.\n",
"\n",
"Through cost-benefit calculations, it was decided that patients above the 97th percentile are automatically identified for enrollment in the program. Those above the 55th percentile are referred to a physician."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "FqzUl1xg56mj",
"outputId": "c0d3361c-3372-4604-c781-1acce49bdaa4"
},
"outputs": [],
"source": [
"help(preprocessing)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "BCEcAvMX56mj",
"outputId": "0ef8996e-334c-446b-8c31-d75649eab819"
},
"outputs": [],
"source": [
"help(predict_risk_score)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "29dzQIMB56mj",
"outputId": "6f942835-fe72-4393-ba47-9403e2f08a79"
},
"outputs": [],
"source": [
"# splitting the data into train and test\n",
"\n",
"train, test = train_test_split(data, test_size=0.4, random_state=42)\n",
"train, test = train.copy(), test.copy()\n",
"\n",
"# defining the features (X_columns) and the target variable (y_column)\n",
"# IMPORTANT: we don't include the race variable to avoid discrimination.\n",
"\n",
"X_columns = demographic_tm1 + comorbidities_tm1 + costs_tm1 + biomarkers_tm1\n",
"X_columns.remove('race')\n",
"\n",
"y_column = 'cost_t'\n",
"\n",
"# fit ,predict and evaluate\n",
"\n",
"train_risk_scores, test_risk_scores = predict_risk_score(train, test, X_columns, y_column)\n",
"train['risk_score'] = train_risk_scores\n",
"test['risk_score'] = test_risk_scores"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "TkNxDaDc56mk"
},
"source": [
"## 5. Risk Score Analysis (THE REALLY IMPORTANT PART)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "kXvMY74U56mk",
"outputId": "2cc5bae6-d325-423f-b7eb-12433680b70c"
},
"outputs": [],
"source": [
"help(plot_x_vs_y)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 394
},
"id": "I4m24WaT56ml",
"outputId": "52db8fc2-a808-454a-fe29-5688116103eb"
},
"outputs": [],
"source": [
"plot_x_vs_y(test, 'risk_score', 'cost_t', group_column=None)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 394
},
"id": "QBD60lyZ56ml",
"inputHidden": false,
"outputHidden": false,
"outputId": "5ac862f2-5dc9-4c58-8d71-ce677b775d46"
},
"outputs": [],
"source": [
"plot_x_vs_y(test,'risk_score', 'cost_t', group_column='race')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 6. Appendix\n",
"\n",
"In case you would like to look on the histogram of various columns."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"column_distribution(test, 'risk_score', group_column=None, cumulative=False,\n",
" is_count=True)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"column_distribution(test, 'risk_score', group_column='race', cumulative=False)"
]
}
],
"metadata": {
"colab": {
"provenance": []
},
"kernel_info": {
"name": "python3"
},
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"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.11.0"
},
"nteract": {
"version": "0.12.3"
}
},
"nbformat": 4,
"nbformat_minor": 1
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment