我在Scipy做生存计算并且无法获得正确的值。
我的代码:
x,a,c = 1000,1.5,5000
vals = exponweib.cdf(x,a,c,loc = 0,scale = 1)
Val应该等于0.085559356392783004,但我得到的是0。
如果我定义自己的功能,我会得到正确的答案: def weibCumDist(x,a,c): 返回1-np.exp( - (x / c)** a)
我可以使用自己的功能,但我很好奇我做错了什么。有什么建议吗?
感谢。
答案 0 :(得分:4)
您还没有正确地将参数映射到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
是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