是否可以为套索回归模型计算AIC和BIC?


31

是否可以为套索回归模型和其他正则化模型(参数仅部分进入方程式)计算AIC或BIC值。如何确定自由度?

我正在使用R将套索回归模型与程序包中的glmnet()函数进行拟合glmnet,并且我想知道如何计算模型的AIC和BIC值。通过这种方式,我可以将值与没有正则化的模型拟合进行比较。这可能吗?


1
是的,您可以执行此操作,但是很可能需要您进行正确的更正。该修正是在本文的ncbi.nlm.nih.gov/pmc/articles/PMC2629611的背景下进行的,该模型是有限混合建模的,但在其他惩罚模型中也可以使用类似的论点。
2012年

Answers:



10

我为如何为glmnet模型计算AIC和BIC付出了很多努力。但是,经过大量搜索,我在Google搜索结果的第三页上找到了答案。可以在这里找到。我将其发布在这里供将来的读者阅读,因为我相信我不可能是唯一的一个。

最后,我通过以下方式实现了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

2

在johnnyheineken引用的链接中,作者指出:

恐怕glmnet对象(dev.ratio,nulldev)可用的两个量不足以获取模型的似然性,而这需要您计算AICc。您在三个未知数中有两个方程式:似然(null),似然(model)和似然(saturated)。我不可能没有可能性(null)获得可能性(model)。

在我看来,如果您要比较两个模型之间的AIC,那么您就无法区分零偏差。由于它存在于不等式的两面,因此它将显示哪个模型必须具有较低的AIC。这取决于两件事:

  1. 两种模型中的数据都相同(无论如何,AIC比较都需要)
  2. 我既不会忘记Stat101的内容,也不会忘记高中的代数(鉴于我目前的咖啡因摄入量,这是一个强有力的假设)
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.