2

我目前正在处理一些与装置的安装日期和故障日期相对应的生命周期数据。数据是现场数据,所以我确实有大量的暂停(尚未出现故障的单元)。我想使用 Scipy stats 库对这些数据进行一些 Weibull 分析(例如将数据拟合到 weibull 曲线并获取分布参数)。我对 Python 和 Scipy 很陌生,所以我找不到将暂停数据包含在任何可用的 Weibull 分布(dweibull、exponweibull、minweibull、maxweibull)中的方法。有没有一种简单的方法来处理悬架?我不想重新设计轮子,但我在从我的数据中估计 Weibull 的参数时遇到了困难。谁能帮我?

非常感谢!

4

2 回答 2

1

如果我理解正确,那么这需要使用删失数据进行估计。

scipy.stats.distribution 都不会直接估计这种情况。您需要将未删失的似然函数和删失观测的似然函数结合起来。

您可以将 scipy.stats.distributions 的 pdf 和 cdf 或更好的 sf 用于这两个部分。然后,您可以只使用 scipy optimize 来最小化负对数似然,或者如果您也对参数估计的不确定性感兴趣,可以尝试 statsmodels 中的 GenericLikelihoodModel。

于 2014-03-20T03:21:07.627 回答
0

这是一个老问题,但如果其他人看到这个问题,您可以使用surpyval python 包非常轻松地适应暂停数据。


import surpyval as surv

# Failures
f = [1, 4, 5, 7, 8, 10]

# suspended or right-censored points
s = [5, 6, 7]

# Convert 'fs' format to the 'xcn' format 
# x is the time/variable
# c is the censoring flag 0 = failed, 1 = right-censored
# n is the count

x, c, n = surv.fs_to_xcn(f=f, s=s)
# Fit model
surv.Weibull.fit(x, c, n)
Parametric SurPyval Model
=========================
Distribution        : Weibull
Fitted by           : MLE
Parameters          :
     alpha: 7.738077941578669
      beta: 2.263120966029975
于 2021-10-28T09:32:14.840 回答