Сципи Вейбулла расчет 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
Другие вопросы по тегам