如何使用生存分析对时间序列数据进行预测性维护?
数据挖掘
预测建模
时间序列
生存分析
2021-09-14 19:16:26
1个回答
每当您的任务包括诸如“...当 XY 将失败...”之类的内容时,我会说先进行生存分析,它既简单又快速,它会给您提供数据的概览。
使用您的数据,您可以将它们转换为能够绘制生存曲线的区间,或者直接进行 Cox 回归,该回归可以处理连续数据并产生风险比。
您可以从 Kaplan-Meier 曲线开始(作为奖励,有置信区间):
km <- survfit(Surv(datetime, Failed) ~ 1,conf.int=0.90, conf.type="log-log", data=Dataset)
summary(km)
plot(km, xlab="month", ylab="estimated S(t)", main="Kaplan-Meier with log-log, C.I.=90%")
此外,您可以拆分曲线以查看是否有任何参数具有不同的影响。你可以通过简单地用类似的~1
东西替换~AttributeX
当然,R 也会为您提供各种检验和 p 值,例如 Log-Rank 以验证影响是否显着(survdiff
)。
然后您可以继续进行 Cox 回归,它会告诉您风险比是多少(=该属性对风险的影响是正面还是负面以及程度如何)。在 R 中看起来像这样:
cox<-coxph(Surv(datetime, Failed)~AttributeX, data=pbc)
summary(cox)
验证假设 - 比例风险和函数形式是一种很好的做法(同样,R 将为您提供 p 值,或者您可以绘制残差 - Martingale 或 Schoenfeld)。
如果您有兴趣知道事件何时发生,请搜索 Accelerated Failure Time 模型,该模型将为您提供参数生存时间分布,您可以在其中简单地输入时间并获得概率。
在 R 中:
wei<-survreg(Surv(datetime, Failed)~ AttributeA + AttributeB + AttributeC,data=Dataset)
有更多可能的分布,您可以检查哪一个最适合您的数据。我从未做过预测,但是文档predict
中描述了一个函数,或者已经有类似的问题与 Crossvalidated 的答案类似,例如this。
其它你可能感兴趣的问题