ต้นไม้การตัดสินใจ แบบจำลองมาร์คอฟ และการวิเคราะห์ความไวเชิงความน่าจะเป็น: แบบจำลองแปลงหลักฐานเป็นการตัดสินใจได้อย่างไร

On this page
Read the English version
บทคัดย่อ
Decision model รวมหลักฐานเพื่อเปรียบเทียบผลลัพธ์สุขภาพและต้นทุนที่เกินขอบเขตของการศึกษาเดียว Decision trees ติดตามเหตุการณ์แตกแขนงในช่วงสั้นที่มีจุดสิ้นสุดชัดเจน Markov cohorts ย้ายจำนวนผู้ป่วยคาดหมายระหว่างสถานะสุขภาพซ้ำตามรอบเวลา รูปแบบพื้นฐานถือว่าสถานะสุขภาพปัจจุบันเก็บประวัติที่เกี่ยวข้องไว้ครบ ตัวอย่างคำนวณติดตามประชากรสมมติและหาปีสุขภาวะโดยระบุข้อตกลงด้านเวลาของรอบอย่างชัดเจน จากนั้นการตรวจสอบแบบจำลองจะประเมินว่าการทำงานตรงกับสมการและคำถามทางคลินิกหรือไม่ Probabilistic sensitivity analysis ประเมินแบบจำลองซ้ำโดยสุ่มค่าพารามิเตอร์ที่ไม่แน่นอนร่วมกัน กราฟกระจายกับเส้นโค้งการยอมรับที่เชื่อมกันแสดงว่าผลประเมินช่วยการตัดสินใจอย่างไร ทางเลือกที่เหมาะสมให้ผลประโยชน์สุทธิคาดหมายสูงสุด ซึ่งอาจไม่ใช่ทางเลือกที่ชนะบ่อยที่สุด การวิเคราะห์ความไม่แน่นอนนี้ไม่สามารถแก้หลักฐานที่มีอคติหรือโครงสร้างแบบจำลองที่ผิดโดยอัตโนมัติ การคำนวณซ้ำได้ สมมติฐานที่โปร่งใส และสถานการณ์เชิงโครงสร้างที่แยกชัดทำให้ประเมินข้อสรุปได้ง่ายขึ้น
เหตุใดการตัดสินใจจึงต้องใช้แบบจำลอง
Decision model คือแบบจำลองที่เชื่อมหลักฐานเพื่อเปรียบเทียบทางเลือกตลอด time horizon ที่ระบุไว้ Time horizon คือช่วงเวลาที่นับต้นทุนและผลลัพธ์สุขภาพ การทดลองมักติดตามได้ไม่ครบทุกทางเลือกหรือทุกผลที่เกิดภายหลัง
Synthesis คือการรวมหลักฐานจากหลายแหล่ง ส่วน extrapolation คือการคาดการณ์ผลลัพธ์พ้นช่วงติดตามที่สังเกตจริง ทั้งสองอย่างต้องระบุสมมติฐานเกี่ยวกับประชากรเป้าหมาย ตัวเปรียบเทียบ และเส้นทางการดูแล
Surrogate outcome คือผลลัพธ์ระหว่างทาง เช่น ค่าตรวจทางห้องปฏิบัติการ ค่าตรวจที่ดีขึ้นไม่ได้แปลว่าอายุยืนขึ้นหรือคุณภาพชีวิตดีขึ้นโดยอัตโนมัติ ต้องตรวจสอบความเชื่อมโยงกับผลลัพธ์สุดท้ายก่อนกำหนด QALY ที่เพิ่มขึ้น
Decision trees: คำนวณย้อนกลับจากผลลัพธ์แต่ละปลายทาง
Decision tree คือต้นไม้ที่ติดตามเหตุการณ์แตกแขนงจนจบแต่ละเส้นทาง เหมาะกับเหตุการณ์เฉียบพลันในช่วงสั้นที่มีจุดสิ้นสุดชัดเจน หากเหตุการณ์เกิดซ้ำ จำนวนกิ่งจะเพิ่มขึ้นอย่างรวดเร็ว
สี่เหลี่ยมแทนจุดเลือกทางเลือก ส่วนวงกลมแทนเหตุการณ์ที่ไม่แน่นอน คูณความน่าจะเป็นตามเส้นทางเพื่อหาความน่าจะเป็นของปลายทางนั้น ที่จุดเหตุการณ์แต่ละจุด ความน่าจะเป็นแบบมีเงื่อนไขของกิ่งที่ออกไปต้องรวมกันได้หนึ่ง
Rollback คือการเฉลี่ยผลลัพธ์ปลายทางย้อนกลับผ่านต้นไม้ หาก $p_k$ เป็นความน่าจะเป็นปลายทางและ $C_k$ เป็นต้นทุน จะได้ต้นทุนคาดหมาย $E[C]=\sum_k p_k C_k$ เช่นเดียวกัน $E[Q]=\sum_k p_k Q_k$ ให้ QALY คาดหมาย
Markov cohorts: ย้ายประชากรระหว่างสถานะ
Markov cohort คือแบบจำลองที่ย้ายจำนวนคาดหมายระหว่างสถานะสุขภาพตามช่วงเวลาคงที่ที่เรียกว่า cycle สถานะต้องไม่ทับซ้อนกันและครอบคลุมความเป็นไปได้ที่เกี่ยวข้อง ตัวอย่างสมมติใช้สถานะ Well, Sick และ Dead โดยการเสียชีวิตเป็น absorbing state คือไม่มีใครออกจากสถานะนี้
Transition matrix $\mathbf P$ แสดงความน่าจะเป็นของสถานะในรอบถัดไปสำหรับแต่ละสถานะปัจจุบัน แต่ละแถวต้องรวมกันได้หนึ่ง Cohort trace บันทึกจำนวนในแต่ละสถานะตามเวลา: $\mathbf m_{t+1}=\mathbf m_t\mathbf P$ ค่าอาจเป็นเศษส่วนได้เพราะเป็นจำนวนคาดหมาย
Reward คือการกำหนดต้นทุนหรือคุณค่าทางสุขภาพให้กับเวลาที่อยู่ในสถานะ เมื่อ $\mathbf u$ เป็น utility, $\Delta t$ เป็นความยาวรอบ และ $N$ เป็นจำนวนเริ่มต้น QALY ต่อคนต่อรอบเท่ากับ $\mathbf m_t\mathbf u\Delta t/N$ ต้องระบุว่าใช้จำนวน ณ ต้นรอบ กลางรอบ หรือปลายรอบ
Half-cycle correction คือการประมาณเวลาที่อยู่ในสถานะด้วยค่าเฉลี่ยของจำนวน ณ ขอบเขตต้นและปลายรอบ ช่วยลดความคลาดเคลื่อนด้านเวลาเมื่อการเปลี่ยนสถานะเกิดตลอดรอบ ไม่ใช่การปรับลดค่าตามเวลาที่ใช้กับการจ่ายเงินทุกชนิด ตัวอย่างนี้ใช้ reward ณ ปลายรอบโดยไม่ปรับ half-cycle correction และไม่คิดลด
ติดตามประชากรสมมติผ่านสองรอบ
ประชากรเริ่มต้นทั้งหมด 1,000 คนอยู่ในสถานะ Well แต่ละรอบยาวหนึ่งปี ตัวอย่างเพื่อการเรียนรู้นี้ไม่รวมการฟื้นตัว แบบจำลองจริงต้องมีเหตุผลทางคลินิกรองรับการเลือกเช่นนี้
-
กำหนดข้อมูลนำเข้าสมมติ
ความน่าจะเป็นรายปีจาก Well ไป Sick คือ 0.10 จาก Well ไป Dead คือ 0.02 และจาก Sick ไป Dead คือ 0.20 ค่า utility ของ Well เท่ากับ 0.85 ของ Sick เท่ากับ 0.55 และของ Dead เท่ากับศูนย์
-
เลื่อนประชากรไปแต่ละรอบ
ปลายรอบแรกมี Well 880, Sick 100 และ Dead 20 ปลายรอบที่สองมี Well 774.4, Sick 168.0 และ Dead 57.6 เศษส่วนแสดงจำนวนคาดหมาย
-
ถ่วงน้ำหนักเวลาด้วย utility
คูณจำนวนในแต่ละสถานะ ณ ปลายรอบด้วย utility แล้วหารด้วยจำนวนประชากรเริ่มต้น แต่ละรอบยาวหนึ่งปี จะได้ 0.803 และ 0.751 QALY ต่อคนในรอบแรกและรอบที่สอง
ผลลัพธ์: ค่าเหล่านี้เป็น reward แยกของแต่ละรอบ โดยไม่คิดลดและไม่ปรับ half-cycle correction
จำนวนคาดหมายเหล่านี้อธิบายค่าเฉลี่ยของประชากร ไม่ได้ทำนายว่าบุคคลใดจะป่วยหรือเสียชีวิต
คำนวณประชากรตามตัวอย่าง
# Writes: stdout only; illustrative annual cohort, end-cycle rewards.
transition <- rbind(c(0.88, 0.10, 0.02), c(0, 0.80, 0.20), c(0, 0, 1))
first <- c(1000, 0, 0) %*% transition
second <- first %*% transition
cat("First cycle Well:", first[1], "\n")
cat("First cycle Sick:", first[2], "\n")
cat("First cycle Dead:", first[3], "\n")
cat("Second cycle Well:", second[1], "\n")
cat("Second cycle Sick:", format(second[2], nsmall = 1), "\n")
cat("Second cycle Dead:", second[3], "\n")
cat("First cycle QALYs/person:", round(sum(first * c(0.85, 0.55, 0)) / 1000, 3), "\n")
cat("Second cycle QALYs/person:", round(sum(second * c(0.85, 0.55, 0)) / 1000, 3), "\n")
During startup - Warning messages:
1: Setting LC_COLLATE=C.UTF-8 failed
2: Setting LC_CTYPE=C.UTF-8 failed
3: Setting LC_MONETARY=C.UTF-8 failed
4: Setting LC_TIME=C.UTF-8 failed
First cycle Well: 880
First cycle Sick: 100
First cycle Dead: 20
Second cycle Well: 774.4
Second cycle Sick: 168.0
Second cycle Dead: 57.6
First cycle QALYs/person: 0.803
Second cycle QALYs/person: 0.751
เมื่อสถานะปัจจุบันเก็บประวัติไม่เพียงพอ
Memoryless assumption คือสมมติฐานที่ว่าการเปลี่ยนสถานะในอนาคตขึ้นกับสถานะปัจจุบัน ไม่ขึ้นกับประวัติที่ไม่ได้บันทึก สถานะ Sick แบบพื้นฐานจึงปฏิบัติต่อผู้เพิ่งป่วยและผู้ป่วยมานานเหมือนกัน ซึ่งอาจทำให้ความเสี่ยงกลับเป็นซ้ำหรือเสียชีวิตคลาดเคลื่อน
Tunnel state เก็บเวลาตั้งแต่เข้าสถานะโดยให้คนเคลื่อนผ่านขั้นต่อเนื่อง ใช้แทนการฟื้นตัวระยะแรกหรืออัตราเกิดเหตุการณ์ที่เปลี่ยนหลังรักษาได้ อายุและเวลาปฏิทินก็ทำให้ความน่าจะเป็นเปลี่ยนไปได้หากระบุไว้ในแบบจำลอง
Microsimulation ติดตามแต่ละบุคคลและเก็บประวัติไว้ได้ ส่วน discrete event simulation หรือ DES ติดตามเหตุการณ์ตามเวลาที่จำลองว่าเกิดจริง ควรพิจารณาวิธีเหล่านี้เมื่อเหตุการณ์ซ้ำ คิวบริการ หรือความเสี่ยงหลายอย่างที่ขึ้นกับประวัติมีผลต่อการตัดสินใจ
เลือกข้อมูลนำเข้าที่ตอบคำถามเดียวกัน
ข้อมูลนำเข้าต้องอธิบายประชากรเป้าหมายและช่วงเวลาเดียวกัน ใช้ hazard ratio กับ hazard แล้วจึงแปลงเป็นความน่าจะเป็นต่อรอบ อ่าน [[incidence-prevalence-and-the-right-denominator-th]] และ [[hazard-ratio-proportional-hazards-rmst-th]]
นำค่าประมาณผลและความไม่แน่นอนมาด้วยกัน ประเมินอคติและความตรงต่อคำถามก่อนกำหนดการแจกแจง โดยอ่านเพิ่มเติมที่ [[evidence-pyramid-versus-grade-certainty-th]] ต้นทุนต้องระบุมุมมองและปีราคา ส่วน utility ต้องระบุเครื่องมือและประชากร
ใช้ตารางชีพที่เหมาะสมสำหรับการเสียชีวิตพื้นฐาน ตรวจอายุ เพศ และช่วงเวลาอ้างอิง พร้อมหลีกเลี่ยงการนับการเสียชีวิตจากโรคซ้ำ
ใช้ hazard ratio ก่อนแปลงเป็นความน่าจะเป็น
เมื่อ hazard $r$ คงที่ การรอดพ้นเหตุการณ์เป็นคำตอบของ $dS/dt=-rS$ และ $S(0)=1$ จึงได้ $S(t)=\exp(-rt)$ และ $p=1-\exp(-rt)$ Hazard ratio (HR) คูณกับ $r$ ไม่ใช่ $p$ ทั้งสอง hazard ต้องอ้างถึงเหตุการณ์และประชากรเดียวกัน
สมมติ hazard 0.120 ต่อปี และ HR 0.700 ให้ความเสี่ยงรายปี 11.31% และ 8.06% Hazard ที่ลดลงเป็นสมมติฐาน ไม่ใช่ผลการรักษาที่ประมาณจากข้อมูล เวลาใช้หน่วยปีให้ตรงกับ hazard
เมื่อ competing hazards $r_j$ คงที่ ความน่าจะเป็นที่เหตุการณ์แรกเป็นชนิด $j$ คือ $[r_j/\sum r_j][1-\exp(-t\sum r_j)]$ ส่วนที่เหลือคือไม่มีเหตุการณ์ การแปลงแต่ละสาเหตุแยกกันละเลยว่าเหตุการณ์หนึ่งขัดขวางอีกเหตุการณ์ไม่ให้เกิดก่อน จึงอาจได้ผลรวมที่ไม่สอดคล้องกัน
แปลง hazard บนฐานเวลาเดียวกัน
# Writes: stdout only; coordinator captures results.
hazard <- 0.120
hazard_ratio <- 0.700
cycle_years <- 1
control_risk <- 1 - exp(-hazard * cycle_years)
treated_risk <- 1 - exp(-hazard * hazard_ratio * cycle_years)
cat("Control annual risk (%):", formatC(100*control_risk, format="f", digits=2), "\n")
cat("Treated annual risk (%):", formatC(100*treated_risk, format="f", digits=2), "\n")
During startup - Warning messages:
1: Setting LC_COLLATE=C.UTF-8 failed
2: Setting LC_CTYPE=C.UTF-8 failed
3: Setting LC_MONETARY=C.UTF-8 failed
4: Setting LC_TIME=C.UTF-8 failed
Control annual risk (%): 11.31
Treated annual risk (%): 8.06
ผลตอบแทนต้นรอบ ปลายรอบ และ trapezoid ใช้สมมติฐานเวลาต่างกัน
ผลตอบแทนต้นรอบใช้จำนวนคนก่อนเปลี่ยนสถานะ ส่วนปลายรอบใช้จำนวนหลังเปลี่ยน Trapezoidal rewards เฉลี่ยจำนวนที่ขอบรอบทั้งสอง เป็นการประมาณผลตอบแทนที่สะสมต่อเนื่องเมื่อการเปลี่ยนภายในรอบราบรื่นเพียงพอ เงินซื้อการรักษาที่จ่ายล่วงหน้าควรคงเวลาจ่ายจริง
Half-cycle correction เป็นการประมาณเวลา ไม่ใช่การแก้รอบที่ยาวเกินไปหรือเส้นทางโรคที่กำหนดผิด หากเวลามีผลให้ลดความยาวรอบแล้วเปรียบเทียบ Utility ติดลบต้องใช้การแจกแจงที่รองรับค่าติดลบด้วย Beta distribution ปกติทำเช่นนั้นไม่ได้
สำหรับความน่าจะเป็นเปลี่ยนสถานะร่วม ให้สุ่มแถว Dirichlet หรือปรับค่าบวกที่สุ่มจาก gamma ซึ่งมี scale ร่วมให้ผลรวมเป็นหนึ่ง ทุกแถวที่สุ่มจึงมีผลรวมเท่ากับหนึ่ง การสุ่ม beta แยกทุกปลายทางไม่รับรองข้อจำกัดนี้ รักษาความสัมพันธ์จากหลักฐานร่วมด้วยการประมาณร่วมกันหรือสุ่มค่าร่วม
ตรวจสอบแบบจำลองก่อนเปลี่ยนข้อมูลนำเข้า
Face validation ถามแพทย์และผู้ป่วยว่าเส้นทางกับสมมติฐานสมเหตุสมผลหรือไม่ Internal validation ตรวจว่าโค้ดทำงานตรงกับสมการ ต้องทดสอบขอบเขตความน่าจะเป็น ผลรวมแต่ละแถว การคงจำนวนประชากร และข้อมูลนำเข้าที่เป็นค่าสุดขอบ
Cross-model validation เปรียบเทียบผลกับแบบจำลองที่สร้างอย่างเป็นอิสระเพื่อตอบคำถามเดียวกัน External validation เปรียบเทียบคำทำนายกับข้อมูลที่ไม่ได้ใช้ประมาณแบบจำลอง ผลที่ตรงกันช่วยเพิ่มความน่าเชื่อถือ ส่วนผลที่ต่างกันต้องอธิบาย
ถามว่าสมมติฐานใดทำให้เปลี่ยนทางเลือก
Deterministic sensitivity analysis เปลี่ยนข้อมูลนำเข้าที่กำหนดไว้และตรึงค่าอื่น One-way analysis เปลี่ยนข้อมูลทีละตัว แท่ง Tornado จัดลำดับการเปลี่ยน incremental net monetary benefit (INMB) ตามช่วงค่าที่เลือก อย่าจัดลำดับด้วย ICER ที่เป็นอัตราส่วนไม่เสถียร
Threshold analysis หาค่าข้อมูลนำเข้าที่ทำให้ทางเลือกที่เหมาะสมเปลี่ยนไป ใช้ incremental net monetary benefit หรือผลประโยชน์สุทธิทางการเงินส่วนเพิ่ม: $INMB=\lambda\Delta Q-\Delta C$ โดย $\lambda$ แทนมูลค่าทางการเงินต่อ QALY ส่วนเดลต้าเปรียบเทียบทางเลือกใหม่กับการดูแลเดิม
Structural scenarios ทดสอบสมมติฐานทางเลือกเกี่ยวกับตัวแบบจำลอง เช่น การฟื้นตัวหลังป่วย ประโยชน์การรักษาที่ลดลง และการคาดการณ์การรอดชีพแบบอื่น Tornado plot ไม่สามารถสรุปความไม่แน่นอนร่วมของทั้งหมดนี้ อ่านการเปรียบเทียบทางเลือกที่ [[icer-dominance-ce-plane-and-thresholds-th]]
PSA: คำนวณแบบจำลองซ้ำด้วยชุดพารามิเตอร์ที่สุ่มร่วมกัน
Probabilistic sensitivity analysis หรือ PSA ส่งผ่านความไม่แน่นอนของพารามิเตอร์ไปตลอดแบบจำลอง สุ่มชุดพารามิเตอร์ที่สอดคล้องกัน แล้วประเมินทุกทางเลือกด้วยชุดนั้น พารามิเตอร์ที่ใช้ร่วมกันต้องมีค่าร่วมกัน
การแจกแจงร่วมต้องรักษาความสัมพันธ์ระหว่างค่าประมาณที่มาจากข้อมูลร่วมกัน ทำซ้ำจนผลสรุปเพื่อการตัดสินใจคงที่เมื่อเพิ่มชุดการสุ่ม Monte Carlo error คือความแปรปรวนจากจำนวนการสุ่มที่จำกัด การเพิ่มจำนวนครั้งลดความคลาดเคลื่อนนี้ แต่ไม่ได้ทำให้หลักฐานอ่อนมีคุณภาพดีขึ้น
เลือกการแจกแจงให้ตรงกับชนิดและขอบเขตของข้อมูล
| ข้อมูลนำเข้า | การแจกแจงที่พิจารณา | สิ่งที่ต้องตรวจก่อนสุ่ม |
|---|---|---|
| ความน่าจะเป็น | Beta | อยู่ระหว่างศูนย์กับหนึ่ง ต้องประมาณจากหลักฐานที่มี |
| Utility | Beta เมื่อขอบเขตเหมาะสม | Utility ของสถานะสุขภาพที่ติดลบต้องใช้การแจกแจงอื่นหรือการแปลงค่า |
| ต้นทุนบวก | Gamma หรือ lognormal | ให้ตรงกับค่าเฉลี่ยและความไม่แน่นอน และคงโอกาสที่ต้นทุนเป็นศูนย์หากเกี่ยวข้อง |
| RR หรือ HR | Lognormal | อัตราส่วนต้องเป็นบวก และต้องใช้ร่วมกับค่าพื้นฐานที่เหมาะสม |
| ความน่าจะเป็นของสถานะที่แข่งขันกัน | Dirichlet | สุ่มทั้งแถวร่วมกันเพื่อให้ความน่าจะเป็นรวมเป็นหนึ่ง |
| ค่าประมาณที่สัมพันธ์กัน | Joint posterior หรือ bootstrap draws | รักษาความสัมพันธ์ รวมทั้งความสัมพันธ์ระหว่างต้นทุนและผลลัพธ์ |
อ่าน CE plane, CEAC และ CEAF ร่วมกัน
Cost-effectiveness plane หรือ CE plane วาง QALY ส่วนเพิ่มบนแกนนอนและต้นทุนส่วนเพิ่มบนแกนตั้ง แต่ละจุดแทนการประเมินแบบจำลองหนึ่งครั้ง ที่ค่าเกณฑ์หนึ่ง จุดใต้เส้นเกณฑ์มี INMB เป็นบวก
Cost-effectiveness acceptability curve หรือ CEAC แสดงสัดส่วนการสุ่มที่สนับสนุนทางเลือก ณ แต่ละค่าเกณฑ์ หากมีสองทางเลือก ค่านี้คือ $\Pr(INMB>0\mid\lambda)$ หากมีหลายทางเลือก ให้นับว่าแต่ละทางเลือกมีผลประโยชน์สุทธิทางการเงินสูงสุดบ่อยเท่าใด ต้องระบุวิธีจัดการกรณีเสมอกัน
Cost-effectiveness acceptability frontier หรือ CEAF ติดตามทางเลือกที่มีผลประโยชน์สุทธิทางการเงินคาดหมายสูงสุด ณ แต่ละค่าเกณฑ์ ความสูงของเส้นคือความน่าจะเป็นที่ทางเลือกซึ่งเลือกนั้นดีที่สุด ทางเลือกที่ชนะบ่อยที่สุดอาจไม่ใช่ทางเลือกที่ให้ผลประโยชน์สุทธิคาดหมายสูงสุด
เมื่อรายงานอัตราส่วนส่วนเพิ่ม ให้ใช้ $E[\Delta C]/E[\Delta E]$ หากตัวหารมีความหมาย ค่าเฉลี่ย ICER ของแต่ละการสุ่ม $E[\Delta C/\Delta E]$ ต่างออกไป และอาจไม่เสถียรเมื่อผลเข้าใกล้ศูนย์ จึงควรเปรียบเทียบ NMB คาดหมายระหว่างทุกทางเลือกที่เกี่ยวข้อง
สร้างเส้นโค้งจากชุดการประเมินเดียวกัน
ตัวอย่างเฉียบพลันที่แยกจากแบบจำลองประชากรนี้ใช้ชุดพารามิเตอร์สมมติที่กำหนดไว้และให้น้ำหนักเท่ากัน ใช้สาธิตการคำนวณ ไม่ใช่การแจกแจงความไม่แน่นอนที่ประมาณจากหลักฐาน ความเสี่ยงเหตุการณ์พื้นฐานคือ 0.20 การป้องกันเหตุการณ์รักษาไว้ได้ 2 QALY และประหยัด 50,000 บาท
แต่ละชุดจับคู่ risk ratio กับต้นทุนรักษาที่เพิ่มขึ้น QALY ที่เพิ่มขึ้นเท่ากับความเสี่ยงที่ลดลงคูณ QALY ที่เสียต่อเหตุการณ์ ต้นทุนส่วนเพิ่มเท่ากับต้นทุนรักษาที่เพิ่มขึ้นลบต้นทุนเหตุการณ์ที่หลีกเลี่ยงได้
ที่เกณฑ์สมมติ 160,000 บาทต่อ QALY มี 70.00% ของชุดประเมินที่สนับสนุนทางเลือกใหม่ กรณีเสมอไม่นับเป็นการชนะ INMB เฉลี่ยคือ 4,340 บาท ทางเลือกนี้จึงให้ผลประโยชน์สุทธิคาดหมายสูงกว่า
เส้นโค้งนับชุดประเมินเดิมซ้ำเมื่อเปลี่ยนค่าเกณฑ์ ความสูงบอกความไม่แน่นอน ไม่ได้บอกขนาดความสูญเสียจากการเลือกผิด เกณฑ์นี้เป็นสมมติฐาน ไม่ใช่ข้อเสนอแนะเชิงนโยบาย
คำนวณทั้งสองส่วนของรูปจากข้อมูลนำเข้าเดียวกัน
# Writes: stdout only; fixed illustrative joint evaluations, equally weighted.
risk_ratio <- c(.55,.65,.75,.85,.95,1.05,.60,.80,1,.70)
premium <- c(8000,12000,18000,6000,10000,4000,16000,14000,2000,22000)
qaly_gain <- .20*(1-risk_ratio)*2
extra_cost <- premium-.20*(1-risk_ratio)*50000
for (i in seq_along(risk_ratio)) {
cat("Extra QALYs:", formatC(qaly_gain[i], format="f", digits=3))
cat("; extra cost (THB):", extra_cost[i], "\n")
}
cat("Illustrative threshold (THB/QALY):", 160000, "\n")
cat("Favourable (%):", format(100*mean(160000*qaly_gain>extra_cost), nsmall=2), "\n")
cat("Mean INMB (THB):", mean(160000*qaly_gain-extra_cost), "\n")
During startup - Warning messages:
1: Setting LC_COLLATE=C.UTF-8 failed
2: Setting LC_CTYPE=C.UTF-8 failed
3: Setting LC_MONETARY=C.UTF-8 failed
4: Setting LC_TIME=C.UTF-8 failed
Extra QALYs: 0.180; extra cost (THB): 3500
Extra QALYs: 0.140; extra cost (THB): 8500
Extra QALYs: 0.100; extra cost (THB): 15500
Extra QALYs: 0.060; extra cost (THB): 4500
Extra QALYs: 0.020; extra cost (THB): 9500
Extra QALYs: -0.020; extra cost (THB): 4500
Extra QALYs: 0.160; extra cost (THB): 12000
Extra QALYs: 0.080; extra cost (THB): 12000
Extra QALYs: 0.000; extra cost (THB): 2000
Extra QALYs: 0.120; extra cost (THB): 19000
Illustrative threshold (THB/QALY): 160000
Favourable (%): 70.00
Mean INMB (THB): 4340
Seed ทำซ้ำการจำลองได้ ไม่ใช่สร้างหลักฐาน
Random seed ทำให้คำนวณ Monte Carlo ซ้ำได้ ตัวอย่างแยกด้านล่างสุ่ม hazard สมมติ hazard ratio ที่เป็นบวก และต้นทุนบวก การสมมติว่าอิสระกันใช้เพื่อสอนเท่านั้น ต้องแทนการแจกแจงร่วมด้วยสิ่งที่หลักฐานรองรับก่อนใช้ตัดสินใจ
ชุดประเมินคงที่ในรูปแยกจากตัวอย่างสุ่มนี้ ห้ามอ้างว่าร้อยละในรูปมาจากการรัน Monte Carlo นี้ ตรวจความคงที่เมื่อเพิ่มชุดการสุ่ม พร้อมขอบเขตความน่าจะเป็นและความสอดคล้องของพารามิเตอร์ร่วม
ทำซ้ำตัวอย่าง Monte Carlo ที่สร้างขึ้น
# Writes: stdout only; coordinator captures results.
set.seed(107)
draws <- 1000
hazard <- rgamma(draws, shape=25, rate=125)
hazard_ratio <- rlnorm(draws, meanlog=log(0.7), sdlog=0.15)
premium <- rgamma(draws, shape=16, scale=500)
avoided_events <- exp(-hazard * hazard_ratio) - exp(-hazard)
extra_qaly <- avoided_events * 2
extra_cost <- premium - avoided_events * 50000
inmb <- 160000 * extra_qaly - extra_cost
cat("Simulated mean INMB THB:", round(mean(inmb), 2), "\n")
cat("Simulated CEAC (%):", formatC(100*mean(inmb>0), digits=2, format="f"), "\n")
During startup - Warning messages:
1: Setting LC_COLLATE=C.UTF-8 failed
2: Setting LC_CTYPE=C.UTF-8 failed
3: Setting LC_MONETARY=C.UTF-8 failed
4: Setting LC_TIME=C.UTF-8 failed
Simulated mean INMB THB: 10059.04
Simulated CEAC (%): 90.20
PSA ไม่สามารถแก้แบบจำลองที่มีอคติ
PSA ตามปกติส่งผ่านความไม่แน่นอนของพารามิเตอร์ภายใต้โครงสร้างและการแจกแจงที่เลือก ไม่ได้ขจัด confounding, selection bias หรือโครงสร้างที่ผิดโดยอัตโนมัติ CEAC ที่ดูแน่นอนอาจมาจากแบบจำลองที่ผิดอย่างมั่นใจ
สามารถศึกษาพารามิเตอร์อคติและโครงสร้างทางเลือกอย่างชัดเจนได้เมื่อมีหลักฐานที่รองรับ สิ่งเหล่านี้ไม่ได้เข้าไปอยู่ใน PSA เพียงเพราะเพิ่มจำนวนการสุ่ม ต้องแสดงสมมติฐานไว้ในสถานการณ์ที่ทดสอบ อ่าน [[chance-bias-and-confounding-th]] ควบคู่กับผลความไม่แน่นอน
การวิเคราะห์เชิงความน่าจะเป็นเต็มรูปแบบให้การแจกแจงของผลลัพธ์ แทน ICER ค่าเดียว กรณีฐานแบบ deterministic คือชุดพารามิเตอร์ที่เลือก ไม่จำเป็นต้องเป็นชุดที่สุ่มได้หรือผลลัพธ์เฉลี่ย ควรตัดสินใจจากผลประโยชน์สุทธิคาดหมาย ไม่ใช่ค่าเฉลี่ยของ ICER ที่จำลองได้
ข้อผิดพลาดที่เปลี่ยนการตัดสินใจ
-
ถือว่าประวัติไม่สำคัญ
สถานะ Sick ที่กว้างเกินไปอาจซ่อนความเสี่ยงที่ขึ้นกับระยะเวลาป่วย
วิธีแก้: ใช้ tunnel states หรือแบบจำลองรายบุคคลเมื่อประวัติมีผลต่อผลลัพธ์
-
เลือกทางเลือกที่ชนะบ่อยที่สุด
CEAC นับการชนะโดยไม่วัดขนาดประโยชน์
วิธีแก้: เลือกจากผลประโยชน์สุทธิคาดหมายและรายงานความไม่แน่นอนควบคู่กัน
-
เพิ่มการสุ่มเพื่อแก้อคติ
การเพิ่มจำนวนครั้งลดได้เพียง Monte Carlo error
วิธีแก้: ประเมินคุณภาพหลักฐานและทดสอบสมมติฐานโครงสร้างทางเลือกอย่างชัดเจน
คำศัพท์ที่ควรเก็บไว้ข้างแบบจำลอง
- Transition matrix (เมทริกซ์การเปลี่ยนสถานะ)
- ตารางความน่าจะเป็นของสถานะถัดไปตามแต่ละสถานะปัจจุบัน
- Cohort trace (เส้นทางจำนวนประชากรตามสถานะ)
- ลำดับจำนวนคาดหมายในแต่ละสถานะตามรอบของแบบจำลอง
- Half-cycle correction (การปรับครึ่งรอบ)
- การประมาณโดยใช้จำนวนเฉลี่ยในสถานะ ณ ขอบเขตรอบที่ต่อเนื่องกัน เพื่อคำนวณ reward ที่ขึ้นกับเวลา
- Tunnel state (สถานะที่เก็บเวลาตั้งแต่เข้า)
- ชุดสถานะต่อเนื่องที่บันทึกเวลาตั้งแต่เข้าสู่ภาวะหนึ่ง
- INMB (ผลประโยชน์สุทธิทางการเงินส่วนเพิ่ม)
- มูลค่าทางการเงินของสุขภาพส่วนเพิ่มลบต้นทุนส่วนเพิ่ม ณ ค่าเกณฑ์ที่กำหนด
- CEAC (เส้นโค้งการยอมรับความคุ้มค่า)
- ความน่าจะเป็นที่ทางเลือกหนึ่งให้ผลประโยชน์สุทธิทางการเงินสูงสุดตลอดช่วงค่าเกณฑ์
- CEAF (เส้นแนวหน้าการยอมรับความคุ้มค่า)
- ความน่าจะเป็นที่จะดีที่สุดของทางเลือกที่เลือกจากผลประโยชน์สุทธิทางการเงินคาดหมายสูงสุด
- Monte Carlo error (ความคลาดเคลื่อนจากจำนวนการสุ่มที่จำกัด)
- ความแปรปรวนเชิงตัวเลขจากการประมาณค่าด้วยจำนวนการสุ่มที่จำกัด
เอกสารอ้างอิง
- Sonnenberg FA, Beck JR. Markov models in medical decision making: a practical guide. Med Decis Making. 1993;13(4):322-338. doi:10.1177/0272989X9301300409
- Siebert U, Alagoz O, Bayoumi AM, Jahn B, Owens DK, Cohen DJ, Kuntz KM. State-transition modeling: a report of the ISPOR-SMDM Modeling Good Research Practices Task Force-3. Med Decis Making. 2012;32(5):690-700. doi:10.1177/0272989X12455463
- Naimark DMJ, Bott M, Krahn M. The half-cycle correction explained: two alternative pedagogical approaches. Med Decis Making. 2008;28(5):706-712. doi:10.1177/0272989X08315241
- Briggs AH, Weinstein MC, Fenwick EAL, Karnon J, Sculpher MJ, Paltiel AD. Model parameter estimation and uncertainty: a report of the ISPOR-SMDM Modeling Good Research Practices Task Force-6. Value Health. 2012;15(6):835-842. doi:10.1016/j.jval.2012.04.014
- Fenwick E, Claxton K, Sculpher M. Representing uncertainty: the role of cost-effectiveness acceptability curves. Health Econ. 2001;10(8):779-787. doi:10.1002/hec.635
- Briggs A, Claxton K, Sculpher M. Decision Modelling for Health Economic Evaluation. Oxford: Oxford University Press; 2006. ISBN 9780198526629
ลำดับการเรียนในชุดนี้
- คู่มือชุดบทความเศรษฐศาสตร์สุขภาพ: อ่านหลักฐานก่อนอ่านต้นทุน [[health-economics-series-guide-th]]
- อุบัติการณ์ ความชุก และตัวหารที่ถูกต้อง: ระบาดวิทยาเบื้องหลังต้นทุนความเจ็บป่วยและแบบจำลองมาร์คอฟ [[incidence-prevalence-and-the-right-denominator-th]]
- รูปแบบการศึกษา แบบจำลองทางสถิติ และเป้าหมายการประมาณค่า: แต่ละรูปแบบการศึกษาประมาณค่าอะไรได้จริง [[study-design-estimand-and-effect-measures-th]]
- อัตราส่วนความเสี่ยง อัตราส่วนออดส์ ผลต่างความเสี่ยง และจำนวนที่ต้องรักษา: ตารางสองคูณสองเดียว คำตอบสี่แบบ [[risk-ratio-odds-ratio-risk-difference-nnt-th]]
- อัตราส่วนฮาซาร์ดไม่ใช่อัตราส่วนความเสี่ยง: ข้อสมมติความเป็นสัดส่วนของฮาซาร์ด เวลารอดชีพเฉลี่ยแบบจำกัดช่วง และข้อมูลนำเข้าแบบจำลอง [[hazard-ratio-proportional-hazards-rmst-th]]
- ความบังเอิญ อคติ และปัจจัยกวน: เหตุใดความสัมพันธ์ที่พบจึงยังไม่ใช่ผลของการรักษา [[chance-bias-and-confounding-th]]
- พ้นจากพีระมิดหลักฐาน: ระดับความเชื่อมั่นตามแนวทาง GRADE และการเลือกข้อมูลประสิทธิผลเข้าสู่แบบจำลองทางเศรษฐศาสตร์ [[evidence-pyramid-versus-grade-certainty-th]]
- จากความไวสู่ต้นทุนต่อผู้ป่วยหนึ่งรายที่ตรวจพบ: ค่าทำนายผลบวก ความชุก และเศรษฐศาสตร์ของการคัดกรอง [[diagnostic-accuracy-predictive-values-screening-th]]
- ต้นทุนของใคร ณ ปีใด: มุมมองการวิเคราะห์ ต้นทุนค่าเสียโอกาส การปรับค่าเงินเฟ้อ และการปรับลดค่าตามเวลา [[costing-perspective-inflation-discounting-th]]
- ปีสุขภาวะ ปีสุขภาวะที่สูญเสีย และค่าอรรถประโยชน์: เรากำลังวัดอะไรกันแน่ [[qaly-daly-and-utility-elicitation-th]]
- อัตราส่วนต้นทุนประสิทธิผลส่วนเพิ่มและระนาบต้นทุนประสิทธิผล: ทางเลือกที่ด้อยกว่า ผลประโยชน์สุทธิ และเกณฑ์ 160,000 บาทต่อปีสุขภาวะ [[icer-dominance-ce-plane-and-thresholds-th]]
- ต้นไม้การตัดสินใจ แบบจำลองมาร์คอฟ และการวิเคราะห์ความไวเชิงความน่าจะเป็น: แบบจำลองแปลงหลักฐานเป็นการตัดสินใจได้อย่างไร (บทความนี้) [[decision-trees-markov-models-and-psa-th]]
- คุ้มค่าไม่ได้แปลว่าจ่ายไหว มีประสิทธิภาพไม่ได้แปลว่าเป็นธรรม: ผลกระทบด้านงบประมาณและความเป็นธรรมทางสุขภาพ [[budget-impact-equity-and-limits-of-qaly-th]]
- การคัดเลือกพารามิเตอร์ บัญชีต้นทุนอ้างอิง และฐานข้อมูลค่าอรรถประโยชน์เมื่อข้อมูลในประเทศมีจำกัด
- การประเมินเทคโนโลยีสุขภาพระยะเริ่มต้น เพดานราคาที่คุ้มค่า และการตัดสินใจชุดสิทธิประโยชน์
- การสื่อสารหลักฐานเศรษฐศาสตร์สุขภาพ: จากผลลัพธ์แบบจำลองสู่ข้อเสนอแนะเชิงนโยบาย
ประเด็นสำคัญ
- เลือกโครงสร้างและข้อตกลงด้านเวลาของรอบให้ตรงกับเส้นทางคลินิกและช่วงเวลาตัดสินใจ
- ตรวจความน่าจะเป็นการเปลี่ยนสถานะ จำนวนประชากรรวม และ reward ก่อนเพิ่มความไม่แน่นอน
- รักษาความสัมพันธ์ระหว่างพารามิเตอร์เมื่อสุ่มข้อมูลนำเข้าสำหรับ PSA
- ใช้ผลประโยชน์สุทธิคาดหมายเพื่อเลือก และใช้ CEAC กับ CEAF อธิบายความไม่แน่นอนในการตัดสินใจ
- แบบจำลองเชิงความน่าจะเป็นให้การแจกแจงของผลลัพธ์ แต่ PSA ไม่แก้อคติหรือโครงสร้างที่ผิด
อ่านต่อในวิกิ: อุบัติการณ์ ความชุก และตัวหารที่ถูกต้อง: ระบาดวิทยาเบื้องหลังต้นทุนความเจ็บป่วยและแบบจำลองมาร์คอฟ · อัตราส่วนฮาซาร์ดไม่ใช่อัตราส่วนความเสี่ยง: ข้อสมมติความเป็นสัดส่วนของฮาซาร์ด เวลารอดชีพเฉลี่ยแบบจำกัดช่วง และข้อมูลนำเข้าแบบจำลอง · พ้นจากพีระมิดหลักฐาน: ระดับความเชื่อมั่นตามแนวทาง GRADE และการเลือกข้อมูลประสิทธิผลเข้าสู่แบบจำลองทางเศรษฐศาสตร์ · อัตราส่วนต้นทุนประสิทธิผลส่วนเพิ่มและระนาบต้นทุนประสิทธิผล: ทางเลือกที่ด้อยกว่า ผลประโยชน์สุทธิ และเกณฑ์ 160,000 บาทต่อปีสุขภาวะ · ความบังเอิญ อคติ และปัจจัยกวน: เหตุใดความสัมพันธ์ที่พบจึงยังไม่ใช่ผลของการรักษา · ต้นทุนของใคร ณ ปีใด: มุมมองการวิเคราะห์ ต้นทุนค่าเสียโอกาส การปรับค่าเงินเฟ้อ และการปรับลดค่าตามเวลา · ปีสุขภาวะ ปีสุขภาวะที่สูญเสีย และค่าอรรถประโยชน์: เรากำลังวัดอะไรกันแน่