Підбирання моделі Вейбулла

Аналіз виживаності в Python

Shae Wang

Senior Data Scientist

Розподіли ймовірностей

Розподіл ймовірностей

Математична функція, що описує ймовірність різних наслідків події.

нормальний розподіл

Аналіз виживаності в Python

Розподіли ймовірностей

Розподіл ймовірностей

Математична функція, що описує ймовірність різних наслідків події.

рівномірний розподіл

Аналіз виживаності в Python

Знайомство з розподілом Вейбулла

Розподіл Вейбулла

Неперервний розподіл, що добре моделює час до події (первісно застосовувався для розподілу розміру частинок).

Функція густини ймовірності Вейбулла

$$f(x;\lambda,k)=\frac{k}{\lambda}\bigg(\frac{x}{\lambda}\bigg)^{k-1}e^{-(x/\lambda)^k}$$ $$x\geq0,k>0,\lambda>0$$

Аналіз виживаності в Python

Знайомство з розподілом Вейбулла

$k$

Визначає форму

varying_k

$\lambda$

Визначає масштаб

varying_lambda

Аналіз виживаності в Python

Підбирання розподілу Вейбулла до даних

Компанія обслуговує парк машин, схильних до відмов...

гістограма відмов машин

Аналіз виживаності в Python

Підбирання розподілу Вейбулла до даних

Компанія обслуговує парк машин, схильних до відмов...

вейбулл для відмов машин

Аналіз виживаності в Python

Від розподілу Вейбулла до функції виживання

$$f(x;\lambda,k)=\frac{k}{\lambda}\bigg(\frac{x}{\lambda}\bigg)^{k-1}e^{-(x/\lambda)^k} \quad\rightarrow\quad\qquad\qquad S(t)=e^{-(t/\lambda)^\rho}$$

перехід від Вейбулла до функції виживання

$\rho$ те саме, що k

Аналіз виживаності в Python

Регулятори: k і lambda

k та $\lambda$
  • k (або $\rho$): визначає форму
  • $\lambda$: визначає масштаб (вказує, коли 63,2% сукупності пережили подію)

$$f(x;\lambda,k)=\frac{k}{\lambda}\bigg(\frac{x}{\lambda}\bigg)^{k-1}e^{-(x/\lambda)^k} \quad\rightarrow\quad f(x;\lambda,k=3)=\frac{3}{\lambda}\bigg(\frac{x}{\lambda}\bigg)^2e^{-(x/\lambda)^3}$$

  • Розподіл Вейбулла: інтенсивність відмов/подій пропорційна степеню часу.
Аналіз виживаності в Python

Тлумачення k (або $\rho$)

k<1, швидкість подій зменшується

  • Коли $k<1$, інтенсивність відмов/подій зменшується з часом.
Аналіз виживаності в Python

Тлумачення k (або $\rho$)

k=1, швидкість подій стала

  • Коли $k=1$, інтенсивність відмов/подій стала в часі.
Аналіз виживаності в Python

Тлумачення k (або $\rho$)

k>1, швидкість подій зростає

  • Коли $k>1$, інтенсивність відмов/подій зростає з часом.
Аналіз виживаності в Python

Аналіз виживання з розподілом Вейбулла

  1. Імпортуйте клас WeibullFitter
    from lifelines import WeibullFitter
    
  2. Створіть екземпляр WeibullFitter
    wb = WeibullFitter()
    
  3. Викличте .fit(), щоб підігнати оцінювач до даних
    wb.fit(durations, event_observed)
    
  4. Доступ до .survival_function_, .lambda_, .rho_, .summary, .predict()
Аналіз виживаності в Python

Приклад моделі Вейбулла

Назва DataFrame: mortgage_df

id duration paid_off
1 25 0
2 17 1
3 5 0
... ... ...
1000 30 1
from lifelines import WeibullFitter
wb = WeibullFitter()
wb.fit(durations=mortgage_df["duration"],
       event_observed=mortgage_df["paid_off"])
Аналіз виживаності в Python

Приклад моделі Вейбулла

wb.survival_function_.plot()
plt.show()

приклад кривої виживання Вейбулла

print(wb.lambda_, wb.rho_)
6.11  0.94
print(wb.predict(20))
0.05
Аналіз виживаності в Python

Давайте потренуємось!

Аналіз виживаності в Python

Preparing Video For Download...