真实世界研究相对于传统的临床研究来说,在数据处理上有一些不一样的特点,这三点既是真实世界研究数据处理的特点,也是它的要求:
针对一套数据集,应当有统一的和持续性的预处理原则,同时这个原则能够通用于该数据集中的所有变量。因为在数据集规模小的时候,对于变量的处理可能是逐个处理,就是我从第一个变量开始,一个一个看到最后一个变量,因为一共就那么多,我看看就完了。逐个分析这些变量,然后给它匹配上各种各样合适的预处理方案。
但是真实世界研究的数据集可能包含了几百上千个变量,一个一个分析根本不现实,所以需要指定通用标准来操作这些变量。比如说我们针对数据中所有的连续变量,制定一个分析计划,所有连续变量缺失值小于20%的使用均值填充,缺失值大于20%、小于40%的使用随机森林模型填充。缺失值大于40%的直接删除该变量。计划好之后,分析师就会按照这样的计划直接对整个数据集进行处理,就不需要逐个去分析,逐个去讨论这个处理方法了。
这是个不太常见的名词,但医学研究领域使用的比较多。鲁棒性意思是强健的、健康的。简单来说就是一个系统在面对各种复杂情况时候的稳定性。数据预处理原则应当充分考虑到真实世界数据的异质性,能够应对不同的预处理需求和场景,并且预处理结果总是能够达到期望标准。这个系统不仅仅指我们平时用的电脑或者手机系统,也可能指各种任何相互关联或者相互作用的部分组成的整体,鲁棒性就是来看这个系统抗不抗造。比如说我们前面提到的为连续变量制定的数据处理计划的时候,我们要思考它是否真的适用于数据集中的所有连续变量,能够运行起来,不报错。
那要想让它运行起来不报错的话,我们就需要考虑到真实世界可能会发生的各种临床问题都会出现在我们的数据集中。不管你的数据是来源于爬虫,来源于医院内部的信息管理系统,还是CRC录入的数据。真实世界研究在录入阶段的一致性肯定是不如RCT的。就比如说我们用爬虫爬到一个变量,这个变量在我们第52个患者的时候,没有爬到对应的数据,就是这个患者可能他没查这个项目,或者说他可能查了,但是没往上填。那我们怎么办?我们就让一般情况下就让它空着就行了。
大部分做数据分析的工具都会自动识别空值,那如果是来源于医院的信息管理系统或者CRC录入,我们就要告诉负责相关的人员在写病历的过程中,需要注意标准的格式、基本相同的病案书写逻辑,这样有利于我们后期用自然语言识别和提取的方法,从中提取出来相对半结构化的数据。我们应该给数据录入人员制定这个规则,然后这个数据集中的空值是直接空着或者是斜杠,还是说写个NA还是写个NaN。总之,这些都是需要在预处理中考虑到的,应该去给它有相对的应对措施的。
那如果说已经收集上来的数据,这时候要考虑什么问题?我们要考虑格式问题,会不会存在某个连续变量的存储格式是字符串格式来存储的,或者说浮点数和整数的格式是不是需要统一,或者是用模型填充缺失值的时候,是要先用模型填充缺失值,然后再去过采样,还是说先用先做过采样,再去填充缺失值,先做标准化什么的,或者说还要注意一个变量的单位是不是要考虑量纲一致原则。量纲一致是在初学者或者说对于业务逻辑不太了解的分析师可能会犯的错误。这些都是需要严密结合业务逻辑和数据科学来仔细考量的问题。所以说数据分析师不能说只考虑数据或者数据分析的业务,一定要了解你所在领域的业务逻辑,落实到医学研究这个业务的逻辑就是临床问题、临床知识、临床经验。
当我们制定的数据处理方案满足通用性和鲁棒性之后,接下来该怎么办?接下来,如果我们还是用人工一个变量去按照上面的规则去处理的话,那我们所讨论的通用性和鲁棒性没有任何意义,我们在做一些无用功而已,所以要实现自动化。
真实研究的数据集是具备大数据特点的,就是海量、及时、多模态。它会一直实时产生变得更多,比如说那个医院信息管理系统每天都会有新的患者加入进来,然后穿戴设备传输回来的健康数据每天都会更新,那就算数据不更新,针对如此大量的数据集的预处理及预处理过程中的调试工作都不可能像是传统数据集那样使用,在海量和即时这两个特点的加持下,自动化是真实世界研究数据处理的最优选择。实现自动化才能同时兼顾效果和准确性,将满足了通用性和鲁棒性的预处理工作流设置好之后,不管这个研究样本的样本量或者变量再怎么增加,只要输入到这个流程中就可以了。如果面对大数据特征,使用于传统的one by one的方法,投入的人力成本和时间成本绝对是不可估量的。你作为一个项目经理来说的话,你不对人力和时间做去做管理,那肯定是一个不合格的项目经理。
CDA 10月校园助考补贴活动火热进行中,这是只有在校生才能薅的羊毛,赶紧冲冲冲!