我正在 Scipy 中进行生存计算,但无法获得正确的值。
My code:
x, a, c = 1000, 1.5, 5000
vals = exponweib.cdf(x,a,c,loc=0,scale=1)
vals
应该等于 0.085559356392783004,但我得到的是 0。
如果我定义自己的函数,我会得到正确的答案:
def weibCumDist(x,a,c):
return 1-np.exp(-(x/c)**a)
我可以只使用我自己的功能,但我很好奇我做错了什么。
您尚未将您的参数正确映射到 scipy.实现相当于您的weibCumDist
:
In [22]: x = 1000
In [23]: a = 1.5
In [24]: c = 5000
In [25]: exponweib.cdf(x, 1, a, loc=0, scale=c)
Out[25]: 0.08555935639278299
注意exponweib http://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.exponweib.html is the 指数化的威布尔分布 http://en.wikipedia.org/wiki/Exponentiated_Weibull_distribution.
您可能想使用scipy.stats.weibull_min
。这是通常称为“威布尔分布”的分布的实现:
In [49]: from scipy.stats import weibull_min
In [50]: weibull_min.cdf(x, a, loc=0, scale=c)
Out[50]: 0.08555935639278299
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)