工作示例来自www.example.com https://glmnet.stanford.edu/articles/glmnet.html#multinomial-regression-family-multinomial-:
data(MultinomialExample)
x <- MultinomialExample$x
y <- MultinomialExample$y
cvfit <- cv.glmnet(x, y, family = "multinomial")
cvfit
返回:
Call: cv.glmnet(x = x, y = y, family = "multinomial")
Measure: Multinomial Deviance
Lambda Index Measure SE Nonzero
min 0.009791 35 1.409 0.05611 14
1se 0.022619 26 1.455 0.04132 9
现在我想提取9个非零系数。不过:
sum(matrix(coef(cvfit)$'1') != 0)
sum(matrix(coef(cvfit)$'2') != 0)
sum(matrix(coef(cvfit)$'3') != 0)
返回10、12、10。此外:
length(Reduce(intersect,
list(rownames(coef(cvfit)$'1')[matrix(coef(cvfit)$'1') != 0],
rownames(coef(cvfit)$'2')[matrix(coef(cvfit)$'2') != 0],
rownames(coef(cvfit)$'3')[matrix(coef(cvfit)$'3') != 0])))
返回1.
对于lambda.1se,Nonzero = 9代表什么?当type.multinomial = "ungrouped"
(当family = "multinomial"
时默认设置为cv.glmnet()
)时,我如何恢复这些变量名和相应的系数?
谢谢
2条答案
按热度按时间y0u0uwnf1#
退货:
guicsvcw2#
从我所能告诉的计算可能是如下:
在您的情况下,其中两个组有9个非零系数(不包括截距),另外10个组有9个非零系数,因此报告9个。
一种确定的方法是检查代码-但我没有这样做。