到底什么是LASSO,请看下面的推文
松哥聊聊落地层面的事情。
我们在建模时,可能存在两类问题:一是自变量太多,我们的样本量无法驾驭。二是,我们的自变量存在着很多相关性指标;
我们一般建模的常规建模策略“先单后多”,确实是一种行之有效的模型筛选方法,虽然目前也有一些诟病,但是目前预测模型类文章还是主流运用的方法。其对样本量不足有一定的抗性,毕竟经过单因素的筛选,多因素时,自变量数已经得到一定的缩减,此时,从样本量的角度,模型应该已经能够驾驭。
如果此时,多因素分析时,已经能够满足,10EPV的原则,那么样本量的问题基本就可以解决了。
但是当我们面临大量的自变量,比如基因数据,动则几百上千个自变量X,如果按照先单后多的策略,首先工作量巨大,另即使筛选后的自变量,也就是多因素PK的自变量,很可能样本量还是不能驾驭的。
那么此时,就体现出Lasso的优势了。
我们建模时,Lasso有两个用途,一是帮助我们进行单因素筛选,也就是利用Lasso帮助我们筛选变量,筛选出来后,继续用传统方法进行多因素PK;另一个就是,直接利用Lasso筛选后的模型作为最终的模型,进行后续的模型验证。
如下松哥演示了38个自变量,Lassologit的过程。下图可见模型遍历的过程,在不同惩罚系数Lambda的情况下,展现了各自变量进入模型的动态过程。
并且推荐了最小EBIC时的Lambda,下图红色框中,有*标记,也就是在这个模型有最小的EBIC。
也可以通过路径图,展现变量压缩的过程
那么,如果我就按照这个最小的EBIC去选择Lambda,然后去构建模型,那个模型是什么样子的呢?
如果您采用Stata的话,只要输入命令
lassologit,lic(ebic)
就可以得到最优的模型。
上图左边就是最优模型。在38个自变量中选择出来的12个自变量,中间红色框,就是Lassologit构建模型的系数。
然而,故事到此并未结束,为了验证lassologit结果的稳健性,往往我们还要进行交叉验证,也就是cvlassologit
上图就是交叉验证时,得到的交叉验证图,该图中红色是最小误差时ln(Lambda)所在的位置或取值,虚线为1se(1个标准误)的位置,通常我们发文章时,取的位置往往是1se,而不是lopt。
注意,lassologit也可以直接预测概率P,获得概率P值后,就可以进行后续的区分度、校准度和临床适用度的评价了。
也可以根据lassologit筛选出来的变量,再构建常规的logistic模型,然后预测概率P。甚至可以两种方法都做,然后对后续的两个P的临床表现进行评价。
联系客服