ในกรณีนี้ฉันเชื่อว่ามีเส้นทางไปสู่ทางออกถ้าเราใส่หมวกการวิเคราะห์เพื่อความอยู่รอด โปรดทราบว่าแม้ว่ารุ่นนี้ไม่มีหัวข้อที่ถูกเซ็นเซอร์ (ในแง่ดั้งเดิม) เรายังสามารถใช้การวิเคราะห์การอยู่รอดและพูดคุยเกี่ยวกับอันตรายของอาสาสมัคร
เราจำเป็นต้องสร้างแบบจำลองสามสิ่งในลำดับนี้: i) อันตรายสะสม, ii) อันตราย, iii) โอกาสในการบันทึก
i) เราจะทำส่วนที่ i) เป็นขั้นตอน อันตรายสะสมคืออะไรH( t )ของตัวแปรสุ่มของปัวซอง? สำหรับการแจกแจงแบบไม่ต่อเนื่องมีสองวิธีในการนิยามมัน¹ แต่เราจะใช้คำจำกัดความH( t ) = - บันทึกS( t ). ดังนั้นอันตรายสะสมสำหรับT~ Po i ( λ ) คือ
HT( t ) = - บันทึก( 1 - Q ( t , λ)))=−logP( t , λ)
ที่ไหน Q , P คือฟังก์ชันแกมมาบนและล่างที่ทำให้เป็นมาตรฐานต่ำกว่าตามลำดับ
ตอนนี้เราต้องการเพิ่ม "อันตราย" ของการประกันภัยหมด สิ่งที่ดีเกี่ยวกับอันตรายสะสมคือมันเป็นสารเติมแต่งดังนั้นเราเพียงแค่ต้องเพิ่ม "ความเสี่ยง" ในเวลา 7, 14, 21:
HT'( t ) = - บันทึกP( t , λ ) +a⋅1( t > 7 )+ b ⋅1( t > 14)+ c⋅1( t > 21 )
heuristically ผู้ป่วยจะอยู่ภายใต้พื้นหลัง "Poisson" ความเสี่ยงและชี้ฉลาดความเสี่ยงที่ 7, 14 และ 21 (เพราะนี่คือการสะสมอันตรายเราสะสมความเสี่ยงจุดที่ชาญฉลาดเหล่านั้นด้วยเหตุนี้>.) เราไม่รู้อะไรเลย a , bและ ค แต่หลังจากนั้นเราจะเชื่อมโยงพวกเขากับความน่าจะเป็นของการประกันภัยหมด
ที่จริงแล้วเนื่องจากเรารู้ว่า 21 เป็นขีด จำกัด บนและผู้ป่วยทั้งหมดจะถูกลบออกหลังจากนั้นเราสามารถตั้งค่าค จะเป็นอินฟินิตี้
HT'( t ) = - บันทึกP( t , λ ) +a⋅1( t > 7 )+ b ⋅1( t > 14 )+ ∞ ⋅1( t > 21 )
ii) ต่อไปเราจะใช้อันตรายสะสมเพื่อรับอันตราย h ( t ). สูตรสำหรับสิ่งนี้คือ:
h(t)=1−exp(H(t)−H(t+1))
เสียบอันตรายที่สะสมของเราและทำให้ง่ายขึ้น:
ชั่วโมงT'( t ) = 1 -P( t + 1 , λ )P( t , λ )ประสบการณ์( - ⋅1(t=7)−b⋅1(t=14)−∞⋅1(t=21))
iii) สุดท้ายการเขียนความน่าจะเป็นของบันทึกสำหรับแบบจำลองการอยู่รอด (ไม่มีการเซ็นเซอร์) เป็นเรื่องง่ายมากเมื่อเรามีอันตรายและอันตรายสะสม:
l l ( λ , a , b|t ) =Σi = 1ยังไม่มีข้อความ( บันทึกh (เสื้อผม) - ช(เสื้อผม) )
และมันก็เป็น!
มีความสัมพันธ์ที่เชื่อมโยงค่าสัมประสิทธิ์อันตรายแบบจุดและความน่าจะเป็นของความยาวประกัน: a = - บันทึก( 1 -พีa) , b = - บันทึก( 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 ที่นี่