使用 glmet 包对 GLM 进行惩罚
Penalized GLM using the glmet - package
由于我有很多解释变量,我想对多项式logit模型进行惩罚估计。使用 glmnet 包,我将按如下方式进行:
library(glmnet)
data(MultinomialExample)
cvfit=cv.glmnet(x, y, family="multinomial", type.multinomial = "grouped", parallel = TRUE)
plot(cvfit)
coef(cvfit, s = "lambda.min")
从执行多项式 logit 回归的其他包中,我知道输出 K-1 个因变量的 K-1 系数,因为其中一个是所谓的参考类别。
然而,coef(cvfit, s = "lambda.min")
给出了每个类别的系数,这让我很困惑:
$`1`
31 x 1 sparse Matrix of class "dgCMatrix"
1
(Intercept) 0.015885341
V1 0.051848049
V2 -0.340036374
V3 0.421616900
....
$`2`
31 x 1 sparse Matrix of class "dgCMatrix"
1
(Intercept) -0.017214370
V1 -0.329369991
V2 -0.145053512
V3 -0.160609561
.......
$`3`
31 x 1 sparse Matrix of class "dgCMatrix"
1
(Intercept) 0.001329029
V1 0.277521942
.......
所以基本上:
你知道如何解释输出吗?
你知道我如何获得类别 2 和 3 的系数吗?假设 1 是参考类别?
查看 KH Kim here 的回答。 His/her 代码显示了如何在 glmnet 的输出和更常见的格式之间切换,例如multinom()
来自 nnet
。
由于我有很多解释变量,我想对多项式logit模型进行惩罚估计。使用 glmnet 包,我将按如下方式进行:
library(glmnet)
data(MultinomialExample)
cvfit=cv.glmnet(x, y, family="multinomial", type.multinomial = "grouped", parallel = TRUE)
plot(cvfit)
coef(cvfit, s = "lambda.min")
从执行多项式 logit 回归的其他包中,我知道输出 K-1 个因变量的 K-1 系数,因为其中一个是所谓的参考类别。
然而,coef(cvfit, s = "lambda.min")
给出了每个类别的系数,这让我很困惑:
$`1`
31 x 1 sparse Matrix of class "dgCMatrix"
1
(Intercept) 0.015885341
V1 0.051848049
V2 -0.340036374
V3 0.421616900
....
$`2`
31 x 1 sparse Matrix of class "dgCMatrix"
1
(Intercept) -0.017214370
V1 -0.329369991
V2 -0.145053512
V3 -0.160609561
.......
$`3`
31 x 1 sparse Matrix of class "dgCMatrix"
1
(Intercept) 0.001329029
V1 0.277521942
.......
所以基本上:
你知道如何解释输出吗?
你知道我如何获得类别 2 和 3 的系数吗?假设 1 是参考类别?
查看 KH Kim here 的回答。 His/her 代码显示了如何在 glmnet 的输出和更常见的格式之间切换,例如multinom()
来自 nnet
。