是否可以为套索回归模型和其他参数仅部分进入方程的正则化模型计算 AIC 或 BIC 值。如何确定自由度?
我正在使用 R 将套索回归模型与包中的glmnet()
函数拟合glmnet
,我想知道如何计算模型的 AIC 和 BIC 值。通过这种方式,我可以将值与没有正则化的模型进行比较。这可能吗?
是否可以为套索回归模型和其他参数仅部分进入方程的正则化模型计算 AIC 或 BIC 值。如何确定自由度?
我正在使用 R 将套索回归模型与包中的glmnet()
函数拟合glmnet
,我想知道如何计算模型的 AIC 和 BIC 值。通过这种方式,我可以将值与没有正则化的模型进行比较。这可能吗?
我在为 glmnet 模型计算 AIC 和 BIC 的方法上苦苦挣扎。然而,经过相当多的搜索,我在谷歌结果的第三页找到了答案。可以在这里找到。我把它贴在这里给未来的读者,因为我相信我不能是唯一的。
最后,我通过以下方式实现了AIC和BIC:
fit <- glmnet(x, y, family = "multinomial")
tLL <- fit$nulldev - deviance(fit)
k <- fit$df
n <- fit$nobs
AICc <- -tLL+2*k+2*k*(k+1)/(n-k-1)
AICc
BIC<-log(n)*k - tLL
BIC
在 johnnyheineken 引用的链接中,作者指出:
恐怕 glmnet 对象(dev.ratio,nulldev)中可用的两个量不足以获得模型的可能性,您需要计算 AICc。您在三个未知数中有两个方程:似然(null)、似然(模型)和似然(饱和)。我无法从可能性(null)中获得可能性(模型)。
在我看来,如果您要比较两个模型之间的 AIC,那么您无法分离零偏差这一事实并不重要。由于它存在于不等式的“两边”,它将显示哪个模型必须具有较低的 AIC。这取决于两件事: