R:每月根据生存概率创建 probability/projection
R: Creating probability/projection each month conditioned on survival probabilities
我有一个按月 ID 的数据,每个月我都有一个客户流失概率,如下所示。
如何根据上个月的生存概率获得每个月的流失概率?例如,对于 ID 6800
,在结束于 4/30
的月份,我有 0.54
的概率,因此存活率为 (1-0.54)=0.46
。因此,对于 5/31
月,我希望概率为 0.46*0.125
。对于第 6 月 30 日,我应该 (1-0.46*0.125)*0.081440443
。我想为每个 ID 做很多个月。
有没有一种自动化的方法可以将其设置为一个包或其他东西?
ID Date ChurProb cash
1 6800 04/30/2017 0.541440443 35019.86
2 6800 05/31/2017 0.125103719 35047.55
3 6800 06/30/2017 0.081440443 15124.00
4 6801 04/30/2017 0.541440443 35019.86
5 6801 05/31/2017 0.125103719 35047.55
6 6801 06/30/2017 0.081440443 15124.00
我寻找更优雅的解决方案,但一无所获。这是完成工作的循环:
calc_cond_churn <- function (dta) {
last_id <- -1
last_survival <- 1
CondChurn <- rep(0, nrow(dta))
for (i in 1:nrow(dta)) {
if (dta$ID[i] != last_id) {
last_survival <- 1
last_id <- dta$ID[i]
}
CondChurn[i] <- dta$ChurProb[i] * last_survival
last_survival <- 1 - CondChurn[i]
}
CondChurn
}
您可以将其用作:
df$ConditionalChurn <- calc_cond_churn(df)
我有一个按月 ID 的数据,每个月我都有一个客户流失概率,如下所示。
如何根据上个月的生存概率获得每个月的流失概率?例如,对于 ID 6800
,在结束于 4/30
的月份,我有 0.54
的概率,因此存活率为 (1-0.54)=0.46
。因此,对于 5/31
月,我希望概率为 0.46*0.125
。对于第 6 月 30 日,我应该 (1-0.46*0.125)*0.081440443
。我想为每个 ID 做很多个月。
有没有一种自动化的方法可以将其设置为一个包或其他东西?
ID Date ChurProb cash
1 6800 04/30/2017 0.541440443 35019.86
2 6800 05/31/2017 0.125103719 35047.55
3 6800 06/30/2017 0.081440443 15124.00
4 6801 04/30/2017 0.541440443 35019.86
5 6801 05/31/2017 0.125103719 35047.55
6 6801 06/30/2017 0.081440443 15124.00
我寻找更优雅的解决方案,但一无所获。这是完成工作的循环:
calc_cond_churn <- function (dta) {
last_id <- -1
last_survival <- 1
CondChurn <- rep(0, nrow(dta))
for (i in 1:nrow(dta)) {
if (dta$ID[i] != last_id) {
last_survival <- 1
last_id <- dta$ID[i]
}
CondChurn[i] <- dta$ChurProb[i] * last_survival
last_survival <- 1 - CondChurn[i]
}
CondChurn
}
您可以将其用作:
df$ConditionalChurn <- calc_cond_churn(df)