Сципи Вейбулла расчет CDF
Я делаю расчеты выживания в Scipy и не могу получить правильные значения.
Мой код:
х, а, с = 1000, 1,5, 5000
vals = exponweib.cdf (x, a, c, loc = 0, scale = 1)
Val должен быть равен 0,085559356392783004, но вместо этого я получаю 0.
Если я определю свою собственную функцию, я получу правильный ответ: def weibCumDist(x,a,c): return 1-np.exp(-(x/c)**a)
Я мог бы просто использовать свою собственную функцию, но мне любопытно, что я делаю неправильно. Какие-либо предложения?
Благодарю.
1 ответ
Вы неправильно сопоставили свои параметры с параметрами 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
это возведенное в степень распределение Вейбулла.
Вы, вероятно, хотите использовать 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