如何在R中将MASS包逐步回归模型摘要保存为数据框?
解决逐步回归模型摘要转数据框的问题
报错原因是summary(step.model)返回的对象里包含lm类的子元素(比如$model),直接用unclass转数据框时,R无法把lm对象转换成数据框,所以抛出错误。我们可以针对性提取你需要的系数、t值和R²,具体操作如下:
1. 提取系数与对应t值
summary(step.model)$coefficients本身是一个矩阵,直接转成数据框就能拿到系数、标准误、t值和P值:
# 提取系数矩阵并转成数据框 coef_df <- as.data.frame(summary(step.model)$coefficients, check.names = FALSE) # 可选:重命名列名让结果更直观 colnames(coef_df) <- c("系数", "标准误", "t值", "P值") # 把行名转为单独的变量列(可选) coef_df$变量 <- rownames(coef_df) rownames(coef_df) <- NULL # 调整列顺序 coef_df <- coef_df[, c("变量", "系数", "标准误", "t值", "P值")]
2. 提取模型R²值
从摘要对象里直接提取R²和调整后R²,整理成数据框:
r_sq_df <- data.frame( 变量 = c("R²", "调整后R²"), 系数 = c(summary(step.model)$r.squared, summary(step.model)$adj.r.squared), 标准误 = NA, t值 = NA, P值 = NA, stringsAsFactors = FALSE )
3. 合并最终结果(可选)
如果需要把系数表和R²结果合并成一个数据框,用rbind拼接即可:
final_summary <- rbind(coef_df, r_sq_df) # 查看结果 print(final_summary)
完整示例代码
假设你已经通过MASS包得到了step.model对象,完整运行代码如下:
library(MASS) # 提取系数与t值 coef_df <- as.data.frame(summary(step.model)$coefficients) colnames(coef_df) <- c("系数", "标准误", "t值", "P值") coef_df$变量 <- rownames(coef_df) rownames(coef_df) <- NULL coef_df <- coef_df[, c("变量", "系数", "标准误", "t值", "P值")] # 提取R² r_sq_df <- data.frame( 变量 = c("R²", "调整后R²"), 系数 = c(summary(step.model)$r.squared, summary(step.model)$adj.r.squared), 标准误 = NA, t值 = NA, P值 = NA, stringsAsFactors = FALSE ) # 合并结果 final_summary <- rbind(coef_df, r_sq_df) print(final_summary)
内容的提问来源于stack exchange,提问作者Matt Jones
相关产品推荐
相关产品推荐

