{ "cells": [ { "cell_type": "markdown", "metadata": { "tags": [ "s1", "content", "l1" ] }, "source": [ "# Survival Analysis\n", "\n", "Survival Analysis is the analysis of any 'time to event' response variable. A 'time to event' variable reflects the the waiting time until the occurence of a well-defined event. This time is often referred to as a failure time, survival time, or event time. For example,\n", "* Time until a machine fails\n", "* Time until brake failure\n", "* Time until tumor recurrence\n", "\n", "Typical problem statements in survival analysis are:\n", "* Probability of patient survival for the next 2 years\n", "* Difference in survival between groups (say between trial drug and placebo/standard drug) \n", "\n", "\n", "Time to event variables have a set of unique features. \n", "\n", "1. Times to event are always positive.\n", "2. They are usually continous and their distributions are often skewed. For example, in a study assessing time to recurrence in patients, the majority of events may occur early in the follow up with very few occurring later. On the other hand, in a study of time to death, the majority of events (deaths) may occur later in the follow up. \n", "3. Standard statistical procedures that assume normality of distributions do not apply. Nonparametric procedures could be invoked except for the fact that there are additional issues. Specifically, complete data (actual time to event data) is not always available on each participant in a study. In many studies, participants are enrolled over a period of time (months or years) and the study ends on a specific calendar date. Thus, participants who enroll later are followed for a shorter period than participants who enroll early. \n", "4. Some participants may drop out of the study before the end of the follow-up period. For some units the event of interest has not occurred at the time the data are analyzed. In these cases, we have incomplete information. The actual survival time is not known because the study ends or because a participant drops out of the study before experiencing the event. For these cases, the data we have is that the participants survival time is greater than their last observed follow-up time. The times recorded for incomplete cases are called censored times.\n", "\n", "\n", "## Censoring\n", "\n", "As discussed above, censoring implies that we have some information about a subject’s event time, but the exact event time is unknown. Censoring should be random for survival analysis to be valid. There are many types of censoring, most common being right censoring. \n", "The three most common reasons for right censoring are:\n", "* Even does not occur before the study ends: Example, say study is to run different cars for 200,000 miles and see when they breakdown. The study is designed to end exactly at 200,000 miles. If a car does not breakdown by then, it is a censored data.\n", "* Subject withdraws from the study: Most weight loss studies face this issue due to subject dropping out.\n", "* Subject dies before study ends (where death is not the event in the study)\n", "\n", "Right censoring is further classified into Type I and Type II censoring. \n", "\n", "* In the above car breakdown example, instead of 200,000 miles, consider a study for driving cars and designed to end after time C. Any subject who does not have an event(car breakdown) observed within this time is censored. This is Type I censoring.\n", "* Consider a study where 100 cars are driven and the study is designed to end after 30 flat tires, that is, the study ends when there is a pre-specified number of events. This is Type II censoring.\n", "\n", "The below image depicts censoring in a study with 8 subjects.\n", "\n", "\n", "\n", "\n", "### Exercise\n", "\n", "Consider a factory of machine parts. Stress testing is conducted on these parts and a study is designed for time to failure of the parts. 1000 parts are sampled at random, and the study is designed to stop after 2 weeks. What is the censoring type. Assign 'Type I' or 'Type II' to the variable cens." ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true, "tags": [ "s1", "ce", "l1" ] }, "outputs": [], "source": [ "#cens = ''" ] }, { "cell_type": "markdown", "metadata": { "tags": [ "s1", "l1", "hint" ] }, "source": [ "Refer to above discussion" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true, "tags": [ "s1", "l1", "ans" ] }, "outputs": [], "source": [ "cens='Type I'" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true, "tags": [ "s1", "hid", "l1" ] }, "outputs": [], "source": [ "try:\n", " if cens == 'Type I':\n", " ref_assert_var = True\n", " print('continue')\n", " else:\n", " ref_assert_var = False\n", " print('Please follow the instructions given and use the same variables provided in the instructions. ')\n", "except Exception:\n", " print('Please follow the instructions given and use the same variables provided in the instructions. ')" ] }, { "cell_type": "markdown", "metadata": { "tags": [ "l2", "content", "s2" ] }, "source": [ "## Hazard and Survival Function\n", "\n", "Let T denote the continous non-negative random variable that represents the time to event response variable. T has the probability density function (pdf), f(t) and cumulative distribution function (cdf), F(t) = Pr{T <= t}. This gives the probability that the event has occurred by duration t. The survival function is derived as shown below.\n", "S(t) = Pr(T > t) = 1 − Pr(T <= t) = 1 - F(t).\n", "\n", "The survival function gives the probability that a subject will survive past time t. The survival function has the following properties:\n", "* As t ranges from 0 to $\\infty$, S(t) is non-increasing\n", "* At time t = 0, S(t) = 1 => the probability of surviving past time 0 is 1. \n", "* At time t = $\\infty$, S(t) = 0 => as time goes to $\\infty$, the survival function tends to 0.\n", "\n", "The hazard function, h(t), is an alternative characteristic of the districution of T. It is the instantaneous rate at which events occur, given there were no previous events.\n", "\n", "$h(t) = \\left\\{\\frac{f(t)}{S(t)}\\right\\}$\n", "\n", "\n", "H(t) is the cumulative hazard function which describes the accumulated risk up to time t. If any of the functions F(t), S(t), H(t), or h(t) is known, we can derive the other functions.\n", "\n", "The below image shows the survival and hazard functions for two drugs where the event is death. It is clear from the survival function that the performance of Drug A is better because the survival probability is higher than that of Drug B at all times $t$.\n", "\n", "\n", "\n", "\n", "### Estimating $S(t)$ and $H(t)$\n", "\n", "We can use both parametric and non-parametric methods to estimate the survival function. We would have to assume that every subject follows the same survival function. When there is no censoring, a non-parametric estimator or $S(t)$ is $1-F_n(t)$, where $F_n(t)$ is the empirical cumulative distribution function of the response variable $T$. In case of censoring, we can estimate $S(t)$ using the Kaplan-Meier product-limit estimator. By making further assumptions and by specifying a parametric form for $S(t)$, we can estimate the expected failure times and derive smooth functions for estimating $S(t)$ and $H(t)$. Weibull, exponential, log-normal and log-logistic are some of the popular distributions used for estimating survival functions.\n", "\n", "The Kaplan-Meier estimator estimates the survival function using the following product:\n", "\n", "$\\hat{S}\\;(t)= \\displaystyle\\prod_{t_i < t} \\frac {n_i−d_i}{n_i}$\n", "where $d_i$ are the number of events at time $t$ and $n_i$ is the number of subjects at risk of event just prior to time $t$.\n", "\n", "\n", "### Exercise\n", "\n", "Let us now look at the marriage dissolution in US dataset. The dataset has 3771 couples where the unit of observation is the couple and the event of interest is divorce, with interview and widowhood treated as censoring events. We have two fixed covariates: education of the husband and one indicator of the couple's ethnicity: whether the couple is mixed. The variables are:\n", "\n", "id: a couple number.\n", "heduc: education of the husband, coded\n", "0 = less than 12 years,\n", "1 = 12 to 15 years, and\n", "2 = 16 or more years.\n", "mixed: coded 1 if the husband and wife have different ethnicity (defined as black or other), 0 otherwise.\n", "years: duration of marriage, from the date of wedding to divorce or censoring (due to widowhood or interview).\n", "div: the failure indicator, coded 1 for divorce and 0 for censoring.\n", "\n", "Dataset souce: http://data.princeton.edu/wws509/datasets/#divorce\n", "\n", "The lifelines library can be used to estimate survival function. Use the following code to read in the data and plot the survival function using the Kaplan-Meier estimator." ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "tags": [ "l2", "ce", "s2" ] }, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXcAAAEKCAYAAADpfBXhAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3Xl8W+WZ9//PpV2yZHl3Eq/ZE7IQICRspVBoWUoDdOiv\nBGbaMhQeuk3b+U3nge4LnbY/OhT6dJkfZetCoS0tDaVshbK0KWTFhOxxFid2HO+LZEm2LN3PH1IU\n23ESx7EjWb7er5dfSEdHR1dM8vXxfe5z3WKMQSmlVHaxpLsApZRSY0/DXSmlspCGu1JKZSENd6WU\nykIa7koplYU03JVSKgtpuCulVBbScFdKqSyk4a6UUlnIlq4PLioqMtXV1en6eKWUmpA2bNjQaowp\nPtF+aQv36upq1q9fn66PV0qpCUlE6kaynw7LKKVUFtJwV0qpLKThrpRSWShtY+5KqcwTjUapr68n\nEomku5RJz+VyUV5ejt1uH9X7NdyVUin19fX4fD6qq6sRkXSXM2kZY2hra6O+vp7p06eP6hgnHJYR\nkYdFpFlENh/jdRGRH4pIrYhsEpGzR1WJUirtIpEIhYWFGuxpJiIUFhae0m9QIxlzfxS48jivXwXM\nTn7dDvx01NUopdJOgz0znOr/hxOGuzHmdaD9OLtcC/zCJLwJ5InI1BMdt7ErwmNr6gj3xUZerVJK\nqREZi9kyZcCBAc/rk9uOIiK3i8h6EVnfGuzlS09tZv5Xn6e2OTgGZSillDrstE6FNMY8YIxZaoxZ\nWl2YQ1WBB4CfvlpLLK4LdSulwOv1ph4/++yzzJkzh7q6Or7+9a8jItTW1qZev++++xCRMbvb/Y9/\n/CNbt25NPf/qV7/KSy+9dMrH7ezs5Cc/+ckpH+dkjEW4NwAVA56XJ7cdl89l44F/WQrA7zc2MOuL\nz7LjUPcYlKOUygYvv/wy//Zv/8Zzzz1HVVUVAIsWLeKJJ55I7fO73/2OBQsWjNlnDg33b37zm1x+\n+eWnfNx0hPtYTIV8Gvi0iDwBLAe6jDGNI3nj3Kk+/uN9c/n+izswwP/z/7/JS//+bop9zjEoSyl1\nKr7xpy1sPTi2J1xnTMvlax84cRi//vrr3HbbbTz77LPMnDkztf26665j1apVfPnLX2b37t34/f4T\nzgN/8cUX+drXvkZvby8zZ87kkUcewev1cuedd/L0009js9l43/vexwc/+EGefvppXnvtNe6++25+\n//vf861vfYtrrrmGG264gerqalauXMlzzz2HzWbjgQce4K677qK2tpYvfOEL3HHHHQSDQa699lo6\nOjqIRqPcfffdXHvttdx5553s3r2bJUuW8N73vpd77rmHe+65h9/+9rf09vZy/fXX841vfOOUv78D\nnTDcReRx4BKgSETqga8BdgBjzP8AzwJXA7VACLjlZAr4yAVVTC/y8Klfv0VXOMobu1tZsWTYIXul\n1CTQ29vLddddx6uvvsq8efMGvZabm0tFRQWbN29m1apVfPjDH+aRRx455rFaW1u5++67eemll8jJ\nyeF73/se9957L5/61Kd46qmn2L59OyJCZ2cneXl5rFixIhXmw6msrKSmpobPf/7zfOxjH2P16tVE\nIhEWLlzIHXfcgcvl4qmnniI3N5fW1lbOO+88VqxYwXe/+102b95MTU0NkPiBs2vXLtauXYsxhhUr\nVvD6669z8cUXj9n38YThboxZeYLXDfCp0RaQ67Jz8Zxibr2omof+vo8/bGzgotnFFOQ4RntIpdQY\nGMkZ9niw2+1ccMEFPPTQQ9x///1HvX7jjTfyxBNP8MILL/Dyyy8fN9zffPNNtm7dyoUXXghAX18f\n559/Pn6/H5fLxa233so111zDNddcM6LaVqxYASSGh4LBID6fD5/Ph9PppLOzk5ycHL74xS/y+uuv\nY7FYaGhooKmp6ajjvPjii7z44oucddZZAASDQXbt2jWm4Z4RvWV8Ljsff9cMAF7d2cLGug4SPzOU\nUpONxWLht7/9LWvXruW//uu/jnr9mmuu4Ze//CWVlZXk5uYe91jGGN773vdSU1NDTU0NW7du5aGH\nHsJms7F27VpuuOEGnnnmGa688ni38hzhdDpTNR5+fPh5f38/jz32GC0tLWzYsIGamhpKS0uHvRHJ\nGMNdd92Vqqu2tpZbb711RDWMVEaEO8BUv5sF0xL/o76yajNbG/XiqlKTlcfj4c9//jOPPfYYDz30\n0FGvfe973+NLX/rSCY9z3nnnsXr16tQMm56eHnbu3EkwGKSrq4urr76aH/zgB7z99tsA+Hw+AoHA\nqOvu6uqipKQEu93OK6+8Ql1d3bDHveKKK3j44YcJBhPTwBsaGmhubh715w4no3rLfP9Di7nq/r/T\n2BVhV1OAygIPPtfomuYopSa2goICnn/+eS6++GKKiwcvPHTjjTeO6BjFxcU8+uijrFy5kt7eXgDu\n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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "%matplotlib inline\n", "\n", "import pandas as pd\n", "from lifelines import KaplanMeierFitter\n", "\n", "div_df = pd.read_csv(\"../data/divorce.csv\", header=None)\n", "columns = ['ID', 'HEduc', 'Mixed', 'Years','Div']\n", "div_df.columns = columns\n", "\n", "kmf = KaplanMeierFitter()\n", "kmf.fit(durations = div_df.Years, \n", " event_observed = div_df.Div)\n", "kmf.plot()" ] }, { "cell_type": "markdown", "metadata": { "tags": [ "l2", "s2", "hint" ] }, "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true, "tags": [ "l2", "s2", "ans" ] }, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": 6, "metadata": { "tags": [ "l2", "hid", "s2" ] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "continue\n" ] } ], "source": [ "try:\n", " a=1\n", " if a == 1:\n", " ref_assert_var = True\n", " print('continue')\n", " else:\n", " ref_assert_var = False\n", " print('Please follow the instructions given and use the same variables provided in the instructions. ')\n", "except Exception:\n", " print('Please follow the instructions given and use the same variables provided in the instructions. ')" ] } ], "metadata": { "executed_sections": [], "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.6.1" } }, "nbformat": 4, "nbformat_minor": 2 }