{ "cells": [ { "cell_type": "markdown", "id": "34ec9328-355b-46dc-a240-ebace87ac8ca", "metadata": {}, "source": [ "#### Survivalpredict general walkthrough" ] }, { "cell_type": "code", "execution_count": 1, "id": "77602431-2f2e-480e-8d0d-621d3971e941", "metadata": {}, "outputs": [], "source": [ "import warnings\n", "warnings.filterwarnings('ignore')\n", "\n", "import numpy as np\n", "import pandas as pd\n", "import matplotlib.pyplot as plt\n", "plt.style.use('ggplot')\n", "\n", "%matplotlib inline\n", "\n", "from survivalpredict.estimators import CoxProportionalHazard, ParametricDiscreteTimePH, KaplanMeierSurvivalEstimator, KNeighborsSurvival, CoxNeuralNetPH\n", "from survivalpredict.strata_preprocessing import StrataBuilderDiscretizer, StrataBuilderEncoder\n", "from survivalpredict.metrics import brier_scores_administrative, integrated_brier_score_administrative\n", "from survivalpredict.validation import sur_cross_val_score\n", "from survivalpredict.model_selection import Sur_GridSearchCV\n", "from survivalpredict.datasets import load_iranian_telecom_churn\n", "\n", "from sklearn.preprocessing import StandardScaler" ] }, { "cell_type": "code", "execution_count": 2, "id": "ba38571c-4299-4314-bdb6-babc035cfeb9", "metadata": {}, "outputs": [], "source": [ "#loading some stock data\n", "iranian_telecom_churn = load_iranian_telecom_churn()\n", "\n", "#X is our design matrix/features\n", "X_raw = iranian_telecom_churn['X']\n", "ss = StandardScaler()\n", "X = ss.fit_transform(X_raw)\n", "\n", "times = iranian_telecom_churn['times'].astype(np.int64)\n", "events = iranian_telecom_churn['events'].astype(np.bool_)\n", "column_names = iranian_telecom_churn[\"column_names\"]" ] }, { "cell_type": "markdown", "id": "e670f71f-3c0a-4016-8ab7-8136ecf9426d", "metadata": {}, "source": [ "**A quick note on time**\n", "\n", "The times array should be the last known interval of survival, regardless of whether the individual experienced the event (i.e., death, churn, conversion) or is still 'alive' or in an unknown state. The times array is assumed to possess the type of integer for 'survivalpredict'. It is up to the user to encode the time array. It is recommended, if possible, to maximize the times array to a few thousand for significant datasets. Presence of large times can trigger a lot of computation for various estimators. It is common to map time to the age of an entity, like the length of time of an individual as a customer." ] }, { "cell_type": "code", "execution_count": 3, "id": "ec5e2f4c-66dc-4248-9854-c44b44f7f59c", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([38, 39, 37, ..., 18, 11, 11], shape=(3150,))" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "times" ] }, { "cell_type": "code", "execution_count": 4, "id": "a4d10825-9b19-4fe6-9c55-b11a11b447c2", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "np.int64(47)" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "times.max()" ] }, { "cell_type": "markdown", "id": "58401410-72c9-44de-84b6-b554a2a2646f", "metadata": {}, "source": [ "**Events**\n", "\n", "The ‘events’ array should indicate if an individual has experienced the event of interest. Meaning that if said individual has churned, failed, converted or whatever else, at the time interval; the row is coded as ‘True’, and ‘False’ if otherwise. It is assumed to be boolean, or castable to boolean type." ] }, { "cell_type": "code", "execution_count": 5, "id": "5cb51c27-f9b1-4251-beb0-7449aec12982", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([False, False, False, ..., False, False, True], shape=(3150,))" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "events" ] }, { "cell_type": "markdown", "id": "302d3288-3e93-4bce-bb2f-acbe22f2cfa1", "metadata": {}, "source": [ "The estimators of survivalpredict are very much like scikit-learn's. But on fit,instead of 'estimator.fit(X,y)' we call 'estimator.fit(X,times,events)'" ] }, { "cell_type": "code", "execution_count": 6, "id": "3a45a721-77e2-43aa-ba52-e222f43c73df", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
CoxProportionalHazard()
In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook.
On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.
" ], "text/plain": [ "CoxProportionalHazard()" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "cox = CoxProportionalHazard()\n", "\n", "cox.fit(X,times,events)" ] }, { "cell_type": "code", "execution_count": 7, "id": "a317e4f7-3deb-417b-8026-ed113863ab17", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{'call_failure': 0.4656662503827164,\n", " 'complains': 1.8829341579938057,\n", " 'charge_amount': -0.40937529187142296,\n", " 'seconds_of_use': 0.29837689062637685,\n", " 'frequency_of_use': -2.173154255802621,\n", " 'frequency_of_sms': -3.0279468588329532,\n", " 'distinct_called_numbers': -0.29707817534951325,\n", " 'age_group': -0.3465183450012194,\n", " 'tariff_plan': 0.134561966604143,\n", " 'status': -0.06233669084308485,\n", " 'age': 0.268829547578736,\n", " 'customer_value': 1.87481967428526}" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "#getting coef for each feature\n", "dict(zip(map(str,column_names), map(float,cox.coef_)))" ] }, { "cell_type": "markdown", "id": "a67cc107-2db8-49f4-84a3-a5a18ce1e41e", "metadata": {}, "source": [ "When we call '.predict' on an estimator, we will get the predicted survival curve for each individual. Each row in the predicted array corresponds to the row we ran predict on. Each column represents a point in time, starting with the ‘1’ interval of the ‘times’ array we trained on. By default, the left-most column goes till the max time seen in the training data, but we can set the max time by the max_time key word argument on predict." ] }, { "cell_type": "code", "execution_count": 8, "id": "9e1ccdb5-554d-40de-a4cf-42f925581a3c", "metadata": {}, "outputs": [], "source": [ "max_time=times.max()\n", "preds = cox.predict(X,max_time=max_time)" ] }, { "cell_type": "code", "execution_count": 9, "id": "e9a9ae9a-bb87-4a3d-b86d-e7a2bea98e8c", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
12345678910...38394041424344454647
01.01.00.9999930.9999890.9999840.9999760.9999590.9999490.9999310.999921...0.9976950.9971240.9965830.9959770.9952729.938953e-018.511736e-017.702958e-017.702958e-017.702958e-01
11.01.00.9999710.9999560.9999330.9999030.9998330.9997930.9997190.999677...0.9905940.9882740.9860810.9836260.9807789.752335e-015.168825e-013.434077e-013.434077e-013.434077e-01
21.01.01.0000001.0000001.0000001.0000001.0000000.9999990.9999990.999999...0.9999720.9999650.9999580.9999510.9999429.999254e-019.980399e-019.968273e-019.968273e-019.968273e-01
31.01.00.9999870.9999810.9999710.9999580.9999270.9999100.9998780.999860...0.9959030.9948890.9939290.9928530.9916039.891640e-017.507322e-016.285442e-016.285442e-016.285442e-01
41.01.00.9999930.9999900.9999840.9999770.9999610.9999510.9999340.999924...0.9977680.9972150.9966920.9961040.9954229.940885e-018.555385e-017.767036e-017.767036e-017.767036e-01
..................................................................
31451.01.00.9999990.9999990.9999990.9999980.9999970.9999960.9999950.999994...0.9998270.9997840.9997430.9996980.9996449.995406e-019.879815e-019.806074e-019.806074e-019.806074e-01
31461.01.01.0000001.0000001.0000001.0000001.0000001.0000001.0000001.000000...0.9999910.9999890.9999870.9999850.9999829.999773e-019.994037e-019.990344e-019.990344e-019.990344e-01
31471.01.00.9999970.9999950.9999920.9999890.9999810.9999760.9999670.999963...0.9989050.9986330.9983760.9980880.9977529.970966e-019.263402e-018.834493e-018.834493e-018.834493e-01
31481.01.00.9999990.9999990.9999980.9999970.9999960.9999940.9999920.999991...0.9997470.9996840.9996250.9995580.9994809.993286e-019.824821e-019.717824e-019.717824e-019.717824e-01
31491.01.00.9820180.9731490.9597360.9419100.9019380.8799700.8406330.819252...0.0029140.0006840.0001740.0000370.0000061.868295e-078.656564e-1781.697091e-2871.697091e-2871.697091e-287
\n", "

3150 rows × 47 columns

\n", "
" ], "text/plain": [ " 1 2 3 4 5 6 7 8 \\\n", "0 1.0 1.0 0.999993 0.999989 0.999984 0.999976 0.999959 0.999949 \n", "1 1.0 1.0 0.999971 0.999956 0.999933 0.999903 0.999833 0.999793 \n", "2 1.0 1.0 1.000000 1.000000 1.000000 1.000000 1.000000 0.999999 \n", "3 1.0 1.0 0.999987 0.999981 0.999971 0.999958 0.999927 0.999910 \n", "4 1.0 1.0 0.999993 0.999990 0.999984 0.999977 0.999961 0.999951 \n", "... ... ... ... ... ... ... ... ... \n", "3145 1.0 1.0 0.999999 0.999999 0.999999 0.999998 0.999997 0.999996 \n", "3146 1.0 1.0 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 \n", "3147 1.0 1.0 0.999997 0.999995 0.999992 0.999989 0.999981 0.999976 \n", "3148 1.0 1.0 0.999999 0.999999 0.999998 0.999997 0.999996 0.999994 \n", "3149 1.0 1.0 0.982018 0.973149 0.959736 0.941910 0.901938 0.879970 \n", "\n", " 9 10 ... 38 39 40 41 \\\n", "0 0.999931 0.999921 ... 0.997695 0.997124 0.996583 0.995977 \n", "1 0.999719 0.999677 ... 0.990594 0.988274 0.986081 0.983626 \n", "2 0.999999 0.999999 ... 0.999972 0.999965 0.999958 0.999951 \n", "3 0.999878 0.999860 ... 0.995903 0.994889 0.993929 0.992853 \n", "4 0.999934 0.999924 ... 0.997768 0.997215 0.996692 0.996104 \n", "... ... ... ... ... ... ... ... \n", "3145 0.999995 0.999994 ... 0.999827 0.999784 0.999743 0.999698 \n", "3146 1.000000 1.000000 ... 0.999991 0.999989 0.999987 0.999985 \n", "3147 0.999967 0.999963 ... 0.998905 0.998633 0.998376 0.998088 \n", "3148 0.999992 0.999991 ... 0.999747 0.999684 0.999625 0.999558 \n", "3149 0.840633 0.819252 ... 0.002914 0.000684 0.000174 0.000037 \n", "\n", " 42 43 44 45 46 \\\n", "0 0.995272 9.938953e-01 8.511736e-01 7.702958e-01 7.702958e-01 \n", "1 0.980778 9.752335e-01 5.168825e-01 3.434077e-01 3.434077e-01 \n", "2 0.999942 9.999254e-01 9.980399e-01 9.968273e-01 9.968273e-01 \n", "3 0.991603 9.891640e-01 7.507322e-01 6.285442e-01 6.285442e-01 \n", "4 0.995422 9.940885e-01 8.555385e-01 7.767036e-01 7.767036e-01 \n", "... ... ... ... ... ... \n", "3145 0.999644 9.995406e-01 9.879815e-01 9.806074e-01 9.806074e-01 \n", "3146 0.999982 9.999773e-01 9.994037e-01 9.990344e-01 9.990344e-01 \n", "3147 0.997752 9.970966e-01 9.263402e-01 8.834493e-01 8.834493e-01 \n", "3148 0.999480 9.993286e-01 9.824821e-01 9.717824e-01 9.717824e-01 \n", "3149 0.000006 1.868295e-07 8.656564e-178 1.697091e-287 1.697091e-287 \n", "\n", " 47 \n", "0 7.702958e-01 \n", "1 3.434077e-01 \n", "2 9.968273e-01 \n", "3 6.285442e-01 \n", "4 7.767036e-01 \n", "... ... \n", "3145 9.806074e-01 \n", "3146 9.990344e-01 \n", "3147 8.834493e-01 \n", "3148 9.717824e-01 \n", "3149 1.697091e-287 \n", "\n", "[3150 rows x 47 columns]" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "times_of_survival_curve = np.arange(1,max_time +1)\n", "\n", "pd.DataFrame(preds, columns=times_of_survival_curve)" ] }, { "cell_type": "markdown", "id": "758178d8-4da6-4b73-9d04-dea3724456ab", "metadata": {}, "source": [ "We can also visualize some of our predicted survival curves." ] }, { "cell_type": "code", "execution_count": 10, "id": "62af5e0e-8727-4f6c-83bb-2776494a1644", "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "n_failed_to_show = 5\n", "n_censored_to_show = 5\n", "n_rand_rows_to_show = n_failed_to_show + n_censored_to_show\n", "\n", "random_rows_failed = np.random.choice( np.arange(0,preds.shape[0] )[events.astype(np.bool)] ,size=n_failed_to_show, replace=False)\n", "random_rows_censored = np.random.choice( np.arange(0,preds.shape[0])[~events.astype(np.bool)] ,size=n_censored_to_show, replace=False)\n", "n_rand_rows_to_show = np.concat((random_rows_failed,random_rows_censored))\n", "np.random.shuffle(n_rand_rows_to_show)\n", "\n", "\n", "fig, axs = plt.subplots(len(n_rand_rows_to_show))\n", "fig.set_figheight(13)\n", "fig.set_figwidth(7)\n", "\n", "for a,i in enumerate(n_rand_rows_to_show):\n", " axs[a].set_ylim(0.0,1.05)\n", " axs[a].plot(preds[i],color='b')\n", "\n", " if events[i]:\n", " axs[a].axvline(x = times[i], color = 'r', label = 'event')\n", " else:\n", " axs[a].axvline(x = times[i], color = 'g', label = 'event',linestyle='--')\n", "\n", "fig.tight_layout()\n" ] }, { "cell_type": "markdown", "id": "31eea7cb-a0a5-447a-9a75-d03950786c5c", "metadata": {}, "source": [ "Within survival analysis literature, it is not uncommon to use some form of the ‘brier score’ to assess the performance of a model’s predicted survival curves. Lower the values the better." ] }, { "cell_type": "code", "execution_count": 11, "id": "89e9d9f0-313b-406b-84eb-5907d565f02c", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[]" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjsAAAG0CAYAAADU2ObLAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjgsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvwVt1zgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAR31JREFUeJzt3Xl8VPW9//H3mS17CGELiyTEEBdIRCxocQHER0Ubq1a0im21KO2t3tr2tqU/0Wv1KrZY24dWsLe9rtSVBxUUBCoiLoBLBQUiCmpAgRBJIJOQbTLL+f0xziSBBLJMZk5mXs/HI4/MnDkz+Wa+kXn7/X6+52uYpmkKAAAgTtli3QAAAIDeRNgBAABxjbADAADiGmEHAADENcIOAACIa4QdAAAQ1wg7AAAgrhF2AABAXCPsAACAuOaIdQOsorq6Wj6fr9PnDxo0SJWVlb3YInQG/WAN9IM10A/WQD9Eh8PhUP/+/Tt3bi+3pc/w+Xzyer2dOtcwjPBz2G0jdugHa6AfrIF+sAb6wZqYxgIAAHGNsAMAAOIaYQcAAMQ1wg4AAIhrhB0AABDXCDsAACCuEXYAAEBcI+wAAIC4RtgBAABxjbADAADimiW3i1i9erWWL18ut9ut3NxczZo1SwUFBe2e+/rrr+vhhx9uc8zpdOrpp5+ORlMBAIDFWS7sbNy4UYsWLdLs2bM1evRovfzyy5o3b54eeOAB9evXr93npKSk6MEHH4xySwEAQF9gubCzYsUKTZs2TVOnTpUkzZ49W5s3b9a6det02WWXtfscwzCUlZXVqdf3er1tNvw0DEMpKSnh250ROq+z56N30A/WQD9YA/1gDbHqh+ZmyeWK6o/sUywVdnw+n8rKytqEGpvNpqKiIu3cubPD5zU1Nemmm26SaZoaNWqUrrnmGp1wwgntnrt06VItWbIkfH/UqFGaP3++Bg0a1OX25uTkdPk5iDz6wRroB2ugH6whmv3wzDPSD38oLVokzZwZtR/bp1gq7NTW1ioQCBw1SpOVlaXy8vJ2nzNs2DD99Kc/VW5urhoaGvTSSy/p9ttv15///GcNGDDgqPMvv/xylZSUhO+H0ndlZaV8Pl+n2mkYhnJyclRRUSHTNDv52yHS6AdroB+sgX6whmj3g98v3XbbIPn9Dq1eXa+pU2t7/WdahcPh6PRAhaXCTncUFhaqsLCwzf1f/vKXWrNmja6++uqjznc6nXI6ne2+Vlf/ME3T5B8VC6AfrIF+sAb6wRqi1Q+vvpqk3buDH+WHDxv0fQcstfQ8MzNTNptNbre7zXG3293pmhyHw6FRo0apoqIi8g0EAMBCHn00PXz78GFLfaRbiqXeGYfDofz8fJWWloaPBQIBlZaWthm9OZZAIKAvv/xS/fv3761mAgAQcx9/7ND69Unh+/X1FKd3xHLTWCUlJVq4cKHy8/NVUFCglStXyuPxaMqUKZKkBQsWKDs7WzO/rsJasmSJRo8erZycHNXX1+ull15SZWWlpk2bFsPfAgCA3vXYY2mSpIED/aqqsjOycwyWCzuTJk1SbW2tFi9eLLfbrby8PM2dOzc8jVVVVdVmSV9dXZ3+9re/ye12Ky0tTfn5+brnnns0YsSIGP0GAAD0rkOHbHrhhVRJ0k9+Uq958zJVV8fITkcMk2omScHVWK2vv3MshmFo6NCh2r9/P8VgMUQ/WAP9YA30gzVEqx8eeihdf/hDpsaObdaDD7o1bdpgZWf7tW3bV732M63G6XR2ejUWY14AAPQhXq/0xBPBKawbbqhXRkYwVNXX85HeEd4ZAAD6kJUrk1VRYdfAgX5demmj0tMDkiSPx5DHE+PGWRRhBwCAPiS03PyHP2xQUpKUltYyXcboTvt4VwAA6CM+/NCpTZtccjpN/eAH9ZIkh0NKSQmO7hw+TJFyewg7AAD0EY8+GqzV+c53GjV4cCB8PFS3w4qs9hF2AADoAyoqbFq+PEWSdOON9W0eS08PhR0+1tvDuwIAQB+waFGavF5DEyZ4VFzc9lIpoSJlprHaR9gBAMDimpqkp54KXkTwhhvqj3o8NLLDlhHtI+wAAGBxL76YooMH7Ro2zKeLLmo66vGMjNDIDh/r7eFdAQDAwkxTeuSR4HLz669vkKOdjZ5Cy88pUG4fYQcAAAt75x2Xtm93Kjk5oJkzj57CklpWYzGy0z7eFQAALCy03PyKKxrVv3/7+22FprEY2WkfYQcAAIvas8euf/0rWdLRy81ba1l6TthpD2EHAACLevzxNAUChs47r0mFhb4Oz2tZes7Hent4VwAAsKD6ekPPPtvxcvPWWHp+bIQdAAAs6OWXk1Vba1Nenk/nn3/s7cwpUD423hUAACxo9epgrc53v9so23E+rdPSKFA+FsIOAAAW09Bg6I03gmHnwgsbj3t+y8gOYac9hB0AACzmjTeS1NRk6IQTfBozpuPC5JBQgXJ9PR/r7eFdAQDAYlatCo7qTJ/eJKMTgzWtR3bM9i/Fk9AIOwAAWIjXK61d2xJ2OiO0GisQMNTYyFTWkQg7AABYyDvvuOR225Sd7deECc2dek5qqinD4MKCHSHsAABgIatXp0iSvvWtJtntnXuOYVCkfCyEHQAALMI0W5acd3YKK6Rl53M+2o/EOwIAgEVs2eJURYVdqakBnXvusS8keKTQZqCM7ByNsAMAgEWERnWmTvUoOblrz23ZMoKP9iPxjgAAYBGhsHPRRV2bwpIY2TkWwg4AABbw2Wd2ffqpUw6HqfPP73rYaanZIewcibADAIAF/OtfwVVYZ5/tUb9+Xb8yIJuBdox3BAAAC2h91eTuCG0ZwcjO0Qg7AADEWEWFTR984JIUvL5Od4RGdlh6fjTeEQAAYuxf/wqO6owf36ycnEC3XiM0skOB8tEIOwAAxFgo7HR3CktqvfScsHMkwg4AADFUU2Now4YkSdL06Y3dfh0KlDvGOwIAQAy99lqyfD5DhYVenXiiv9uvk5ZGgXJHCDsAAMRQaBXWhRd2fwpLYmTnWHhHAACIkaYmad264BRWd66a3FqoQJmanaMRdgAAiJG33kpSQ4NNQ4f6VVzs7dFrtYzsEHaORNgBACBGQnthTZ/eKKOHGSW0GquhwSZ/90t/4hJhBwCAGPD7pVde6fmS85DQNJbEVNaRCDsAAMTAv//t0qFDdmVlBXTmmc09fr2kJMnlYiqrPYQdAABiIDSFdcEFTXI6I/OaLcvP+XhvjXcDAIAoM83W9To9n8IKoUi5fYQdAACibPt2h/bscSg5OaApUzwRe92WLSP4eG+NdwMAgChbvTpFkjR5skcpKWbEXjcjg81A20PYAQAgynpjCkuS0tKCwYktI9oi7AAAEEV79ti1fbtTdrupCy6IbNgJjexQoNwW7wYAAFG0dm1we4gJE5qVnR25KSyppWaHaay2CDsAAETR2rXBKaxp0yJXmBwSCjuM7LTFuwEAQJQ0NhrauDE4sjNtWmSnsCQKlDtC2AEAIErWr3epqcnQiBE+FRb6Iv76LUvPCTutEXYAAIiS1lNYPd34sz0tIzt8vLfGuwEAQBSYZktxcm9MYUksPe8IYQcAgCj45BOHysuDV02eNCnyxclS6+0i+HhvjXcDAIAoCE1hnX12s1JSeudnpKcHp7Go2WmLsAMAQBT09hSWxHV2OuKIdQPas3r1ai1fvlxut1u5ubmaNWuWCgoKjvu8DRs26MEHH9Q3vvENzZkzJwotBQDg+KqrDb3/vkuSdMEFvTOFJbVMY3GdnbYs925s3LhRixYt0owZMzR//nzl5uZq3rx5qqmpOebzDhw4oH/84x865ZRTotRSAAA65403khUIGDr5ZK+GD/f32s8JTWM1Nxvy9F6m6nMsF3ZWrFihadOmaerUqRoxYoRmz54tl8uldevWdficQCCghx56SFdddZUGDx4cxdYCAHB80ZjCklqmsSSpvt5yH/ExY6lpLJ/Pp7KyMl122WXhYzabTUVFRdq5c2eHz1uyZIkyMzN1/vnn6+OPPz7mz/B6vfJ6veH7hmEo5etKMaOTFz0IndfZ89E76AdroB+sgX6whvb6we+X1q0LFidfcIGnV/vI4ZBSUgJqbLSprs6mAQMiu/dWX2WpsFNbW6tAIKCsrKw2x7OyslReXt7ucz755BO99tpruu+++zr1M5YuXaolS5aE748aNUrz58/XoEGDutzenJycLj8HkUc/WAP9YA30gzW07oeNG6Xqaql/f6mkZKAcvfzJ26+f1NgoJScP1tChvfuz+gpLhZ2uamxs1EMPPaSf/OQnyszM7NRzLr/8cpWUlITvhxJ2ZWWlfL7OXbrbMAzl5OSooqJCpklqjhX6wRroB2ugH6yhvX54/vkMSek677xGVVa6e70NqamDJDm0e3eVhgzxHvf8vsrhcHR6oMJSYSczM1M2m01ut7vNcbfbfdRojyR99dVXqqys1Pz588PHQn9cV199tR544IGj/i/H6XTK6XS2+/O7+g+EaZr8o2IB9IM10A/WQD9YQ+t+ePXVlnqdaPRNqEi5ttbgb+Frlgo7DodD+fn5Ki0t1cSJEyUFi49LS0s1ffr0o84fNmyY7r///jbHnnvuOTU1Nen666/XwIEDo9JuAADaU15u0/btThmGqalTo7M8KlSkzPLzFpYKO5JUUlKihQsXKj8/XwUFBVq5cqU8Ho+mTJkiSVqwYIGys7M1c+ZMuVwujRw5ss3z09LSJOmo4wAARNtrrwULk8eP9yo7OxCVnxnaDJT9sVpYLuxMmjRJtbW1Wrx4sdxut/Ly8jR37tzwNFZVVRWrDQAAfUK0lpy31jKyw2dliOXCjiRNnz693WkrSbrzzjuP+dybb765F1oEAEDXNDVJb70Vu7DDZqAteCcAAOgF77yTpMZGm3Jy/BozpnOrfSMhNI3F/lgtCDsAAPSC1lNY0ay+CI3ssPN5C8IOAAARZprS2rXB4uRp06K7SVVo6TnTWC14JwAAiLDPPrPriy8ccrlMnXNOtMMOBcpHIuwAABBhoVGdb37To7S06F7YLyOD6+wciXcCAIAIa6nXie6ojtQyjcXITgvCDgAAEVRTI737rktSdJech7QsPSfshBB2AACIoDVrJJ/P0IknepWX54/6z28Z2eEjPoR3AgCACHr55eD3WExhSa1rdgyxD2gQYQcAgAgJBKSVK4O3YzGFJbVMYwUChhobmcqSCDsAAETM1q1OHTgQnEqaOLE5Jm1ITTVlGNTttEbYAQAgQl59NbgKa/Jkj1yu2LTBMFqmsgg7QYQdAAAiJJZLzlsLFSnX1/MxLxF2AACIiLo6Q9u2OSVJU6bEOuwwstMaYQcAgAjYssWpQMDQyJFSTk4gpm1p2TKCj3mJsAMAQER88EGwSOfMM2PcEEkZGVxFuTXCDgAAEfDBB8EpLCuEHTYDbYuwAwBAD5mmtUZ2Wmp2+JiXCDsAAPRYeblNX31ll91uavz4WLeGzUCPRNgBAKCHQqM6p5ziU2pqjBuj1ltG8DEvEXYAAOixUNgZPz42V00+Umhkh6XnQYQdAAB6aPPmYHHy6ad7Y9ySIAqU2yLsAADQA15vcE8syTojO0xjtcW7AABAD+zY4VBTk02ZmQGdeKI/1s2RRIHykQg7AAD0wObNwXqdceOaZbPIpypLz9viXQAAoAdCxclWqdeRGNk5EmEHAIAeCF05+fTTrVGvI7Wu2SHsSIQdAAC6rabG0KefhoqTrTSyEww7DQ02+a1RRhRThB0AALppy5bgFNbIkT4NGBDbnc5bC01jSYzuSIQdAAC6LXR9HassOQ9JSpJcLqayQgg7AAB0kxWLk0NaipT5qOcdAACgG4I7nVuvODmkZfk5IzuEHQAAumHPHrsOHrTL6TQ1ZowVR3a4inII7wAAAN0QGtUZM8ar5OQYN6YdGRlcayeEsAMAQDeErpxsxSksSUpLo0A5hLADAEA3tIQd601hSS0jO2wZQdgBAKDLmpuljz6ybnGy1Lpmh5Edwg4AAF20fbtTHo+hrKyARo2y5iWKW7aM4KOedwAAgC4KFSePH98sw6IDJ6Hr7LD0nLADAECXWb04WWIaqzXCDgAAXWTlKyeHtCw956OedwAAgC44dMjQrl0OSdK4cdYd2WHpeQvCDgAAXfDhh8FRnVGjfOrf34xxazoWKlBm6TlhBwCALmmZwrLuqI7UeiNQRnYIOwAAdEFoJdYZZ1g77LQsPSfsEHYAAOik4E7n1i9OltgItDXeAQAAOmnXLrvcbpuSkkydcorVw05wGqu52ZDHE+PGxBhhBwCATgqN6owd65XLFePGHEdoZEeS6usT++M+sX97AAC6IFSvY/XiZEmy26WUFK6iLBF2AADotNCVk8ePt37YkVovPyfsAACA42hqCm4AKlm/ODmEIuWgxP7tAQDopNJSp7xeQwMG+HXCCdbc6fxILVtGMLIDAACOI1ScPH6817I7nR+pZcuIxP64T+zfHgCATupLxckhoZEdanYAAMBx9ZVtIloL1ezU1xN2AADAMVRV2fTllw4Zhqlx4/pGcbLUEnYSfTNQR6wb0J7Vq1dr+fLlcrvdys3N1axZs1RQUNDuue+++66WLl2qiooK+f1+5eTk6JJLLtF5550X5VYDAOLV5s3BKayCAp8yM6270/mRmMYKslzY2bhxoxYtWqTZs2dr9OjRevnllzVv3jw98MAD6tev31Hnp6en67vf/a6GDRsmh8OhzZs36+GHH1ZmZqbGjRsX/V8AABB3+sp+WEdi6XmQ5X77FStWaNq0aZo6dapGjBih2bNny+Vyad26de2eP2bMGE2cOFEjRoxQTk6OLr74YuXm5uqTTz6JcssBAPHq/ff7Xr2OxNLzEEuN7Ph8PpWVlemyyy4LH7PZbCoqKtLOnTuP+3zTNFVaWqry8nJde+217Z7j9Xrl9bYkc8MwlJKSEr7dGaHzOns+egf9YA30gzXQD72nvt4Ih51zzmk+5ntstX5ITw9+r6uzWaZNsWCpsFNbW6tAIKCsrKw2x7OyslReXt7h8xoaGvSTn/xEPp9PNptNN9xwg4qLi9s9d+nSpVqyZEn4/qhRozR//nwNGjSoy+3Nycnp8nMQefSDNdAP1kA/RN6KFVJzs5SXJ5199uBOXWPHKv0wcmTwu8eTpKFDh8a2MTFkqbDTXcnJyfrjH/+opqYmbdu2TYsWLdKQIUM0ZsyYo869/PLLVVJSEr4fSrqVlZXy+Xyd+nmGYSgnJ0cVFRUyzb5TqBZv6AdroB+sgX7oPS+8kCkpTeedV6+Kitpjnmu1fvB6XZIGqLraq/37q2LdnIhyOBydHqiwVNjJzMyUzWaT2+1uc9ztdh812tOazWYLp+i8vDzt27dPy5YtazfsOJ1OOZ3Odl+nq3+Ypmla4o850dEP1kA/WAP9EHmvv54kSZo82dPp99Yq/ZCW1rIaywrtiRVLFSg7HA7l5+ertLQ0fCwQCKi0tFSFhYWdfp1AINCmLgcAgO744gu7du1yyOEwdfbZnlg3p8vS00MFypb6uI86S43sSFJJSYkWLlyo/Px8FRQUaOXKlfJ4PJoyZYokacGCBcrOztbMmTMlBWtwTjzxRA0ZMkRer1cffPCB3nrrLd14440x/C0AAPEgNKrzjW80KyOj742MhNpcV2fINNVn9vSKNMuFnUmTJqm2tlaLFy+W2+1WXl6e5s6dG57GqqqqalNR7vF49Mgjj+jgwYNyuVwaPny4fvazn2nSpEkx+g0AAPGi9RRWXxQKO4GAocZGQ6mpfS+wRYJhJvIkXiuVlZWdnvoyDENDhw7V/v37E3oONNboB2ugH6yBfoi85mZp7Ngc1dfbtHp1pYqKjv8ZYbV+ME1p5MihCgQMbd5coSFDArFuUsQ4nc5OFygn9iQeAAAd2LTJpfp6mwYM8GvMmL5ZB2oYrffHStA5LBF2AABoV+spLFsf/rSkSJmwAwBAu0JhZ8qUvlmvE9K6SDlREXYAADhCZaVNpaXBLSL6anFySFoam4F2ezVWY2Oj6uvrNXDgwPCxQ4cOac2aNfJ6vTrrrLNUUFAQkUYCABBNb7wRHNUpKmrWwIF9u6g3tBloItfsdDvs/O1vf1NlZaXmzZsnKbg/1W233aZDhw7JMAytWrVKc+fObfcqxgAAWFko7PT1UR2ppUC5vj5xw063x7R27Nih8ePHh++/9dZbqq6u1t13363HH39cI0eO1AsvvBCRRgIAEC2BQEu9ztSp8RN2Dh9O3Gmsbv/mtbW1ys7ODt9///33dfLJJ6uwsFApKSmaPHmydu/eHYk2AgAQNaWlTh06ZFd6ekBnnNEc6+b0WMtqLEZ2uiwtLS28YWdzc7M++eQTFRcXt7ywzabm5r7/RwIASCyhUZ2zz/aog32j+5TQaqxEHtnpds1OYWGhXnnlFQ0fPlwffvihmpubNWHChPDj+/fvbzPyAwBAXxAvS85DQgXKjOx0w/e//33Z7Xb96U9/0tq1a1VSUqITTjhBUnDX8XfeeUennHJKxBoKAEBvq601tGlTcMl5vISdlqXniRt2uj2yk5OTowceeEB79+5VamqqBg8eHH7M4/Fo1qxZys3NjUgjAQCIhg0bkuTzGcrP92nkSH+smxMRTGP1cNdzh8OhvLy8o46npKS0mdICAKAvaJnCaopxSyInVKCcyEvPexR2Ghoa9Morr+ijjz5STU2NfvzjH6ugoEB1dXV6/fXX9Y1vfEM5OTmRaisAAL3GNOPr+johLD3vQdg5ePCg7rzzTlVVVWno0KHat2+fmpqCSTg9PV1r1qxRZWWlfvSjH0WssQAA9JbPP7drzx6HXC5TkybFz2pilp73IOz84x//UGNjo/74xz8qMzNTs2fPbvP4hAkTtHnz5h43EACAaHjjjWRJ0sSJzUpNNWPcmshpqdlJ3LDT7TGtrVu36qKLLtKIESNkGEe/gUOGDNHBgwd71DgAAKKl5arJ8VOvI7WEncZGm/zxUXPdZd0OO83NzcrMzOzw8cbGxu6+NAAAUdXUJG3cGB+7nB8pLa1lI9NEncrqdtgZMWKEPv744w4f//e//93uSi0AAKzmvfdcamqyKSfHr5NP9sW6ORGVlCS5XKFr7SRmkXK3f+uLL75YGzZs0LJly9TQ0CApeDHBiooKPfTQQ9q5c6e+/e1vR6yhAAD0ltdfD9brTJ7sUTuVGX1eohcpd7tA+bzzzlNVVZWef/55Pffcc5Kke++9V6Zpymaz6ZprrtHEiRMj1lAAAHpLy5Lz+KrXCUlPN3XoUOIWKffoOjvf/e53dd555+mdd95RRUWFTNPUkCFDdOaZZ2rIkCGRaiMAAL2mvNymTz5xymYzde658VWvExK61k6iTmN1K+x4PB7dcccdmjZtmr71rW+ppKQk0u0CACAq3nwzOKpz2mleZWfHz5Lz1kKbgSbqyE63Il5SUpIOHDjQ7pJzAAD6klC9Trxs/Nme0MhOom4Z0e3xrHHjxmnLli2RbAsAAFHl90tvvRV/+2EdKVSgnKhbRnT7t77iiiu0f/9+PfTQQ/rkk0906NAh1dXVHfUFAIBVffihU263Tf36BTRunDfWzek1LTU7iTmy0+0C5V/96leSpL1792r9+vUdnvf8889390cAANCrQquwzj3XI0ePluxYW8uWEYk5stPtrr3iiiuo2QEA9Gmh/bDi7arJR+I6O9101VVXRbIdAABEVW2toQ8+cEqSzjsv3sNOYk9jRWw8q7m5Wc3NzZF6OQAAetXGjUny+w3l5/s0YkR875DZsvScaawuq6qq0uLFi/XBBx+otrZWkpSZmanTTz9dV155pQYNGhSRRgIAEGnxftXk1hJ96Xm3w86+fft0xx13qL6+XsXFxRo+fLgkqby8XG+++aY2bdqku+++W8OGDYtYYwEAiJTQxQTjfQpLagk7jOx00dNPPy3DMHTfffdp5MiRbR778ssvdffdd+vpp5/Wb37zmx43EgCASPryS7t273bI4TD1zW/GfwlGohcodzviffzxx7rooouOCjqSNHLkSF144YXavn17jxoHAEBvCI3qjB/fHF6WHc9alp4TdrrE5/PJ5XJ1+HhSUpJ8Pl93Xx4AgF4TqtdJhCksqXXNTmJOY3X7tx41apRee+01NTQ0HPVYQ0ODXnvtNeXn5/eocQAARJrfH1yJJSVS2AlOYzU3G/Ikxq/cRo+uszNv3jz94he/0JQpU8KFyOXl5XrjjTd0+PBh3XDDDRFrKAAAkbB1a8sWEaedFr9bRLQWGtmRpLo6m5KSAjFsTfR1O+yMHTtWt956q5566im9+OKLbR7Ly8vTf/7nf2rs2LE9biAAAJEUmsI6++z43iKiNbtdSk0NqKHBpro6QwMGxLpF0dWjbi4uLtZ9990nt9utyspKSdKgQYOUlZUVibYBABBxoV3OE2UKKyQ93VRDQ2IWKUck02ZlZRFwAACWV1dn6P33g4trEjHsHDgQnMZKNN3+jVeuXKl58+Z1+Pi9996rV155pbsvDwBAxL39tks+n6G8PJ9yc+N7i4gjtWwZkXgjO90OO+vWrQtfNbk9I0aM0KuvvtrdlwcAIOJC19c599zEGtWREvsqyt3+jSsqKjRixIgOHx82bJi++uqr7r48AAARFwo7kycnXtg54YTgte8+/TRBqrJb6XbYcTgccrvdHT7udrtlGIk3VAYAsKZ9+2z67DOnbDZTkyYlXtgpKgous9+2zRnjlkRft8NOYWGhXn/9dTU2Nh71WENDg9atW6fRo0f3qHEAAERKaBXWuHFe9esX/1tEHCl0TaEtW5wyE+zX73bYmTFjhqqrqzVnzhytWrVKpaWlKi0t1cqVKzVnzhy53W5deeWVkWwrAADd9sYbyZIScwpLkk45xSuHw9ShQ3aVl9tj3Zyo6vbE3ejRo/Xb3/5Wf//73/XEE0+0eWzw4MGaM2eOCgsLe9o+AAB6LBCQ3norMZechyQnSyed5NNHHzm1ZYtTw4cnzmq0Hl9U8C9/+Yt2796tiooKSVJOTg57YgEALKW01KnqarvS0wM6/fTmWDcnZoqLm/XRR05t3erUxRc3xbo5UdPtaazdu3dr/fr1stlsys/P16RJk5Samqonn3xSc+fO1cqVKyPZTgAAui20CmvSJI+ciVefG1ZcHKzb2bo1sd6Eboedp556Shs3bgzfP3DggO6//34dOHBAkvTkk09ynR0AgCWE9sNK1HqdkNZhJ5GKlLsddr744gudfPLJ4ftvvPGGbDab5s+fr3vvvVdnnXWW1qxZE5FGAgDQXQ0NLVtEJOLFBFs75RSvnE5T1dV27d2bOEXK3Q47DQ0NysjICN//4IMPVFxcrMzMTEnBep5QHQ8AALHyzjsuNTcbGjHCp/z8xCnKbU9SknTSSYk3ldXtsJOVlaV9+/ZJkqqrq1VWVqbi4uLw401NTVxUEAAQc6F6nfPO84iPpZbr7SRS2On2aqwJEyZo1apVam5u1meffSan06mJEyeGH//iiy80ZMiQiDQSAIDuah120HIlZcJOJ1x99dWqra3VW2+9pdTUVN10003KysqSFJzieuedd3ThhRdGqp0AAHRZRYVNO3Y4ZRimzj6bsCO1HtlxyTSVEKNd3Q47ycnJuuWWWzp87H//93/lcrm63TAAAHoqNKpz2mleZWcn0PKjYzjppGCRsttt0549do0cGf91TL2yz7vNZlNqaqocjsTbWRUAYB2h/bASfRVWa0lJwVVZUnCfrERgyTSyevVqLV++XG63W7m5uZo1a5YKCgraPffVV1/Vm2++qT179kiS8vPzdc0113R4PgAgMQQCLSM7iX59nSMVFXm1datL27Y5dckl8X8l5V4Z2emJjRs3atGiRZoxY4bmz5+v3NxczZs3TzU1Ne2ev337dp199tn63e9+p3vuuUcDBgzQPffco0OHDkW55QAAK/n4Y4eqquxKTQ3ojDMSd4uI9rSu20kElhvZWbFihaZNm6apU6dKkmbPnq3Nmzdr3bp1uuyyy446/8i6of/4j//Qu+++q23btmny5MlHne/1euX1esP3DcNQSkpK+HZnhM5jaX1s0Q/WQD9YA/1wtDffDO5yPmlSs5KSovO+9JV+CF1Jeds2pyQj7ouULRV2fD6fysrK2oQam82moqIi7dy5s1Ov4fF45PP5lJ6e3u7jS5cu1ZIlS8L3R40apfnz52vQoEFdbm9OTk6Xn4PIox+sgX6wBvqhxbvvBr+XlCRr6NChUf3ZVu+HAQMkl0tyu21qahqqeN+/21Jhp7a2VoFAILyEPSQrK0vl5eWdeo2nn35a2dnZKioqavfxyy+/XCUlJeH7ofRdWVkpn8/XqZ9hGIZycnJUUVEhM5E2F7EY+sEa6AdroB/aamyU3nwzR5Kh00+v1P79nfv3vaf6Uj+ccsoAbdni0po11frOd/pe3Y7D4ej0QIWlwk5PLVu2TBs2bNCdd97Z4bJ3p9MpZwdb3nb1D9M0Tcv/MScC+sEa6AdroB+CNm5MksdjKCfHrxNP9EZ908u+0A/FxV5t2eLS1q0OXXKJtdvaU5YqUM7MzJTNZpPb7W5z3O12HzXac6SXXnpJy5Yt0+23367c3NzeayQAwPKeeipVknTRRY1xX4/SXaG6nS1b4r9I2VJhx+FwKD8/X6WlpeFjgUBApaWlKiws7PB5L774ov75z39q7ty5OvHEE6PRVACARe3ZY9eaNcHi5Ouvb4hxa6yruDi4Qm3bNmfUR76izVJhR5JKSkq0du1avf7669q7d68eeeQReTweTZkyRZK0YMECPfPMM+Hzly1bpueff14//elPNXjwYLndbrndbjU19b35RwBAz/3jH6kKBAyde65HBQXRqdXpi046yaekJFO1tTbt3m2PdXN6leVqdiZNmqTa2lotXrxYbrdbeXl5mjt3bngaq6qqqs2SvjVr1sjn8+nPf/5zm9eZMWOGrrrqqmg2HQAQY42N0jPPBKewfvSj+hi3xtqcTunUU7364AOXtm51atSo+N02wnJhR5KmT5+u6dOnt/vYnXfe2eb+woULo9AiAEBf8NJLKaqutmvECJ8uuIAR/uMpKgqFHZcuvTR+3y/LTWMBANAdpik99liaJOm66xpkj++ZmYg47bRg3c7WrfG9RxZhBwAQFzZtcqq01KXkZFNXX80UVmcUFbVcSTkQiHFjehFhBwAQF554Ijiqc+mljcrOjvPlRRFSWBgsUj58OL6LlAk7AIA+78ABm1asCO5zSGFy54WKlKX43hSUsAMA6POefjpVXq+hM85oDk/NoHNCFxeM57odwg4AoE/zeqWnngpOYTGq03WJUKRM2AEA9GmrViWrosKuQYP8+va3G2PdnD4nEYqUCTsAgD4tVJh87bUN6mAPaBxDYaFPycmm6upsKiuLzyJlwg4AoM/66COH3n03SQ6HqR/8gCms7nA4WoqUt22Lz7RI2AEA9FlPPhkc1bnooibl5MTpHEwUhOp2tmyJz7odwg4AoE9yuw39858sN4+E1nU78YiwAwDok557LlVNTTadcopXEyc2x7o5fdppp8V3kTJhBwDQ5/j90qJFLcvNDSPGDerjCgp8Sk4OqL7eprIyS+4R3iOEHQBAn7NuXZK++MKhfv0Cuvxylpv3lMMhjR3rkxSfdTuEHQBAnxNabv697zUoNZV9sCKhuDh+Ly5I2AEA9CllZXatW5cswzD1wx9SmBwp8bxtBGEHANCnhJabT53q0ahR/hi3Jn6Ewk5pqVP+OHtbCTsAgD6jvt7Q4sWpkqRZsxjViaSCAp9SUgJqaIi/ImXCDgCgz1iyJEW1tTbl5fk0ebIn1s2JK3a7NHZscHQn3oqU4yu6AQDilmm2FCZff329bPzvesQVF3v1738naetWp2bMaH+VW1OTtH27U1u3OuV222SzSTabZLebMoxgaAoeM8OPDR4c0IUXNkX5t2lB2AEA9Anr17u0c6dTqakBfe97DbFuTlw6skjZ75c++8yhDz906sMPXfrwQ6c+/tgpr7drFzYaP76ZsAMAwPGERnVmzGhUZibLzXtDy5WUXZoxY4C2bnWqvv7oIbQBA/waN86rnBy/TFPy+w0FAsFwZJr6+nbwWCAgnXiiL9q/ShuEHQCA5e3da9crryRLYh+s3pSf71NGRkCHD9v09ttJkqTU1ICKi70aN86rceOaNW6cVyNG+PvUVasJOwAAy3vyyVQFAobOOcejwsLYjhLEM7tdeuABt9avd2ns2GDAGT3aJ7s91i3rGcIOAMDSGhulZ54JTmGx3Lz3TZ/epOnTY1df0xuoZQcAWNqyZalyu2064QSfLrggvj6EER2EHQCAZZmm9NhjwVGd666r7/PTKYgNwg4AwLLee8+l7dudSk4O6OqrWW6O7iHsAAAsKzSq893vNqp/f5abo3sIOwAASyovt2nVKpabo+cIOwAAS/rHP9Lk9xs66yyPTj2V5eboPsIOAMByPB7p6aeDu5szqoOeIuwAACxn+fIUHTxo19Ch/ri75guij7ADALCcxx8PFib/8If1cnD5W/QQYQcAYCmbNwd32E5KMnXttSw3R88RdgAAlhIa1fnOdxo1YEAgxq1BPCDsAAAs48ABm5YvT5HEPliIHMIOAMAynn46VV6voTPOaFZxsTfWzUGcIOwAACyhuTl4bR2JUR1EFmEHAGAJq1Yl66uv7Bo82K+LL26MdXMQRwg7AICYM03p0UfTJUk/+EG9XK4YNwhxhbADAIi5NWuStGmTS8nJLDdH5BF2AAAx5fVKd9/dT5J04411GjKE5eaILMIOACCmnnoqVWVlDg0c6Nd//mddrJuDOETYAQDETE2NoT/9KUOS9KtfHVZGhhnjFiEeEXYAADHz0EMZqq62q7DQq5kzqdVB7yDsAABi4ssv7Xr00eB1dW6/vZYNP9FrCDsAgJj4wx8y1Nxs6JxzPDr/fE+sm4M4RtgBAETd5s1OvfhiqgzD1B131MgwYt0ixDPCDgAgqkxTuuuu4FLzq65q1Jgxvhi3CPGOsAMAiKqXX07W+++7lJIS0Jw5tbFuDhIAYQcAEDUej3TvvZmSpJ/+tF45OVxAEL2PsAMAiJonnkjTF184NGSIXz/9KRcQRHQQdgAAUXHokKEHHwxeQHDOnFqlpnIBQUQHYQcAEBUPPJChmhqbTjnFqyuvbIx1c5BACDsAgF5XVmbXk08GLyB4xx21sttj3CAkFMtdr3L16tVavny53G63cnNzNWvWLBUUFLR77p49e/T8889r165dqqys1HXXXadvf/vbUW4xAOB47r03Uz6fofPPb9J553EBQUSXpUZ2Nm7cqEWLFmnGjBmaP3++cnNzNW/ePNXU1LR7vsfj0ZAhQzRz5kxlZWVFt7EAgE555x2XVq1Kkc1m6vbbWWqO6LNU2FmxYoWmTZumqVOnasSIEZo9e7ZcLpfWrVvX7vkFBQX6wQ9+oLPPPltOpzPKrQUAHE9Tk3TbbcELCM6c2aCTTuICgog+y0xj+Xw+lZWV6bLLLgsfs9lsKioq0s6dOyP2c7xer7xeb/i+YRhKSUkJ3+6M0HmdPR+9g36wBvrBGqzaD3/4Q4Y++cSpAQP8mjOnznLtizSr9kOis0zYqa2tVSAQOGo6KisrS+Xl5RH7OUuXLtWSJUvC90eNGqX58+dr0KBBXX6tnJyciLUL3Uc/WAP9YA1W6odXXpH+7/+Ct594wq6ioiGxbVAUWakfYKGwEy2XX365SkpKwvdD6buyslI+X+eGVw3DUE5OjioqKmSaXCciVugHa6AfrMFq/XDwoKEf/GCQJLuuu65eZ5xRq/37Y92q3me1fohnDoej0wMVlgk7mZmZstlscrvdbY673e6IFh87nc4O63u6+odpmiZ/zBZAP1gD/WANVugH05R+85ssHThgV0GBV//937Uxb1O0WaEf0MIyBcoOh0P5+fkqLS0NHwsEAiotLVVhYWEMWwYA6Ipnn03V6tUpcjpNLVxYrZQUPvQRW5YZ2ZGkkpISLVy4UPn5+SooKNDKlSvl8Xg0ZcoUSdKCBQuUnZ2tmTNnSgoWNe/duzd8+9ChQ9q9e7eSk5OZLwWAGPj8c7vuuCO40edvf1ursWNZfYXYs1TYmTRpkmpra7V48WK53W7l5eVp7ty54WmsqqqqNhXuhw4d0pw5c8L3ly9fruXLl+vUU0/VnXfeGeXWA0Bi83qlW27pr8ZGmyZN8ugnP6mPdZMASZJhMqkoKVig3HpJ+rEYhqGhQ4dq//79zMnGEP1gDfSDNVihH+bPz9Bf/pKhfv0CWrPmgIYPD8SkHbFkhX5IFE6ns9MFypap2QEA9F3vvefSggXpkqT5890JGXRgXYQdAECP1NYa+tnPshQIGLryygZdcklTrJsEtEHYAQD0yG239dPevQ6NHOnT3Xe3v5chEEuEHQBAty1blqIXXkiV3W7qoYeqlZFBnQqsh7ADAOiWvXvtuvXW4CafP/95nb7xjc4t8gCijbADAOiyhgZDN97YX7W1No0f36yf//xwrJsEdIiwAwDokkBA+vnPs7Rtm0vZ2X49/HC1HJa6ahvQFmEHANAl99+foZUrU+RymXr00WqdcII/1k0CjomwAwDotKVLU/TggxmSgtfTmTixOcYtAo6PsAMA6JRNm5z61a+yJEk333xYV13VGNsGAZ1E2AEAHNe+fXbdcEO2PB5DF17YqP/3/yhIRt9B2AEAHFN9vaHrr89WZaVdp57q1UMPuWXj0wN9CH+uAIAOBQLSz36Wpe3bnRo40K8nnjiktDQuHIi+hbADAOjQH/6QoX/9K0VJSaYeffSQhg9n5RX6HsIOAKBdixenaOHC4Mqr++93c4Vk9FmEHQDAUd57z6U5c7IkSbfccljf/S4rr9B3EXYAAG188olDN9zQX16voYsvbtRvfsPKK/RthB0AQNirrybpO98ZqEOH7Bo7tlkPPsjKK/R9/AkDAGSa0t/+lqbrr89Wfb1N3/ymR88+e0ipqay8Qt/H1m0AkOCam6Vbb+2n555LkyRde2297rmnRi5XjBsGRAhhBwAS2KFDNs2e3V/vvJMkm83UHXfU6sYb62UYsW4ZEDmEHQBIUDt2OHT99dn68kuHMjICevjhap1/vifWzQIijrADAAlo7dok3XRTf9XV2ZSb69MTTxxSYaEv1s0CegUFygCQQExT+vvfg4XIdXXBQuQVK6oIOohrjOwAQIJoaDD03/+dGS5EnjmzXvPmUYiM+EfYAYAE8N57Lv3yl1navdtBITISDmEHAOJYY6N0332Z+r//S5NpGho61K8//7la553XHOumAVFD2AGAOLVpk1O//GWWPv/cKUm6+up6/e53tcrM5EKBSCyEHQCIM01N0p//nKG//jVdgYChnBy/7rvPrWnTWFaOxETYAYA4smWLUz//eT/t3BkczZkxo0F33VWjrCxGc5C4CDsAEAeam6X//m/p978fIL/f0KBBfs2fX6MLL2yKddOAmCPsAEAf9tlnDv3znyl64YUU7d0rSYYuu6xBd99do+xsRnMAibADAH3OgQM2vfhiMOBs3dpykZxBg6R7763WxRc3xrB1gPUQdgCgD6ivN7R6dbJeeCFFb76ZpEAgeIEch8PUlCkeXXFFo667rr/c7iaZDOgAbRB2AMCi/H5p/fokLVmSolWrktXY2LLDz/jxzbriigZdckmTBgwIyDAMpaRIbnfs2gtYFWEHACxm9267Fi9O1eLFqdq/3x4+npfn0xVXNOjyyxs1apQ/hi0E+hbCDgBYQEODoRUrkrV4carefjspfLxfv4Auu6xRM2Y06PTTvWzvAHQDYQcAYsQ0pfffd+n551P00kspqq8PTlMZhqnJkz266qoGXXhhk5KTY9xQoI8j7ABAFB04YNN777n03nsurVuXrLKyln+G8/J8uuqqBs2Y0aDhwwMxbCUQXwg7ANBLTFMqK7Pr3/926d13k/Teey7t3t32n93U1IBKSpr0ve816Mwzm5mmAnoBYQcAIsDrlb780q5duxz67DOHNm0Kjt5UVdnbnGcYpk45xaeJE5s1caJH06Z5lJ7OWnGgNxF2AKCTfD5p375goCkrc2jXruDtXbsc2rPHLr//6GEZl8vUuHHNX4ebZn3jG83q149wA0QTYQdAQmtslGpqbDp40KaqKrsqK21ff9nD36uqgscOHrTJNDueZ0pJCSgvz69Ro3w67TSvJk5sVnFxMwXGQIwRdgBYmmkGp4h8PkPNzS3fvV5DTU1HfzU2GmpqUvh+fb1NNTWG3G6bamqOvG2Tx9O1IpmkJFN5eT6NGuXTqFH+r78Hv3JyAtTcABZE2AH6KNMMfqA3NLT98vkM+XzBKRe/32jz/chjfr/a3A7eD90OnhcIKPyaoeOh80LPdbmkurqsNo+HzgkE2t5u+d7Rz20bbHy+3k8PNpup/v0DGjQo9OUPfx84MKDBgwMaODB4bODAgGy2478mAOsg7AC9zDSDF4yrqwt+1dfbdPiwofp6Q3V1NtXXtwSV1uGlsdFQQ4PtiPttHz/WlEr0pUTtJzmdphwOU8nJppKTpZSU0O2jv1JTTWVlBdSvX+h78Kv1sfR0kxEZII4RdoDj8Hql6upgvcbBgzZVV9t0+HAwsNTVBb8Hv2yqqzPCjx0+HAwy9fVGeNPG3pKcHFBqqqmUFFMul2S3m3I4JLs9uFFk2+/Bx493LPjV/uvYbMHnBI8Z6t8/U/X1NbLZgufbbC2vGzpmt7e+3f7joeNOpymns/3vDocIJgC6hLCDhOTxSJWVdlVU2PTVV/avv4Jh5tAhmw4etIdv19REZs7CZjOVlmYqPd1UenpwNCEtzVRaWjCohMJKSorZ5n7L7ZbzWn+lpAQDQqwYhqGhQzO1f3+DTLbbBmBBhB3EJY9HKitzaOdOhz791Kl9+4Jh5sCBYMCpru5aOjCMYE3HgAEBZWcHlJFhKjMzGFgyMoL3MzJC91tuh0JNenowlDAiAQDRR9hBn9bUJH30UTDU7Njh0KefBm/v3u1o95onrblcpgYP9mvIkICGDPGHi1AHDGgJNaHbWVmBmI6eAAC6j7ADyzJNqbraUHm5vcOvffukQGBQu8/PzAxo9GifCgu9ys31a/Bgv3JyAl8HHL/692ekBQASAWEHllBZadPWrU5t2+ZUaalTO3c6VF5uV2Pj8etlMjMDKiz06aSTvBo92qeTTvJp9Ggv1zwBAEgi7CDKTFOqqLBp2zantm1zff3dqYqKjueIBgzwa9iwlq/hw0O3A5owYaCkryRRGAsAaB9hBxFjmlJdnaGKCrv27w+ucqqoCH599ZVNFRV27dljP2pjRClYAHziiT4VFXlVVOTVKad4NWKEX0OH+pXSweVbgquApP37gz8bAID2EHbQLbW1hkpLneGpp48+Cq54amg4/rSTzWaqsLAl2BQVeTVmjFdpaSQWAEDkEXZwXDU1Rni6aetWl7ZudWr37o7/dDIzg6ubcnICysnxt/oKaOhQvwoLfUpJIdgAAKLDkmFn9erVWr58udxut3JzczVr1iwVFBR0eP7bb7+t559/XpWVlcrJydG1116r8ePHR7HFfY/fH7wqcGWlTVVVwd2eg99tX+/wHLyo3oEDNpWXt/9nMny4T8XFLaMzubnBjRAZoQEAWInlws7GjRu1aNEizZ49W6NHj9bLL7+sefPm6YEHHlC/fv2OOn/Hjh168MEHNXPmTI0fP17r16/XH//4R82fP18jR46MwW/Qe0wzeLG80H5JoT2VWvZWsn2935Kh2lqbamsN1dTYwrdra4M7PtfW2lRX17WrAo8Y0RJsiouDX9nZgV76TQEAiBzLhZ0VK1Zo2rRpmjp1qiRp9uzZ2rx5s9atW6fLLrvsqPNXrlypcePG6Tvf+Y4k6eqrr9a2bdu0evVq/fjHP45m09sIbUfQGX6/5HYHR1kOHgyOsoRuV1YGR1xCWxdEcgfo0FWBBw5s+Ro0KHhRveDuzsHbo0b5lJ3NaA0AoG+yVNjx+XwqKytrE2psNpuKioq0c+fOdp+zc+dOlZSUtDl22mmn6d///ne753u9Xnm93vB9wzCU8vVyH6OTF2UJnXes8z/6yKlLLhnYqdfrjqSk4L5IoX2VgnssBbckSEszv97ZObilQb9+AWVmhm6bX98P3nZ0+i/Aehes6Uw/oPfRD9ZAP1gD/WBNlgo7tbW1CgQCysrKanM8KytL5eXl7T7H7XYfNb3Vr18/ud3uds9funSplixZEr4/atQozZ8/X4MGtX8V3mPJycnp8LFBg6Tk5M69jmFI2dnS4MHSkCHB761vh74PHChlZkppaZLDYSgYQCKzSWVfdqx+QPTQD9ZAP1gD/WAtlgo70XD55Ze3GQkKpe/Kykr5fL5OvYZhGMrJyVFFRUWHuzyPHCmVlfW8vUdqaAh+oXP9gN5HP1gD/WAN9EP0OByOTg9UWCrsZGZmymazHTUq43a7jxrtCcnKylJNTU2bYzU1NR2e73Q65XQ6232sq3+Ypmnyx2wB9IM10A/WQD9YA/1gLZaaA3E4HMrPz1dpaWn4WCAQUGlpqQoLC9t9TmFhobZt29bm2NatWzV69OhebSsAAOgbLBV2JKmkpERr167V66+/rr179+qRRx6Rx+PRlClTJEkLFizQM888Ez7/4osv1pYtW7R8+XLt27dPixcv1ueff67p06fH6DcAAABWYqlpLEmaNGmSamtrtXjxYrndbuXl5Wnu3Lnhaamqqqo2Ve4nnXSSbrnlFj333HN69tlnNXToUP3mN7+Ju2vsAACA7jFMJhUlBQuUWy9JP5bgBpRDtX//fuZkY4h+sAb6wRroB2ugH6LH6XR2ukDZctNYAAAAkUTYAQAAcY2wAwAA4hphBwAAxDXCDgAAiGuEHQAAENcIOwAAIK4RdgAAQFwj7AAAgLhmue0iYsXh6Ppb0Z3nIPLoB2ugH6yBfrAG+qH3deU9ZrsIAAAQ15jG6obGxkb99re/VWNjY6ybktDoB2ugH6yBfrAG+sGaCDvdYJqmdu3axSZvMUY/WAP9YA30gzXQD9ZE2AEAAHGNsAMAAOIaYacbnE6nZsyYIafTGeumJDT6wRroB2ugH6yBfrAmVmMBAIC4xsgOAACIa4QdAAAQ1wg7AAAgrhF2AABAXGPzjm5YvXq1li9fLrfbrdzcXM2aNUsFBQWxblbc2r59u1566SXt2rVL1dXV+vWvf62JEyeGHzdNU4sXL9batWtVX1+vk08+WTfeeKOGDh0aw1bHl6VLl+q9997Tvn375HK5VFhYqO9///saNmxY+Jzm5mYtWrRIGzdulNfr1WmnnaYbb7xRWVlZsWt4nHnllVf0yiuvqLKyUpI0YsQIzZgxQ6effrok+iBWli1bpmeeeUYXX3yxrr/+ekn0hdUwstNFGzdu1KJFizRjxgzNnz9fubm5mjdvnmpqamLdtLjl8XiUl5enG264od3HX3zxRa1atUqzZ8/Wvffeq6SkJM2bN0/Nzc1Rbmn82r59uy688ELNmzdPt99+u/x+v+655x41NTWFz3nyySe1adMm/dd//ZfuuusuVVdX609/+lMMWx1/srOzNXPmTP3hD3/Q73//e40dO1b33Xef9uzZI4k+iIXPPvtMa9asUW5ubpvj9IXFmOiSW2+91XzkkUfC9/1+v/njH//YXLp0aewalUCuvPJK89133w3fDwQC5uzZs80XX3wxfKy+vt6cOXOmuX79+lg0MSHU1NSYV155pfnRRx+Zphl8z6+++mrz7bffDp+zd+9e88orrzR37NgRq2YmhOuvv95cu3YtfRADjY2N5i233GJu2bLF/N3vfmc+/vjjpmny34MVMbLTBT6fT2VlZSoqKgofs9lsKioq0s6dO2PYssR14MABud1uFRcXh4+lpqaqoKCAPulFDQ0NkqT09HRJUllZmfx+f5v/NoYPH66BAwfSD70kEAhow4YN8ng8KiwspA9i4JFHHtHpp5/e5t8fif8erIianS6ora1VIBA4as41KytL5eXlsWlUgnO73ZKkfv36tTner1+/8GOIrEAgoCeeeEInnXSSRo4cKSnYDw6HQ2lpaW3OpR8i78svv9Rtt90mr9er5ORk/frXv9aIESO0e/du+iCKNmzYoF27dun3v//9UY/x34P1MLIDoEseffRR7dmzR7/4xS9i3ZSENGzYMP3xj3/Uvffeq29961tauHCh9u7dG+tmJZSqqio98cQTuuWWW+RyuWLdHHQCIztdkJmZKZvNdlQyd7vdVNjHSOh9r6mpUf/+/cPHa2pqlJeXF5tGxbFHH31Umzdv1l133aUBAwaEj2dlZcnn86m+vr7N/83W1NTw30aEORwO5eTkSJLy8/P1+eefa+XKlZo0aRJ9ECVlZWWqqanRb3/72/CxQCCgjz/+WKtXr9Ztt91GX1gMYacLHA6H8vPzVVpaGl76HAgEVFpaqunTp8e4dYlp8ODBysrK0rZt28LhpqGhQZ999pm+9a1vxbZxccQ0TT322GN67733dOedd2rw4MFtHs/Pz5fdbte2bdt01llnSZLKy8tVVVWlwsLCWDQ5YQQCAXm9XvogioqKinT//fe3OfbXv/5Vw4YN06WXXqqBAwfSFxZD2OmikpISLVy4UPn5+SooKNDKlSvl8Xg0ZcqUWDctbjU1NamioiJ8/8CBA9q9e7fS09M1cOBAXXzxxXrhhRc0dOhQDR48WM8995z69++vCRMmxLDV8eXRRx/V+vXrNWfOHKWkpIRHN1NTU+VyuZSamqrzzz9fixYtUnp6ulJTU/XYY4+psLCQf9wj6JlnntG4ceM0cOBANTU1af369dq+fbtuu+02+iCKUlJSwvVqIUlJScrIyAgfpy+shV3Pu2H16tV66aWX5Ha7lZeXpx/96EcaPXp0rJsVtz766CPdddddRx2fPHmybr755vBFBV999VU1NDTo5JNP1g033NDmgnfomauuuqrd4zfddFM46IcuorZhwwb5fD4uotYL/vrXv6q0tFTV1dVKTU1Vbm6uLr300vBqIPogdu68807l5eUddVFB+sIaCDsAACCusRoLAADENcIOAACIa4QdAAAQ1wg7AAAgrhF2AABAXCPsAACAuEbYAQAAcY2wAwAA4hphB4Dl3XzzzVq4cGGsmwGgjyLsALCMHTt2aPHixaqvr491UwDEETYCBWAZO3bs0JIlSzRlyhSlpaWFjz/wwAMyDCOGLQPQlxF2AFie0+mMdRMA9GFsBArAEhYvXqwlS5YcdXzBggW66667dOqpp+rmm2+WJL3++ut6+OGH9T//8z/auHGjNmzYIL/fr0mTJmnWrFnyeDx6/PHHtWnTJknStGnTdO2117YZHQoEAlq1apXWrl2rr776SqmpqZowYYJmzpyp9PT08Hmff/65nnvuOZWVlampqUlZWVkaM2aMbrrppl5+RwBECiM7ACzhzDPP1P79+7VhwwZdd911ysjIkCRlZmZ2+JzHHntMWVlZuuqqq/Tpp5/q1VdfVWpqqnbu3KmBAwfqmmuu0ebNm/XSSy/phBNO0OTJk8PP/fvf/6433nhDU6ZM0UUXXaQDBw5o9erV2rVrl+6++245HA7V1NTonnvuUWZmpi699FKlpaWpsrJS7777bq+/HwAih7ADwBJyc3M1atQobdiwQRMmTNDgwYOP+5x+/frp1ltvlWEYuvDCC1VRUaHly5frggsu0OzZsyVJF1xwgW6++WatW7cuHHY++eQTvfbaa7rlllt0zjnnhF9vzJgxuvfee/XOO+/onHPO0Y4dO1RfX6/bb79dJ554Yvi8q6++OsK/PYDexGosAH3W+eef32ZqqqCgQKZp6vzzzw8fs9lsys/P11dffRU+9vbbbys1NVXFxcWqra0Nf+Xn5ys5OVmlpaWSFC6S3rRpk3w+X5R+KwCRxsgOgD5r4MCBbe6npqZKkgYMGHDU8dbL2SsqKtTQ0KAbb7yx3detra2VJJ166qk688wztWTJEr388ssaM2aMJkyYoHPOOYeiaaAPIewA6LNstvYHp9s73notRiAQUL9+/fSzn/2s3eeH6oQMw9CvfvUr7dy5U5s2bdKWLVv017/+VStWrNC8efOUnJwcgd8CQG8j7ACwjGhdS2fIkCHatm2bTj75ZLlcruOeX1hYqMLCQl1zzTVav369/vKXv2jDhg2aNm1aFFoLoKeo2QFgGUlJSZKkhoaGXv05kyZNUiAQaHepu9/vD0951dXV6circ+Tl5UmSvF5vr7YRQOQwsgPAMvLz8yVJzz77rM4++2zZ7XadccYZEf85p556qi644AItW7ZMX3zxhYqLi2W321VRUaG3335bP/rRj3TWWWfpjTfe0CuvvKIJEyYoJydHjY2NWrt2rVJSUjR+/PiItwtA7yDsALCMgoICfe9739OaNWv04YcfyjRNLViwoFd+1o9//GPl5+fr1Vdf1bPPPiu73a5Bgwbp3HPP1UknnSQpGIo+++wzbdy4UTU1NUpNTdWJJ56oW265pVNL4wFYA1dQBgAAcY2aHQAAENcIOwAAIK4RdgAAQFwj7AAAgLhG2AEAAHGNsAMAAOIaYQcAAMQ1wg4AAIhrhB0AABDXCDsAACCuEXYAAEBcI+wAAIC49v8BXPGT3kYP/4UAAAAASUVORK5CYII=", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "scores = brier_scores_administrative(preds,times,events)\n", "\n", "plt.xlabel('times')\n", "plt.ylabel('scores') \n", "plt.plot(times_of_survival_curve,scores,color='b')" ] }, { "cell_type": "markdown", "id": "8811b363-4349-4207-9969-3db01ef20384", "metadata": {}, "source": [ "The integral of the ‘brier scores’ are used as a singular metric." ] }, { "cell_type": "code", "execution_count": 12, "id": "8ea2d3ad-948b-4bfa-aef5-0d8d47ec7a24", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "np.float64(4.225046295847599)" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "integrated_brier_score_administrative(preds,times,events)" ] }, { "cell_type": "markdown", "id": "c4a1b1aa-466f-48cd-97df-ac559b0307dc", "metadata": {}, "source": [ "Within statistical learning methodologies, cross-validation is considered an important cornerstone of prediction evaluation. 'survivalpredict' comes with some tooling to evaluate models with cross-validation." ] }, { "cell_type": "code", "execution_count": 13, "id": "1db8f896-b320-4590-8b6a-7179033e3633", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "np.float64(3.9861410461140165)" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sur_cross_val_score(CoxProportionalHazard(),\n", " X,\n", " times,\n", " events,\n", " brier_score_max_time=max_time,\n", " cv=10,\n", " scoring='integrated_brier_score_administrative').mean()" ] }, { "cell_type": "markdown", "id": "75181cb4-a190-429e-825f-0ac98fcac490", "metadata": {}, "source": [ "It is a good idea to compare the performance of your models against the Kaplan Meier univariate survival curve. This would be analogous to sklearn’s dummy estimators." ] }, { "cell_type": "code", "execution_count": 14, "id": "727fbee3-4dd2-42d8-bd80-ff0bfd83207c", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "np.float64(4.815747737919164)" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sur_cross_val_score(KaplanMeierSurvivalEstimator(),\n", " X,\n", " times,\n", " events,\n", " brier_score_max_time=max_time,\n", " cv=10,\n", " scoring='integrated_brier_score_administrative').mean()\n", "\n", "#the lower the better, it seems that the cox model has a lower integrated brier score than the dummy KaplanMeier model." ] }, { "cell_type": "markdown", "id": "7297b7b7-ed3f-4fb5-a279-3ef6f533d585", "metadata": {}, "source": [ "If you wish to train a model with strata, fitting becomes 'estimator.fit(X,times,events, strata=strata)’.\n", "and predict becomes 'estimator.predict(X, strata=strata)'. The strata array should be an array with integer values. We also have tools for building strata. It is common practice to remove the column/columns used to build the strata." ] }, { "cell_type": "code", "execution_count": 15, "id": "e0cf1f73-e6f9-4e69-8cd2-e995d2d6dc25", "metadata": {}, "outputs": [], "source": [ "#getting the position of the age column of the numpy array\n", "position_of_age_col = int(\n", " np.argwhere(column_names == \"age\")[0][0]\n", ")\n", "age = X[:, position_of_age_col]\n", "\n", "\n", "\n", "sbd = StrataBuilderDiscretizer(n_bins=3,strategy='uniform')\n", "\n", "strata = sbd.fit_transform(age)\n", "X_without_strata = X[:,~np.isin(range(X.shape[1]), position_of_age_col)]" ] }, { "cell_type": "code", "execution_count": 16, "id": "f37569de-b3db-48a9-af62-92a9cb02843d", "metadata": {}, "outputs": [], "source": [ "cox_with_strata = CoxProportionalHazard()\n", "\n", "cox_with_strata.fit(X_without_strata,times,events,strata=strata)\n", "_ = cox_with_strata.predict(X_without_strata,strata=strata)\n" ] }, { "cell_type": "markdown", "id": "51dff29c-9ded-4ba9-9c06-df498a2ba26f", "metadata": {}, "source": [ "We can see a significant improvement in the cross-validation score after adding the strata to our cox model." ] }, { "cell_type": "code", "execution_count": 17, "id": "523c9b71-be52-483e-81be-02af228d195a", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "np.float64(2.10385484255526)" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sur_cross_val_score(CoxProportionalHazard(),\n", " X_without_strata,\n", " times,\n", " events,\n", " brier_score_max_time=max_time,\n", " cv=10,\n", " strata = strata,\n", " scoring='integrated_brier_score_administrative'\n", " ).mean()" ] }, { "cell_type": "markdown", "id": "bfff1a73-8891-414a-aac7-b5ded4d63dc9", "metadata": {}, "source": [ "we can also make our strata from categorical data." ] }, { "cell_type": "code", "execution_count": 18, "id": "7349ba53-209c-4f18-9681-b04ca03c7fd5", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([0, 1, 1, 2])" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ "StrataBuilderEncoder().fit_transform(['a','b','b','c'])" ] }, { "cell_type": "markdown", "id": "b864511f-07d2-48ea-8e8a-5554709b2ea4", "metadata": {}, "source": [ "**On Base Hazards**" ] }, { "cell_type": "markdown", "id": "4717c0ed-549c-4d28-bad6-a5890c556edd", "metadata": {}, "source": [ "The Cox Proportional Hazards model famously avoids estimating the base hazard. Rather, it uses Breslow’s non-parametric estimator for relative risk. The Breslow estimator is simply a function of the sum of failures and the total relative risk at each interval of time. This can lead to stepwise and sporadic base hazard. See here." ] }, { "cell_type": "code", "execution_count": 19, "id": "638626ff-19f5-45fb-9af1-27d0277f69b6", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([0.00000000e+00, 0.00000000e+00, 4.22362623e-06, 2.11185727e-06,\n", " 3.23049888e-06, 4.36391890e-06, 1.00938202e-05, 5.73938244e-06,\n", " 1.06450882e-05, 5.99679788e-06, 1.13141900e-05, 5.06075672e-06,\n", " 3.81145763e-06, 2.55188701e-06, 2.57106780e-06, 1.28562813e-06,\n", " 1.28623916e-06, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00,\n", " 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 1.29690188e-06,\n", " 2.62215977e-06, 2.62261275e-06, 6.70512152e-06, 1.10353441e-05,\n", " 1.39089749e-05, 2.81904663e-05, 3.69440115e-05, 4.53947482e-05,\n", " 7.88527319e-05, 1.29201916e-04, 1.57957811e-04, 2.07469988e-04,\n", " 2.38680946e-04, 3.23737833e-04, 3.37293381e-04, 3.19367161e-04,\n", " 3.58466069e-04, 4.16940175e-04, 8.15280093e-04, 9.12927357e-02,\n", " 5.87992106e-02, 0.00000000e+00, 0.00000000e+00])" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "#notice the 0's at different points in time\n", "cox._breslow_base_hazard" ] }, { "cell_type": "code", "execution_count": 20, "id": "740537ca-4ad9-4ac2-ba1b-87ace4cb6457", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(0.0, 0.0001)" ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.plot(cox._breslow_base_hazard,)\n", "#zooming in\n", "plt.ylim(0.,.0001)" ] }, { "cell_type": "markdown", "id": "6ca020f0-19d0-4d30-a844-2b7d459d09c4", "metadata": {}, "source": [ "The ParametricDiscreteTimePH estimator allows us to estimate a proportional hazards model with its coefficients and base-hazard concurrently. ParametricDiscreteTimePH has multiple options for the base hazard distributions. The typical hazard distributions are implemented: namely, \"weibull\",\"log_normal\",\"log_logistic\",\"gamma\" and \"gompertz\". The flexible “chen” and “additive chen weibull” are present as well. It should be noted that ParametricDiscreteTimePH is far more expensive to train than Cox, and cannot be blindly used in most situations. Be careful to set 'pytensor_mode' to 'NUMBA' or'FAST_COMPILE' when using multiprocessing, as JAX is not multiprocessing safe. ParametricDiscreteTimePH is using pymc under the hood, and we have access to both the coefficient and base hazards priors via the ‘coef_prior_normal_sigma’ and ‘base_harard_prior_exponential_lam’ parameters, respectively." ] }, { "cell_type": "code", "execution_count": 21, "id": "b1b2ddf1-1188-4e03-8c84-971ffb703ee0", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
ParametricDiscreteTimePH()
In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook.
On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.
" ], "text/plain": [ "ParametricDiscreteTimePH()" ] }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pph = ParametricDiscreteTimePH(distribution='chen',pytensor_mode='JAX')\n", "pph" ] }, { "cell_type": "code", "execution_count": 22, "id": "cda7bc53-dd9f-4a64-bccc-b0c7c85c1560", "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "An NVIDIA GPU may be present on this machine, but a CUDA-enabled jaxlib is not installed. Falling back to cpu.\n" ] }, { "data": { "text/plain": [ "np.float64(2.368922849108123)" ] }, "execution_count": 22, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pph.fit(X,times,events)\n", "integrated_brier_score_administrative(pph.predict(X,max_time=max_time),times,events)" ] }, { "cell_type": "markdown", "id": "745ec824-27ab-456e-8b0c-0bcdd2888ee5", "metadata": {}, "source": [ "We can easily interpret that ParametricDiscreteTimePH's base hazard." ] }, { "cell_type": "code", "execution_count": 23, "id": "181242aa-14c9-4e3f-b0c0-fc743b11c197", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[]" ] }, "execution_count": 23, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.plot(pph.get_base_hazard())" ] }, { "cell_type": "code", "execution_count": 24, "id": "65fe222c-0e8d-478e-af2c-245fb83fcac3", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([ 0.36387475, 0.45423797, -0.11316963, 0.42097301, -2.23271764,\n", " -1.92065642, -0.41782933, 0.21545313, 0.24167876, -0.43505684,\n", " -0.55561674, 0.67399218])" ] }, "execution_count": 24, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pph.coef_" ] }, { "cell_type": "code", "execution_count": 25, "id": "603c5205-eae8-4513-9c2e-ae5bf244766b", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "UniqueCountsResult(values=array([0, 1, 2]), counts=array([ 123, 2462, 565]))" ] }, "execution_count": 25, "metadata": {}, "output_type": "execute_result" } ], "source": [ "np.unique_counts(strata)" ] }, { "cell_type": "markdown", "id": "780ff312-50ef-43e7-a0ef-eb20260f63f8", "metadata": {}, "source": [ "We can also run the ParametricDiscreteTimePH with strata. Each strata will have its own distribution. In cases where different distribution structures exist per strata, it is recommended to run one of the Chen family distributions, as they roughly approximate other univariate hazard distributions." ] }, { "cell_type": "code", "execution_count": 26, "id": "f98dcb03-aa00-45f2-b9ed-6ea6c62f33fe", "metadata": {}, "outputs": [], "source": [ "pph_with_strata = ParametricDiscreteTimePH(distribution='additive_chen_weibull', pytensor_mode='JAX',coef_prior_normal_sigma=5,alpha=10)\n", "\n", "pph_with_strata.fit(X_without_strata,times,events,strata=strata)\n", "pph_with_strata_predict = pph_with_strata.predict(X_without_strata,strata=strata)\n" ] }, { "cell_type": "code", "execution_count": 27, "id": "91cb3aff-d2f7-4bf1-b22d-a0abf0d1ee06", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "np.float64(4.87355748776348)" ] }, "execution_count": 27, "metadata": {}, "output_type": "execute_result" } ], "source": [ "integrated_brier_score_administrative(pph_with_strata_predict,times,events)" ] }, { "cell_type": "code", "execution_count": 28, "id": "0a4f9703-bf51-4ab0-9ce6-bb959e814f24", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([ 0.35455539, 0.44061257, 0.00493953, -0.01356059, -2.06696696,\n", " -2.84337392, -0.14974594, -0.11260497, 0.15761777, -0.27331311,\n", " 1.48878247])" ] }, "execution_count": 28, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pph_with_strata.coef_" ] }, { "cell_type": "code", "execution_count": 29, "id": "ad9dccc5-0fd2-4edf-a626-edd1dc8e3ff5", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[3.11430514e-21, 6.85923042e-19, 3.38282589e-04, 2.52480691e-37],\n", " [2.10782513e-13, 4.53224781e-08, 8.86688357e-11, 1.13029609e-04],\n", " [2.36534325e-02, 1.45358858e+01, 1.34539067e-04, 2.49485575e-29]])" ] }, "execution_count": 29, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pph_with_strata.base_hazard_prams_" ] }, { "cell_type": "code", "execution_count": 30, "id": "bb0b21bc-6eec-4188-a070-9482248594c4", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[,\n", " ,\n", " ]" ] }, "execution_count": 30, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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q5kZ4VOf+pS9f/9+apAEfX199saNG+3XX3/d/upXv2r/53/+p23b/D5MJ3pYRhGNRnX06FHV19c720zTVH19vdra2pLYssx15swZBYNBLVq0yNmWl5en2tpaajKFent7JUkFBQWSpKNHjyoWiw353Zg7d65mzpxJHaaIZVl68cUXFQ6HVVdXRw2S4PHHH9fNN9885O+PxO/DdGIOyyh6enpkWdawMUi/36/29vbkNCrDBYNBSVJxcfGQ7cXFxc5jmFyWZekHP/iBrr/+es2bN09SvA4ej0f5+flD9qUOk+/48eN68MEHFYlElJOToy984QuqrKzUsWPHqME0evHFF/X222/r61//+rDH+H2YPvSwABjV9773PZ04cUL/+I//mOymZKQ5c+bo0Ucf1SOPPKL3v//92rZtm06ePJnsZmWUrq4u/eAHP9DGjRvl8/mS3ZyMRg/LKIqKimSa5rCEHAwGmfmdJInve3d3t0pKSpzt3d3dqq6uTk6j0tj3vvc9vfrqq/ra176mGTNmONv9fr+i0ahCodCQ/1V2d3fzuzHJPB6PysvLJUk1NTX685//rL1792rp0qXUYJocPXpU3d3d+vKXv+xssyxLf/jDH7Rv3z49+OCD1GKaEFhG4fF4VFNTo9bWVue0Wsuy1Nraqg984ANJbl1mKisrk9/v16FDh5yA0tvbqyNHjuj9739/chuXRmzb1ve//3399re/1UMPPaSysrIhj9fU1CgrK0uHDh3SX/3VX0mS2tvb1dXVpbq6umQ0OWNYlqVIJEINplF9fb3+/d//fci273znO5ozZ47uuusuzZw5k1pMEwLLO2hoaNC2bdtUU1Oj2tpa7d27V+FwWMuXL09209JWf3+/Ojs7nftnzpzRsWPHVFBQoJkzZ2rVqlV65plnVFFRobKyMj311FMqKSnRbbfdlsRWp5fvfe97euGFF/SlL31Jubm5Ti9jXl6efD6f8vLy9L73vU/bt29XQUGB8vLy9P3vf191dXX8gZ5ETzzxhJYsWaKZM2eqv79fL7zwgg4fPqwHH3yQGkyj3NxcZ/5WQnZ2tgoLC53t1GJ6cLXmq9i3b5+effZZBYNBVVdX6+///u+1YMGCZDcrbb355pv62te+Nmz7e9/7Xn3uc59zFo775S9/qd7eXi1cuFD33XffkEXNcG0++tGPjrj9/vvvd8J6YqGsF198UdFolIWypsB3vvMdtba26vz588rLy1NVVZXuuusu5ywVapA8Dz30kKqrq4ctHEctphaBBQAAuB5nCQEAANcjsAAAANcjsAAAANcjsAAAANcjsAAAANcjsAAAANcjsAAAANcjsAAAANcjsAAAANcjsAAAANcjsAAAANcjsAAAANf7/xwL1PkiMbahAAAAAElFTkSuQmCC", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "#base hazard per strata\n", "#plt.ylim(0.,.0001)\n", "plt.plot(pph_with_strata.get_base_hazard().T)" ] }, { "cell_type": "code", "execution_count": 31, "id": "27f5a8b9-2a7f-4771-b449-9dc1e1b8353d", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "np.float64(2.4054070201579068)" ] }, "execution_count": 31, "metadata": {}, "output_type": "execute_result" } ], "source": [ "#this will take a while, feel free to skip this\n", "sur_cross_val_score(ParametricDiscreteTimePH(distribution='chen',pytensor_mode='JAX',coef_prior_normal_sigma=5,alpha=10),\n", " X_without_strata,\n", " times,\n", " events,\n", " brier_score_max_time=max_time,\n", " cv=10,\n", " strata = strata,\n", " scoring='integrated_brier_score_administrative'\n", " ).mean()\n" ] }, { "cell_type": "code", "execution_count": 32, "id": "5f4b6a3e-c0b8-4459-86bf-4113b47dfe3e", "metadata": {}, "outputs": [], "source": [ "pph_with_strata = ParametricDiscreteTimePH(distribution='additive_chen_weibull', pytensor_mode='JAX')\n", "\n", "pph_with_strata.fit(X_without_strata,times,events,strata=strata)\n", "pph_with_strata_predict = pph_with_strata.predict(X_without_strata,strata=strata)\n" ] }, { "cell_type": "markdown", "id": "d680fd08-853f-4f30-90df-fc64b48765c8", "metadata": {}, "source": [ "**Non-interpretive models and GridSearchCV**" ] }, { "cell_type": "markdown", "id": "d53b9856-751c-4a8f-bf9e-fdc8187ff785", "metadata": {}, "source": [ "We also have access to models that lack interpretive power, like K-Nearest Neighbors and Neural networks." ] }, { "cell_type": "code", "execution_count": 33, "id": "56555453-82f6-45d3-bf4d-8f41b3ce2a99", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "np.float64(1.6548719818337863)" ] }, "execution_count": 33, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sur_cross_val_score(KNeighborsSurvival(),\n", " X,\n", " times,\n", " events,\n", " brier_score_max_time=max_time,\n", " cv=10,\n", " ).mean()\n" ] }, { "cell_type": "code", "execution_count": 34, "id": "3dfef074-4755-49ce-a35d-035ddeb5c57d", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
CoxNeuralNetPH(hidden_layers=[50], max_iter=150)
In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook.
On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.
" ], "text/plain": [ "CoxNeuralNetPH(hidden_layers=[50], max_iter=150)" ] }, "execution_count": 34, "metadata": {}, "output_type": "execute_result" } ], "source": [ "nn = CoxNeuralNetPH(hidden_layers=[50],max_iter=150)\n", "nn.fit(X,times,events) \n", "#quick note, we can also stratify the CoxNeuralNetPH model" ] }, { "cell_type": "code", "execution_count": 35, "id": "ffa7d175-d2f0-42a4-af26-73aa1e263625", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "np.float64(1.329820900176675)" ] }, "execution_count": 35, "metadata": {}, "output_type": "execute_result" } ], "source": [ "integrated_brier_score_administrative(nn.predict(X,max_time=max_time),times,events)" ] }, { "cell_type": "code", "execution_count": 36, "id": "0e8cd6cf-a363-45e4-b611-9b7a3d8b23eb", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "np.float64(1.4477499363589854)" ] }, "execution_count": 36, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sur_cross_val_score(CoxNeuralNetPH(hidden_layers=[50],max_iter=150),\n", " X,\n", " times,\n", " events,\n", " brier_score_max_time=max_time,\n", " cv=10,\n", " ).mean()\n" ] }, { "cell_type": "markdown", "id": "ad16456f-2b25-45b7-9c5b-3109757d2031", "metadata": {}, "source": [ "\n", "Finally, it should be noted that we have access to hyperparameter tuning tools, much like scikit-learn." ] }, { "cell_type": "code", "execution_count": 37, "id": "7dcd5439-be89-4984-8566-0a9480b8ebc6", "metadata": {}, "outputs": [], "source": [ "grid = {'n_neighbors':[5,10,50,100]}\n", "knn_gscv = Sur_GridSearchCV(estimator=KNeighborsSurvival(),cv=10,param_grid=grid)\n" ] }, { "cell_type": "code", "execution_count": 38, "id": "14e53f3e-ae6b-49d5-9f61-20b0cdc68f7d", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
Sur_GridSearchCV(cv=10, estimator=KNeighborsSurvival(),\n",
       "                 param_grid={'n_neighbors': [5, 10, 50, 100]})
In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook.
On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.
" ], "text/plain": [ "Sur_GridSearchCV(cv=10, estimator=KNeighborsSurvival(),\n", " param_grid={'n_neighbors': [5, 10, 50, 100]})" ] }, "execution_count": 38, "metadata": {}, "output_type": "execute_result" } ], "source": [ "#warning, this will take a while\n", "knn_gscv.fit(X,times,events)\n" ] }, { "cell_type": "code", "execution_count": 39, "id": "38427713-b1c8-4a44-9a62-2ad993f60e7d", "metadata": {}, "outputs": [], "source": [ "gscv_results = pd.DataFrame(knn_gscv.cv_results_)" ] }, { "cell_type": "code", "execution_count": 40, "id": "92928b0b-3cfc-44a9-816f-efe4f09e265e", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
paramsparam_n_neighborsrank_test_scoremean_fit_timestd_fit_timemean_test_scoresstd_test_scoressplit0_test_scoresplit1_test_scoresplit2_test_scoresplit3_test_scoresplit4_test_scoresplit5_test_scoresplit6_test_scoresplit7_test_scoresplit8_test_scoresplit9_test_score
0{'n_neighbors': 5}510.0162880.0043911.5866770.3831592.3928021.6299111.2005971.7039981.9046681.3069641.7419521.3072751.6926150.985988
1{'n_neighbors': 10}1020.0126420.0018751.6548720.3798032.2650412.0031741.1146861.7548211.9941421.7953101.4070951.5467411.6752300.992480
2{'n_neighbors': 50}5030.0097180.0012892.0698450.4847362.3080402.0661841.9352812.5687452.5155252.7543402.2845231.5763881.4383731.251052
3{'n_neighbors': 100}10040.0075710.0008122.2995400.5271792.2950401.9840762.1468862.7244922.9344563.1822992.6603961.8328151.7037441.531201
\n", "
" ], "text/plain": [ " params param_n_neighbors rank_test_score mean_fit_time \\\n", "0 {'n_neighbors': 5} 5 1 0.016288 \n", "1 {'n_neighbors': 10} 10 2 0.012642 \n", "2 {'n_neighbors': 50} 50 3 0.009718 \n", "3 {'n_neighbors': 100} 100 4 0.007571 \n", "\n", " std_fit_time mean_test_scores std_test_scores split0_test_score \\\n", "0 0.004391 1.586677 0.383159 2.392802 \n", "1 0.001875 1.654872 0.379803 2.265041 \n", "2 0.001289 2.069845 0.484736 2.308040 \n", "3 0.000812 2.299540 0.527179 2.295040 \n", "\n", " split1_test_score split2_test_score split3_test_score split4_test_score \\\n", "0 1.629911 1.200597 1.703998 1.904668 \n", "1 2.003174 1.114686 1.754821 1.994142 \n", "2 2.066184 1.935281 2.568745 2.515525 \n", "3 1.984076 2.146886 2.724492 2.934456 \n", "\n", " split5_test_score split6_test_score split7_test_score split8_test_score \\\n", "0 1.306964 1.741952 1.307275 1.692615 \n", "1 1.795310 1.407095 1.546741 1.675230 \n", "2 2.754340 2.284523 1.576388 1.438373 \n", "3 3.182299 2.660396 1.832815 1.703744 \n", "\n", " split9_test_score \n", "0 0.985988 \n", "1 0.992480 \n", "2 1.251052 \n", "3 1.531201 " ] }, "execution_count": 40, "metadata": {}, "output_type": "execute_result" } ], "source": [ "gscv_results.sort_values('rank_test_score').head(5)" ] }, { "cell_type": "code", "execution_count": 41, "id": "9e30f953-8694-47c7-a3cd-12ae2fb27467", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "np.float64(1.5866770434755766)" ] }, "execution_count": 41, "metadata": {}, "output_type": "execute_result" } ], "source": [ "knn = KNeighborsSurvival(**gscv_results[gscv_results['rank_test_score'] == 1]['params'].values[0])\n", "\n", "sur_cross_val_score(knn,\n", " X,\n", " times,\n", " events,\n", " brier_score_max_time=max_time,\n", " cv=10,\n", " ).mean()\n" ] }, { "cell_type": "code", "execution_count": null, "id": "1b40f6a2-e499-4fa5-a498-5f4c3e6816c9", "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "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.13.1" } }, "nbformat": 4, "nbformat_minor": 5 }