flowchart LR EF["Sống, chưa biến cố<br/>(EF)"] -->|biến cố| PP["Sống sau biến cố<br/>(PP)"] EF -->|tử vong| D["Tử vong<br/>(D)"] PP -->|tử vong| D
M07 · Phân tích sống còn cho mô hình quyết định
Từ đường Kaplan–Meier tới mô hình sống còn phân vùng, với ví dụ lao/HIV
Theo ước tính của WHO, mỗi năm Việt Nam có khoảng 5,200 người mắc lao có HIV và khoảng 2,000 người lao có HIV tử vong (World Health Organization 2026c). Gói theo dõi sát 6 tháng trong module này tốn khoảng 2,300,000 VNĐ mỗi người theo giá dịch vụ BHYT, gần 10 ngày lương tối thiểu vùng I (Bộ Y tế 2024; Chính phủ 2025). BHYT hay Chương trình Chống lao Quốc gia có nên chi khoản này không phụ thuộc vào số năm sống trọn đời, trong khi một thử nghiệm thường chỉ theo dõi vài năm (ở đây tối đa 3 năm): phần còn lại là ngoại suy, chủ đề của module.
Tổng quan
Phần lớn mô hình kinh tế y tế cho bệnh nặng lấy hiệu quả từ dữ liệu sống còn: đường Kaplan–Meier của một thử nghiệm, một tỷ số nguy cơ tức thời (HR), hay một bảng sống. Thử nghiệm chỉ theo dõi vài năm, trong khi mô hình cần dự báo trọn đời. Phần nằm ngoài thời gian theo dõi thường chiếm phần lớn số năm sống, nên cách ngoại suy (extrapolation) có thể quyết định kết luận chi phí-hiệu quả.
Module này đi từ dữ liệu cấp cá thể (IPD) tới mô hình. Bạn sẽ ôn lại các khái niệm sống còn, khớp mô hình tham số bằng flexsurv, ngoại suy có tử vong nền, dùng spline và mô hình khỏi bệnh, tái tạo dữ liệu từ đường cong đã công bố, rồi dựng mô hình sống còn phân vùng (PSM) và so sánh với mô hình chuyển trạng thái. Dữ liệu là dữ liệu mô phỏng, nên ta biết giá trị thật và đo được mỗi phương pháp sai bao nhiêu, kể cả việc tách sai số mẫu khỏi sai số của phương pháp bằng cách lặp lại nhiều thử nghiệm.
Mục tiêu học tập
Sau module này, bạn có thể:
- Ước lượng và đọc đường Kaplan–Meier, nguy cơ tức thời (hazard) và thời gian sống trung bình giới hạn (RMST) bằng R.
- Khớp và so sánh sáu phân phối sống còn tham số, chọn mô hình bằng tiêu chí thống kê, đồ thị và tính hợp lý lâm sàng.
- Ngoại suy sống còn có tử vong nền, bằng spline Royston–Parmar và mô hình khỏi bệnh.
- Tái tạo IPD từ đường Kaplan–Meier đã công bố và dùng HR đã công bố đúng cách.
- Dựng mô hình sống còn phân vùng ba trạng thái, tính chi phí và QALY, và nêu giới hạn cấu trúc của nó so với mô hình chuyển trạng thái.
Kiến thức cần có
- M00: R cơ bản, data frame,
ggplot2. - M01: ICER, NMB, chiết khấu.
- M02 Bài 1–3: trạng thái, chu kỳ, đổi tỷ suất sang xác suất, vết đoàn hệ (Markov trace), hiệu chỉnh trong chu kỳ.
- Thống kê cơ bản: phân phối xác suất, hàm hợp lý (likelihood) ở mức khái niệm.
Ví dụ xuyên suốt
Người trưởng thành mắc lao có nhiễm HIV có nguy cơ tử vong cao. Trong đoàn hệ điều trị năm 2023 của Việt Nam, 177 trong số 2,310 người bệnh lao có HIV (7.7%) tử vong khi đang điều trị lao (World Health Organization 2026b). Con số này thấp hơn nhiều so với tỷ lệ 38% suy từ ước tính của WHO (2,000 tử vong trên 5,200 ca mắc). Hai nguồn đo hai thứ khác nhau: đoàn hệ chỉ gồm người đã được chẩn đoán và điều trị, tính trong thời gian điều trị lao, còn ước tính của WHO gồm cả người chưa được chẩn đoán và mọi ca tử vong trong năm. Ở An Giang giai đoạn 2001–2004, tỷ lệ tử vong khi điều trị lao là 26% (Thuy và c.s. 2007). Ở nhóm nặng nhất (CD4 ≤200), thử nghiệm CAMELIA tại Campuchia ghi nhận 27% người ở nhánh khởi động điều trị ARV (ART) muộn tử vong sau khoảng hai năm theo dõi, và khởi động ART sớm giảm nguy cơ tử vong với HR 0.62 (KTC 95%: 0.44–0.86) (Blanc và c.s. 2011).
Ta dùng một thử nghiệm mô phỏng dựng theo hình mẫu CAMELIA: 300 người mỗi nhánh, tuổi trung bình 35, theo dõi tối đa 36 tháng. Dữ liệu do máy sinh ra, nhưng tỷ lệ tử vong của hai nhánh được neo vào hai nhánh của CAMELIA (Bài 1 kiểm tra), tử vong nền lấy từ bảng sống WHO 2023 của Việt Nam (World Health Organization 2026a), và chi phí tính từ bảng giá dịch vụ BHYT. Hai chiến lược là chăm sóc chuẩn (điều trị lao theo Chương trình Chống lao Quốc gia, điều trị ARV tại phòng khám ngoại trú) và chăm sóc tăng cường (khám hằng tuần, thêm xét nghiệm CD4 và tải lượng HIV trong 6 tháng đầu; một gói giả định, có cỡ hiệu quả đặt bằng cỡ hiệu quả của ART sớm trong CAMELIA: một giả định chuyển giao). Mỗi người có thể gặp một biến cố (thất bại hoặc tái phát lao, hay bệnh chỉ điểm AIDS mới) rồi tử vong, hoặc tử vong khi chưa có biến cố. Từ đó có hai kết cục: sống còn không biến cố (event-free survival, EFS) và sống còn toàn bộ (overall survival, OS).
Mô hình chuyển trạng thái (STM) ước lượng từng mũi tên. Mô hình sống còn phân vùng (PSM) không dùng mũi tên: tỷ lệ ở EF lấy thẳng từ đường EFS, tỷ lệ còn sống từ đường OS, phần chênh lệch là PP (Bài 5).
Bản đồ bài học
| Bài | Tiêu đề | Nội dung chính | Mã | Video |
|---|---|---|---|---|
| 1 | Ôn tập sống còn cho người làm mô hình | KM tự viết, kiểm duyệt, nguy cơ tức thời, RMST, mô hình cần gì | code/l01-survival-basics.R |
~12 phút |
| 2 | Mô hình tham số với flexsurv | Sáu phân phối, AIC/BIC, đồ thị nguy cơ, ngoại suy khác nhau | code/l02-parametric-models.R |
~14 phút |
| 3 | Ngoại suy | Bảng sống Việt Nam và SMR, spline Royston–Parmar, mô hình khỏi bệnh, so với đường cong thật, sai số mẫu | code/l03-extrapolation.R |
~15 phút |
| 4 | Tái tạo IPD và dùng HR | Nguyên lý thuật toán Guyot, kiểm tra tái tạo, áp HR đúng thứ tự, HR giảm dần, sai số chuẩn từ KTC | code/l04-reconstruct-ipd.R |
~13 phút |
| 5 | Mô hình sống còn phân vùng | PSM ba trạng thái, chi phí-hiệu quả theo giá BHYT, so sánh với STM, khớp riêng hay chung, giới hạn cấu trúc | code/l05-partitioned-survival.R |
~15 phút |
Mọi hàm nằm trong code/model.R. Mỗi tệp bài học chạy độc lập từ thư mục module: Rscript code/l01-survival-basics.R.
Bảng tham số
Ba tệp tham số tách “thế giới thật” của mô phỏng, đầu vào của mô hình quyết định và thiết lập của bài học. Trong thực tế bạn không bao giờ thấy tệp thứ nhất; ở đây nó cho phép đo sai số của từng phương pháp. Với các dòng có phân phối (beta, log-chuẩn), dist_p1 và dist_p2 là tham số tính bằng phương pháp moment, coi khoảng thấp-cao là KTC 95%: (α, β) cho beta, (meanlog, sdlog) cho log-chuẩn; M03 dùng chúng cho PSA. Cột ghi chú đầy đủ (cách suy ra từng giá trị, dấu “≈” cho số liệu công bố gần đúng) nằm trong các tệp CSV.
Thử nghiệm mô phỏng (params/sim_truth.csv). Thiết kế thử nghiệm và cơ chế ẩn là giá trị minh họa; tuổi, mất dấu theo dõi và SMR lấy từ số liệu công bố:
| Tên | Mô tả | Giá trị | Đơn vị | Nguồn |
|---|---|---|---|---|
n_per_arm |
Số người mỗi nhánh trong thử nghiệm mô phỏng | 300 | người | giá trị minh họa |
accrual_months |
Thời gian tuyển người bệnh | 12 | tháng | giá trị minh họa |
study_months |
Thời điểm đóng cơ sở dữ liệu, tính từ khi bắt đầu tuyển | 36 | tháng | giá trị minh họa |
ltfu_rate |
Tỷ suất mất dấu ngẫu nhiên (tạo kiểm duyệt) | 0.0018 | mỗi tháng | Blanc và c.s. (2011) |
age_mean |
Tuổi trung bình khi vào nghiên cứu | 35 | năm | Blanc và c.s. (2011) |
age_sd |
Độ lệch chuẩn của tuổi khi vào nghiên cứu | 7 | năm | Tran, Ohinmaa, và Nguyen (2012) |
age_min |
Tuổi nhỏ nhất được tuyển | 18 | năm | giá trị minh họa |
age_max |
Tuổi lớn nhất được tuyển | 75 | năm | giá trị minh họa |
frac_highrisk |
Tỷ lệ người bệnh thuộc nhóm nguy cơ tử vong sớm cao (chăm sóc chuẩn) | 0.28 | tỷ lệ | giá trị minh họa |
p_death12_hr |
Xác suất tử vong do lao/HIV trong 12 tháng ở nhóm nguy cơ cao (nếu không có rủi ro cạnh tranh) | 0.75 | xác suất | giá trị minh họa |
shape_death |
Tham số hình dạng Weibull của tử vong do lao/HIV (nhóm nguy cơ cao) | 0.6 | không đơn vị | giá trị minh họa |
p_prog12 |
Xác suất gặp biến cố (thất bại/tái phát lao hoặc bệnh chỉ điểm AIDS mới) trong 12 tháng, chăm sóc chuẩn | 0.06 | xác suất | giá trị minh họa |
shape_prog |
Tham số hình dạng Weibull của thời gian tới biến cố | 0.4 | không đơn vị | giá trị minh họa |
rate_post |
Tỷ suất tử vong do bệnh sau biến cố | 0.03 | mỗi tháng | giá trị minh họa |
rr_highrisk_enh |
Tỷ số tỷ lệ người thuộc nhóm nguy cơ cao, chăm sóc tăng cường so với chuẩn | 0.6 | tỷ số | giá trị minh họa |
hr_prog_enh |
HR của biến cố, chăm sóc tăng cường so với chuẩn | 0.8 | tỷ số | giá trị minh họa |
smr_true |
Tỷ số tử vong chuẩn hóa (SMR) thật của tử vong nền so với dân số chung | 2.2 | tỷ số | Bijker và c.s. (2020) |
n_truth |
Số người mỗi nhánh dùng để tính đường cong thật (không kiểm duyệt) | 100,000 | người | giá trị minh họa |
Đầu vào mô hình quyết định (params/model_inputs.csv). Các dòng “giá trị minh họa” phần lớn là lượng chăm sóc (số lượt khám, số ngày nằm viện) của một gói giả định:
| Tên | Mô tả | Giá trị | Đơn vị | Nguồn |
|---|---|---|---|---|
age_cohort |
Tuổi khởi đầu của đoàn hệ trong mô hình quyết định | 35 | năm | Blanc và c.s. (2011) |
horizon_years |
Khung thời gian (gần trọn đời) | 60 | năm | giá trị minh họa |
smr_bg |
SMR của tử vong nền dài hạn ở người điều trị ARV, so với dân số chung | 2.2 | tỷ số | Bijker và c.s. (2020) |
mort_lt_art |
Tỷ suất tử vong ở người đã điều trị ARV trên 5 năm, đoàn hệ châu Á | 0.0056 | mỗi năm | Bijker và c.s. (2020) |
smr_ref_years |
Số năm sau khi bắt đầu điều trị dùng làm tuổi tham chiếu khi tính SMR | 5 | năm | Bijker và c.s. (2020) |
tb_months |
Thời gian điều trị lao chuẩn | 6 | tháng | Blanc và c.s. (2011) |
tb_ds_course_usd |
Giá thuốc phác đồ lao nhạy cảm 6 tháng (6HRZE) cho một người lớn | 48 | USD/đợt điều trị | McConnell (2025) |
tb_visits_month |
Số lượt khám, lĩnh thuốc mỗi tháng khi điều trị lao | 1 | lượt/tháng | giá trị minh họa |
tb_smears_course |
Số lần soi đờm theo dõi trong một đợt điều trị lao | 3 | lần/đợt | giá trị minh họa |
tb_lft_course |
Số lần xét nghiệm chức năng gan - thận trong một đợt điều trị lao | 2 | lần/đợt | giá trị minh họa |
tb_xray_course |
Số lần chụp X-quang ngực trong một đợt điều trị lao | 1 | lần/đợt | giá trị minh họa |
ef_visits_year |
Số lượt khám, lĩnh thuốc ARV mỗi năm khi ổn định | 4 | lượt/năm | Cục Phòng, chống HIV/AIDS (Bộ Y tế) (2022) |
vl_tests_year |
Số xét nghiệm tải lượng HIV mỗi năm khi ổn định | 1 | lần/năm | giá trị minh họa |
enh_months |
Thời gian áp dụng gói chăm sóc tăng cường | 6 | tháng | giá trị minh họa |
enh_visits_month |
Số lượt khám thêm mỗi tháng trong gói chăm sóc tăng cường | 3 | lượt/tháng | giá trị minh họa |
pp_bed_days_month |
Số ngày nằm viện trung bình mỗi tháng sau biến cố | 3 | ngày/tháng | giá trị minh họa |
death_ward_days |
Số ngày nằm khoa Truyền nhiễm trước khi tử vong | 7 | ngày | giá trị minh họa |
death_icu_days |
Số ngày nằm hồi sức tích cực trước khi tử vong | 2 | ngày | giá trị minh họa |
u_ef |
Thỏa dụng khi sống chưa có biến cố | 0.65 | thỏa dụng | Tran, Ohinmaa, và Nguyen (2012) |
dec_pp |
Mức giảm thỏa dụng sau biến cố | 0.07 | thỏa dụng | Tran, Ohinmaa, và Nguyen (2012) |
hr_camelia |
HR tử vong, khởi động ART sớm (2 tuần) so với muộn (8 tuần), CAMELIA | 0.62 | tỷ số | Blanc và c.s. (2011) |
p_camelia |
Giá trị p của so sánh sống còn, CAMELIA | 0.006 | xác suất | Blanc và c.s. (2011) |
deaths_camelia_late |
Số tử vong ở nhánh ART muộn, CAMELIA | 90 | người | Blanc và c.s. (2011) |
n_camelia_late |
Số người ở nhánh ART muộn, CAMELIA | 329 | người | Blanc và c.s. (2011) |
deaths_camelia_early |
Số tử vong ở nhánh ART sớm, CAMELIA | 59 | người | Blanc và c.s. (2011) |
n_camelia_early |
Số người ở nhánh ART sớm, CAMELIA | 332 | người | Blanc và c.s. (2011) |
fu_camelia_months |
Thời gian theo dõi trung vị của CAMELIA | 25 | tháng | Blanc và c.s. (2011) |
deaths_angiang |
Số người tử vong trong khi điều trị lao, người bệnh lao/HIV An Giang 2001-2004 | 167 | người | Thuy và c.s. (2007) |
n_angiang |
Số người bệnh lao có HIV, An Giang 2001-2004 | 637 | người | Thuy và c.s. (2007) |
vn_tbhiv_cohort_2023 |
Số người bệnh lao có HIV được đánh giá kết quả điều trị, Việt Nam, đoàn hệ 2023 | 2,310 | người | World Health Organization (2026b) |
vn_tbhiv_died_2023 |
Số người bệnh lao có HIV tử vong trong khi điều trị, Việt Nam, đoàn hệ 2023 | 177 | người | World Health Organization (2026b) |
vn_tbhiv_lost_2023 |
Số người bệnh lao có HIV bỏ điều trị, Việt Nam, đoàn hệ 2023 | 117 | người | World Health Organization (2026b) |
vn_tbhiv_inc_2024 |
Số người mắc lao có HIV ước tính, Việt Nam, 2024 | 5,200 | người/năm | World Health Organization (2026c) |
vn_tbhiv_deaths_2024 |
Số người lao có HIV tử vong ước tính, Việt Nam, 2024 | 2,000 | người/năm | World Health Organization (2026c) |
le35_lmic |
Số năm sống thêm kỳ vọng khi bắt đầu ART ở tuổi 35, các nước thu nhập thấp-trung bình | 25.6 | năm | Teeraananchai và c.s. (2017) |
u_ef_cd4low |
Thỏa dụng khi sống chưa biến cố, nhóm CD4 ≤200 (kịch bản) | 0.58 | thỏa dụng | Tran, Ohinmaa, và Nguyen (2012) |
hr_wane_start |
Kịch bản HR giảm dần: HR giữ nguyên tới năm | 3 | năm | giá trị minh họa |
hr_wane_end |
Kịch bản HR giảm dần: HR về 1 vào năm | 10 | năm | giá trị minh họa |
Giá trị dùng chung của khóa học (kb/_shared, không chép vào module). Tỷ lệ chiết khấu, ngưỡng chi phí-hiệu quả và tỷ giá lấy từ vn_context(); đơn giá từ vn_prices():
| Tên | Mô tả | Giá trị | Đơn vị | Nguồn |
|---|---|---|---|---|
fx_vnd_per_usd |
Tỷ giá chính thức bình quân năm 2025 | 24,970 | VNĐ/USD | Cục Thống kê (Bộ Tài chính) (2026) |
wtp |
Ngưỡng chi phí-hiệu quả cơ sở = 1 × GDP bình quân đầu người | 125,500,000 | VNĐ/QALY hoặc VNĐ/DALY tránh được | Ong và c.s. (2026) |
disc_rate |
Tỷ lệ chiết khấu hằng năm cho chi phí và hiệu quả | 0.03 | mỗi năm | Ong và c.s. (2026) |
visit_outpatient |
Giá khám bệnh BHYT tại bệnh viện hạng đặc biệt (một lượt khám) | 50,600 | VNĐ/lượt khám | Bộ Y tế (2024) |
bed_day_ward_infectious |
Giá ngày giường khoa Truyền nhiễm (nội khoa loại 1) tại bệnh viện hạng đặc biệt | 327,100 | VNĐ/ngày giường | Bộ Y tế (2024) |
bed_day_icu |
Giá ngày điều trị hồi sức tích cực (ICU) tại bệnh viện hạng đặc biệt | 1,017,300 | VNĐ/ngày giường | Bộ Y tế (2024) |
test_afb_smear |
Giá xét nghiệm soi đờm tìm AFB (nhuộm Ziehl-Neelsen) | 74,200 | VNĐ/xét nghiệm | Bộ Y tế (2024) |
test_liver_renal_panel |
Giá bộ chức năng gan - thận (AST, ALT, creatinin, urê) | 89,600 | VNĐ/bộ xét nghiệm | Bộ Y tế (2024) |
test_chest_xray |
Giá chụp X-quang ngực thẳng (một tư thế) | 73,300 | VNĐ/lần chụp | Bộ Y tế (2024) |
test_hiv_viral_load |
Giá xét nghiệm tải lượng HIV (hệ thống tự động) | 979,700 | VNĐ/xét nghiệm | Bộ Y tế (2024) |
test_cd4 |
Giá đếm số lượng CD3-CD4-CD8 (CD4) | 421,200 | VNĐ/xét nghiệm | Bộ Y tế (2024) |
art_tld_year |
Giá thuốc ARV TLD (tenofovir/lamivudin/dolutegravir) cho một người bệnh trong một năm | 819,016 | VNĐ/người bệnh-năm | The Global Fund (2026) |
Chi phí đơn vị của mô hình (VNĐ, năm giá 2025), do build_inputs() tính từ đơn giá dùng chung nhân với lượng chăm sóc trong model_inputs.csv; giá thuốc lao (US$48 mỗi đợt (McConnell 2025)) đổi sang VNĐ bằng tỷ giá 24,970 VNĐ/USD:
| Hạng mục | Mô tả | VNĐ |
|---|---|---|
c_ef_month |
Chăm sóc HIV mỗi tháng, chưa biến cố | 166,760 |
c_tb_month |
Điều trị lao mỗi tháng (6 tháng đầu) | 329,543 |
c_enh_month |
Gói tăng cường mỗi tháng | 385,283 |
c_pp_month |
Chăm sóc mỗi tháng sau biến cố | 1,148,060 |
c_death |
Chăm sóc cuối đời (một lần) | 4,324,300 |
Thiết lập của bài học (params/lesson_settings.csv, giá trị minh họa; không phải tham số của mô hình quyết định):
| Tên | Mô tả | Giá trị | Đơn vị | Nguồn |
|---|---|---|---|---|
digit_sd_time |
Sai số đọc trục thời gian khi số hóa hình KM | 0.15 | tháng | giá trị minh họa |
digit_sd_surv |
Sai số đọc trục sống còn khi số hóa cẩn thận | 0.004 | tỷ lệ | giá trị minh họa |
digit_sd_surv_sloppy |
Sai số đọc trục sống còn khi số hóa cẩu thả | 0.02 | tỷ lệ | giá trị minh họa |
digit_offset |
Sai lệch hệ thống khi đọc trục sống còn (đọc thấp hơn thật) | 0.01 | tỷ lệ | giá trị minh họa |
risk_table_step |
Khoảng cách giữa các mốc của bảng số người còn nguy cơ | 3 | tháng | giá trị minh họa |
haz_band_months |
Độ rộng khoảng thời gian khi tính nguy cơ tức thời thô | 3 | tháng | giá trị minh họa |
rmst_tau |
Mốc τ của thời gian sống trung bình giới hạn (RMST) từ KM | 30 | tháng | giá trị minh họa |
extrap_years |
Độ dài đồ thị ngoại suy | 40 | năm | giá trị minh họa |
early_stop_months |
Thời điểm dừng thử nghiệm trong bài tập ngoại suy từ dữ liệu ngắn | 12 | tháng | giá trị minh họa |
n_rep |
Số thử nghiệm mô phỏng lặp lại để đo sai số mẫu | 100 | thử nghiệm | giá trị minh họa |
p_toy_low |
Xác suất nền ví dụ 1 để minh họa cách áp HR | 0.02 | xác suất | giá trị minh họa |
p_toy_mid |
Xác suất nền ví dụ 2 để minh họa cách áp HR | 0.1 | xác suất | giá trị minh họa |
p_toy_high |
Xác suất nền ví dụ 3 để minh họa cách áp HR | 0.4 | xác suất | giá trị minh họa |
Đơn giá dịch vụ là giá áp dụng tại một bệnh viện hạng đặc biệt (Bạch Mai), có thể cao hơn giá ở bệnh viện tuyến tỉnh; giá thuốc lao lấy từ bảng tóm tắt phác đồ của Treatment Action Group (bảng không nêu nguồn giá) và giá thuốc ARV từ bảng giá tham chiếu của Global Fund, vì ta chưa tìm được giá VNĐ công khai cho đúng các phác đồ này. Quan điểm phân tích là quan điểm hệ thống y tế (phần BHYT và các chương trình y tế chi trả), không gồm tiền người bệnh tự trả hay ngày công mất đi.
Gói R sử dụng
| Gói | Dùng để | Phiên bản khi viết |
|---|---|---|
survival |
Surv(), survfit(), coxph(), cox.zph() |
3.8.6 |
flexsurv |
mô hình tham số và spline Royston–Parmar (Jackson 2016) | 2.3.2 |
ggplot2 |
hình | 4.0.2 |
Mô hình khỏi bệnh, thuật toán tái tạo IPD, PSM và STM được viết bằng R cơ bản trong code/model.R để bạn đọc được từng bước.