Julia和StatsModels:打印结果不包含标题行(StatsModels.DataFrameRegressionModel {...})

时间:2018-06-19 13:02:16

标签: regression julia

我使用JuliaGLMStatsModels进行线性回归并打印结果,这些结果直接包含在研究报告中。该打印输出包括带有对象类型的标题行,这是报表中的干扰因素。例如,这段代码:

using GLM, StatsModels, DataFrames

df = DataFrames.DataFrame(a = rand(10), b = rand(10))

f = fit(LinearModel, @formula(a ~ b), df)

println(f)

打印:

StatsModels.DataFrameRegressionModel{GLM.LinearModel{GLM.LmResp{Array{Float64,1}},GLM.DensePredChol{Float64,Base.LinAlg.Cholesky{Float64,Array{Float64,2}}}},Array{Float64,2}}

Formula: a ~ 1 + b

Coefficients:
             Estimate Std.Error  t value Pr(>|t|)
(Intercept)  0.238502  0.224529  1.06223   0.3191
b            0.333053  0.366105 0.909721   0.3896

我可以通过将对象转换为字符串并在换行符处分割来避免第一行:

f2 = split(string(f), "\n")
for i in 2:length(f2)
    println(f2[i])
end

然后我得到:

Formula: a ~ 1 + b

Coefficients:
             Estimate Std.Error  t value Pr(>|t|)
(Intercept)  0.238502  0.224529  1.06223   0.3191
b            0.333053  0.366105 0.909721   0.3896

但这很丑陋,而且容易出错。在GLM documentation of methods applied to a fit object中,我没有找到任何方法或参数。有没有人有一种更清洁的方式?

1 个答案:

答案 0 :(得分:2)

在评论中进行讨论。如果只需要获取模型系数的摘要,请写:

julia> coeftable(f)
               Estimate Std.Error   t value Pr(>|t|)
(Intercept)    0.337666  0.205716   1.64142   0.1393
b            -0.0887478  0.378739 -0.234324   0.8206