非删失(完整)数据集
我试图使用scipy.stats.weibull_min.fit()
函数来拟合一些生活数据。示例生成的数据包含在下面的values
中。
values = np.array(
[10197.8, 3349.0, 15318.6, 142.6, 20683.2,
6976.5, 2590.7, 11351.7, 10177.0, 3738.4]
)
我尝试使用函数拟合:
fit = scipy.stats.weibull_min.fit(values, loc=0)
结果:
(1.3392877335100251, -277.75467055900197, 9443.6312323849124)
这与1.4和10000的标称β和η值相差不远。
右删失数据
威布尔分布以其处理右删失数据的能力而闻名。这使得它在可靠性分析中非常有用。如何处理scipy.stats
中的右删失数据?也就是说,曲线拟合尚未经历故障的数据?
输入表单可能如下所示:
values = np.array(
[10197.8, 3349.0, 15318.6, 142.6, np.inf,
6976.5, 2590.7, 11351.7, 10177.0, 3738.4]
)
或者可能使用np.nan
或者简单地使用0
。
这两个np
解决方案都抛出RunTimeWarning
s,并且肯定不会接近正确的值。我使用数值--比如0
和-1
--删除了RunTimeWarning
,但是返回的参数明显有缺陷。
其他软件
在一些可靠性或寿命分析软件(minitab,lifelines)中,有必要有两列数据,一列用于实际数字,另一列用于指示项目是否已失效。例如:
values = np.array(
[10197.8, 3349.0, 15318.6, 142.6, 0,
6976.5, 2590.7, 11351.7, 10177.0, 3738.4]
)
censored = np.array(
[True, True, True, True, False,
True, True, True, True, True]
)
我在文档中没有看到这样的路径。
1条答案
按热度按时间9gm1akwq1#
老问题了,但是如果有人遇到这个问题,有一个新的python生存分析包,surpyval,可以处理这个问题,以及其他删失和截断的情况。对于您上面提供的示例,它只是:
您可能还对Weibull图感兴趣:
Weibull plot
坦白说,我是surpyval的创始人