M02 · Mô hình chuyển trạng thái đoàn hệ (Markov)

Xây từ đầu, trong base R, một mô hình Markov so sánh ba phác đồ điều trị lao kháng thuốc tại Việt Nam

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

WHO ước tính mỗi năm Việt Nam có khoảng 9,400 người mắc mới lao kháng rifampicin (World Health Organization 2026b), còn năm 2021–2022 cả nước điều trị khoảng 2,407 người mỗi năm, và cứ 100 người thì 25 người thất bại, tử vong hoặc bỏ điều trị (lost to follow-up) (T. M. P. Nguyen và c.s. 2026). Chỉ riêng tiền thuốc của một đợt phác đồ dài hạn đã bằng 2.3 tháng lương tối thiểu vùng I (Chính phủ 2025). Module này xây mô hình giúp một Chương trình Chống lao trả lời câu hỏi đang đặt ra: chuyển từ phác đồ ngắn 9 tháng sang BPaLM 6 tháng có đáng không?

Tổng quan

Module này dạy mô hình chuyển trạng thái đoàn hệ (cohort state-transition model), còn gọi là mô hình Markov đoàn hệ: một trong những công cụ dùng phổ biến nhất trong đánh giá kinh tế y tế (Siebert và c.s. 2012). Ta xây một mô hình hoàn chỉnh so sánh ba phác đồ cho người bệnh lao đa kháng/kháng rifampicin (MDR/RR-TB) tại Việt Nam: phác đồ dài hạn (18 tháng), phác đồ ngắn toàn thuốc uống có bedaquiline (9 tháng) và BPaLM (6 tháng); người thất bại hoặc bỏ điều trị có thể được điều trị lại. Mọi bước đều viết bằng base R, từng dòng kiểm tra được: từ chuyển số liệu công bố thành xác suất, chạy vết đoàn hệ (Markov trace), chiết khấu và hiệu chỉnh trong chu kỳ, đến trạng thái đường hầm (tunnel state), giá trị gắn với lần chuyển, đường biên hiệu quả, phân tích kịch bản và xác minh mô hình. M03 dùng lại mô hình này để phân tích bất định; M10 và M11 xây tiếp trên ví dụ này.

Mục tiêu học tập

Sau module này, bạn có thể:

  1. Xây từ đầu một mô hình Markov đoàn hệ trong base R cho một bài toán điều trị bệnh truyền nhiễm, kể cả vòng điều trị lại.
  2. Chuyển số liệu công bố (tỷ lệ kết cục, tỷ số chênh, nguy cơ tương đối, tỷ suất, SMR, bảng sống) thành xác suất chuyển hằng tháng.
  3. Mô hình hóa phụ thuộc thời gian bằng ma trận theo chu kỳ và trạng thái đường hầm.
  4. Tính chi phí, năm sống điều chỉnh theo chất lượng (QALY), năm sống, năm sống điều chỉnh theo bệnh tật (DALY) tránh được, ICER và NMB, có chiết khấu và hiệu chỉnh trong chu kỳ; xếp ba phương án lên đường biên hiệu quả.
  5. Xác minh mô hình bằng một bộ kiểm tra hộp đen chạy lại được, và dùng phân tích kịch bản để thấy giả định nào chi phối kết quả.

Kiến thức cần có

  • M00: R cơ bản, đặc biệt là ma trận và phép nhân ma trận, hàm, vòng lặp, ggplot2.
  • M01: các loại đánh giá kinh tế, QALY và DALY, chiết khấu, ICER, lấn át tuyệt đối, NMB.

Ví dụ xuyên suốt

Một đoàn hệ giả định người bệnh MDR/RR-TB bắt đầu điều trị ở tuổi 45 (làm tròn từ trung vị tuổi trong một nghiên cứu đa tỉnh tại Việt Nam (T. L. H. Nguyen và c.s. 2026)) được theo dõi đến tuổi 100, với chu kỳ một tháng, theo quan điểm hệ thống y tế. Chi phí tính bằng VNĐ giá năm 2025: giá thuốc từ bảng giá quốc tế (ITPC-EECA 2025; McConnell 2025), giá khám và xét nghiệm theo bảng giá dịch vụ BHYT (Bộ Y tế 2024). Kết quả sức khỏe là QALY, năm sống và DALY; ngưỡng chi phí-hiệu quả là 1 × GDP bình quân đầu người, 125,500,000 VNĐ/QALY, chiết khấu 3%/năm, chung cho cả khóa học.

