В вопросе, приведенном в другом месте на этом сайте, в нескольких ответах упоминалось, что AIC эквивалентна перекрестной проверке с пропуском (LOO) и что BIC эквивалентна перекрестной проверке в K-кратном размере. Есть ли способ эмпирически продемонстрировать это в R так, чтобы методы, задействованные в LOO и K-кратном прояснении, стали ясными и продемонстрировали, что они эквивалентны значениям AIC и BIC? Хорошо прокомментированный код будет полезен в этом отношении. Кроме того, при демонстрации BIC используйте пакет lme4. Ниже приведен пример набора данных ...
library(lme4) #for the BIC function
generate.data <- function(seed)
{
set.seed(seed) #Set a seed so the results are consistent (I hope)
a <- rnorm(60) #predictor
b <- rnorm(60) #predictor
c <- rnorm(60) #predictor
y <- rnorm(60)*3.5+a+b #the outcome is really a function of predictor a and b but not predictor c
data <- data.frame(y,a,b,c)
return(data)
}
data <- generate.data(76)
good.model <- lm(y ~ a+b,data=data)
bad.model <- lm(y ~ a+b+c,data=data)
AIC(good.model)
BIC(logLik(good.model))
AIC(bad.model)
BIC(logLik(bad.model))
В предыдущих комментариях ниже я привел список семян от 1 до 10000, в которых AIC и BIC не согласны. Это было сделано с помощью простого поиска по доступным семенам, но если кто-то может предоставить способ генерирования данных, которые будут давать разные ответы из этих двух информационных критериев, это может быть особенно информативным.
notable.seeds <- read.csv("http://student.ucr.edu/~rpier001/res.csv")$seed
Кроме того, я подумал о том, чтобы упорядочить эти семена по степени разногласий AIC и BIC, которые я попытался определить количественно как сумму абсолютных различий между AIC и BIC. Например,
AICDiff <- AIC(bad.model) - AIC(good.model)
BICDiff <- BIC(logLik(bad.model)) - BIC(logLik(good.model))
disagreement <- sum(abs(c(AICDiff,BICDiff)))
где моя метрика несогласия применима только в разумных случаях, когда наблюдения заметны. Например,
are.diff <- sum(sign(c(AICDiff,BICDiff)))
notable <- ifelse(are.diff == 0 & AICDiff != 0,TRUE,FALSE)
Однако в случаях, когда AIC и BIC не соглашались друг с другом, рассчитанное значение разногласий всегда было одинаковым (и является функцией размера выборки). Оглядываясь назад на то, как рассчитываются AIC и BIC, я понимаю, почему это может иметь место в вычислительном отношении, но я не уверен, почему это было бы концептуально. Если бы кто-то мог объяснить и эту проблему, я был бы признателен.