Markov模型的R实现及在卫生经济学评价中的应用*
2018-11-05中国疾病预防控制中心妇幼保健中心100081
中国疾病预防控制中心妇幼保健中心(100081)
屈水令 潘晓平 王爱玲 张 彤△
【提 要】 目的 应用R软件heemod包开展Markov模型在卫生经济学评价中的应用研究。方法 Markov模型的数学基础是随机过程理论,可用于模拟疾病发生发展状态。应用R软件heemod包,通过函数实现Markov模型在卫生经济学评价。结果 Markov模型的数学基础是随机过程理论,可用于模拟疾病发生发展状态,以HIV感染者进行抗病毒治疗作为示例,运用heemod包中define_transition()、define_state()、define_strategy()、run_model()等函数定义模拟疾病的转移状态、对各个状态的成本及健康效用赋值、运行模型,开展卫生经济学评价并用实例演示了实现过程,对敏感性、确定性等评价进行了介绍。结论 应用R软件heemod包可实现Markov模型卫生经济学评价,R软件heemod包易于学习掌握、展示功能强,在此推荐给卫生经济学评价学习者及研究者。
Markov模型在卫生经济学评价中应用的基本原理是利用Markov模型将疾病根据专业知识划分为几个疾病状态(也称Markov状态),分别统计每个状态中消耗的资源(成本)与产出(卫生活动效果、健康效用、经济效益),根据疾病状态(如艾滋病临床I、II、III期)间的转移概率和转移周期,在设定的一定期限内,通过多次转移(循环)计算总成本和产出[1]。Markov模型解决了疾病状态转移的不确定性(转移概率)问题,并将成本、产出等有效结合起来,是卫生经济学评价常用的模型之一。
利用Markov模型进行卫生经济学评价计算复杂,常用的方法一是借助专业统计软件,如商用的TreeAge;二是基于excel编辑公式实现。但是可操作性、结果展示等问题不利于该方法的实现和推广。免费的R软件有一套完整的数据处理、计算和制图软件系统,且通过其模块(package,包)可实现大量的功能。2017年5月9日,R官方网站发布了heemod(models for health economic evaluation)包[2],该包为Markov模型在卫生经济评价中的应用,包括确定性、敏感性、异质性分析,还可对非齐性Markov模型(半Markov模型,状态转移概率随时间改变)、转移概率不确定模型进行分析。
本研究利用R软件(https://www.r-project.org/),通过对Markov模型基本原理、heemod包及有关函数的介绍,并通过示例展示其编写计算程序实现Markov模型在卫生经济学评价中的应用,以期为卫生经济学评价的研究者提供更易操作、简便的方法。
模型介绍
1.Markov模型基本原理
2.Markov模型在卫生经济学评价中的基本应用
卫生经济学研究的中心问题是解决资源稀缺性和需求无限性的矛盾,评价的基本方法有成本效果分析、成本效益分析、成本效用分析、成本最小化分析,常用的模型有决策树模型和Markov模型。
Markov模型用于评价卫生活动或项目长期的效果、效益和效用分析,其基本步骤:第一,根据研究目的,依据疾病的严重程度、诊疗标准等因素,估计患者的平均病程期限或存活时间,将疾病划分为几个疾病状态(如艾滋病临床I、II、III期)(这里称Markov状态,Xn);第二,通过调查或查阅文献确定疾病状态(Xn)间的转移周期(如1年)和转移概率(Pij);第三,通过调查或查阅文献确定各个状态的成本和产出(效果、效益、效用);第四,运用软件进行模拟计算整个病程或存活时间的成本和产出;第五,根据研究目的,进行成本效果、成本效益或成本效用分析。通过对卫生经济活动中投入(成本)和产出(效果、效用、效益)的测量,利用统计模型进行分析与研究。
3.R软件heemod包用法简介和示例
在安装R软件的基础上,heemod包可以通过install.packages(“heemod”)命令来实现。利用heemod进行卫生经济学评价前,先根据专业知识将疾病分为几个状态,确定疾病发生发展总时长、各状态的转移概率和周期(循环周期),从而获得各状态每周期消耗的资源产出。其实现过程需以下几个步骤及程序。
(1)定义状态间转移概率
各个状态间转移概率用define_transition()来定义,括号内输入转移概率矩阵,mat_trans <- define_transition()。
(2)给各状态赋值
各状态成本或效用值使用函数define_state(cost=**,untility=**),通过变量名称给不同状态赋值,如 state_A <- define_state(cost=***,untility=**)。
(3)联合状态转移概率及赋值
将状态转移概率及各个状态赋值后,用define_strategy()函数将二者结合起来,model<- define_strategy(transition = mat_trans, state_A,state_B)
通过重复(1)~(3)过程,可设置不同卫生干预策略,定义不同model,进而开展不同策略下成本-产出分析研究。
(4)模型运行
模型运行用run_model()函数,函数语法为run_model(model,cycles =n,cost = cost,effect = utility)
model表示步骤(3)定义的模型,可用model1、model2设置模型,n为疾病发展总时长,cost、effect分别表示成本和效果。
实例分析
1.示例数据模拟
本研究模拟现有10000例HIV感染者接受抗病毒治疗的情景。设定HIV(感染而不发病状态)者、AIDS(发病状态)、死亡等三种状态(见图1),HIV感染者存活年限设定为10年,循环周期为1年,三种状态每年消耗的资源(成本)、健康效用值QALY(产出)及年转移概率见表1。
图1 HIV感染者Markov状态转移图
状态每年成本(元)健康效用值状态间年转移概率矩阵HIVAIDSDeathHIV160000.8889%6%5%AIDS360000.700%93%7%Death00.000%0%100%
卫生经济学评价常用对不同卫生政策(策略)进行比较分析。现假设第二种策略,HIV感染者不进行抗病毒治疗,自然状态下存活10年,仍用1年为一个循环周期,模拟HIV感染人数仍为10000人,模拟数据基本情况见表2。
表2 HIV感染者未抗病毒治疗的模拟数据
2.R软件实现过程
#1 define_transition函数定义HIV,AIDS,Death间转移概率Pij。
mat_trans <- define_transition(
0.89,0.06,0.05,
0,0.93,0.07,
0,0,1.00
)
#2 define_state函数给不同疾病状态下成本(每年)及健康效应赋值。
state_HIV <- define_state(
cost=16000,
utility=0.88
)
参照以上语句,给AIDS、Death两个状态赋值。
state_AIDS <- define_state(
cost=36000,
utility=0.70
)
state_Death <- define_state(
cost=0,
utility=0
)
#3 define_strategy函数设定模型:联合疾病状态转移概率及赋值。
Model1<- define_strategy(
transition = mat_trans1,
state_HIV1,
state_AIDS1,
state_Death1
)
可参照以上语句定义model2。
#4 run_model函数构建模型运行。
res_mod <- run_model(
model1,model2,
init = c(10000,0,0),
cycles = 10,
cost = cost,
effect = utility
)
res_mod
init代表模型开始时HIV、AIDS、Death的初始人群分别为10000、0、0人,cycles=10,代表10个循环。
model2是以未进行抗病毒治疗作为对照组设定的治疗模式,其基本参数见表2。
#5 运行模型,展示结果。
res_mod
3.结果输出及解释
#第一部分结果显示,计算方法使用的寿命表法。
Counting method:‘life-table’。
#第二部分结果显示,两个模型的总成本、总效用。
#第三部分结果显示,有效投资组合理论显示第一种模型优于第二种模型。
Efficiency frontier:II -> I
#第四部分结果显示,相对于第一种模型,第二种模型的成本-效用比更高,ICER(增量成本效果比)为28756.38。
图2 结果输出
图3 Markov模型用寿命表法模拟队列生存分析图
图3形象展示了model1的效果明显好于model2,model1的死亡率远低于model2。
4.敏感性等其他分析
在R软件heemod包中可分别用define_dsa()函数和define_psa()函数对确定性和灵敏性进行分析。确定性是指变量参考变化是确定的,而define_psa()函数的敏感性分析可对符合某概率的变量参数进行分析研究。
非齐性Markov模型(半Markov模型)是指状态转移时间间隔随机,每个状态转移时间间隔不恒定。非齐性Markov模型可用define_parameters()、define_state()、define_transition()等函数来定义[4]
转移概率不确定Markov模型使用define_parameters()函数在定义状态前定义参数[5]。
讨 论
卫生经济学中常用的评价方法有成本-效果分析、成本-效益分析、成本-效用分析和成本最小化分析[4,6],由于疾病状态发生发展的随机性及相应发病概率和转移概率问题,Markov模型在卫生经济学评价上有广泛的实用性和不可替代的作用,Markov模型应用范围包括发病率预测[5,7]、胃癌卫生经济学评价[6,8]、艾滋病抗病毒的成本效果分析[7,9]等。
王倩等介绍了Markov模型[1],但是计算过程使用了列表计算。刘美娟等则重点介绍了Markov模型的构建过程[8,10],但没有介绍实现的软件或计算的具体方法。卫生经济学评价中有用Treeage Pro软件进行[9-12],也有部分过程借助SAS软件实现[6,8]。R软件作为一种免费软件,应用越来越广泛。Markov模型本身在R中已有markovchai,mcmc,msm,MSwM等多个包可以实现,但是专门用于卫生经济学中的Markov模型应用包heemod于2017年5月才发布在官网,在R官网均可查阅heemod的介绍和应用,但是还没有查到有人在我国进行介绍推广。R软件heemod包可实现成本-效果、成本-效用和成本-效益等评价,还可实现确定性、敏感性、异质性分析,R软件本身易于操作、展示功能强,即使没有计算机编程语言的基础,也可通过学习掌握基本的语句实现卫生经济学评价的功能。本研究介绍了heemod包,并用示实例演示了基本用法,可供卫生经济学评价学习者及研究者参考。