繁体   English   中英

R 中 cv.glmnet 拟合回归的变化系数

[英]Change coefficient of cv.glmnet fitted regression in R

我知道如何从 cv.glmnet 中“提取”系数。 但是有没有办法改变安装的 object 的系数? 我知道这是一种 hack,但我想手动调整适合的 object 的系数,只是为了我自己的实验。

从 glmnet 中提取系数变量名称到 data.frame

glmnet 的系数存储在$glmnet.fit$beta下:

library(glmnet)
library(Matrix)

fit = cv.glmnet(x=as.matrix(mtcars[,-1]),y=mtcars[,1])

head(fit$glmnet.fit$beta)
6 x 79 sparse Matrix of class "dgCMatrix"
   [[ suppressing 79 column names ‘s0’, ‘s1’, ‘s2’ ... ]]
                                                                        
cyl  . -0.01192151 -0.1447790 -0.2658654 -0.376195 -0.4770942 -0.5686616
disp .  .           .          .          .         .          .        
hp   .  .           .          .          .         .          .        
drat .  .           .          .          .         .          .        
wt   . -0.45776130 -0.7006176 -0.9218541 -1.123436 -1.3065806 -1.4739808
qsec .  .           .          .          .         .          .        

它是每个 lambda 测试的一列,当您调用coefficients()时,默认情况下您拉出对应于fit$lambda.1se的列。 假设我们要更改该列:

coefficients(fit,s=fit$lambda.1se)

11 x 1 sparse Matrix of class "dgCMatrix"
                       1
(Intercept) 33.940487806
cyl         -0.843038418
disp         .          
hp          -0.006965929
drat         .          
wt          -2.365917424
qsec         .          
vs           .          
am           .          
gear         .          
carb         .       

wh = which(fit$lambda==fit$lambda.1se)
fit$glmnet.fit$beta[,wh] = runif(nrow(fit$glmnet.fit$beta))

coefficients(fit,s=fit$lambda.1se)

11 x 1 sparse Matrix of class "dgCMatrix"
                      1
(Intercept) 33.94048781
cyl          0.45636267
disp         0.28286532
hp           0.04186184
drat         0.55084730
wt           0.35273817
qsec         0.96165338
vs           0.79227125
am           0.01036681
gear         0.47738589
carb         0.17170791

其他列和截距保持不变:

11 x 1 sparse Matrix of class "dgCMatrix"
                      1
(Intercept) 36.38102033
cyl         -0.87610600
disp         .         
hp          -0.01377978
drat         .         
wt          -2.75934250
qsec         .         
vs           .         
am           0.16806977
gear         .         
carb        -0.01384960

这样做真的很奇怪。 如果您想更改系数以进行预测,您可以随时拉出系数,更改它们并再次将它们与您的数据矩阵相乘。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM