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

How to calculate P values in ridge regression in R?

以下是来自 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 

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

据我所知,MASS::lm.ridge 不会为您的系数计算 p 值。但是,您可以使用 ridge 包中的 linearRidge 函数。请参阅以下示例:

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 你会得到熟悉的外观 table 你的 p 值和显着性!