内容来自:“小白学统计”微信公众号,感谢作者授权

医学预测模型可用的方法非常多,可谓眼花缭乱,随口就能说得上来的都有十几种,能用的至少几十种。 那么医学研究中的预测模型开发常用的方法到底有哪些,如何选择? 本文结合自己的经验说一下。 不当之处,请批评。

我个人认为,可以将医学预测模型方法分为三大类:

(1)回归模型:这里既可以是传统的回归模型,如logistic回归、线性回归、Poisson回归;也可以是考虑收缩技术( 或者叫做惩罚方法)的模型,如Lasso回归、弹性网络等。

(2)非参数模型: 如光滑样条、广义可加模型等。

(3)机器学习和深度学习技术: 如神经网络、分类树、支持向量机、随机森林、卷积神经网络等。

这种分类当然仁者见仁。 比如,机器学习和深度学习能不能归到一类,每个人有自己的不同观点,因为应用场景不大一样。 深度学习主要用于一些文本、图像等非数字的数据。

当然,无论如何,大家不用太关心这个分类。因为不会有人非得问你,你这个方法属于哪一类?大家需要更关心的是:我该选择哪种方法

很多临床医生以及很多公卫的学生现在都喜欢用机器学习方法,觉得听起来高大上。 这种心理无非就是觉得: 我用个大家都知道的回归分析,太土了,显不出我的水平。 我用个新颖的机器学习方法,大家觉得我水平高。

让我们仔细分析一下:首先,如果你是写文章或申课题,评审的都是专业的统计学家,专业的统计学家绝对不会因为你用神经网络而不用logistic回归,就觉得你水平更高。在专业统计学家眼中,不会觉得一种方法比另一种方法更好,每种方法都有自己的优缺点。当然,也许有时候恰好评审专家中没有统计学家,那另当别论。 其次,如果你是毕业论文,给你评审的专家什么方法没见过?强行为了用新方法而用,只会让评审专家觉得你太幼稚。

所以,无论在什么情形,没必要去追求所谓的高大上方法

那实际中如何选择呢? 先用一张概念图示意一下常见几种方法的解释度和灵活度(摘自James G,2021)。

打开网易新闻 查看精彩图片

没有任何一种方法是完美的。回归方法解释度很好,但灵活度不足;机器学习方法很灵活,但解释能力有限。

所以,其实答案取决于你自己。 你想侧重解释度还是侧重模型的拟合效果?如果你的目的只是为了建一个预测效果很好的模型,至于解释能力如何并不关心,这种情况下,可以考虑用机器学习(当然,我说是可以考虑,并不意味着一定可以用,实际能不能用还取决于其它条件,比如样本量够不够);如果你想开发一个在临床中应用的,让临床大夫也能很好理解的预测模型,那解释度就很重要,这时候建议首选考虑回归模型

事实上,机器学习为什么更加灵活,很大一部分原因是它比回归模型可以更好地处理非线性。回归模型(包括lasso)无法自动处理非线性问题,而在医学数据中,非线性并不少见。如果存在非线性而你又直接用回归模型,必然效果不好。但是这里还有一个契机是:如果你有一定的分析经验,依然可以通过各种方法在回归模型中解决非线性问题

比如下面这个例子,这是同一个连续变量的预测效果。 左图把变量直接纳入logistic回归,显示AUC只有0.6,而两层的神经网络则AUC达到了0.86。 很多人就会说,果然神经网络优于logistic回归! 事实上,不少论文就是这么做的,也是这么得出结论的。

打开网易新闻 查看精彩图片

然而再看右图,我仍然使用logistic回归,但是把该变量做了一个变换,同样还是这个变量,AUC也达到了0.86。 现在还能说logistic回归不如神经网络吗?

所以建议大家:

如果你用的就是常规的临床数值数据(而不是文本或图像等),如果预测变量与结局之间没有复杂的非线性关系,采用回归模型即可; 如果发现非线性关系,但是可以变换成线性的,可以考虑简单的非线性回归模型; 这类方法的解释度最高。

如果存在较为复杂非线性关系,可以考虑样条回归、光滑样条等技术,这类方法的解释度略优于神经网络。 但其实这类方法也不会把关系处理的太复杂,大多数还是相对简单的非线性关系。 因为如果非要搞得很复杂,解释性也就下降了,就不如直接用机器学习了。

只有那些真正关系很复杂或搞不清到底什么关系,可以考虑用机器学习方法机器学习并不是万能的,至少解释度就差了好多。尽管目前也有一些技术适当提高了解释度(如SHAP),但是相比之下,毕竟还是不如回归模型。

如果你是一名临床医生,我相信你开发一个预测模型的目的是为了应用,这种情况下,用回归模型会更合理,除非数据实在太复杂。 但根据我十多年超过千次的数据分析经验,通常数据没有那么复杂。

如果你是一名公共卫生、医学统计专业的学生,可能是为了写一个预测模型开发的毕业论文,所以你想用一些新的方法。但我仍然建议首选回归模型。原因在于:如果你用机器学习的方法,你或许在分析过程中学到了如何用R、python等实现,但你也许只学到了这些。除非你非常用心钻研其背后原理(据我了解这种人不多),否则其实你仍然只是学到了皮毛。还不如采用回归模型,具体学习分析过程中遇到的各种问题,如何解决的方法,也许会加深你对模型的理解。永远不要觉得哪种方法太简单了你不屑于用,没有一种方法是真正简单的,取决于你如何理解“学会”这两个字。能用软件出个结果就算是“学会”了这种方法了吗?

当然,虽然我的建议很明确,但仍需要根据具体数据、具体场景、以及你自己的研究目的来定。只是希望大家在医学预测模型开发应用这一领域,不要走偏。如果一个医学预测模型最终目的不是为了临床应用而生,那你开发的目的到底是什么?这个问题虽然简单,但是希望大家在模型开发前,都扪心自问一下,我们做这个预测模型是为了什么?是不是必须要做?

教程,30多篇R教程,以及更多科研教程!