{
"cells": [
{
"cell_type": "markdown",
"id": "f300ce78-9cc9-4cac-91e3-376be3242b5b",
"metadata": {},
"source": [
"# Kaplan Meier"
]
},
{
"cell_type": "markdown",
"id": "1c7da5ed-abb5-4ee8-a351-356377d8d4d8",
"metadata": {},
"source": [
"Core idea start with haz function and go backwards sample->haz->surv->cdf->pmf."
]
},
{
"cell_type": "markdown",
"id": "7d1e3b2d-5e76-4b44-a1be-47e1017c8ce4",
"metadata": {},
"source": [
"## Imports"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "e2dca30c-4bf3-42a7-8ecb-b27e29fcf35e",
"metadata": {},
"outputs": [],
"source": [
"import os\n",
"import pandas as pd\n",
"import numpy as np\n",
"import scipy as sp\n",
"import matplotlib.pyplot as plt\n",
"import seaborn as sns\n",
"from scipy.stats import gaussian_kde"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "09d972c3-9177-4439-9d33-9468f20af854",
"metadata": {},
"outputs": [],
"source": [
"sns.set()"
]
},
{
"cell_type": "markdown",
"id": "a463ee30-d951-472c-b2e0-e40ed79a9066",
"metadata": {},
"source": [
"## Dog Adoption Data\n",
"\n",
"- Investigating time it takes to get dog adopted from a shelter\n",
"- Every 10 weeks visit shelter\n",
"- Note: Arrival time of each dog and adoption time of each job"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "de60055d-2769-4ced-86d7-ed3a07ef5cdc",
"metadata": {},
"outputs": [],
"source": [
"obs = pd.DataFrame()\n",
"obs['Start'] = 0,1,2,2,4,6,7\n",
"obs['End'] = 5,2,6,9,9,8,9\n",
"obs['Status']= 1,1,1,0,0,1,0 # 1 -> Adopted, 0 -> Not adopted"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "c0e30883-d68d-4df6-a55e-90432b47a382",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" Start \n",
" End \n",
" Status \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" 0 \n",
" 5 \n",
" 1 \n",
" \n",
" \n",
" 1 \n",
" 1 \n",
" 2 \n",
" 1 \n",
" \n",
" \n",
" 2 \n",
" 2 \n",
" 6 \n",
" 1 \n",
" \n",
" \n",
" 3 \n",
" 2 \n",
" 9 \n",
" 0 \n",
" \n",
" \n",
" 4 \n",
" 4 \n",
" 9 \n",
" 0 \n",
" \n",
" \n",
" 5 \n",
" 6 \n",
" 8 \n",
" 1 \n",
" \n",
" \n",
" 6 \n",
" 7 \n",
" 9 \n",
" 0 \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" Start End Status\n",
"0 0 5 1\n",
"1 1 2 1\n",
"2 2 6 1\n",
"3 2 9 0\n",
"4 4 9 0\n",
"5 6 8 1\n",
"6 7 9 0"
]
},
"execution_count": null,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"obs"
]
},