Bu işlemin olasılığı nedir?


10

Bir hasta hastaneye kaldırılır. Kalma süreleri 2 şeye bağlıdır: Yaralanmalarının ciddiyeti ve sigortalarının onları hastanede tutmak için ne kadar ödemeye razı olduğu. Bazı hastalar, sigortaları kaldıkları süre için ödemeyi durdurmaya karar verirse, erken ayrılırlar.

Aşağıdakileri varsayalım:

1) Kalış süresi parametresi ile poisson dağıtılmıştır (şimdilik şimdilik bunun gerçekçi bir varsayım olabilir veya olmayabilir) .λ

2) Çeşitli sigorta planları 7, 14 ve 21 günlük konaklamaları kapsar. Birçok hasta 7,14 veya 21 günlük konaklamalardan sonra ayrılacaktır (çünkü sigortaları biter ve ayrılmaları gerekir).

Bu işlemden veri alacak olsaydım, aşağıdaki gibi görünebilir:

resim açıklamasını buraya girin

Gördüğünüz gibi 7, 14 ve 21 günlük işaretlerde ani yükselişler var. Bunlar sigortaları bittiğinde ayrılan hastalar.

Açıkça, veriler bir karışım olarak modellenebilir. Bu dağıtım olasılığını yazmakta zorlanıyorum. Sıfır şişirilmiş bir poisson gibi, ancak enflasyon 7, 14 ve 21'de.

Bu veriler için olasılık nedir? Olasılığın arkasındaki düşünce süreci nedir?


Başlamak için 7, 14 ve 21 günlük zorunlu ayrılma sürelerinin olasılıklarını bilmeniz gerekir.
BruceET

1
Bana göre bu bir Poisson ve üç sağ kesik (7, 14 ve 21'de) Poisson dağılımlarının bir karışımı gibi geliyor. Bunları yazmak tamamen başka bir adımdır.
Carsten

@BruceET Bu modelde Bayesian çıkarsama yapacağım, bu yüzden bunu en genel durumda yazmak istiyorum.
Demetri Pananos

Yanıtlar:


9

Bu durumda, hayatta kalma analizi şapkamızı takarsak, bir çözüm yolunun var olduğuna inanıyorum. Bu modelin sansürlenmiş özneleri olmasa da (geleneksel anlamda), hayatta kalma analizini kullanmaya ve öznelerin tehlikeleri hakkında konuşabileceğimize dikkat edin.

Bu sırayla üç şeyi modellememiz gerekir: i) kümülatif tehlike, ii) tehlike, iii) kütük olasılığı.

i) Bölüm i) 'yi adım adım yapacağız. Poisson rasgele değişkeninin birikme tehlikesi nedir ? Ayrık bir dağıtım için, onu tanımlamanın iki yolu vardır¹, ancak tanımını kullanacağız . Kümülatif tehlike Yani olduğu'H(t)'H(t)=-günlükS(t)T~PÖben(λ)

'HT(t)=-günlük(1-S(t,λ))=-günlükP(t,λ)

burada sırasıyla üst, alt düzenli gama fonksiyonudur.S,P

Şimdi sigortanın bittiği "tehlikeleri" eklemek istiyoruz. Kümülatif tehlikeler hakkında güzel olan şey, katkı maddesi olmasıdır, bu yüzden 7, 14, 21 saatlerinde "riskler" eklememiz yeterlidir:

'HT'(t)=-günlükP(t,λ)+bir1(t>7)+b1(t>14)+c1(t>21)

Sezgisel olarak, bir hasta bir arka plan "Poisson" riskine ve ardından 7, 14 ve 21'de noktasal risklere maruz kalır. (Bu, birikimli bir tehlike olduğu için, bu nokta-bazlı riskleri biriktiririz, dolayısıyla .) ve ne olduğunu bilmiyoruz , ancak daha sonra bunları sigorta bitirme olasılıklarımıza bağlayacağız.>bir,bc

Aslında 21'in üst sınır olduğunu bildiğimiz ve bundan sonra tüm hastalar çıkarıldığı için sonsuz olarak ayarlayabiliriz .c

'HT'(t)=-günlükP(t,λ)+bir1(t>7)+b1(t>14)+1(t>21)

ii) Daha sonra tehlikeyi elde etmek için birikimli tehlikeyi kullanırız, . Bunun formülü:h(t)

h(t)=1-tecrübe('H(t)-'H(t+1))

Kümülatif tehlikemizin takılması ve basitleştirilmesi:

hT'(t)=1-P(t+1,λ)P(t,λ)tecrübe(-bir1(t=7)-b1(t=14)-1(t=21))

iii) Son olarak, tehlike ve kümülatif tehlike olduğunda hayatta kalma modelleri (sansürsüz) için günlük olasılığını yazmak çok kolaydır:

ll(λ,bir,b|t)=Σben=1N-(günlükh(tben)-'H(tben))

Ve işte burada!

Noktasal tehlike katsayılarımızı ve sigorta uzunluklarının olasılıklarını birleştiren ilişkiler vardır: .bir=-günlük(1-pbir),b=-günlük(1-pbir-pb)-günlük(1-pbir),pc=1-(pbir+pb)


Kanıt, puding içerisindedir. Yaşam çizgilerinin özel model semantiğini kullanarak bazı simülasyonlar ve çıkarımlar yapalım .

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
"""

Bölüm 1.2 ¹ burada

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.