天天看点

Nat. Commun | 从大规模电子病历中估算疾病遗传参数

今天给大家介绍一篇刚被Nature Communications接收的文章,“Estimating Heritability and Genetic Correlations from Large Health Datasets in the Absence of Genetic Data”,本研究的主要目的是在不引入新的遗传数据的情况下,利用现有的电子病历和遗传参数,通过机器学习的方法为500多种的疾病来估计其遗传率和遗传相关性。

Nat. Commun | 从大规模电子病历中估算疾病遗传参数

1、摘要

遗传参数(如疾病遗传率和多疾病之间的遗传相关性)的传统估算方法,需要研究对象相关的遗传信息和表型信息,对家庭成员之间关系也需要详细的了解。在这些条件的约束下,可以利用的数据非常少,获取数据也非常昂贵。随着电子病历的普及,如果能够利用这些记录对遗传参数进行估算,就能将原来只能基于家庭成员间的分析扩展到数百万人群中进行分析。为了实现此目的,芝加哥大学Andrey Rzhetsky教授的团队和沙特阿卜杜拉国王科技大学高欣教授的团队(

http://sfb.kaust.edu.sa

)开发出一种新的方法(第一作者为芝加哥大学的贾耿介博士),基于大规模的电子病历去估算遗传参数。在这个工作中,作者通过大型健康医疗数据集构建了两类疾病指标:1)疾病患病率曲线,2)疾病嵌入。前者记录了疾病的动态趋势,而后者寻求用并发症来表征该疾病。这两类指标相辅相成,能够用来: 1) 估算数百种疾病和数千种疾病对的遗传参数,2) 系统地分析遗传率与疾病发病年龄的关系, 3) 并将疾病患病率曲线形状的差异与疾病之间的遗传和环境相关性联系起来。此外,该研究团队还发布了可搜索的网络共享资源,其中包括了500多种疾病的性别和国家特异的流行曲线。

2、方法

2.1疾病患病率曲线

分析A:这项分析应用了美国的数据集(年龄在0到65岁之间的人),将每年在特定性别和年龄组中某一疾病发病的患者数占该性别和年龄组的总人数的比例定义为疾病患病率(基于患者比例)。设计这个分析是为了推算“疾病发病年龄”。

分析B:这项分析应用了美国,丹麦和瑞典的数据集,将每年在特定性别和年龄组中某一疾病发病总计数(如果一个患者数有多次发病,也会被多次计数)占该性别和年龄组的所有疾病的总计数的比例定义为疾病患病率(基于发病计数比例)。该分析旨在比较不同国家的疾病曲线, 以及用于机器学习的特征变量。

2.2针对疾病患病率曲线形状的聚类分析

聚类分析是基于美国和丹麦的数据集,通过沿X轴移动两条曲线的相对位置找到其可能的最小差异值。该分析被重复应用到任意两个摘自500多种疾病的性别和国家特异的曲线组合(如下图1中差异矩阵的热图所示)。基于这个矩阵,分层聚类算法理清了自底向上的聚类层次结构,然后“elbow”模型选择方法确定最优的组(集群)数为5。

Nat. Commun | 从大规模电子病历中估算疾病遗传参数

图1:Shape-of-curve差异矩阵的热图

2.3 疾病嵌入

受到自然语言处理中的单词嵌入(word embedding)的启发,如果把疾病代码比作自然语言单词,把患者特定的一系列疾病代码集比作句子,把大量患者的诊断病史记录比作文本语料库, 疾病嵌入(disease embedding)就可以用相似的算法word2vec实现。利用该算法的目的是为疾病建立实值向量表示,以实现在给定当前疾病的情况下预测它的并发疾病, 或给定并发疾病来预测当前疾病情况。使用似然对数,,误差函数可以表示为:

Nat. Commun | 从大规模电子病历中估算疾病遗传参数

这里 表示针对超过500种主要疾病的超过1.51亿人的病史的“语料库”。使用该语料库,利用gensim程序包来训练神经网络模型,得到每种疾病的20维向量表示 (有关疾病嵌入的3维投影截图,如下图2)。

Nat. Commun | 从大规模电子病历中估算疾病遗传参数

图2:嵌入的3维投影截图

2.4定义用于预测模型的疾病特征变量

这些疾病特征变量包括一组疾病患病曲线和疾病嵌入的衍生数据集。具体而言,对于遗传率估算(针对单一疾病的分析),该曲线衍生的数据集包含0和65岁之间疾病特异性累积计数的集合,将其归一化为1(如方法2.1中的分析B)。并将年龄N的累积计数定义为从0到N的所有归一化计数的总和。嵌入的衍生数据集包含20维嵌入向量中的所有20个实值元素。另外,疾病的“生物系统”标签,性别易感性,病患的平均年龄和疾病发作年龄也包括在其中。

