There are now more than 10,000 R packages available from CRAN, much more if you include those available only on github. So, to be honest, it become difficult to know all of them. But sometimes, you discover a nice function in one of them, and that is really awesome. Consider for instance some (standard) censored lifetime data,

```n=10000 idx=sample(1:4,size=n,replace=TRUE) pd=LETTERS[idx] lambda=1+(idx-1)/3 t=rexp(n,lambda) x=rexp(n) c=t>x y=pmin(t,x) df=data.frame(time=y,status=c,product=pd)```

(yes, I will generate them here). Consider Kaplan-Meier estimator of the survival function,

```library(survival) km.base = survfit( Surv(time,status) ~ 1  , data = df ) plot(km.base)``` This week end, Anat (currently finishing the Data Science for Actuaries program) made me discover a nice R function, to add information to that graph (well, not that graph, since it will be a ggplot version, but the same survival distribution plot)

```library(ggplot2) library(survminer) ggsurvplot(km.base, main = "", color = "blue" , censor = FALSE, xlim = c(0,3), risk.table = TRUE , risk.table.col = "blue" , risk.table.height = 0.2, risk.table.title = "" , legend.labs = "All" , legend.title = "" , break.time.by = 1, xlab = "" , ylab = "")``` This is more interesting when we have different lifetimes
``` km.prod = survfit( Surv(time,status) ~ product  , data = df ) ggsurvplot(km.prod, main = "", censor = FALSE, xlim = c(0,3), risk.table = TRUE , risk.table.col = "strata" , risk.table.height = 0.3, risk.table.title = "" , legend.labs = LETTERS[1:4] , legend.title = "" , break.time.by = 1, xlab = "" , ylab = "")``` or, with a different time granularity

`ggsurvplot(km.prod, main = "", censor = FALSE, xlim = c(0,3), risk.table = TRUE , risk.table.col = "strata" , risk.table.height = 0.3, risk.table.title = "" , legend.labs = LETTERS[1:4] , legend.title = "" , break.time.by = .5, xlab = "" , ylab = "")` Nice, isn’t it?

## One thought on “Visualizing (censored) lifetime distributions”

1. Leon says:

Great !

This site uses Akismet to reduce spam. Learn how your comment data is processed.