R语言 clogitL 1-提取物回归系数

hrysbysz  于 12个月前  发布在  Git
关注(0)|答案(1)|浏览(173)

我是一个R新手。我正在使用“clogitL 1”来运行一个正则化的条件logistic回归,用于一个匹配的病例对照研究,有1021个自变量(代谢物)。我无法提取回归系数。我试过summary(x)coef(x)coefficient(x)x$beta--它们都不起作用。我可以运行它,如果我在它后面加上“cv.clogitL1”,我可以提取交叉验证的估计系数,但不能提取原始模型的估计系数。下面是我的一些代码:

strata=sort(data.meta$MATCHED_NEW)
condlog <- clogitL1(y=data.meta$BCR, x=data.meta$ln_metab[, data.features ], strata,
  numLambda=100, minLambdaRatio=0.000001, alpha = 1.0)

字符串
“strata”是指示病例和对照配对的向量。“data.Meta$BCR”是指示病例或对照状态的向量。“data.meta$ln_metab”是以观测值为行、以代谢物水平为列的矩阵。“data.features”是指示哪些代谢物通过了几个降维过滤器的向量。
感谢任何建议。

olhwl3o2

olhwl3o21#

所以,我发现你的问题,而我正在寻找类似的答案,并在阅读从clogitL1帮助文件和谷歌在互联网上的一些随机的东西后,这是我拼凑起来的。我希望它能帮助别人。你运行的clogitL1函数的输出,是使用不同的lambda值多次运行模型的结果但是现在你需要运行第二部分,交叉验证步骤,来帮助你决定选择哪个lambda。
添加:

condlog_cv = cv.clogitL1(condlog)

字符串
会进行交叉验证

plot(condlog_cv)


我将生成一个很好的图,显示当你改变lambda时,偏差是如何变化的。你要寻找的是使偏差最小化的lambda值(即即使你删除了预测变量,也不会 * 松散地 * 改变模型的整体“性能”)。然而,可能有几个lambda值的性能可能 * 或多或少 * 大致相同(这就是误差条所显示的)所以我们真正想要的是对应于最少预测变量的lambda值(因此更简约的模型)在“最佳”的公差范围内典型地,这是1标准偏差规则,意味着产生在“最佳”模型的1标准偏差内的偏差的λ的任何值,同样好(因此如果lambda值对应的预测变量较少,则更好)。这些是垂直条之间显示的内容。
然后,您可以使用模型摘要提取lambda值和最终模型的系数,这些系数对应于绝对最小条件偏差或对应于1 SD内条件偏差最小变化的lambda。

# absolute minimum
summary(condlog_cv)$beta_minCV

# fewest # of non-zero predictors that performs essentially the same
summary(condlog_cv)$beta_minCV1se


输出将不会被标记,但将对应于您放入模型中的值(即位置1将是与您的数据特征1对应的beta系数)。
我希望我做得很好,我自己也在学习。

相关问题