clogitL1 - 提取回归系数

问题描述 投票:0回答:1

我是 R 新手。我正在使用“clogitL1”运行正则化条件逻辑回归,以进行具有 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”是一个向量,指示哪些代谢物通过了多个降维过滤器。

感谢任何建议。

r conditional-statements logistic-regression coefficients regularized
1个回答
0
投票

所以,我在寻找类似的答案时发现了你的问题,在阅读了一些 clogitL1 帮助文件并在互联网上谷歌搜索一些随机内容后,这就是我拼凑起来的内容。我希望它能帮助某人。您运行的 clogitL1 函数的输出是使用不同的 lambda 值(预测变量的惩罚参数)多次运行模型的结果。但现在您需要运行第二部分,即交叉验证步骤,以帮助您决定选择哪个 lambda。

添加:

condlog_cv = cv.clogitL1(condlog)

将运行交叉验证。

plot(condlog_cv)

将产生一个很好的图形,显示当您更改 lambda 时偏差如何变化。您正在寻找的是最小化偏差的 lambda 值(即,即使您删除了预测变量,也不会改变模型的整体“性能”松散)。然而,可能有几个 lambda 值可能“或多或少”表现大致相同(这就是误差线所示的内容),所以我们真正想要的是对应于最少预测变量的 lambda 值(因此更简约)模型)在“最佳”(即最低偏差)模型的公差范围内。通常,这是 1 个标准差规则,意味着产生“最佳”模型 1 个标准差以内的偏差的任何 lambda 值都同样良好(因此,如果 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 系数)。

我希望我做得很好,我正在学习自己。

© www.soinside.com 2019 - 2024. All rights reserved.