Scipy Weibull 参数置信区间

Posted

技术标签:

【中文标题】Scipy Weibull 参数置信区间【英文标题】:Scipy Weibull parameter confidence intervals 【发布时间】:2019-06-05 10:12:25 【问题描述】:

我一直在使用 Matlab 使用 [paramhat, paramci] = wblfit(data, alpha) 将数据拟合到 Weibull 分布。这给出了 Weibull 分布的形状和尺度参数以及每个值的置信区间。

我正在尝试使用 Scipy 来完成理智的任务,并且可以使用 scipy.stats.weibull_min.fit 轻松获取参数,但我无法找到获取 vlauee 置信区间的方法。 Scipy 是否提供此功能?还是我需要自己编写 MLE 置信区间估计?

【问题讨论】:

【参考方案1】:

可以使用surpyvalpython包获取MLE的逆黑森矩阵(协方差)。

import surpyval as surv

x = [1, 4, 5, 7, 8, 10]

model = surv.Weibull.fit(x)
model.hess_inv

array([[1.87507778, 0.27362521],
       [0.27362521, 0.5031063 ]])

然后您可以使用对角线来估计参数的置信范围:

from scipy.special import ndtri as z
import numpy as np

d = z(0.05) * np.sqrt(model.hess_inv[0, 0])
model.alpha + d, model.alpha - d

(4.283756480648752, 8.788467083439066)

【讨论】:

【参考方案2】:

您可以使用scipy.optimize.curve_fit 将威布尔分布拟合到您的数据中。这也将为您提供协方差,因此您可以估计拟合参数的误差。

【讨论】:

以上是关于Scipy Weibull 参数置信区间的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Python 获得 Weibull 分布的置信区间?

使用 Scipy 拟合 Weibull 分布

使用 scipy.stats 将 Weibull 分布拟合到数据是不是表现不佳?

用 scipy 获取置信区间的正确方法

均值的置信区间 - scipy 实现与数学公式不符

置信区间、显著性检验和统计学意义