我使用glmnet
包(https://cran.r-project.org/package=glmnet)在R中拟合二项式模型。我已经阅读了几个例子,包括package vignette,但我仍然对使用glmnet
和cv.glmnet
有疑问。
这是使用内置数据的包装插图中的最小示例:
# install.packages("glmnet")
library(glmnet)
data(BinomialExample)
# fit binomial glm
fit = glmnet(x, y, family = "binomial")
# 10 fold cross validation
cvfit = cv.glmnet(x, y, family = "binomial")
# extract optimal lambda value
l.min = cvfit$lambda.min
# extract model for optimal lambda from *fit*
coef(fit, s = l.min)
# extract model for optimal lambda from *cvfit*
coef(cvfit, s = "lambda.min")
# check if both are equal
all.equal(coef(fit, s = l.min), coef(cvfit, s = "lambda.min"))
# [1] TRUE
现在,该示例显示我们使用fit
从cvfit
和lambda.min
提取的系数完全相等。 lambda.min
值仅出现在cvfit
中。我们需要运行
fit = glmnet(x, y, family = "binomial")
一点都没?因为我们只能使用cv.glmnet
得到相同的结果(系数)。