我正在尝试使用lm.ridge
方法执行岭回归。我的问题是如何获得拟合模型的系数?我从调用中获得了不同的结果:
model$coef
coef(model)
哪个是正确的?另外,为什么我会通过调用得到不同的结果:
coef(model)
并查看第一个系数,vs。coef(model)[1]
?答案 0 :(得分:6)
正如?lm.ridge
所述(在描述返回对象的$coef
元素时)[强调添加]
coef:系数矩阵,'lambda'的每个值一行。 请注意,这些不是原始规模并且可供使用 通过'coef'方法。
具体而言,这意味着$coef
元素不适用于最终用户(“如果您必须要求......”)。 (如果您想了解$coef
是如何翻译的,请检查MASS:::coef.ridgelm
。)通常,最好使用coef()
之类的访问器方法(如果存在),而不是提取组件使用$
(或@
用于S4对象)返回对象的内容 - 正是出于这个原因。包裹作者提供coef()
方法是有原因的......
我无法复制你的第二个问题。使用?lm.ridge
中的模型,答案似乎完全相同,除了它们的打印精度......
> m1 <- lm.ridge(y ~ ., longley)
> coef(m1)
GNP Unemployed Armed.Forces Population
2946.85636017 0.26352725 0.03648291 0.01116105 -1.73702984
Year Employed
-1.41879853 0.23128785
> coef(m1)[1]
2946.856