我正在处理电信流失问题,这是我的数据集。
http://www.sgi.com/tech/mlc/db/churn.data
名称 - http://www.sgi.com/tech/mlc/db/churn.names
我是生存分析的新手。给出训练数据,我的想法是建立一个生存模型来估计生存时间,同时根据独立因素预测测试数据的流失/不流失。有人可以帮助我有关如何解决此问题的代码或指示。
准确地说,我的火车数据已经
客户致电使用详情,计划详情,帐户使用期限以及是否流失。
使用一般分类模型,我可以预测测试数据的流失与否。现在使用生存分析,我想预测测试数据中的生存期。
谢谢, 麦迪
答案 0 :(得分:10)
如果您仍然感兴趣(或为了后来的人的利益),我已经编写了一些专门用于使用R对客户流失数据进行生存分析的指南。它们涵盖了一堆不同的分析技术,都有样本数据和R代码。
基本生存分析:http://daynebatten.com/2015/02/customer-churn-survival-analysis/
基本的cox回归:http://daynebatten.com/2015/02/customer-churn-cox-regression/
cox回归中与时间有关的协变量:http://daynebatten.com/2015/12/survival-analysis-customer-churn-time-varying-covariates/
cox回归中与时间相关的系数:http://daynebatten.com/2016/01/customer-churn-time-dependent-coefficients/
受限制的平均生存时间(用美元计算流失的影响):http://daynebatten.com/2015/03/customer-churn-restricted-mean-survival-time/
伪观察(量化与变量的流失效应相关的美元收益/损失):http://daynebatten.com/2015/03/customer-churn-pseudo-observations/
请原谅愚蠢的图像。
答案 1 :(得分:4)
以下是一些可以帮助您入门的代码:
首先,阅读数据
nm <- read.csv("http://www.sgi.com/tech/mlc/db/churn.names",
skip=4, colClasses=c("character", "NULL"), header=FALSE, sep=":")[[1]]
dat <- read.csv("http://www.sgi.com/tech/mlc/db/churn.data", header=FALSE, col.names=c(nm, "Churn"))
使用Surv()
设置生存对象进行建模
library(survival)
s <- with(dat, Surv(account.length, as.numeric(Churn)))
安装cox比例风险模型并绘制结果
model <- coxph(s ~ total.day.charge + number.customer.service.calls, data=dat[, -4])
summary(model)
plot(survfit(model))
添加一个层:
model <- coxph(s ~ total.day.charge + strata(number.customer.service.calls <= 3), data=dat[, -4])
summary(model)
plot(survfit(model), col=c("blue", "red"))