如何在R中计算岭回归的P值?

4
以下是MASS包中lm.ridge函数的示例:
> data(longley) # not the same as the S-PLUS dataset
> names(longley)[1] <- "y"
> lm.ridge(y ~ ., longley)
                        GNP    Unemployed  Armed.Forces    Population          Year      Employed 
2946.85636017    0.26352725    0.03648291    0.01116105   -1.73702984   -1.41879853    0.23128785 
> plot(lm.ridge(y ~ ., longley,
+               lambda = seq(0,0.1,0.001)))
> select(lm.ridge(y ~ ., longley,
+                lambda = seq(0,0.1,0.0001)))
modified HKB estimator is 0.006836982 
modified L-W estimator is 0.05267247 
smallest value of GCV  at 0.0057 

enter image description here

我该如何计算P值或置信区间,就像我可以在普通线性回归摘要中获得的那样。


那是一个适合在Cross Validated上提问的问题。 - Roland
1个回答

6
我认为MASS::lm.ridge函数不会计算系数的p值。你可以使用ridge包中的linearRidge函数,该函数可以计算p值。请参考以下示例:
data(longley) 
names(longley)[1] <- "y"

library(ridge)
mymod <- linearRidge(y ~ ., longley)

> summary(mymod)

Call:
linearRidge(formula = y ~ ., data = longley)


Coefficients:
               Estimate Scaled estimate Std. Error (scaled) t value (scaled) Pr(>|t|)    
(Intercept)  -1.247e+03              NA                  NA               NA       NA    
GNP           4.338e-02       1.670e+01           3.689e+00            4.526  6.0e-06 ***
Unemployed    1.184e-02       4.286e+00           2.507e+00            1.710   0.0873 .  
Armed.Forces  1.381e-02       3.721e+00           1.905e+00            1.953   0.0508 .  
Population   -2.831e-02      -7.627e-01           5.285e+00            0.144   0.8853    
Year          6.566e-01       1.211e+01           2.691e+00            4.500  6.8e-06 ***
Employed      6.745e-01       9.175e+00           4.996e+00            1.836   0.0663 .  
---
Signif. codes:  0***0.001**0.01*0.05 ‘.’ 0.1 ‘ ’ 1

Ridge parameter: 0.01046912, chosen automatically, computed using 2 PCs

Degrees of freedom: model 3.67 , variance 3.218 , residual 4.123 

使用summary,您将获得熟悉的表格,其中包含您的p值和显著性!


这正是我想要的。谢谢。 - rnso
如何从这个包中获取GCV,就像使用lm.ridge一样? - Sideshow Bob
据我所知,linearRidge不会计算广义交叉验证指标。而且你为什么需要它呢?你可以使用任何其他软件包来执行任何类型的交叉验证(例如使用caret软件包)。 - LyzandeR
有人知道为什么ridge已经从CRAN存储库中删除了吗?(https://cran.r-project.org/web/packages/ridge/index.html) - Arne
1
@Arne和其他晚来的朋友们,ridge包已经在去年被Steffen Moritz采纳并重新添加到CRAN中。 - Russell Richie

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接