如何在R中基于向前选择结果运行选定变量的OLS模型?
自动构建向前选择后的OLS模型
方法一:字符串拼接生成公式
- 提取65个选定变量的名称
# 从65变量模型中筛选出选中的自变量(排除截距项) selected_vars <- names(training_set)[regfwd.summary$which[65, ]][-1]
regfwd.summary$which是一个逻辑矩阵,每行对应不同变量数量的模型,每列对应一个变量(第一列是截距)。取第65行中TRUE对应的列名,再去掉第一个截距项,就能得到所有选定的自变量。
- 拼接公式并运行模型
# 拼接成公式字符串 formula_text <- paste("y ~", paste(selected_vars, collapse = " + ")) # 转换为公式对象 final_formula <- as.formula(formula_text) # 运行OLS模型 fws_model <- glm(final_formula, data = training_set)
方法二:用reformulate函数简化操作
R自带的reformulate函数可以直接把变量列表转换成模型公式,步骤更简洁:
# 提取选定变量 selected_vars <- names(training_set)[regfwd.summary$which[65, ]][-1] # 直接生成公式并运行模型 fws_model <- glm(reformulate(selected_vars, response = "y"), data = training_set)
注意事项
- 确认
regfwd.summary$which的第65行对应65变量模型:可以通过regfwd.summary$nvmax查看模型支持的最大变量数,或用regfwd.summary$adjr2、regfwd.summary$bic等指标验证该行模型是否符合你的需求。 - 如果数据集里响应变量的名称不是
y,记得把代码中的"y"替换成实际名称。
内容的提问来源于stack exchange,提问作者TFT
相关产品推荐
相关产品推荐

