โอกาสสำหรับกระบวนการนี้คืออะไร?


10

ผู้ป่วยเข้ารับการรักษาในโรงพยาบาล ระยะเวลาพำนักของพวกเขาขึ้นอยู่กับ 2 สิ่ง: ความรุนแรงของการบาดเจ็บและประกันของพวกเขาเต็มใจที่จะจ่ายเพื่อรักษาพวกเขาในโรงพยาบาล ผู้ป่วยบางรายจะออกไปก่อนกำหนดหากประกันของพวกเขาตัดสินใจที่จะหยุดจ่ายเงินสำหรับการเข้าพักของพวกเขา

สมมติว่าต่อไปนี้:

1) ความยาวของการเข้าพัก Poisson กระจาย (เพียงสมมตินี้สำหรับตอนนี้ก็อาจจะหรืออาจจะไม่เป็นจริงสมมติฐาน) กับพารามิเตอร์\λ

2) แผนประกันภัยหลากหลายครอบคลุมการเข้าพัก 7, 14, และ 21 วัน ผู้ป่วยจำนวนมากจะออกเดินทางหลังจาก 7,14 หรือ 21 วันอยู่ (เพราะประกันหมดและพวกเขาต้องออกไป)

ถ้าฉันได้รับข้อมูลจากกระบวนการนี้มันอาจมีลักษณะดังต่อไปนี้:

ป้อนคำอธิบายรูปภาพที่นี่

อย่างที่คุณเห็นมีหนามแหลมที่เครื่องหมาย 7, 14 และ 21 วัน นี่คือผู้ป่วยที่ออกเมื่อประกันสิ้นสุด

เห็นได้ชัดว่าข้อมูลสามารถจำลองเป็นส่วนผสมได้ ฉันมีเวลายากลำบากที่จะเขียนความเป็นไปได้สำหรับการกระจายตัวนี้ มันเหมือนปัวซองที่พองเกินศูนย์ แต่เงินเฟ้ออยู่ที่ 7, 14 และ 21

โอกาสในการเกิดข้อมูลนี้คืออะไร? กระบวนการคิดที่อยู่เบื้องหลังความน่าจะเป็นคืออะไร?


ในการเริ่มต้นคุณจะต้องทราบความน่าจะเป็นของการบังคับให้ลาออก 7, 14 และ 21 วัน
BruceET

1
สำหรับฉันแล้วฟังดูเหมือนการผสมผสานของปัวซองและการแจกแจงปัวซองสามค่า (ที่ 7, 14 และ 21) การจดบันทึกเป็นขั้นตอนอื่นโดยสิ้นเชิง
Carsten

@BruceET ฉันจะใช้การอนุมานแบบเบย์กับโมเดลนี้ดังนั้นฉันต้องการเขียนลงในกรณีทั่วไปมากที่สุด
Demetri Pananos

คำตอบ:


9

ในกรณีนี้ฉันเชื่อว่ามีเส้นทางไปสู่ทางออกถ้าเราใส่หมวกการวิเคราะห์เพื่อความอยู่รอด โปรดทราบว่าแม้ว่ารุ่นนี้ไม่มีหัวข้อที่ถูกเซ็นเซอร์ (ในแง่ดั้งเดิม) เรายังสามารถใช้การวิเคราะห์การอยู่รอดและพูดคุยเกี่ยวกับอันตรายของอาสาสมัคร

เราจำเป็นต้องสร้างแบบจำลองสามสิ่งในลำดับนี้: i) อันตรายสะสม, ii) อันตราย, iii) โอกาสในการบันทึก

i) เราจะทำส่วนที่ i) เป็นขั้นตอน อันตรายสะสมคืออะไรH(เสื้อ)ของตัวแปรสุ่มของปัวซอง? สำหรับการแจกแจงแบบไม่ต่อเนื่องมีสองวิธีในการนิยามมัน¹ แต่เราจะใช้คำจำกัดความH(เสื้อ)=-เข้าสู่ระบบS(เสื้อ). ดังนั้นอันตรายสะสมสำหรับT~Pโอผม(λ) คือ

HT(t)=เข้าสู่ระบบ(1-Q(เสื้อ,λ))=-เข้าสู่ระบบP(เสื้อ,λ)

ที่ไหน Q,P คือฟังก์ชันแกมมาบนและล่างที่ทำให้เป็นมาตรฐานต่ำกว่าตามลำดับ

ตอนนี้เราต้องการเพิ่ม "อันตราย" ของการประกันภัยหมด สิ่งที่ดีเกี่ยวกับอันตรายสะสมคือมันเป็นสารเติมแต่งดังนั้นเราเพียงแค่ต้องเพิ่ม "ความเสี่ยง" ในเวลา 7, 14, 21:

HT(t)=-เข้าสู่ระบบP(เสื้อ,λ)+a1(เสื้อ>7)+1(เสื้อ>14)+1(เสื้อ>21)

heuristically ผู้ป่วยจะอยู่ภายใต้พื้นหลัง "Poisson" ความเสี่ยงและชี้ฉลาดความเสี่ยงที่ 7, 14 และ 21 (เพราะนี่คือการสะสมอันตรายเราสะสมความเสี่ยงจุดที่ชาญฉลาดเหล่านั้นด้วยเหตุนี้>.) เราไม่รู้อะไรเลย a,และ แต่หลังจากนั้นเราจะเชื่อมโยงพวกเขากับความน่าจะเป็นของการประกันภัยหมด

ที่จริงแล้วเนื่องจากเรารู้ว่า 21 เป็นขีด จำกัด บนและผู้ป่วยทั้งหมดจะถูกลบออกหลังจากนั้นเราสามารถตั้งค่า จะเป็นอินฟินิตี้

HT'(เสื้อ)=-เข้าสู่ระบบP(เสื้อ,λ)+a1(เสื้อ>7)+1(เสื้อ>14)+1(เสื้อ>21)

ii) ต่อไปเราจะใช้อันตรายสะสมเพื่อรับอันตราย ชั่วโมง(เสื้อ). สูตรสำหรับสิ่งนี้คือ:

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

เสียบอันตรายที่สะสมของเราและทำให้ง่ายขึ้น:

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

iii) สุดท้ายการเขียนความน่าจะเป็นของบันทึกสำหรับแบบจำลองการอยู่รอด (ไม่มีการเซ็นเซอร์) เป็นเรื่องง่ายมากเมื่อเรามีอันตรายและอันตรายสะสม:

ล.ล.(λ,a,|เสื้อ)=Σผม=1ยังไม่มีข้อความ(เข้าสู่ระบบชั่วโมง(เสื้อผม)-H(เสื้อผม))

และมันก็เป็น!

มีความสัมพันธ์ที่เชื่อมโยงค่าสัมประสิทธิ์อันตรายแบบจุดและความน่าจะเป็นของความยาวประกัน: a=-เข้าสู่ระบบ(1-พีa),=-เข้าสู่ระบบ(1-พีa-พี)-เข้าสู่ระบบ(1-พีa),พี=1-(พีa+พี).


หลักฐานอยู่ในพุดดิ้ง ลองทำแบบจำลองและการอนุมานโดยใช้ซีแมนติกโมเดลที่กำหนดเองของ lifelines

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

¹ดูหัวข้อ 1.2 ที่นี่

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.