
{
"cell_type": "markdown",
"id": "87c981e0-2a89-49bd-862c-a77b419998a2",
"metadata": {},
"source": [
"### Potting Lifelines"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "2212ad4a-4fe7-47ba-81c6-0476d08f78b9",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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zCx/8OcptTQnKaXU0pzlD/5cOMM6pizHM/5ce3t7rr/++owePbrcS8PHZv61p2fFipWVHoMqNb9nnf1Bh7YFc5P29+yHla1pnXVz6rfZtTJDAR9Y2aP57LPPzvrrr59DDz30A31dY2NDN020dgMG9KnIulS3+Ul69iz7vz6sQ+wP/qTtvcH8v0oti/0dw2rsh+pW1p/qkydPzksvvZQrrrgitbUf7GRIc3NL2ttL3TTZmg0Y0CeLFi0p65qsGz77/86yN+iUnx38ueXXnfy/RzNWV9PQ3z6hg58blVdbW7PWF2nLdsu5H/7wh3nqqady2WWXpb6+vlzLAkBF1Tftn9S95++9uvpV14F1RlleaZ4zZ06uvPLKbLHFFvnmN7+ZJNl0001z2WWXlWN5AKiYP51bbp11c0oti1PT0D/1Tfs7zwzrmLJE8zbbbJPZs2eXYykAqDr12+ya+m129Z/gYR3mHQEBAKCAaAYAgAKiGQAACohmAAAoIJoBAKCAaAYAgAKiGQAACohmAAAoIJoBAKCAaAYAgAKiGQAACohmAAAoIJoBAKCAaAYAgAKiGQAACnQpmt988801Xn/55Zc/1mEAAKAadSma99lnn9x///2rXbvuuutywAEHdMtQAABQTeq68knnnntuvv/972ePPfbIEUcckbPPPjsLFy7ML37xi+6eDwAAKq5LrzTvvvvuue222/LYY4/la1/7Wvr165ebbropf/mXf9nd8wEAQMV1KZqXLl2ayZMnp6WlJYcffngeeOCB3HLLLd09GwAAVIUuRfPYsWOzcuXK/Pa3v82pp56aX/ziF/nlL3+ZY445prvnAwCAiutSNJ988sm54IIL0qdPnyTJkCFDctNNN2WLLbboztkAAKAqdCma995776xYsSKPPvpo7rzzziRJW1tbxo8f363DAQBANejS3TNmz56d4447LvX19VmwYEH23nvvzJo1K7fccksuvvjibh4RAAAqq0uvNJ9xxhk58cQTc9ddd6WublVnNzU15bHHHuvW4QAAoBp0KZqff/75jBs3LklSU1OTJFl//fWzfPny7psMAACqRJeieZNNNslTTz212rUnn3wyn/vc57plKAAAqCZdOtM8fvz4HHPMMfnmN7+ZFStW5Morr8yvf/3rnH322d09HwAAVFyXXmn+yle+kquuuiqLFy9OU1NTXn311Vx66aUZOXJkd88HAAAV16VXmpNk6NChOeOMM7pxFAAAqE6dRvMll1zSpSdwr2YAAD7pOo3m119/vePPy5cvzz333JPPf/7z2WSTTTJ//vz893//d/bcc8+yDAkAAJXUaTSfd955HX/+9re/nX/7t3/LXnvt1XHtnnvuyV133dW90wEAQBXo0i8CPvDAA/nqV7+62rXRo0fn/vvv75ahAACgmnQpmjfffPP86le/Wu3a9ddf7z7NAAB8KnTp7hnnnHNOjj/++Fx11VXZeOONs2DBgtTV1eXSSy/t7vkAAKDiuhTNQ4cOzd13350nnngiixYtyoABA7LDDjukZ8+e3T0fAABUXJfv09yzZ880NTWlvb2941p7e3tqa7t0wgMAANZZXYrmp59+OmeddVZmz56d5cuXJ0lKpVJqamry7LPPduuAAABQaV2K5gkTJuQrX/lKJk2alPXWW6+7ZwIAgKrSpWh+9dVX8+1vfzs1NTUfeqFvfetb+Z//+Z/U1tZm/fXXz2mnnZYhQ4Z86OcDAIBy6VI0/83f/E2mT5+eUaNGfeiFJk+enD59+iRJ7r333kycODG33HLLh34+AAAoly5F8/Lly3P88cdn5513zkYbbbTaY+eff36XFvpTMCdJS0vLR3rVGgAAyqlL0bz11ltn6623/siL/cu//EtmzJiRUqmUq6666iM/H1TK9y6fnhWtbZUegyrVs76H/cEa2Rt0xt5Y3amH7FTpEd6nplQqlcq96NSpU3PHHXfkpz/9abmXho/F9y6fXukRAOAT67xvjaz0CO/TaTTPmjUrTU1NSZKHHnqo0yfYZZddPtTC22+/fe6///5suOGGXfr85uaWtLeXt+8HDOiTRYuWlHVN1g32Bmtjf9AZe4PO2BuVV1tbk8bGhk4f7/R4xplnnpnbb789yapjFWtSU1OT3/3ud4VDLF26NG+//XYGDx6cJJk2bVo22GCD9OvXr/BrAQCg0jqN5j8Fc7Iqcj+KZcuWZfz48Vm2bFlqa2uzwQYb5IorrvDLgAAArBO6/DbaH8VGG22UG264oRxLAQDAx6620gMAAEC1E80AAFBANAMAQIEunWlub29f4/XaWs0NAMAnX5eieejQoWu800WPHj0ycODA7LnnnjnhhBPSu3fvj31AAACotC5F82mnnZZ77703Rx99dAYNGpTXXnstV111VXbfffdsueWWueyyyzJp0qSce+653T0vAACUXZei+eqrr84tt9ySPn36JEm23HLLfP7zn89+++2Xe++9N9ttt13222+/bh0UAAAqpUuHkltaWrJs2bLVri1btixLlqx6u8eNNtoo77777sc/HQAAVIEuvdK877775sgjj8xhhx2WQYMGZcGCBbnmmmvyt3/7t0mS6dOnZ8stt+zWQQEAoFK6FM3f/e53s/nmm+eOO+7IwoULM2DAgBx88MH5xje+kST54he/mBEjRnTroAAAUCldiuba2tocdNBBOeigg9b4eK9evT7WoQAAoJp0KZqT5Oabb86tt96aBQsWZOONN864ceOy//77d+dsAABQFboUzT/+8Y8zderUHHnkkfnsZz+b+fPn56qrrsrChQtz3HHHdfeMAABQUV2K5htvvDHXXnttNtlkk45rI0eOzKGHHiqaAQD4xOvSLeeWLVuW/v37r3atX79+bjMHAMCnQpeiedSoUTnllFPywgsv5N13383cuXMzYcKEjBw5srvnAwCAiutSNJ9++unp3bt3xo4dmx133DH77rtvPvOZz+S0007r7vkAAKDiakqlUqmrn9ze3p4333wzG264YWpru9TbH5vm5pa0t3d51I/FgAF9smjRkrKuybrB3mBt7A86Y2/QGXuj8mpra9LY2NDp4136RcDnn38+jz76aP74xz9mgw02yLBhw7L11lt/bEMCAEA1W2s0l0qlTJw4MVOnTs2gQYMycODALFiwIAsXLsy4ceMyadKk1NTUlGtWAACoiLVG829+85s88sgj+c1vfpPtt9++4/qTTz6Zk08+Ob/+9a87fZdAAAD4pFjrweRbb7013//+91cL5iTZfvvtM3HixNx6663dOhwAAFSDtUbz3Llz09TUtMbHmpqaMnfu3G4ZCgAAqslao7mtrS0NDWv+LcKGhoa0t7d3y1AAAFBN1nqmeeXKlfn973+fzu5K19bW1i1DAQBANVlrNDc2NmbixImdPv7et9YGAIBPorVG87Rp08o1BwAAVK3yvq0fAACsg0QzAAAUEM0AAFBANAMAQAHRDAAABUQzAAAUEM0AAFBANAMAQAHRDAAABUQzAAAUEM0AAFBANAMAQAHRDAAABUQzAAAUKHs0T5kyJdttt12ee+65ci8NAAAfSlmj+emnn84TTzyRTTbZpJzLAgDAR1K2aG5tbc1Z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dMNEAN2vrtIDAKyLdtxxx44/L1u2LPX19enRo0eS5Mwzz8wdd9xRtlkuueSSHHXUUR33ea1WRx55ZH70ox/l0ksvrfQoAB+YaAb4EB5//PGOP48ePTrnnHNOdt1117LPsXDhwjz88MO58MILy772B7XHHnvkjDPOyKJFizJgwIBKjwPwgTieAdANRo8enZkzZyZJLr300px44ok55ZRTsuOOO2afffbJvHnzcuWVV2aXXXbJ7rvvnunTp3d87ZIlSzJx4sSMHDkyo0aNykUXXZS2trY1rjNz5swMHTo0vXr1SpLcfPPNOfbYYzse33PPPXPiiSd2fLz77rvn2WefTbLq3U+POOKIDB8+PHvttVfuvPPOjs9rbW3N5MmT8+Uvfzm77rprTj/99Lz77rtrnOGaa67J3nvvnddffz2LFy/OMccck2HDhmX48OE5+OCD097eniTp1atX/uqv/mq1f1aAdYVoBiiD++67L+PGjcusWbMyZMiQHHXUUWlvb88DDzyQf/qnf8rpp5/e8bkTJkxIXV1d7rnnnkydOjUzZszIjTfeuMbnnT17drbccsuOj4cPH55HH3007e3tWbBgQVasWJEnnngiyaq3cn7nnXey3Xbb5Z133smRRx6ZMWPGZObMmbnoooty5pln5vnnn0+SXHjhhZk3b16mTp2ae+65JwsXLlzj28VPmTIlt9xyS375y19m0KBBufrqq7PxxhvnoYceyowZM/Kd73xntWMjW221Vf7whz98HN9SgLISzQBlMGzYsIwaNSp1dXX52te+ljfffDNHH310evbsmb333juvvvpq3n777bzxxhu5//77M3HixKy//vppbGzM4Ycf3ukZ6SVLlqR3794dH2+22Wbp3bt3nn322Tz66KMZOXJkBg4cmLlz5+aRRx7JzjvvnNra2vznf/5nNtlkk+y///6pq6vL0KFDs9dee+Wuu+5KqVTKDTfckIkTJ6Zfv35paGjIMcccs9oMpVIp5513XmbMmJFrrrkm/fv3T5LU1dVl0aJFmT9/fnr27Jlhw4atFs29e/fO22+/3U3fZYDu40wzQBk0NjZ2/Hm99dbLhhtu2PGLg+utt16S5J133snChQuzcuXKjBw5suPz29vbM3jw4DU+b9++fbN06dLVrjU1NeWRRx7JSy+9lKampvTp0yezZs3KE088keHDhydJXn311Tz55JMZNmxYx9e1tbVl7NixWbx4cZYtW5b99tuv47FSqdRxzCJZFes33HBDLrroovTp06fj+lFHHZUpU6bkyCOPTJIceOCBOfroozseX7p0afr27dvF7xpA9RDNAFVk0KBBqa+vz+9///vU1RX/iN5uu+0yderU1a4NHz4806ZNy6uvvppjjz02ffv2zW233ZbHH388hxxySJJk8ODBaWpqytVXX/2+52xvb896662XO+64IxtvvPEa1+3bt28uuOCCnHTSSZkyZUp23nnnJElDQ0MmTJiQCRMm5Lnnnsvf//3f56//+q+zyy67JFl1jnrs2LEf5FsCUBUczwCoIgMHDsxuu+2Wf/3Xf01LS0va29vz8ssv55FHHlnj5++222555plnsnz58o5rTU1Nefjhh/Puu+9m0KBBGTZsWB588MG89dZbGTp0aJLky1/+cl588cVMnTo1K1asyIoVK/Lkk09m7ty5qa2tzQEHHJBJkyalubk5SbJgwYI8+OCDq609YsSIXHjhhTnhhBPy5JNPJll1dvull15KqVRKnz590qNHj47jGcuXL8/TTz9dkbuMAHxUohmgypx//vlZsWJF9t577zQ1NeXEE0/MokWL1vi5G220UUaMGJHf/e53Hde23HLL9O7du+PoRUNDQzbddNPstNNOHUdCGhoa8rOf/Sx33nlnRo0alZEjR+bCCy9Ma2trkuSf//mfs/nmm+cb3/hGdtpppxx++OGZN2/e+9bfbbfdMmnSpBx77LF5+umn89JLL+WII47IjjvumAMPPDAHHXRQvvjFLyZJpk2bluHDh3f66jVANasplestpADoFs8//3xOPfXU3HTTTVX9BicHHHBAzj333Gy77baVHgXgAxPNAABQwPEMAAAoIJoBAKCAaAYAgAKiGQAACohmAAAoIJoBAKCAaAYAgAKiGQAACvz/gcWxA7DWZxQAAAAASUVORK5CYII=\n",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"def plot_lifelines(df):\n",
" fig, ax = plt.subplots(1, figsize=(12,6))\n",
" for i, row in df.iterrows():\n",
" if row['Status']==0: plt.hlines(i,row['Start'], row['End'], color='C0') # complete\n",
" else: #incomplete\n",
" plt.hlines(i, row['Start'], row['End'], color='C1')\n",
" plt.plot(row['End'], i, marker='o', color='C1')\n",
" plt.xlabel('Time (weeks)')\n",
" plt.ylabel('Dog index')\n",
" plt.gca().invert_yaxis()\n",
" \n",
"plot_lifelines(obs)"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "b02f1620-534b-42f4-8d1e-876d7bb99948",
"metadata": {},
"outputs": [],
"source": [
"duration = obs['End'] - obs['Start']"
]
},