Kết cục của phác đồ ngắn và phác đồ dài hạn lấy từ số liệu điều trị toàn quốc 2021–2022 (T. M. P. Nguyen và c.s. 2026); hiệu quả của BPaLM lấy bằng cách áp nguy cơ tương đối của kết cục bất lợi trong kết quả cuối của thử nghiệm TB-PRACTECAL (Nyang’wa và c.s. 2024) lên số liệu Việt Nam. Diễn tiến sau điều trị dựa trên một đoàn hệ dài hạn tại Việt Nam (MacLean và c.s. 2026), dữ liệu về lao không được điều trị (Tiemersma và c.s. 2011) và dữ liệu toàn quốc của Georgia về người bỏ điều trị (Adamashvili và c.s. 2022); tử vong nền theo bảng sống Việt Nam của WHO (World Health Organization 2026a); thỏa dụng đo bằng EQ-5D-5L ở người bệnh lao Việt Nam (Vo và c.s. 2025).

flowchart LR
  subgraph TX["Điều trị lần đầu: Tx1 → Tx2 → … → TxD"]
    T1["Tx1"] --> T2["Tx2"] --> TD["TxD"]
  end
  TD --> C["Khỏi bệnh"]
  TX --> F["Thất bại/tái phát"]
  TX --> L["Bỏ điều trị"]
  TX --> D["Tử vong"]
  F --> R["Điều trị lại"]
  L --> R
  R --> C
  R --> F
  R --> L
  R --> D
  C -.->|kịch bản| F
  F --> C
  L --> C
  C --> D
  F --> D
  L --> D

D = 18 tháng với phác đồ dài hạn, 9 tháng với phác đồ ngắn và 6 tháng với BPaLM. Bài 1–3 dùng một phiên bản đơn giản với một trạng thái “Đang điều trị”; Bài 4 thay nó bằng chuỗi trạng thái đường hầm như trên. “Điều trị lại” là một đợt phác đồ dài hạn, mô hình hóa bằng một trạng thái duy nhất.

Giới hạn cần nhớ. Tóm tắt bài báo chỉ cho tỷ lệ thành công của phác đồ ngắn và tỷ số chênh của phác đồ dài hạn, nên cơ cấu thất bại, tử vong, bỏ điều trị của từng phác đồ là giả định. Chưa có số liệu BPaLM của Việt Nam; kết cục trong thử nghiệm (tuần 72, gộp nhiều cấu phần) và trong chương trình (cuối điều trị) được định nghĩa khác nhau. Tử vong và quay lại điều trị sau bỏ điều trị lấy từ Georgia giai đoạn 2011–2014; thời gian chờ điều trị lại sau thất bại là giá trị minh họa. Giá thuốc là giá mua quốc tế, chưa gồm phân phối trong nước và nhân lực DOT. Bài 5 cho thấy kết quả nhạy nhất với cách áp RR cho tử vong trong điều trị và với tử vong sau bỏ điều trị. Kết quả của module phản ánh gần đúng bối cảnh Việt Nam hiện nay để học phương pháp; dùng cho quyết định chính sách thì cần dữ liệu chương trình theo từng phác đồ và phân tích bất định (M03).

Bản đồ bài học

Bài Chủ đề Bạn sẽ làm được Code
1 Vì sao cần mô hình chuyển trạng thái định nghĩa trạng thái, kể cả điều trị lại; viết ma trận chuyển; hiểu giả định Markov code/l01-state-transition.R
2 Tỷ suất, xác suất và độ dài chu kỳ chuyển tỷ lệ, OR, RR, tỷ suất thành xác suất tháng; nguy cơ cạnh tranh; bảng sống, SMR code/l02-rates-probabilities.R
3 Vết đoàn hệ, giá trị gắn với trạng thái và chiết khấu chạy vết, tính chi phí, QALY; chiết khấu; hiệu chỉnh trong chu kỳ và khi nào không hiệu chỉnh code/l03-cohort-trace.R
4 Phụ thuộc thời gian lão hóa; trạng thái đường hầm; trạng thái điều trị lại không nhớ; mảng 3 chiều code/l04-time-dependence.R
5 Lần chuyển, đường biên hiệu quả và xác minh giá trị gắn với sự kiện; ICER, NMB, đường biên; DALY; kịch bản; bộ kiểm tra xác minh code/l05-results-verification.R

Mọi hàm mô hình nằm trong code/model.R (chỉ định nghĩa hàm). Mỗi script bài học chạy độc lập từ thư mục module, ví dụ Rscript code/l05-results-verification.R; script nạp ../_shared/R/helpers.R, ../_shared/R/vn_data.R rồi code/model.R, và đọc tham số bằng m02_params().

Tham số

Tham số riêng của module nằm trong params/mdrtb.csv. Tham số không có nguồn là giá trị minh họa và được đánh dấu illustrative = TRUE; cột khoảng thấp–cao dùng cho phân tích độ nhạy ở M03. Khi khoảng thấp–cao có nguồn khác giá trị chính, hoặc là giá trị minh họa, cột Nguồn ghi rõ. Bảng có 55 tham số, trong đó 9 là giá trị minh họa hoặc lựa chọn mô hình hóa: horizon_age, bpalm_death_rule, retx_rate_failed, retx_outcome_rule, relapse_years, d_ae, dur_ae, c_ltfu, c_cured.

Tên Tham số Giá trị Thấp – cao Đơn vị Nguồn
age_start Tuổi khi bắt đầu điều trị 45 30 – 55 năm (T. L. H. Nguyen và c.s. 2026); khoảng: giá trị minh họa
horizon_age Tuổi kết thúc mô phỏng (khung thời gian trọn đời) 100 năm giá trị minh họa
dur_long Thời gian điều trị phác đồ dài hạn 18 18 – 20 tháng (T. M. P. Nguyen và c.s. 2026)
dur_short Thời gian điều trị phác đồ ngắn toàn thuốc uống có bedaquiline 9 9 – 11 tháng (T. M. P. Nguyen và c.s. 2026)
dur_bpalm Thời gian điều trị BPaLM 6 tháng (Nyang’wa và c.s. 2022)
vn_n_treated Số người bệnh RR-TB được điều trị toàn quốc 2021-2022 4,814 người (T. M. P. Nguyen và c.s. 2026)
who_rr_incidence Ước tính số người mắc lao kháng rifampicin mới mỗi năm tại Việt Nam, 2024 9,400 5,400 – 13,000 người/năm (World Health Organization 2026b)
short_success Điều trị thành công, phác đồ ngắn có bedaquiline (BDQ_STR), toàn quốc 2021-2022 0.762 tỷ lệ (T. M. P. Nguyen và c.s. 2026)
aor_long_vs_bdqstr Tỷ số chênh đã điều chỉnh (aOR) của kết cục bất lợi: phác đồ dài hạn so với phác đồ ngắn có bedaquiline 1.56 1.32 – 1.84 tỷ số chênh (T. M. P. Nguyen và c.s. 2026)
vn_success Điều trị thành công, toàn quốc 2021-2022 (mọi phác đồ) 0.712 tỷ lệ (T. M. P. Nguyen và c.s. 2026)
vn_failure Thất bại điều trị, toàn quốc 2021-2022 (mọi phác đồ) 0.036 tỷ lệ (T. M. P. Nguyen và c.s. 2026)
vn_death Tử vong trong điều trị, toàn quốc 2021-2022 (mọi phác đồ) 0.078 tỷ lệ (T. M. P. Nguyen và c.s. 2026)
vn_ltfu Bỏ điều trị, toàn quốc 2021-2022 (mọi phác đồ) 0.133 tỷ lệ (T. M. P. Nguyen và c.s. 2026)
vn_not_eval Không được đánh giá, toàn quốc 2021-2022 (mọi phác đồ) 0.042 tỷ lệ (T. M. P. Nguyen và c.s. 2026)
death_unreported Tỷ lệ ca tử vong trong điều trị không được báo cáo cho Chương trình Chống lao 0.43 tỷ lệ (MacLean và c.s. 2026)
unf_bpalm_trial Kết cục bất lợi sau 72 tuần, nhóm BPaLM (mITT, kết quả cuối) 0.117 tỷ lệ (Nyang’wa và c.s. 2024)
unf_soc_trial Kết cục bất lợi sau 72 tuần, nhóm chăm sóc chuẩn (mITT, kết quả cuối) 0.409 tỷ lệ (Nyang’wa và c.s. 2024)
unf_bpalm_pp Kết cục bất lợi sau 72 tuần, nhóm BPaLM (per-protocol, kết quả cuối) 0.04 tỷ lệ (Nyang’wa và c.s. 2024)
unf_soc_pp Kết cục bất lợi sau 72 tuần, nhóm chăm sóc chuẩn (per-protocol, kết quả cuối) 0.072 tỷ lệ (Nyang’wa và c.s. 2024)
death_bpalm_trial Tử vong đến tuần 72, nhóm BPaLM (mITT) 0 tỷ lệ (Nyang’wa và c.s. 2024)
death_soc_trial Tử vong đến tuần 72, nhóm chăm sóc chuẩn (mITT) 0.0365 tỷ lệ (Nyang’wa và c.s. 2024)
bpalm_death_rule Cách áp RR cho tử vong trong điều trị BPaLM (mã 0, 1, 2) 0 0 – 2 mã giá trị minh họa
ae_bpalm Biến cố bất lợi độ 3 trở lên hoặc nghiêm trọng, BPaLM 0.23 tỷ lệ (Nyang’wa và c.s. 2024)
ae_soc Biến cố bất lợi độ 3 trở lên hoặc nghiêm trọng, chăm sóc chuẩn 0.48 tỷ lệ (Nyang’wa và c.s. 2024)
cf_untreated Tỷ lệ tử vong 10 năm của lao phổi AFB dương không điều trị 0.7 0.53 – 0.86 tỷ lệ (Tiemersma và c.s. 2011)
dur_untreated Thời gian mắc lao không điều trị (đến khi tự khỏi hoặc tử vong) 3 2 – 4 năm (Tiemersma và c.s. 2011); khoảng: giá trị minh họa
ltfu_mort_rate Tỷ suất tử vong mọi nguyên nhân sau khi bỏ điều trị lao kháng thuốc 0.052 0.044 – 0.061 mỗi người-năm (Adamashvili và c.s. 2022)
ltfu_returned_prop Tỷ lệ người bỏ điều trị đã quay lại điều trị trong thời gian theo dõi 0.304 tỷ lệ (Adamashvili và c.s. 2022)
ltfu_culture_converted Tỷ lệ người bỏ điều trị đã âm hóa nuôi cấy trước khi bỏ 0.63 tỷ lệ (Adamashvili và c.s. 2022)
retx_rate_ltfu Tỷ suất quay lại điều trị sau khi bỏ điều trị 0.079 mỗi người-năm (Adamashvili và c.s. 2022)
retx_rate_failed Tỷ suất bắt đầu điều trị lại sau thất bại 4 1 – 12 mỗi người-năm giá trị minh họa
retx_outcome_rule Kết cục của đợt điều trị lại (mã 0, 1) 0 0 – 1 mã giá trị minh họa
retx_geo_success Điều trị thành công khi quay lại sau bỏ điều trị (Georgia 2011-2014) 0.339 tỷ lệ (Adamashvili và c.s. 2022)
retx_geo_failure Thất bại khi quay lại sau bỏ điều trị (Georgia 2011-2014) 0.073 tỷ lệ (Adamashvili và c.s. 2022)
retx_geo_death Tử vong khi quay lại sau bỏ điều trị (Georgia 2011-2014) 0.333 tỷ lệ (Adamashvili và c.s. 2022)
retx_geo_ltfu Bỏ điều trị lần nữa khi quay lại (Georgia 2011-2014) 0.255 tỷ lệ (Adamashvili và c.s. 2022)
relapse_rate Tỷ suất có đợt lao tiếp theo sau điều trị 0.0103 mỗi người-năm (MacLean và c.s. 2026)
relapse_years Số năm sau điều trị có mô hình hóa tái phát tường minh 0 0 – 5 năm giá trị minh họa
smr_post Tỷ số tử vong chuẩn hóa (SMR) sau điều trị 3 2.21 – 3.84 tỷ số (MacLean và c.s. 2026); khoảng: (Romanowski và c.s. 2019)
smr_rom_all SMR gộp so với dân số chung, mọi người đã điều trị lao 2.91 2.21 – 3.84 tỷ số (Romanowski và c.s. 2019)
smr_rom_cured SMR gộp so với dân số chung, chỉ người đã khỏi hoặc hoàn thành điều trị 3.76 3.04 – 4.66 tỷ số (Romanowski và c.s. 2019)
val_died_prop Tỷ lệ tử vong từ khi vào nghiên cứu đến hết theo dõi (đích thẩm định) 0.165 tỷ lệ (MacLean và c.s. 2026)
val_mort_rate Tỷ suất tử vong từ khi vào nghiên cứu (đích thẩm định) 0.0426 mỗi người-năm (MacLean và c.s. 2026)
val_followup_years Thời gian theo dõi trung vị của đoàn hệ MacLean 4.3 năm (MacLean và c.s. 2026)
u_tb Thỏa dụng khi mắc lao hoặc đang điều trị 0.83 0.82 – 0.85 thỏa dụng (Vo và c.s. 2025)
u_post Thỏa dụng sau điều trị 0.9 0.89 – 0.92 thỏa dụng (Vo và c.s. 2025)
d_ae Mức giảm thỏa dụng khi có biến cố bất lợi nặng 0.15 0.05 – 0.25 thỏa dụng giá trị minh họa
dur_ae Thời gian chịu ảnh hưởng của một biến cố bất lợi nặng 1 0.5 – 2 tháng giá trị minh họa
dw_tb Trọng số bệnh tật của lao không nhiễm HIV 0.333 0.224 – 0.454 trọng số (Tomeny và c.s. 2024)
c_ltfu Chi phí y tế mỗi tháng khi bỏ điều trị 0 0 – 500,000 VNĐ/tháng (2025) giá trị minh họa
c_cured Chi phí y tế mỗi tháng sau khi khỏi 0 0 – 200,000 VNĐ/tháng (2025) giá trị minh họa
c_hosp_usd Chi phí trực tiếp y tế một đợt nằm viện vì lao kháng thuốc (trung vị) 707.24 429.32 – 1,328.36 USD (2024) (Ngo và c.s. 2026)
hosp_mono_share Tỷ lệ người bệnh kháng đơn thuốc trong mẫu chi phí nằm viện 0.58 tỷ lệ (Ngo và c.s. 2026)
hosp_drug_share Tỷ trọng thuốc và dịch truyền trong chi phí nằm viện 0.38 tỷ lệ (Ngo và c.s. 2026)
fx_vnd_usd Tỷ giá quy đổi dùng trong nghiên cứu gốc 25,000 VNĐ/USD (2024) (Ngo và c.s. 2026)

Các giá trị chung của khóa học (ngưỡng, tỷ lệ chiết khấu, giá thuốc, giá dịch vụ, CPI) không nằm trong bảng trên: complete_params() lấy chúng từ kb/_shared và tính các chi phí của module như sau.

Tên Giá trị dẫn xuất Giá trị Đơn vị Từ dữ liệu chung Nguồn
wtp Ngưỡng chi phí-hiệu quả (1 × GDP bình quân đầu người) 125,500,000 VNĐ/QALY vn_context: wtp (Ong và c.s. 2026)
disc_rate Tỷ lệ chiết khấu hằng năm (chi phí và kết quả) 0.0300 mỗi năm vn_context: disc_rate (Ong và c.s. 2026)
c_drug_long Chi phí thuốc phác đồ dài hạn mỗi tháng (giá cả đợt / thời gian) 676,964 VNĐ/tháng tb_regimen_longer_18m (McConnell 2025)
c_drug_short Chi phí thuốc phác đồ ngắn mỗi tháng (giá cả đợt / thời gian) 857,303 VNĐ/tháng tb_regimen_9m_standard (McConnell 2025)
c_drug_bpalm Chi phí thuốc BPaLM mỗi tháng (giá cả đợt / thời gian) 1,181,913 VNĐ/tháng tb_regimen_bpalm_6m (ITPC-EECA 2025)
c_monitor Chi phí theo dõi mỗi tháng điều trị (khám, soi đờm, nuôi cấy, công thức máu, chức năng gan - thận) 565,100 VNĐ/tháng visit_outpatient + test_afb_smear + test_mtb_culture_liquid + test_cbc + test_liver_renal_panel (Bộ Y tế 2024)
c_eot Chi phí đánh giá cuối điều trị (khám, X-quang ngực, soi đờm, nuôi cấy) 499,100 VNĐ/lần visit_outpatient + test_chest_xray + test_afb_smear + test_mtb_culture_liquid (Bộ Y tế 2024)
c_failed Chi phí mỗi tháng ở trạng thái Thất bại (một lượt khám) 50,600 VNĐ/tháng visit_outpatient (Bộ Y tế 2024)
hosp_inflator Hệ số quy giá năm 2024 về năm 2025 (CPI) 1.0331 tỷ số inflate_vnd(1, 2024) (World Bank 2026)

Gói R

Mô hình chỉ dùng base R (stats, utils). Hình vẽ dùng ggplot2; bảng trong bài dùng knitr. Module được kiểm tra với R version 4.5.3 (2026-03-11) và ggplot2 4.0.2. Không cần gói mô hình chuyên dụng nào; các bài hướng dẫn mô hình Markov đoàn hệ bằng R của nhóm DARTH là tài liệu đọc thêm tốt (Alarid-Escudero và c.s. 2023b, 2023a).

Tài liệu tham khảo