You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于N个合成数据集的LASSO回归:区分结构与非结构回归候选变量

解决方法

1. 提取真实结构变量列表

原始CSV的首行包含二进制标识(1代表该X变量是真实结构变量,0则不是),我们需要从每个数据集中提取这些信息,生成真实结构变量的名称列表:

# 遍历所有原始数据集,提取首行的结构变量标识
true_vars_list <- lapply(datasets, function(dataset_i) {
  # 首行第2到31列对应X1-X30的标识,转成数值型
  true_flags <- as.numeric(dataset_i[1, 2:31])
  # 筛选出标识为1的变量名称
  names(true_flags)[true_flags == 1]
})

2. 平行列表的匹配验证

现在true_vars_list和你已有的Variables.glmnet.LASSO.Selected就是完全平行的列表——两个列表的第N个元素,对应同一个数据集的真实结构变量和LASSO选中变量。

你可以直接通过索引对比,比如查看第一个数据集的结果:

# 第一个数据集的真实结构变量
true_vars_list[[1]]
# 第一个数据集LASSO选中的变量
Variables.glmnet.LASSO.Selected[[1]]

3. 批量计算变量选择性能指标(可选)

如果需要量化验证效果,可以用以下代码计算每个数据集的TP/FP/FN/TN,以及精度、召回率、F1值:

# 定义指标计算函数
get_selection_stats <- function(selected_vars, true_vars) {
  all_candidates <- paste0("X", 1:30)
  tp <- length(intersect(selected_vars, true_vars))
  fp <- length(setdiff(selected_vars, true_vars))
  fn <- length(setdiff(true_vars, selected_vars))
  tn <- length(setdiff(all_candidates, union(selected_vars, true_vars)))
  
  precision <- ifelse(tp + fp == 0, 0, tp / (tp + fp))
  recall <- ifelse(tp + fn == 0, 0, tp / (tp + fn))
  f1_score <- ifelse(precision + recall == 0, 0, 2 * precision * recall / (precision + recall))
  
  list(
    tp = tp, fp = fp, fn = fn, tn = tn,
    precision = round(precision, 3), recall = round(recall, 3), f1 = round(f1_score, 3)
  )
}

# 批量计算所有数据集的指标
performance_metrics <- mapply(get_selection_stats,
                              selected_vars = Variables.glmnet.LASSO.Selected,
                              true_vars = true_vars_list,
                              SIMPLIFY = FALSE)

# 查看前3个数据集的性能
head(performance_metrics, 3)

注意事项

  • 不要删除原始的datasets列表:之前的代码中dfs <- lapply(datasets, function(i) {i[-1:-3, ]})是为建模剔除了前3行,但提取真实变量需要用到原始数据集的首行,所以要保留datasets对象。
  • 顺序一致性:因为之前已经对paths_list做了排序,所以true_vars_list和Variables.glmnet.LASSO.Selected的顺序完全对应,无需额外调整。

内容的提问来源于stack exchange,提问作者Marlen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 04:37:58