【问题标题】:Weibull Censored Data威布尔删失数据
【发布时间】:2025-11-27 05:10:01
【问题描述】:

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

非常感谢!

【问题讨论】:

  • 您可以添加您尝试过的代码吗?

标签: python scipy weibull


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

    这是一个老问题,但如果其他人看到这个问题,您可以使用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
    

    【讨论】: