如何对R语言lm回归的summary输出按p值等指定列排序并解决报错
报错原因
colnames()函数用法错误:该函数的第二个参数为逻辑类型的do.NULL,你传入了自定义列名的字符串向量,参数类型不匹配触发了逻辑值相关报错。若要修改列名,需对colnames()的返回值直接赋值,写法为colnames(对象) <- 新列名向量。- 取值路径错误:lm拟合生成的模型对象本身没有
pvalue属性,回归系数、标准误、t值、p值等统计结果都存储在summary(lm.fit)$coefficients矩阵中,需要先提取该矩阵再做后续处理。
实现按p值排序的完整代码
# 拟合线性回归模型 lm.fit <- lm(TARGET ~ ., train) # 提取系数统计结果转为数据框 coef_df <- as.data.frame(summary(lm.fit)$coefficients) # 自定义列名 colnames(coef_df) <- c("Estimate", "StdError", "tvalue", "pvalue") # 将行名存储的变量名转为单独的Predictor列 coef_df$Predictor <- rownames(coef_df) # 按p值升序排序(如果需要降序排列,将decreasing改为TRUE即可) coef_sorted <- coef_df[order(coef_df$pvalue, decreasing = FALSE), ] # 调整列顺序,将变量名列放在最前 coef_sorted <- coef_sorted[, c("Predictor", "Estimate", "StdError", "tvalue", "pvalue")] # 可选操作:如果不需要展示截距项,运行以下代码删除 # coef_sorted <- coef_sorted[coef_sorted$Predictor != "(Intercept)", ]
内容的提问来源于stack exchange,提问作者Kirsten
相关产品推荐
相关产品推荐

