将矩阵列表批量转换为回归公式的技术实现问询
批量生成回归公式的R实现
步骤1:模拟数据
先构造符合要求的myCombos列表(3个矩阵,每列对应一组自变量组合):
# 构造示例列表 myCombos <- list( mat1 = matrix(c("HPI_Y_ln", "Interbank_6M", "Loans_Total_ln", "CPI_Y", "GDP_Y", "Pop_Growth"), nrow = 3, ncol = 2), mat2 = matrix(c("HPI_Y_ln", "CPI_Y"), nrow = 2, ncol = 1), mat3 = matrix(c("Interbank_6M", "Loans_Total_ln", "Pop_Growth"), nrow = 3, ncol = 2) ) # 指定因变量 dep_var <- "Unemployment"
步骤2:定义公式生成函数
写一个简单函数,把一列自变量拼接成公式右侧,再和因变量组合:
build_formula <- function(var_col, dep_var) { rhs <- paste(var_col, collapse = " + ") as.formula(paste(dep_var, "~", rhs)) }
步骤3:用map批量生成公式
利用purrr包的嵌套map操作,遍历列表中所有矩阵的每一列:
library(purrr) # 按原列表结构生成嵌套公式列表 all_formulas <- myCombos %>% map(function(mat) { map(seq_len(ncol(mat)), ~ build_formula(mat[, .x], dep_var)) }) # 查看结果结构 str(all_formulas)
可选:展平公式列表
如果需要把所有公式合并成一个扁平列表,方便后续批量运行回归:
flat_formulas <- flatten(all_formulas) # 查看其中一个示例公式 flat_formulas[[1]] # 输出:Unemployment ~ HPI_Y_ln + Interbank_6M + Loans_Total_ln
说明
- 外层
map遍历myCombos中的每个矩阵 - 内层
map遍历当前矩阵的每一列,调用build_formula生成对应回归公式 - 生成的公式是
formula类型,可直接传入lm()等回归函数使用
内容的提问来源于stack exchange,提问作者user113156
相关产品推荐
相关产品推荐

