I am studying the effects of customer interaction on the probability that the customer will adopt a recommendation we make to them. For example, we might send out a first email, then a follow-up email one week later, then a final follow-up phone call. I've identified the Cox Proportional Hazards model (with time-varying covariates) as a strong candidate for doing exactly this.
I've prepared my data in a form expected by the
coxph function in the R
survival package. I form a dataframe
uptake with the appropriate
success columns. I fit the model like this:
conv_model <- coxph(Surv(start, stop, success) ~ n_touchpoint, data = uptake)
Here is the output from calling
summary on the model:
> summary(conv_model) Call: coxph(formula = Surv(start, stop, success) ~ n_touchpoint, data = uptake) n= 289256, number of events= 8806 coef exp(coef) se(coef) z Pr(>|z|) n_touchpoint 1.09517 2.98968 0.01818 60.23 <2e-16 *** --- Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 exp(coef) exp(-coef) lower .95 upper .95 n_touchpoint 2.99 0.3345 2.885 3.098 Concordance= 0.575 (se = 0.002 ) Rsquare= 0.009 (max possible= 0.5 ) Likelihood ratio test= 2690 on 1 df, p=<2e-16 Wald test = 3628 on 1 df, p=<2e-16 Score (logrank) test = 3348 on 1 df, p=<2e-16
So the model seems to say that the number of touchpoints is highly significant, and that each additional touchpoint roughly triples the hazard.
But how do I know that my model can be used for predicting future conversion attempts? In normal regression I would know how to use cross-validation, i.e. splitting my data set in a training set and a test set, but how do I validate the
conv_model object on my test set?
I've found similar questions below, but I did not find the answers very helpful: