【发布时间】:2014-10-14 15:32:25
【问题描述】:
我想知道有没有办法在 R 中输出岭回归的摘要?
这是lm.ridge{MASS} 函数的结果。
对于标准线性模型,您只需执行summary(lm_model),但是岭回归模型呢?
感谢您的帮助。
【问题讨论】:
标签: r regression lm summary
我想知道有没有办法在 R 中输出岭回归的摘要?
这是lm.ridge{MASS} 函数的结果。
对于标准线性模型,您只需执行summary(lm_model),但是岭回归模型呢?
感谢您的帮助。
【问题讨论】:
标签: r regression lm summary
我刚刚在我的broom 包中添加了一个总结(或更准确地说,tidies)"ridgelm" 对象的方法。这采用两个 S3 泛型的形式:tidy 和 glance。您可以使用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,或查看包的小插图以了解有关tidy 和glance 方法的更多信息。
【讨论】:
select 工作方式不同,因为它打印选定的值而不是返回它们(因此无法保存它们,提取它们,例如,将它们组合起来,或将它们添加到图表中)。 plot.ridgelm 生成了类似的图表,但值得注意的是它没有附带图例或选择颜色的方法。 (实际上,由于plot.ridgelm 不会将其... 传递给matplot,因此您完全无法自定义它。
ridgelm 类没有 summary 方法:
> methods(class = 'ridgelm')
[1] coef.ridgelm* plot.ridgelm* print.ridgelm* select.ridgelm*
这个摘要应该返回什么? 您可以从 ridgelm-object 中提取您需要的所有信息。
但是,您也可以为自己的目的编写自己的摘要方法(首先检查summary.lm() 的代码)。
如果您对它感到满意,可以将其发送给 MASS 的维护者。
【讨论】:
你可以使用我来自 CRAN 的 lmridge 包。
【讨论】: