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

如何统计R中Forward Selection逐步回归在58500数据集上的正确模型数

解决R中逐步向前回归模型匹配统计的问题

核心问题

现有统计代码因变量顺序不同,遗漏了变量组合一致的正确模型,导致结果偏小。解决关键是基于集合匹配而非顺序匹配来判断模型是否正确。

步骤实现

1. 准备真实模型参考数据

先整理每个数据集对应的真实变量集合,生成true_models数据框,包含:

  • n1-n4:与n_df一致的文件名标识
  • true_IV:该数据集真实模型的变量集合(字符向量格式,如c("varA", "varB"))

2. 合并所选模型与真实模型

# 按文件名标识合并两个数据框
merged_df <- merge(n_df, true_models, by = c("n1", "n2", "n3", "n4"), all.x = TRUE)

3. 定义集合匹配函数

用setequal()忽略变量顺序,判断所选模型与真实模型的变量集合是否完全一致:

is_correct_model <- function(selected, true) {
  # 处理空值情况
  if (is.null(selected) || is.null(true)) return(FALSE)
  # 集合相等则返回TRUE
  setequal(selected, true)
}

4. 标记正确模型

# 给每条数据添加是否正确的标记
merged_df$correct <- mapply(is_correct_model, merged_df$IV, merged_df$true_IV)

5. 按N-Factor统计正确数量

# 先添加N-Factor列(所选变量的个数)
merged_df$n_factor <- sapply(merged_df$IV, length)

# 统计3-15因子下的正确模型数
correct_stats <- merged_df %>%
  dplyr::filter(n_factor %in% 3:15) %>%
  dplyr::group_by(n_factor) %>%
  dplyr::summarise(correct_count = sum(correct))

6. 特殊情况处理

如果n_df$IV是逗号分隔的字符串(而非字符向量),先拆分转换:

merged_df$IV <- strsplit(merged_df$IV, ",")

验证

可以抽取4-Factor的正确模型验证结果:

merged_df %>%
  dplyr::filter(n_factor == 4, correct == TRUE)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 14:01:00