【问题标题】:How to perform lm.ridge summary?如何执行 lm.ridge 总结?
【发布时间】:2014-10-14 15:32:25
【问题描述】:

我想知道有没有办法在 R 中输出岭回归的摘要? 这是lm.ridge{MASS} 函数的结果。

对于标准线性模型,您只需执行summary(lm_model),但是岭回归模型呢? 感谢您的帮助。

【问题讨论】:

    标签: r regression lm summary


    【解决方案1】:

    我刚刚在我的broom 包中添加了一个总结(或更准确地说,tidies"ridgelm" 对象的方法。这采用两个 S3 泛型的形式:tidyglance。您可以使用devtools::install_github("dgrtwo/broom") 安装它(尽管您需要先安装devtools)。

    作为一个例子,让我们设置一个岭回归:

    library(MASS)
    names(longley)[1] <- "y"
    fit <- lm.ridge(y ~ ., longley, lambda = seq(0.001, .05, .001))
    

    tidy 函数提供了一个数据框,显示 lambda 和估计项的每个组合:

    library(broom)
    td <- tidy(fit)
    head(td)
    ##   lambda    GCV term estimate
    ## 1  0.001 0.1240  GNP    23.02
    ## 2  0.002 0.1217  GNP    21.27
    ## 3  0.003 0.1205  GNP    19.88
    ## 4  0.004 0.1199  GNP    18.75
    ## 5  0.005 0.1196  GNP    17.80
    ## 6  0.006 0.1196  GNP    16.99
    

    虽然glance 函数创建了一个单行摘要,特别是通过各种方法对 lambda 的选择:

    g <- glance(fit)
    g
    ##       kHKB     kLW lambdaGCV
    ## 1 0.006837 0.05267     0.006
    

    这很有用,因为它可以轻松地自己绘制和探索数据,而不是依赖 MASS 的绘图仪:

    library(ggplot2)
    ggplot(td, aes(lambda, estimate, color = term)) + geom_line()
    

    # plot of GCV versus lambda
    ggplot(td, aes(lambda, GCV)) + geom_line() +
        geom_vline(xintercept = g$lambdaGCV, col = "red", lty = 2)
    

    有关这些方法的更多信息,请参阅?ridgelm_tidiers,或查看包的小插图以了解有关tidyglance 方法的更多信息。

    【讨论】:

    • 你可以使用内置函数'select'代替glance - 它的工作原理是一样的。 ggplot 函数的工作原理与常规 plot.lmridge 相同(当然看起来更简洁)。
    • @MarcinKosinski: select 工作方式不同,因为它打印选定的值而不是返回它们(因此无法保存它们,提取它们,例如,将它们组合起来,或将它们添加到图表中)。 plot.ridgelm 生成了类似的图表,但值得注意的是它没有附带图例或选择颜色的方法。 (实际上,由于plot.ridgelm 不会将其... 传递给matplot,因此您完全无法自定义它。
    • 好的,我明白了。谢谢:)
    【解决方案2】:

    ridgelm 类没有 summary 方法:

    > methods(class = 'ridgelm')
    [1] coef.ridgelm*   plot.ridgelm*   print.ridgelm*  select.ridgelm*
    

    这个摘要应该返回什么? 您可以从 ridgelm-object 中提取您需要的所有信息。

    但是,您也可以为自己的目的编写自己的摘要方法(首先检查summary.lm() 的代码)。 如果您对它感到满意,可以将其发送给 MASS 的维护者。

    【讨论】:

    • 你真的认为他们会关心并在他们的包中发布这个功能吗?
    • 您可能会收到有趣的回复。一般来说,Ripley 教授会在他认为合适的时候加入支持职能,所以他没有这样做可能是有原因的。
    【解决方案3】:

    你可以使用我来自 CRAN 的 lmridge 包。

    【讨论】:

    • 我希望能通过一个简短的用例以及我可以参考的文献来扩展答案!提前致谢。
    猜你喜欢
    • 1970-01-01
    • 2022-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多