我正在使用Python中Lifelines的AalenAdditiveFitter构建一个预测模型,以预测事件是否会发生以及何时发生。
T(时间)= 月 C(事件)= 1 为是,0 为否
此外,我正在使用 8 个属性。
aaf = AalenAdditiveFitter(coef_penalizer=1., fit_intercept=True)
cx1 = aaf.fit(trainX.drop(['index'], axis=1), duration_col='T', event_col='C',show_progress=True)
我能够使用以下方法构建一个相对稳定的模型并获得累积危险概率:
stestXsurvived = cx1.predict_cumulative_hazard(stestX.drop(['T','C'], axis=1))
有没有办法直接从AalenAdditiveFitter过程中获得条件/边际概率?
那么在多做一点挖掘之后,我可以假设以下内容吗?
- 我从阿伦加性模型中得到累积危险概率
- 为了使它们达到每个月的条件概率,我可以取上个月的差值:P(t) - P(t-1)
这是基于 https://quant.stackexchange.com/questions/21816/cumulative-vs-marginal-probability-of-default 上发布的答案
不确定此解决方案是否如此简单,请提供帮助。
如果你按照你建议的方式改变累积危险,你会得到h(t),危险。 h(t) 确实相当于离散持续时间的条件概率。 但请注意:对于连续持续时间,h(t) 是一个速率(例如,它可以大于 1)。
顺便说一句:我不记得Aalen的加法模型是否是半参数的。 但是,如果是这样,累积风险只会在我们看到失败的月份中改变价值。 它不会影响您的(月份 - 上个月)计算 - 差异将为 0,当我们观察到没有失败时,半参数持续时间模型总是如此。
如果你想节省计算能力,你可以把一个故障时间的累积危险(称为t_k),然后从这个故障时间之前的最后一个故障时间的累积危险中减去它(称之为t_k-1)。 一旦你把你的思想集中在新量告诉你的内容上,你得到的答案将是相同的:如果累积危险在t_k-1和t之间变化很大,而半参数危险(因此,累积危险)仅在我们看到故障时才更新,那么任何介于t_k-1和t之间的时间点都必须具有0的危险。