Qual è la probabilità di questo processo?


10

Un paziente è ricoverato in ospedale. La durata del loro soggiorno dipende da 2 cose: la gravità della loro lesione e quanto la loro assicurazione è disposta a pagare per tenerli in ospedale. Alcuni pazienti lasceranno prematuramente se la loro assicurazione decide di smettere di pagare per il loro soggiorno.

Supponiamo che:

1) La durata del soggiorno è distribuita in modo anomalo (basti pensare che per ora, può o non può essere un presupposto realistico) con il parametro .λ

2) Vari piani assicurativi coprono soggiorni di 7, 14 e 21 giorni. Molti pazienti partiranno dopo 7,14 o 21 giorni di permanenza (poiché la loro assicurazione si esaurisce e devono partire).

Se dovessi ottenere dati da questo processo, potrebbe apparire come segue:

inserisci qui la descrizione dell'immagine

Come puoi vedere, ci sono punte al segno di 7, 14 e 21 giorni. Questi sono i pazienti che escono al termine della loro assicurazione.

Chiaramente, i dati possono essere modellati come una miscela. Sto facendo fatica a scrivere la probabilità di questa distribuzione. È come un poisson gonfiato a zero, ma l'inflazione è a 7, 14 e 21.

Qual è la probabilità di questi dati? Qual è il processo di pensiero dietro la probabilità?


Per iniziare, dovresti conoscere le probabilità dei tempi di partenza forzata di 7, 14 e 21 giorni.
BruceET,

1
Per me questo suona come una miscela di un Poisson e tre distribuzioni di Poisson troncate a destra (a 7, 14 e 21). Annotarli è un altro passo.
Carsten,

@BruceET In questo modello farò l'inferenza bayesiana, quindi vorrei scriverlo nel caso più generale.
Demetri Pananos,

Risposte:


9

In questo caso, credo che esista un percorso per una soluzione se indossiamo il nostro cappello per l'analisi della sopravvivenza. Si noti che anche se questo modello non ha soggetti censurati (nel senso tradizionale), possiamo ancora usare l'analisi della sopravvivenza e parlare dei pericoli dei soggetti.

Dobbiamo modellare tre cose in questo ordine: i) il rischio cumulativo, ii) il pericolo, iii) la probabilità del log.

i) Faremo parte i) nei passaggi. Qual è il rischio cumulativo, , di una variabile casuale di Poisson? Per una distribuzione discreta, ci sono due modi per definirlo¹, ma useremo la definizione . Quindi il rischio cumulativo per èH(t)H(t)=logS(t)TPoi(λ)

HT(t)=log(1Q(t,λ))=logP(t,λ)

dove è rispettivamente la funzione gamma regolarizzata superiore, inferiore.Q,P

Ora vogliamo aggiungere i "pericoli" dell'assicurazione che si sta esaurendo. La cosa bella dei pericoli cumulativi è che sono additivi, quindi dobbiamo semplicemente aggiungere "rischi" ai tempi 7, 14, 21:

HT(t)=logP(t,λ)+a1(t>7)+b1(t>14)+c1(t>21)

Dal punto di vista euristico, un paziente è soggetto a un rischio di "Poisson" di fondo, quindi a rischi puntuali a 7, 14 e 21. (Poiché si tratta di un rischio cumulativo , accumuliamo quei rischi puntuali, quindi il .) non so cosa siano e , ma in seguito li collegheremo alle nostre probabilità di esaurimento assicurativo.>a,bc

In realtà, poiché sappiamo che 21 è il limite superiore e tutti i pazienti vengono rimossi dopo, possiamo impostare come infinito.c

HT(t)=logP(t,λ)+a1(t>7)+b1(t>14)+1(t>21)

ii) Successivamente utilizziamo il rischio cumulativo per ottenere il pericolo, . La formula per questo è:h(t)

h(t)=1exp(H(t)H(t+1))

Collegare il nostro rischio cumulativo e semplificare:

hT(t)=1P(t+1,λ)P(t,λ)exp(a1(t=7)b1(t=14)1(t=21))

iii) Infine, scrivere la verosimiglianza dei log per i modelli di sopravvivenza (senza censura) è super facile una volta che abbiamo il rischio e il rischio cumulativo:

ll(λ,a,b|t)=i=1N(logh(ti)H(ti))

Ed eccolo qui!

Esistono le relazioni che collegano i nostri coefficienti di rischio puntuali e le probabilità delle lunghezze assicurative: .a=log(1pa),b=log(1papb)log(1pa),pc=1(pa+pb)


La prova è nel budino. Facciamo alcune simulazioni e deduzioni usando la semantica del modello personalizzato delle linee di vita .

from lifelines.fitters import ParametericUnivariateFitter
from autograd_gamma import gammaincln, gammainc
from autograd import numpy as np

MAX = 1e10

class InsuranceDischargeModel(ParametericUnivariateFitter):
    """
    parameters are related by
    a = -log(1 - p_a)
    b = -log(1 - p_a - p_b) - log(1 - p_a)
    p_c = 1 - (p_a + p_b)
    """
    _fitted_parameter_names = ["lbd", "a", "b"]
    _bounds = [(0, None), (0, None), (0, None)]

    def _hazard(self, params, t):
        # from (1.64c) in http://geb.uni-giessen.de/geb/volltexte/2014/10793/pdf/RinneHorst_hazardrate_2014.pdf
        return 1 - np.exp(self._cumulative_hazard(params, t) - self._cumulative_hazard(params, t+1))

    def _cumulative_hazard(self, params, t):
        lbd, a, b = params
        return -gammaincln(t, lbd) + a * (t > 7) + b * (t > 14) + MAX * (t > 21)


def gen_data():
    p_a, p_b = 0.4, 0.2
    p = [p_a, p_b, 1 - p_a - p_b]
    lambda_ = 18
    death_without_insurance = np.random.poisson(lambda_)
    insurance_covers_until = np.random.choice([7, 14, 21], p=p)
    if death_without_insurance < insurance_covers_until:
        return death_without_insurance
    else:
        return insurance_covers_until


durations = np.array([gen_data() for _ in range(40000)])
model = InsuranceDischargeModel()
model.fit(durations)
model.print_summary(5)
"""
<lifelines.InsuranceDischargeModel: fitted with 40000 observations, 0 censored>
number of subjects = 40000
  number of events = 40000
    log-likelihood = -78845.10392
        hypothesis = lbd != 1, a != 1, b != 1

---
        coef  se(coef)  lower 0.95  upper 0.95      p  -log2(p)
lbd 18.05026   0.03353    17.98455    18.11598 <5e-06       inf
a    0.50993   0.00409     0.50191     0.51794 <5e-06       inf
b    0.40777   0.00557     0.39686     0.41868 <5e-06       inf
"""


¹ vedere la Sezione 1.2 qui

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.