如何在Julia中实现线性回归并获取标准差与决定系数R²?
解决方案
1. 基于GLM.jl实现所需指标
GLM.jl虽然官方示例没直接展示所有指标,但通过内置函数或简单推导就能获取你需要的全部内容:
- 斜率(角系数)/线性系数:用
coef()函数直接提取回归模型的系数,返回数组的第一个值是截距,后续值对应各自变量的斜率。using GLM, DataFrames df = DataFrame(X = 1:10, Y = 2 .* (1:10) .+ randn(10)) model = lm(@formula(Y ~ X), df) coefs = coef(model) # 索引1是截距,索引2是X的斜率 - 决定系数R²:GLM.jl v1.8及以上版本支持直接调用
r2()函数;也可以手动计算:1 - deviance(model)/nulldeviance(model)# 直接调用内置函数 r² = r2(model) # 手动计算方式 r²_manual = 1 - deviance(model)/nulldeviance(model) - 标准差:
- 残差的标准差:用
sqrt(deviance(model)/dof_residual(model))计算 - 回归系数的标准误:用
stderror(model)直接获取
# 残差标准差 residual_std = sqrt(deviance(model)/dof_residual(model)) # 系数标准误 coef_stderr = stderror(model) - 残差的标准差:用
2. 更便捷的工具包选项
如果想要更直观的指标输出,可以搭配专门的工具包:
- RegressionTables.jl:能直接生成包含系数、R²、残差标准差、样本量等的标准化回归表格,无需手动拼接结果
using RegressionTables regtable(model; stats = [:r2, :nobs, :residual_std])
结论
完全不需要自行编写全部函数,GLM.jl本身就可以覆盖所有需求;如果追求更便捷的输出格式,搭配RegressionTables.jl这类工具包即可。
内容的提问来源于stack exchange,提问作者João Vitor Vieira Flauzino
相关产品推荐
相关产品推荐

