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

Vì sao bạn nên quan tâm?

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ể:

  1. Ướ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.
  2. 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.
  3. 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.
  4. Tái tạo IPD từ đường Kaplan–Meier đã công bố và dùng HR đã công bố đúng cách.
  5. 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).

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

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.

Tài liệu tham khảo