]> git.vanrenterghem.biz Git - www2.vanrenterghem.biz.git/blob - posts/survival_analysis_in_fintech.mdwn
6ae99dadaabdd481e2e49f063f167f6d1f63a9a4
[www2.vanrenterghem.biz.git] / posts / survival_analysis_in_fintech.mdwn
1 [[!meta date="2016-12-10 15:49:02 +0800"]]
3 [[!tag R fintech analysis]]
4 It is useful to apply the concepts from survival data analysis in a fintech environment. After all, there will usually be a substantial amount of time-to-event data to choose from. This can be website visitors leaving the site, loans being repaid early, clients becoming delinquent - the options are abound.
6 A visual analysis of such data can easily be obtained using R.
8 [[!format r """
9 library(survminer)
10 library(survival)
11 library(KMSurv)
12 ## Create survival curve from a survival object
13 #' Status is 1 if the event was observed at TimeAfterStart
14 #' It is set to 0 to mark the right-censored time
15 vintage.survival <- survfit(Surv(TimeAfterStart,Status) ~ Vintage, data = my.dataset)
16 ## Generate cumulative incidence plot
17 ci.plot <- ggsurvplot(vintage.survival,
18            fun = function(y) 1-y,
19            censor = FALSE,
20            conf.int = FALSE,
21            ylab = 'Ratio event observed',
22            xlab = 'Time after open',
23            break.time.by = 30,
24            legend = "bottom",
25            legend.title = "",
26            risk.table = TRUE,
27            risk.table.title = 'Number of group',
28            risk.table.col = "black",
29            risk.table.fontsize = 4,
30            risk.table.height = 0.35
31            )
32 """]]
34 This produces a plot with a survival curve per group, and also includes the risk table. This table shows how many members of the group for whom no event was observed are still being followed at each point in time. Labelling these "at risk" stems of course from the original concept of survival analysis, where the event typically is the passing of the subject.
36 The `fun = function(y) 1-y` part actually reverses the curve, resulting in what is known as a cumulative incidence curve.
38 [[!img pics/surv-curve-risk-table.png size="442x393" alt="Survival/incidence curve and risk table"]]
40 Underneath the plot, a risk table is added with no effort by adding `risk.table = TRUE` as parameter for `ggsurvplot`.
42 Checking the trajectory of these curves for different groups of customers (with a different treatment plan, to stick to the terminology) is an easy way to verify whether actions are having the expected result.