
{
"cell_type": "markdown",
"id": "954ba31e-98fe-46bc-a099-5136c776a3cf",
"metadata": {},
"source": [
"### Reverse Calculation"
]
},
{
"cell_type": "markdown",
"id": "bc83ad21-f9d3-4749-9b1b-e784f702802e",
"metadata": {},
"source": [
"```{admonition} Key Ideas\n",
"- Shift the lifetimes as if everything started at zero\n",
"- Compute hazard rate by considering \n",
" - How many dogs were there which could have been adopted at each time stamp\n",
" - How many were actually adopted at any particular timestamp\n",
"```"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "3b94b2b8-8db7-476a-ab46-5d102c1eb920",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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xtqeuDet3z0//zPzb9L63fPT9sS9tR4JYLuqEs0DBgzI2LFjO78+/PDDs2LFimocDUA31fbEvdl0zzdTaW1JUkmltSWb7vmmcAa6parcnvF/dXR05Hvf+14mTpxY7aNftRU3Ts/mzVtqPUaPtKJ3g92WxG7LY7e7VvuqZUnHy/a5pS1tS+el8ZCjazMUwA5UPZovvfTS7L333vnoRz/6qn7e4MFNJU20YyuS9O5d9RXtMey2PHZbHrvdddpfHsy/V2ldmyFD+lV5mp7NPstjt+Xpbrut6u/+s2fPzlNPPZXrrrsu9fWv7s6QlpbWdHRUSpps+173tzOyZs36qp65pxgypJ/dlsRuy2O3u9am757/+1sztlXXNMiedyG/bstjt+WpxW7r6+te8UXaqr3l3Je+9KU88sgjufbaa9PY2FitYwHophqbT0oaXvbfg4bGrdcBupmqvNL8xBNP5Gtf+1oOPPDAfOhDH0qS7L///rn22murcTwA3dAf7ltuWzovlda1qWsalMbmk9zPDHRLVYnmQw45JI8//ng1jgJgN9J4yNFpPORof8wNdHs+ERAAAAqIZgAAKCCaAQCggGgGAIACohkAAAqIZgAAKCCaAQCggGgGAIACohkAAAqIZgAAKCCaAQCggGgGAIACohkAAAqIZgAAKCCaAQCgQJeied26ddu9/vTTT+/SYQAAoDvqUjS/733vy913373Nte9+97v5wAc+UMpQAADQnTR05ZtmzpyZz3/+8znmmGNy6qmn5tJLL83q1avzrW99q+z5AACg5rr0SvOECRNyyy235Je//GXe8573ZMCAAbnpppvy53/+52XPBwAANdelaN6wYUNmz56d1tbWnHLKKfn5z3+e+fPnlz0bAAB0C12K5uOPPz5btmzJj3/841xwwQX51re+lW9/+9s588wzy54PAABqrkvRfP755+fKK69Mv379kiSjRo3KTTfdlAMPPLDM2QAAoFvoUjQfd9xx2bx5cx544IHcfvvtSZL29vacd955pQ4HAADdQZfePePxxx/PJz7xiTQ2NmbVqlU57rjjsnTp0syfPz9f/vKXSx4RAABqq0uvNF988cU599xz85Of/CQNDVs7u7m5Ob/85S9LHQ4AALqDLkXzk08+mRNOOCFJUldXlyTZe++9s2nTpvImAwCAbqJL0bzffvvlkUce2ebaww8/nD/90z8tZSgAAOhOunRP83nnnZczzzwzH/rQh7J58+Z87Wtfy/e///1ceumlZc8HAAA116VXmt/1rnfl+uuvz9q1a9Pc3Jxnn30211xzTcaNG1f2fAAAUHNdeqU5SUaPHp2LL764xFEAAKB72mE0X3311V16Au/VDABAT7fDaH7uuec6f7xp06bceeedeeMb35j99tsvK1asyH/913/l3e9+d1WGBACAWtphNF9++eWdP/7MZz6Tf/zHf8yxxx7bee3OO+/MT37yk3KnAwCAbqBLfxHw5z//ef7yL/9ym2sTJ07M3XffXcpQAADQnXQpmkeOHJnvfOc721z73ve+532aAQDYI3Tp3TMuu+yyfOpTn8r111+fYcOGZdWqVWloaMg111xT9nwAAFBzXYrm0aNH54477shDDz2UNWvWZMiQITn88MPTu3fvsucDAICa6/L7NPfu3TvNzc3p6OjovNbR0ZH6+i7d4QEAALutLkXzo48+mhkzZuTxxx/Ppk2bkiSVSiV1dXX51a9+VeqAAABQa12K5qlTp+Zd73pXZs2alb322qvsmQAAoFvpUjQ/++yz+cxnPpO6urqdPujss8/Ob3/729TX12fvvffORRddlFGjRu308wEAQLV0KZr/6q/+KosWLcr48eN3+qDZs2enX79+SZK77ror06ZNy/z583f6+QAAoFq6FM2bNm3Kpz71qRx55JHZd999t3nsiiuu6NJBfwjmJGltbX1Nr1oDAEA1dSmaX//61+f1r3/9az7swgsvzOLFi1OpVHL99de/5ucr2z98dVE2t7XXeoweqXdjL7stid2Wx27LY7flsdvy2G155nx6Qq1H+CN1lUqlUu1DFyxYkNtuuy3/8i//Uu2jX5V/+OqiWo8AALDHufzscbUe4Y/sMJqXLl2a5ubmJMl99923wyd429vetlMHv+lNb8rdd9+dgQMHdun7W1pa09FR3b4fMqRf1qxZX9Uz9xR2Wx67LY/dlsduy2O35bHb8tRit/X1dRk8uGmHj+/w9oxLLrkkt956a5Ktt1VsT11dXX76058WDrFhw4a88MILGTFiRJJk4cKF2WeffTJgwIDCnwsAALW2w2j+QzAnWyP3tdi4cWPOO++8bNy4MfX19dlnn31y3XXX+cuAAADsFrr8Mdqvxb777psf/vCH1TgKAAB2ufpaDwAAAN2daAYA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DRuycuXKzq8XLlyYffbZJwMGDKjdUD3EGWeckUWLFmXhwoVZuHBhhg8fnq9//esZN25crUfb7b344otZv359kqRSqeT222/3ji+7yKBBgzJ27NgsXrw4ydZ33GppacnIkSNrPFnPMX/+/EyYMCEDBw6s9SjbqKtUKpVaD9HdLFu2LFOnTs0LL7yQ/v37Z/bs2fmzP/uzWo/VI1x22WW588478/zzz2fgwIEZMGBAbrvttlqPtdt74oknMmnSpBx44IHZa6+9kmz9W8jXXnttjSfb/T3//PM5++yzs3HjxtTX12efffbJBRdc0K3us+spJk6cmOuuu867PewCzzzzTM4555y0t7eno6MjBx98cD7/+c9n6NChtR6tR3jmmWcybdq0/O53v0tDQ0M+/elPZ8KECbUeq8c49thjc+GFF+Yd73hHrUfZhmgGAIACbs8AAIACohkAAAqIZgAAKCCaAQCggGgGAIACohmgBO9973uzZMmSqpz15JNP5sQTT0y13gxpyZIlO/VWUH/zN3+TJ554ooSJAMrXUOsBAHZHRxxxROePN27cmMbGxvTq1StJcskll1T1/cevvvrqnH766amrq6vamTvjtNNOy1e+8pVcc801tR4F4FUTzQA74cEHH+z88cSJE3PZZZfl6KOPrvocq1evzpIlSzJnzpyqn/1qHXPMMbn44ouzZs2aDBkypNbjALwqbs8AKMHEiRNz7733JkmuueaanHvuuZkyZUqOOOKIvO9978vy5cvzta99LW9729syYcKELFq0qPPnrl+/PtOmTcu4ceMyfvz4XHXVVWlvb9/uOffee29Gjx6dPn36JEnmzZuXs846q/Pxd7/73Tn33HM7v54wYUJ+9atfJdn66aennnpqjjrqqBx77LG5/fbbO7+vra0ts2fPzjvf+c4cffTRmT59el566aXtznDDDTfkuOOOy3PPPZe1a9fmzDPPzJgxY3LUUUdl8uTJ6ejoSJL06dMnb3jDG7b5ZwXYXYhmgCr493//95xwwglZunRpRo0aldNPPz0dHR35+c9/nk9+8pOZPn165/dOnTo1DQ0NufPOO7NgwYIsXrw4P/rRj7b7vI8//ngOOuigzq+POuqoPPDAA+no6MiqVauyefPmPPTQQ0m2fvTviy++mMMOOywvvvhiTjvttEyaNCn33ntvrrrqqlxyySV58sknkyRz5szJ8uXLs2DBgtx5551ZvXr1dj+Wfe7cuZk/f36+/e1vZ/jw4fnGN76RYcOG5b777svixYvz2c9+dpvbRg4++OD893//965YKUBViWaAKhgzZkzGjx+fhoaGvOc978m6detyxhlnpHfv3jnuuOPy7LPP5oUXXsjzzz+fu+++O9OmTcvee++dwYMH55RTTtnhPdLr169P3759O78+4IAD0rdv3/zqV7/KAw88kHHjxmXo0KFZtmxZ7r///hx55JGpr6/Pz372s+y333456aST0tDQkNGjR+fYY4/NT37yk1Qqlfzwhz/MtGnTMmDAgDQ1NeXMM8/cZoZKpZLLL788ixcvzg033JBBgwYlSRoaGrJmzZqsWLEivXv3zpgxY7aJ5r59++aFF14oacsA5XFPM0AVDB48uPPHe+21VwYOHNj5Fwf32muvJMmLL76Y1atXZ8uWLRk3blzn93d0dGTEiBHbfd7+/ftnw4YN21xrbm7O/fffn6eeeirNzc3p169fli5dmoceeihHHXVUkuTZZ5/Nww8/nDFjxnT+vPb29hx//PFZu3ZtNm7cmBNPPLHzsUql0nmbRbI11n/4wx/mqquuSr9+/Tqvn3766Zk7d25OO+20JMnJJ5+cM844o/PxDRs2pH///l3cGkD3IZoBupHhw4ensbExv/jFL9LQUPxb9GGHHZYFCxZsc+2oo47KwoUL8+yzz+ass85K//79c8stt+TBBx/MRz7ykSTJiBEj0tzcnG984xt/9JwdHR3Za6+9ctttt2XYsGHbPbd///658sor8+lPfzpz587NkUcemSRpamrK1KlTM3Xq1Pz617/O3/3d3+Uv/uIv8ra3vS3J1vuojz/++FezEoBuwe0ZAN3I0KFD8/a3vz1f/OIX09ramo6Ojjz99NO5//77t/v9b3/72/PYY49l06ZNndeam5uzZMmSvPTSSxk+fHjGjBmTe+65J7/73e8yevToJMk73/nO/OY3v8mCBQuyefPmbN68OQ8//HCWLVuW+vr6fOADH8isWbPS0tKSJFm1alXuueeebc4eO3Zs5syZk3POOScPP/xwkq33bj/11FOpVCrp169fevXq1Xl7xqZNm/Loo4/W5F1GAF4r0QzQzVxxxRXZvHlzjjvuuDQ3N+fcc8/NmjVrtvu9++67b8aOHZuf/vSnndcOOuig9O3bt/PWi6ampuy///55y1ve0nlLSFNTU77+9a/n9ttvz/jx4zNu3LjMmTMnbW1tSZK///u/z8iRI/PBD34wb3nLW3LKKadk+fLlf3T+29/+9syaNStnnXVWHn300Tz11FM59dRTc8QRR+Tkk0/Ohz/84bz1rW9NkixcuDBHHXXUDl+9BujO6irV+ggpAErx5JNP5oILLshNN93UrT/g5AMf+EBmzpyZQw89tNajALxqohkAAAq4PQMAAAqIZgAAKCCaAQCggGgGAIACohkAAAqIZgAAKCCaAQCggGgGAIAC/w8fvG+SXeBYrgAAAABJRU5ErkJggg==\n",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"shifted = obs.copy()\n",
"shifted['Start'] = 0\n",
"shifted['End'] = duration\n",
"\n",
"plot_lifelines(shifted)"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "e5faed73-5959-471e-95fe-79bd441315e4",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"3 7\n",
"4 5\n",
"6 2\n",
"dtype: int64"
]
},
"execution_count": null,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"complete = duration[obs['Status']==1]; complete\n",
"ongoing = duration[obs['Status']==0]; ongoing"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "48ca959f-c926-4987-b701-13bd8497bc6f",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"0 5\n",
"1 1\n",
"2 4\n",
"5 2\n",
"dtype: int64"
]
},
"execution_count": null,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"complete"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "6b337bcf-8a5d-4a1e-8298-b0ef7d12aa26",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"3 7\n",
"4 5\n",
"6 2\n",
"dtype: int64"
]
},
"execution_count": null,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"ongoing"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "afe7ad9b-4a8c-4958-8a58-6fb406c0d167",
"metadata": {},
"outputs": [],
"source": [
"def make_pmf(sample):\n",
" return pd.Series(sample).value_counts().sort_index()"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "ed49d3a5-8d8b-4b33-98f9-45727516f32b",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"1 1\n",
"2 1\n",
"4 1\n",
"5 1\n",
"dtype: int64"
]
},
"execution_count": null,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"make_pmf(complete)"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "13b785da-2618-4be3-b47c-8c230f16673a",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"2 1\n",
"5 1\n",
"7 1\n",
"dtype: int64"
]
},
"execution_count": null,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"make_pmf(ongoing)"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "658f19d6-3acd-44ff-88ec-2a864d6ff9d8",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" pmf_complete \n",
" pmf_ongoing \n",
" \n",
" \n",
" \n",
" \n",
" 1 \n",
" 1.0 \n",
" 0.0 \n",
" \n",
" \n",
" 2 \n",
" 1.0 \n",
" 1.0 \n",
" \n",
" \n",
" 4 \n",
" 1.0 \n",
" 0.0 \n",
" \n",
" \n",
" 5 \n",
" 1.0 \n",
" 1.0 \n",
" \n",
" \n",
" 7 \n",
" 0.0 \n",
" 1.0 \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" pmf_complete pmf_ongoing\n",
"1 1.0 0.0\n",
"2 1.0 1.0\n",
"4 1.0 0.0\n",
"5 1.0 1.0\n",
"7 0.0 1.0"
]
},
"execution_count": null,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df = pd.DataFrame(dict(pmf_complete=make_pmf(complete), pmf_ongoing=make_pmf(ongoing))).fillna(0); df"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "71c65850-e98e-420f-92c6-9caa1ab19154",
"metadata": {},
"outputs": [],
"source": [
"df.loc[:,['s_complete', 's_ongoing']]=(df.sum()-df.cumsum()).values # survival function ->dogs surviving"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "4a211306-bc9a-42c7-9ebb-a505e52f9acc",
"metadata": {},
"outputs": [],
"source": [
"df['at_risk'] = df.sum(axis=1)"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "1a522a96-04c9-41ad-aa97-01ea9aac0771",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" pmf_complete \n",
" pmf_ongoing \n",
" s_complete \n",
" s_ongoing \n",
" at_risk \n",
" \n",
" \n",
" \n",
" \n",
" 1 \n",
" 1.0 \n",
" 0.0 \n",
" 3.0 \n",
" 3.0 \n",
" 7.0 \n",
" \n",
" \n",
" 2 \n",
" 1.0 \n",
" 1.0 \n",
" 2.0 \n",
" 2.0 \n",
" 6.0 \n",
" \n",
" \n",
" 4 \n",
" 1.0 \n",
" 0.0 \n",
" 1.0 \n",
" 2.0 \n",
" 4.0 \n",
" \n",
" \n",
" 5 \n",
" 1.0 \n",
" 1.0 \n",
" 0.0 \n",
" 1.0 \n",
" 3.0 \n",
" \n",
" \n",
" 7 \n",
" 0.0 \n",
" 1.0 \n",
" 0.0 \n",
" 0.0 \n",
" 1.0 \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" pmf_complete pmf_ongoing s_complete s_ongoing at_risk\n",
"1 1.0 0.0 3.0 3.0 7.0\n",
"2 1.0 1.0 2.0 2.0 6.0\n",
"4 1.0 0.0 1.0 2.0 4.0\n",
"5 1.0 1.0 0.0 1.0 3.0\n",
"7 0.0 1.0 0.0 0.0 1.0"
]
},
"execution_count": null,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "98cc9896-06b5-4bb7-add9-c28392a03444",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" pmf_complete \n",
" pmf_ongoing \n",
" s_complete \n",
" s_ongoing \n",
" at_risk \n",
" hazard \n",
" \n",
" \n",
" \n",
" \n",
" 1 \n",
" 1.0 \n",
" 0.0 \n",
" 3.0 \n",
" 3.0 \n",
" 7.0 \n",
" 0.142857 \n",
" \n",
" \n",
" 2 \n",
" 1.0 \n",
" 1.0 \n",
" 2.0 \n",
" 2.0 \n",
" 6.0 \n",
" 0.166667 \n",
" \n",
" \n",
" 4 \n",
" 1.0 \n",
" 0.0 \n",
" 1.0 \n",
" 2.0 \n",
" 4.0 \n",
" 0.250000 \n",
" \n",
" \n",
" 5 \n",
" 1.0 \n",
" 1.0 \n",
" 0.0 \n",
" 1.0 \n",
" 3.0 \n",
" 0.333333 \n",
" \n",
" \n",
" 7 \n",
" 0.0 \n",
" 1.0 \n",
" 0.0 \n",
" 0.0 \n",
" 1.0 \n",
" 0.000000 \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" pmf_complete pmf_ongoing s_complete s_ongoing at_risk hazard\n",
"1 1.0 0.0 3.0 3.0 7.0 0.142857\n",
"2 1.0 1.0 2.0 2.0 6.0 0.166667\n",
"4 1.0 0.0 1.0 2.0 4.0 0.250000\n",
"5 1.0 1.0 0.0 1.0 3.0 0.333333\n",
"7 0.0 1.0 0.0 0.0 1.0 0.000000"
]
},
"execution_count": null,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df['hazard'] = df['pmf_complete']/df['at_risk']; df"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "58d6dd25-7c7a-4e67-8961-f7d12d2bc5a3",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" pmf_complete \n",
" pmf_ongoing \n",
" s_complete \n",
" s_ongoing \n",
" at_risk \n",
" hazard \n",
" surv \n",
" \n",
" \n",
" \n",
" \n",
" 1 \n",
" 1.0 \n",
" 0.0 \n",
" 3.0 \n",
" 3.0 \n",
" 7.0 \n",
" 0.142857 \n",
" 0.857143 \n",
" \n",
" \n",
" 2 \n",
" 1.0 \n",
" 1.0 \n",
" 2.0 \n",
" 2.0 \n",
" 6.0 \n",
" 0.166667 \n",
" 0.714286 \n",
" \n",
" \n",
" 4 \n",
" 1.0 \n",
" 0.0 \n",
" 1.0 \n",
" 2.0 \n",
" 4.0 \n",
" 0.250000 \n",
" 0.535714 \n",
" \n",
" \n",
" 5 \n",
" 1.0 \n",
" 1.0 \n",
" 0.0 \n",
" 1.0 \n",
" 3.0 \n",
" 0.333333 \n",
" 0.357143 \n",
" \n",
" \n",
" 7 \n",
" 0.0 \n",
" 1.0 \n",
" 0.0 \n",
" 0.0 \n",
" 1.0 \n",
" 0.000000 \n",
" 0.357143 \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" pmf_complete pmf_ongoing s_complete s_ongoing at_risk hazard \\\n",
"1 1.0 0.0 3.0 3.0 7.0 0.142857 \n",
"2 1.0 1.0 2.0 2.0 6.0 0.166667 \n",
"4 1.0 0.0 1.0 2.0 4.0 0.250000 \n",
"5 1.0 1.0 0.0 1.0 3.0 0.333333 \n",
"7 0.0 1.0 0.0 0.0 1.0 0.000000 \n",
"\n",
" surv \n",
"1 0.857143 \n",
"2 0.714286 \n",
"4 0.535714 \n",
"5 0.357143 \n",
"7 0.357143 "
]
},
"execution_count": null,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df['surv'] = (1 - df['hazard']).cumprod(); df # What are we doing ? "
]
},