批量执行单变量线性回归时在结果中显示RMSE的方法
解决方法:给批量线性回归结果添加RMSE指标
你可以通过在回归处理流程中计算RMSE,并将其与系数表整合输出,来补全缺失的指标。RMSE(均方根误差)可直接从线性回归的summary结果中提取,或是通过残差计算,以下是修改后的完整代码:
my.data <- read.csv("filename.csv", header=TRUE) variables <- names(my.data[1:30]) my.list <- lapply(variables, function(var){ formula <- as.formula(paste("gene ~", var)) res.linear <- lm(formula, data = my.data) res_summary <- summary(res.linear) # 提取RMSE:summary中的sigma是残差标准误,等价于RMSE的无偏估计 rmse <- res_summary$sigma # 提取包含Estimate、Std.Error等的系数汇总表 coef_table <- res_summary$coefficients # 将变量名、系数表、RMSE打包成列表 list(变量名 = var, 系数表 = coef_table, RMSE = rmse) }) # 循环打印每个回归的完整结果 for (result in my.list) { cat("--- 因变量gene与自变量", result$变量名, "的回归结果 ---\n") print(result$系数表) cat("RMSE值:", round(result$RMSE, 4), "\n\n") }
代码说明:
res_summary$sigma:直接调用线性回归summary结果中的sigma值,这是统计学中常用的RMSE无偏估计(计算逻辑为sqrt(残差平方和/(样本量-参数个数)))。如果需要原始均方根误差(即sqrt(平均残差平方)),可替换为sqrt(mean(residuals(res.linear)^2))。- 修改后的
my.list每个元素都包含变量名、系数表和RMSE,通过循环遍历能清晰展示每个回归的完整结果。
示例输出:
--- 因变量gene与自变量variable1的回归结果 --- Estimate Std. Error t value Pr(>|t|) (Intercept) 23.367075060 4.46417498 5.2343547 3.017975e-06 variable1 0.008312962 0.04747918 0.1750865 8.616917e-01 RMSE值: 12.3456 --- 因变量gene与自变量variable2的回归结果 --- Estimate Std. Error t value Pr(>|t|) (Intercept) 5.347246142 1.48314397 3.605345 0.0006984638 variable2 0.008342116 0.01577413 0.528848 0.5991611451 RMSE值: 4.5678
内容的提问来源于stack exchange,提问作者LilyL
相关产品推荐
相关产品推荐

