大型基因数据集上的 Logistic Lasso,特别是通过 R 中的 Knockoff 包

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

这个问题可能处于 CrossValidated 和 StackOverflow 之间的恐怖谷中,因为我试图在正确执行 R 包的情况下理解 R 包中函数的方法。

数据为基因表达量;有数千个变量。结果是一个二元变量。

我已经设法从

glmnet
获得了一个后勤套索,但我被要求使用
knockoff
包再次这样做:https://cran.r-project.org/web/packages/knockoff/index .html

问题是,如果我正确理解了这些小插图,那么包中的选择是(a)假设响应变量是正态变量(不是真的哈哈)或(b)预先指定分布、mu 和 sigma预测因子。也许这是我缺乏经验的表现,但我不相信这个数据集可以用于这些事情。不过,那些神秘地指派我执行此任务的人坚称该软件包适用于后勤套索。

我错过了什么吗?如何使用

knockoff
对海量数据集进行逻辑套索?

r logistic-regression large-data lasso-regression
1个回答
0
投票

我发现这很难解决,但我认为下面的代码应该与逻辑套索模型一起使用。我在

stat.lasso_coefdiff
包中找到了
knockoff
函数,我认为它在内部构建了一个逻辑套索模型,然后通过比较原始预测器和仿冒预测器的系数来计算仿冒统计数据。

library(knockoff)
library(glmnet)
library(mlbench)
data("PimaIndiansDiabetes2", package = "mlbench")
df <- na.omit(PimaIndiansDiabetes2)

# Prepare the example data
X <- as.matrix(df[, -ncol(df)])
y <- ifelse(df$diabetes == "pos", 1, 0)

# Create knockoffs
Xknockoffs <- knockoff::create.fixed(X)
colnames(Xknockoffs$Xk) <- paste0(colnames(X), "_knockoff")

# Add knockoffs to original predictors
X_full <- cbind(X, Xknockoffs$Xk)

# Select variables
selected_vars <- knockoff::knockoff.filter(X_full, y, fdr=0.5, statistic=knockoff::stat.lasso_coefdiff)

使用我的示例数据,我只能通过使错误发现率 (

fdr
) 相当高来实际选择一些变量。我不确定合适的值是什么。这可能取决于您的数据,所以我建议先尝试使用较低的值,也许是 0.1。

希望有帮助

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