在TreeAge Pro里面,我们常说的“队列模型”,指的通常就是马尔可夫队列模型,它是让一组对象,按照固定的周期,在不同的健康状态之间,来回地发生转移,按照官方的说明,马尔可夫模型是被用来表示那种,会随着时间反反复复发生的事件的,一个完整的模型,通常要包含着马尔可夫节点、健康状态、转移出去的子树、周期的长度、一开始设定的初始概率、在不同状态间跳转的转移概率、各种收益的值,还有让模型停下来的终止条件。
一、队列模型要怎么建立
在TreeAge Pro里动手搭一个队列模型的时候,先不要急着去画好多好多的分支,应该先把有几个健康状态、模型跑一步周期是多长,还有它到什么时候该停下来,这些基础的东西给定清楚,模型里的这几个状态之间,必须得是互相排斥的,也就是说,队列里的那些对象,在一个周期里面,只能老老实实地呆在某一个状态里。
1、要先把有哪些状态给定义出来
你可以先在草稿纸上,把模型里要用到的状态一个个给列出来,就比如,健康、生病了、旧病又复发了、死亡,或者是等着处理、正在处理当中、已经处理完了、退出了,像死亡、退出这一类的状态,它们就属于吸收态,通常来说,就不会再给它们去设置下一步要往哪里转移了,状态要是拆得太细了,会让后面转移的关系变得乱糟糟的;可要是定得太粗了,又会把那些很关键的差异,给藏起来看不见。
2、去把马尔可夫的结构给搭出来
在TreeAge Pro里面,新建好一个空白的模型之后,先去给它加上一个马尔可夫节点,然后再在这个节点的底下,去把代表着每一个状态的节点,一个一个地给建起来,官方的帮助里有提到,你可以拿一个椭圆去表示一种状态,拿箭头去表示一次转移,但光靠这种图,是没办法直接拿来做分析的,你得把它给转成一个真正的马尔可夫模型,再把那些需要往里输入的数据,给它补全了。
3、去把周期和停下来的条件给设好
在那个马尔可夫节点里面,去把模型跑的周期给设定好,比如说,是一步一个月、一步一个季度,还是一步一整年,周期的长度,得跟你后面要填进去的转移概率、每一期的成本,还有效用的值,全都保持一致,官方的文档里也着重说了,虽然周期长度这个值,在软件里面可能是一个隐含的,没有直接摆出来的量,但是概率、收益,还有停下来的条件,这些全都得跟它对齐了才行。
4、把一开始的分布和每一期的收益,给录进去
在每一个状态底下,去把初始时候的概率给设好,比如说,队列在一开始的时候,是所有的人全都呆在健康的状态里,又或者是,按照真实世界里那种基线的比例,被分散到了好几个不同的状态里面,然后,再根据你做这个分析的目的,去把成本、效用值、时间,或者是其他形式的收益值,给填进去,在这里要留神一下,不要把那种一次性的、只在事件发生时才会产生的成本,给错填成了是每个周期都要花的钱了。
二、队列模型的转移关系要怎么检查
对队列模型的转移关系进行检查,重点要看的,就是从每一个状态出发以后,它能去到哪里、所有的概率加在一起是不是一个闭合的圆、还有这一条条的路径,它是不是符合真实世界里业务运转的那个逻辑,一旦转移的关系搞错了,那后面算出来的结果,就算再精细,也没有什么意义了。
1、去检查一下每一个状态,它出去的出口
要挨个去点开那些状态节点,去看一看它下面的那个转移子树,是不是已经画得完整了,每一个不是吸收态的状态,都应该得有一条路,让它能继续留在这个状态里面、进到另一个状态里面去,或者是干脆就退出整个模型,要是某一个状态,它连一条往回指向自己的路都没有,那队列里面的那些人,就很可能会被硬推着,流向一个根本就不合理的地方。
2、去检查一下所有的概率,加起来是不是等于一
在同一个用来做转移的节点底下,那一条条分支的概率,通常来讲,是必须得加总起来等于一的,如果你用的是那种,把剩下的部分补足到一的方法,那就得去确认一下,那个剩下来的概率,没有不小心变成负数,也没有因为某一个参数被设得太大了,结果导致所有的概率加在一起,超过了那个一。
3、去检查一下那些要跟着周期变来变去的概率
要是有些概率,它是会随着周期,或者是随着人群的年龄,不停地发生变化的,那就可以用表格,还有那个叫阶段计数器的变量,去把它给表达出来,TreeAge Pro的文档里是这么写的,那个阶段计数器,它从第一个周期的一开始,是从零起步的,而且,它可以被拿来去引用那些,跟着周期在变的概率表,就比如,死亡率会随着年龄在变,你就可以把表格里的基础年龄,加上这个已经走过的阶段数,当成一个索引去查。
4、去检查一下状态的流向,它在逻辑上是不是行得通的
有些状态跟状态之间,是可以有来有回、双向转移的,就比如,病情比较轻和暂时缓解了,这就可以来回走;可有些状态呢,它就只能是单向地往前走,好比死亡这个状态,一旦进去了,就不能再回到其他任何状态了,你在检查的时候,就要沿着模型,从一个状态出发,假想着走到另一个状态,去确认一下,这里面有没有出现,在临床、业务或者流程上,根本就走不通的路径。
三、队列模型跑出来的结果要怎么核对
等队列模型被建立起来了以后,不要就只盯着最后算出来的那个总期望值去看,一种更稳当的做法,是去调出模型跑的过程里,队列在每一个周期,分别待在不同状态里的那个占比,还有路径是怎么一步一步变化的,去确认一下,模型运转的这个过程,它是不是符合你心里面的预期。
1、去查看一下队列的分布情况
在把马尔可夫队列分析跑完了以后,去看一看每一个周期,人群落在各个状态上的概率,都是什么样的,在TreeAge Pro近几年的版本里面,是把马尔可夫队列分析跑出来的结果,都给集中放到了一个仪表板里面去了,它还会给你提供队列的报告,还有一些图形化的结果,用这些东西,去看详细的计算过程,是很方便的。
2、去核对一下,当把参数给到一种很极端的值的时候,结果对不对
你可以先临时地,去把某一个非常关键的转移概率,给它一下子设成零,或者是调到一个特别高的值,然后,再去看一看跑出来的结果,是不是按照你预想的那个方向去变的,就比如说,当你把死亡的概率给设成零了,那死亡那个状态里面的人,就不应该再继续往上涨了;当你把复发的概率给调高了,那复发那个状态里的人群占比,就应该会有一个比较明显的变化。
3、去核对一下那些吸收态的状态
像死亡、彻底退出了、失败了所以终止了,这一类的状态,是要重点拿来看的,一旦队列里的人,进到了这种吸收态里面,那他们就不应该,再有什么机会,能流回到别的状态里面去了;要是你在跑出来的结果里面,居然看到了有回流的迹象,那就得回头去检查一下,那个吸收态的状态底下,是不是被你不小心给多加上了一个转移子树。
4、把检查的过程和记录,都给保存下来
每一次,当你去调整了转移概率、改动了状态的结构,或者是修改了周期的长度以后,都比较建议你把,为什么要做这个修改、这个参数是从哪来的、检查下来的结论是什么,还有跑出来的那个结果的截图,都给它记录下来,到了项目的后期,你再去做敏感性分析、去复核模型,或者是去解释报告的时候,有这些记录放在那里,是要比你单纯拿嘴去说,要可靠得多的。
总结
关于TreeAge Pro的队列模型要怎么去建立,还有建立好了以后,那些转移的关系又要怎么去检查,这里面的关键,就是先把都有哪几个状态、一个周期是多长、一开始的时候概率是怎么分的,还有到了什么条件底下这个模型就该停了,这几样东西给弄得清清楚楚,然后,再去一个一个地去检查,转移的路径是不是都画完整了,还有所有的概率,加起来是不是闭合的,在搭模型的时候,不要只是去追求,结构上看着好像是齐了,还得去确认一下,概率的单位、周期的长度、收益的口径,还有那些吸收态的状态,全都能自圆其说,对得上号,等模型跑完了以后,再去看一看队列在各个状态的分布、试试极端的参数跑出来是什么样,还有状态的流向对不对,用这套办法做下来,模型的结果才更容易被解释清楚,到了后期复核的时候,也更不容易,一下子就被翻出来那些藏在底下的基础错误。