🔧 tool

相关软件(R代码)

```r # install.packages("glmnet") library(glmnet) # 模拟高维数据 set.seed(123) n <- 100 p <- 500 X <- matrix(rnorm(n * p), n, p) # 真实稀疏系数 beta_true <- c(rep(5, 5), rep(-3, 5), rep(0, p - 10)) Y <- X %*% bet...

📖 定义

# install.packages("glmnet")
library(glmnet)
# 模拟高维数据
set.seed(123)
n <- 100
p <- 500
X <- matrix(rnorm(n * p), n, p)
# 真实稀疏系数
beta_true <- c(rep(5, 5), rep(-3, 5), rep(0, p - 10))
Y <- X %*% beta_true + rnorm(n, sd = 2)
# 交叉验证选择最优lambda
cv_fit <- cv.glmnet(X, Y, alpha = 1, nfolds = 10)
plot(cv_fit)
# 提取LASSO系数
lasso_coef <- as.matrix(coef(cv_fit, s = "lambda.1se"))  # 更简洁的模型
selected_vars <- which(lasso_coef[-1] != 0)
cat("选中的变量数:", length(selected_vars), "\n")
cat("选中的变量:", selected_vars, "\n")
cat("真实非零变量:", which(beta_true != 0), "\n")
# 岭回归
cv_ridge <- cv.glmnet(X, Y, alpha = 0)
ridge_coef <- coef(cv_ridge, s = "lambda.min")
# Elastic Net(LASSO和Ridge的折中)
cv_en <- cv.glmnet(X, Y, alpha = 0.5)

2.4.2 变量筛选