
{
"cell_type": "markdown",
"id": "754ab553-8125-4dc2-9f5c-2c90a280c37a",
"metadata": {},
"source": [
"- Hazard Function: If I am alive at time t what's the probability of dying at time t. Here, if I am at kennel in time t , what's the probability of being adopted\n",
"- Completment - probability of not being adopted\n",
"- Probabiliy of not being adopted at time t=0, then t=1..... This will be product (becoz we are in probabilities)\n",
"- Survival : cumprod"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "eafec705-53f8-441b-8a52-98cc097a3ad0",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" pmf_complete \n",
" pmf_ongoing \n",
" s_complete \n",
" s_ongoing \n",
" at_risk \n",
" hazard \n",
" surv \n",
" cdf \n",
" \n",
" \n",
" \n",
" \n",
" 1 \n",
" 1.0 \n",
" 0.0 \n",
" 3.0 \n",
" 3.0 \n",
" 7.0 \n",
" 0.142857 \n",
" 0.857143 \n",
" 0.142857 \n",
" \n",
" \n",
" 2 \n",
" 1.0 \n",
" 1.0 \n",
" 2.0 \n",
" 2.0 \n",
" 6.0 \n",
" 0.166667 \n",
" 0.714286 \n",
" 0.285714 \n",
" \n",
" \n",
" 4 \n",
" 1.0 \n",
" 0.0 \n",
" 1.0 \n",
" 2.0 \n",
" 4.0 \n",
" 0.250000 \n",
" 0.535714 \n",
" 0.464286 \n",
" \n",
" \n",
" 5 \n",
" 1.0 \n",
" 1.0 \n",
" 0.0 \n",
" 1.0 \n",
" 3.0 \n",
" 0.333333 \n",
" 0.357143 \n",
" 0.642857 \n",
" \n",
" \n",
" 7 \n",
" 0.0 \n",
" 1.0 \n",
" 0.0 \n",
" 0.0 \n",
" 1.0 \n",
" 0.000000 \n",
" 0.357143 \n",
" 0.642857 \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" pmf_complete pmf_ongoing s_complete s_ongoing at_risk hazard \\\n",
"1 1.0 0.0 3.0 3.0 7.0 0.142857 \n",
"2 1.0 1.0 2.0 2.0 6.0 0.166667 \n",
"4 1.0 0.0 1.0 2.0 4.0 0.250000 \n",
"5 1.0 1.0 0.0 1.0 3.0 0.333333 \n",
"7 0.0 1.0 0.0 0.0 1.0 0.000000 \n",
"\n",
" surv cdf \n",
"1 0.857143 0.142857 \n",
"2 0.714286 0.285714 \n",
"4 0.535714 0.464286 \n",
"5 0.357143 0.642857 \n",
"7 0.357143 0.642857 "
]
},
"execution_count": null,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df['cdf'] = 1- df['surv']; df"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "c90a9407-a7e1-4ff8-a294-70a4b1bb9540",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" pmf_complete \n",
" pmf_ongoing \n",
" s_complete \n",
" s_ongoing \n",
" at_risk \n",
" hazard \n",
" surv \n",
" cdf \n",
" pmf \n",
" \n",
" \n",
" \n",
" \n",
" 1 \n",
" 1.0 \n",
" 0.0 \n",
" 3.0 \n",
" 3.0 \n",
" 7.0 \n",
" 0.142857 \n",
" 0.857143 \n",
" 0.142857 \n",
" 0.142857 \n",
" \n",
" \n",
" 2 \n",
" 1.0 \n",
" 1.0 \n",
" 2.0 \n",
" 2.0 \n",
" 6.0 \n",
" 0.166667 \n",
" 0.714286 \n",
" 0.285714 \n",
" 0.142857 \n",
" \n",
" \n",
" 4 \n",
" 1.0 \n",
" 0.0 \n",
" 1.0 \n",
" 2.0 \n",
" 4.0 \n",
" 0.250000 \n",
" 0.535714 \n",
" 0.464286 \n",
" 0.178571 \n",
" \n",
" \n",
" 5 \n",
" 1.0 \n",
" 1.0 \n",
" 0.0 \n",
" 1.0 \n",
" 3.0 \n",
" 0.333333 \n",
" 0.357143 \n",
" 0.642857 \n",
" 0.178571 \n",
" \n",
" \n",
" 7 \n",
" 0.0 \n",
" 1.0 \n",
" 0.0 \n",
" 0.0 \n",
" 1.0 \n",
" 0.000000 \n",
" 0.357143 \n",
" 0.642857 \n",
" 0.000000 \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" pmf_complete pmf_ongoing s_complete s_ongoing at_risk hazard \\\n",
"1 1.0 0.0 3.0 3.0 7.0 0.142857 \n",
"2 1.0 1.0 2.0 2.0 6.0 0.166667 \n",
"4 1.0 0.0 1.0 2.0 4.0 0.250000 \n",
"5 1.0 1.0 0.0 1.0 3.0 0.333333 \n",
"7 0.0 1.0 0.0 0.0 1.0 0.000000 \n",
"\n",
" surv cdf pmf \n",
"1 0.857143 0.142857 0.142857 \n",
"2 0.714286 0.285714 0.142857 \n",
"4 0.535714 0.464286 0.178571 \n",
"5 0.357143 0.642857 0.178571 \n",
"7 0.357143 0.642857 0.000000 "
]
},
"execution_count": null,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df['pmf'] = np.diff(df['cdf'], prepend=0); df"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "59a8739a-ebbe-4b5d-95fd-9d7719d62b27",
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
}
},
"nbformat": 4,
"nbformat_minor": 5
}