Scipy威布尔分布参数置信区间

4
我一直在使用Matlab通过[paramhat,paramci] = wblfit(data,alpha)来将数据拟合到Weibull分布中。这会给出Weibull分布的形状和比例参数以及每个值的置信区间。
我试图使用Scipy来完成相同的任务,并且可以轻松使用scipy.stats.weibull_min.fit获取参数,但是我无法找到一种方法来获取值的置信区间。Scipy是否提供此功能?还是我需要自己编写MLE置信区间估计?
2个回答

2
你可以使用 surpyval Python 包来获取 MLE 的逆 Hessian 矩阵(协方差)。
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)

0
你可以使用 scipy.optimize.curve_fit 来拟合威布尔分布到你的数据上。这也会给你协方差,因此你可以估计拟合参数的误差。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接