温馨提示: 定期 清理浏览器缓存,可以获得最佳浏览体验。
New!
lianxh
命令发布了:
随时搜索推文、Stata 资源。安装命令如下:
. ssc install lianxh
详情参见帮助文件 (有惊喜):
. help lianxh
⛳ Stata 系列推文:
作者: 经菠 (中山大学)
邮箱: jingb@mail2.sysu.edu.cn
编者按:本文主要摘译自下文,特此致谢!
Source:Lee C. The matching problem using Stata[C]. 2019 Stata Conference. Stata Users Group, 2019 (43). -PDF-
目录
美国每年遗体器官捐赠的数量远远无法满足肾病患者的需要。例如,2018 年仅有 21167 人接受了肾脏移植 (平均每天 58 例肾脏移植),但同一时期等待肾脏移植的人数远超 10 万人。即便是如此,2018 年还新增 38791 位肾病患者 (几乎每十分钟就有一位)。可以看出,肾脏移植的供求存在严重失衡,因此一位肾病患者通常要等待 3-5 年才能找到与自己匹配的捐赠者。那些不能及时接受肾脏移植的患者将面临死亡风险。
图 1 呈现了 1995-2019 年美国各类等待或接受肾脏移植的人数。可以发现,每年等待者的人数远高于捐赠人数,说明长期以来器官捐赠者数量远远无法满足患者需求。
由于肾脏匹配概率较小,即使是与病人有血缘关系的亲人也未必能与之完全匹配。面对上述严重不匹配的供求关系,不少专家提出一种基于肾脏交换 (Kidney Exchange) 的肾脏移植手术。具体而言,每一位需要等待肾脏移植的患者 (该名患者没有在近亲和朋友中找到合适捐赠者),也有机会通过肾脏互换找到适配的活体器官。但前提是,病人需要找到一位身体健康且愿意捐赠肾脏的捐赠者 (捐赠者通常为患者的亲人或朋友),形成一个 “病人&捐赠者组合”,与其他 “病人&捐赠者组合” 完成肾脏交换。
通过此类肾脏交换,患者的等待时间得到大幅缩减。以图 2 中典型的二元匹配为例,涉及肾脏互换的为两组 “病人&捐赠者组合”。其中,
但是 A 的肾脏可以捐赠给患者 D,而 C 的肾脏可以捐赠给患者 B,这样的话就称这两个 “病人&捐赠者组合” 配对成功。为避免道德风险,即在其他病人接受捐赠之后退出捐赠,此类肾脏互换手术需同时进行。通过上述方法,肾脏供需不匹配的问题得到部分解决。
当然有的时候,不能找到两个 “病人&捐赠者组合” 完全配对。这时如果可以找到三个 “病人&捐赠者组合” 形成如下图 3 的配对模式,仍然是可以进行三元配对的,这种结构称为环式结构。与二元匹配类似,此类环式结构要求手术同时进行,而且在医院各方面资源的限制下,环式结构允许的长度较小,通常为二元环或三元环。
当然有时候也会有健康人自愿加入肾脏的交换过程,尝试去救治病人。当有无私捐赠者参与时,链条将会从无私的捐赠者出发,然后依次向下进行传递,最终至在等待名单上的病人 (这个人没有能够找到亲人或者朋友,帮他形成 “病人&捐赠者组合”)。
上述交换的过程,如图 4 所示。这种链式交换可以不在同时进行,可以分时间进行,只要保证移植手术的源头从自愿捐赠肾脏的健康人开始。如果出现与之配对的病人接受完其他人的肾脏移植后,这个捐赠者可以选择不捐赠自己的肾脏,退出肾脏交换。虽然这并不合理,但是合法的,因为美国没有法律规定,捐赠者必须捐赠自己的肾脏。
考虑一个最简单的情形,即没有自愿捐赠肾脏的健康人参与,那么就意味着是所有手术需要同时进行。以图 5 为例,其中
为了能够最大化匹配病人捐赠者组合,我们需要将上述肾脏交换问题抽象成一个线性规划的最优化问题。具体来看,我们需要最大化
其中,
上述的最优化方程应用在图 5 中的话,便可以写成如下式子:
[1]
[2]
[3]
[4]
在该部分,我们将使用作者写的 lp
命令对上述问题求解。首先在 Stata 中输入数据,要求是将所有
lp varlists [if] [in] [using/] [,rel(varname) rhs(varname) min max intvars(varlist) tol1(real) tol2(real) saving(filename)]
rel(varname)
:用变量表示每个等式的符号;rhs(varname)
:用变量来表示每个等式右边的常数项;min/max
:对最优化函数取最小值或者最大值;intvars(varlist)
:指定哪些变量为整数取值;tol1(real)
:输出结果的误差范围,默认值为 tol2(real)
:输出逆矩阵结果的误差范围,默认值为 saving(filename)
:定义输出文件的名称。接着,在 Stata 中输入以下命令:
lp x12 x21 x23 x32 x31,max intvars( x12 x21 x23 x32 x31 ) rel(rel) rhs( rhs)
输出的最优化结果 x12、x23、x31 都等于 1。
值得注意的是,在进行上述匹配问题之前需要先明确几个问题:
本文仅是针对肾脏捐赠问题的最简单形式进行介绍,更为丰富的例子和详细算法,可以参考王泫钡 (2019)。
Note:产生如下推文列表的 Stata 命令为:
lianxh 匹配, m
安装最新版lianxh
命令:
ssc install lianxh, replace
免费公开课
最新课程-直播课
专题 | 嘉宾 | 直播/回看视频 |
---|---|---|
⭐ 最新专题 | 文本分析、机器学习、效率专题、生存分析等 | |
研究设计 | 连玉君 | 我的特斯拉-实证研究设计,-幻灯片- |
面板模型 | 连玉君 | 动态面板模型,-幻灯片- |
面板模型 | 连玉君 | 直击面板数据模型 [免费公开课,2小时] |
⛳ 课程主页
⛳ 课程主页
关于我们
课程, 直播, 视频, 客服, 模型设定, 研究设计, stata, plus, 绘图, 编程, 面板, 论文重现, 可视化, RDD, DID, PSM, 合成控制法
等
连享会小程序:扫一扫,看推文,看视频……
扫码加入连享会微信群,提问交流更方便
✏ 连享会-常见问题解答:
✨ https://gitee.com/lianxh/Course/wikis
New!
lianxh
命令发布了:
随时搜索连享会推文、Stata 资源,安装命令如下:
. ssc install lianxh
使用详情参见帮助文件 (有惊喜):
. help lianxh