对于遗传相关性参数的预测(针对一对疾病的分析),由于涉及疾病对,衍生数据集包括了每一对疾病归一化计数,累积计数和嵌入元素的均值和差值。这些差异值表征了疾病之间的差异,涉及到了单一疾病特征的比较,如患病率曲线之间的差别和疾病嵌入之间的差别。针对单个疾病和两种疾病的分析,作者还从分类功能,所使用的数据类型,数学模型和研究人群的基本信息来帮助模型的预测。其中,数据类型的标签包括“双胞胎研究”,“家庭研究”,“使用EHR的家庭研究”,“基于SNP的研究”和“基于PRS的研究”作为one-hot-encode的变量;而数学模型的标签包括“ AE”,“ ACE”,“ PRS”,“ SOLAR”,“ GREML”和“ LDSC”。

2.5 与发病年龄有关的分析

作者拿发病年龄与疾病患病率分别做相关性和线性回归的分析,同样的分析也应用到发病年龄和遗传率之间。具体的说,在相关性分析中,用到了Spearman相关性,并且用算法AS 89来确定结果是否显著。在线性回归的分析中,Student’s  test被用来确定斜率和截距估计值是否显著不同于零。

关于性别特异的遗传率h2: 通过广泛的文献搜索,作者收集了403种不同疾病的1146个h2估计值,其中仅有68种疾病的155个估计值是性别特异的。在这里,作者用模型预测了500多种疾病的性别特异的h2估计值,极大的填补了空白。

2.6 曲线形状(Dsoc)差异分析

通过广泛的文献搜索,作者先是收集了812个rg(基因相关性)和re(环境相关性)的估计值,然后使用建立的模型将这组估计值扩展到涵盖500多种疾病的任意一对的比较。为了寻找rg和re估计值与Dsoc的潜在关系,作者也用到了回归分析, 和通过Student’s  test来确定斜率和截距估计值是否显著不同于零。

3、模型

为了训练数学模型,作者从234篇发表的研究文章中收集了1146个 h2的估计值和1947 个corr 的估计值。尝试了一系列的机器学习算法,包括广义线性模型(Lasso,Huber回归和Ridge回归),Kernel ridge回归,支持向量回归和集成方法(随机森林,AdaBoost随机森林和Gradient boosting回归)。这些算法在1000次重复运行中均表现良好(在每次运行中,作者随机选择了五分之四的数据进行训练,五分之一的数据进行验证,结果见下表1)。

Nat. Commun | 从大规模电子病历中估算疾病遗传参数

其中Gradient boosting回归模型的预测正确率最高,其详细的算法如下:

给定已知输出和输入对的训练数据集,该算法的目标是获得将映射到的函数的近似函数(表示为),从而使误差函数的期望值最小。Gradient boosting回归模型利用回归树的集合,逐步将模型预测误差降到最低。算法的伪代码如下:

Nat. Commun | 从大规模电子病历中估算疾病遗传参数

其中和分别代表基础单元模型(回归树)和模型参数(回归树分支的位置和树终端的均值)。回归树的数量和学习率是模型的超参数,分别将其调整为200和0.1。作者从仅包含常数函数的模型开始,然后在for循环中对其进行增量扩展。

模型框架如下图3所示:

Nat. Commun | 从大规模电子病历中估算疾病遗传参数

图3:模型框架

4、结果

先前的研究累积得到的遗传参数的估计值,如遗传率和遗传相关性,为开发新的方法铺平了道路。这里,作者利用美国、丹麦和瑞典的国家级电子病历数据库,定义和计算了疾病患病率曲线和疾病嵌入,证明了疾病的特征变量可以用来评估遗传率(h2)、疾病间遗传/环境/表型相关性(corr)。最后得到的预测准确度可以与传统的基于大量遗传数据研究中得到的结果相媲美。

5、讨论

除了严格检验本研究的核心假设(发病年龄与疾病遗传率之间的相关性)外,作者还提出了许多等待检验的猜想,例如相似的疾病曲线形状是否暗示了相似的病因。这个研究旨在激发有关影响疾病曲线形状和疾病嵌入特性因素的讨论和新思维。在这个工作中提出的模型也具有较强的预测能力,研究了影响疾病患病率曲线和嵌入的可能因素。最后,作者希望这里提出的方法最终可以帮助阐明常见的复杂疾病的致病机制,揭示遗传易感性与特定的环境因素相互作用从而产生疾病症状的原理。