TL; DR: Qual é correto para o BIC na regressão logística, no binômio agregado ou no Bernoulli ?
ATUALIZAÇÕES NO INFERIOR
Suponha que eu tenha um conjunto de dados ao qual gostaria de aplicar a regressão logística. Por uma questão de exemplo, suponha que grupos com participantes cada, para um total de . O resultado é 0 ou 1. Por exemplo, o seguinte conjunto de dados (código R):
library(dplyr)
library(tidyr)
set.seed(45)
d <- tibble(y = rbinom(500, 1, .5),
x = factor(rep(LETTERS[1:5], each = 100)))
Existem duas maneiras de representar isso: como é, acima, tratar todas as observações como uma variável aleatória de Bernoulli, ou agregar observações em grupos e tratar cada observação como binomial. O número de linhas no conjunto de dados será 500 na primeira instância e 5 na segunda.
Eu posso construir o conjunto de dados agregados:
d %>%
group_by(x, y) %>%
summarise(n = n()) %>%
spread(y, n) %>%
rename(f = `0`, s = `1`) %>%
mutate(n = s + f) -> d_agg
Posso ajustar a regressão logística usando os dois conjuntos de dados em R:
g_bern <- glm(y ~ x, data=d, family=binomial)
g_binom <- glm(cbind(s,f) ~ x, data=d_agg, family=binomial)
ATUALIZAÇÃO 2: Agora, cabemos apenas os modelos de interceptação:
g_bern0 <- glm(y ~ 1, data=d, family=binomial)
g_binom0 <- glm(cbind(s,f) ~ 1, data=d_agg, family=binomial)
e calcular a AIC:
> AIC(g_bern)
# [1] 694.6011
> AIC(g_binom)
# [1] 35.22172
que obviamente diferem por uma constante
2*sum(lchoose(d_agg$n, d_agg$s)) # [1] 659.3794
conforme o esperado (consulte: Regressão logística: Bernoulli vs. Variáveis de resposta binomial ).
No entanto, os BICs diferem por essa constante AND um fator que depende do "número de observações" e o número de observações difere em cada:
> BIC(g_bern)
# [1] 715.6742
> BIC(g_binom)
# [1] 33.26891
> nobs(g_bern)
# [1] 500
> nobs(g_binom)
# [1] 5
Apenas para confirmar, podemos recalcular o BIC para ambos:
> -2*logLik(g_bern) + attr(logLik(g_bern),"df")*log(nobs(g_bern))
# 'log Lik.' 715.6742 (df=5)
> -2*logLik(g_binom) + attr(logLik(g_binom),"df")*log(nobs(g_binom))
# 'log Lik.' 33.26891 (df=5)
e, na verdade o único lugar estes dois números diferem é .
ATUALIZAÇÃO 2: Quando tentamos avaliar o fator x
, vemos uma discordância que SÓ é atribuível ao número de observações:
> BIC(g_bern0) - BIC(g_bern)
# [1] -17.66498
> BIC(g_binom0) - BIC(g_binom)
# [1] 0.7556999
ATUALIZAÇÃO 2: Como esperado, os AICs são consistentes:
> AIC(g_bern0) - AIC(g_bern)
# [1] -0.8065485
> AIC(g_binom0) - AIC(g_binom)
# [1] -0.8065485
Isso me surpreende, pois acho que R "saberia" qual dos dois usar para evitar ambiguidade. Tem a mesma informação nos dois casos.
Qual é o "certo"? Ou a BIC é realmente tão arbitrária?
ATUALIZAÇÃO: Não estou tentando comparar o Bernoulli ao modelo binomial. Este é apenas um exemplo de brinquedo. Eu tenho um conjunto de comparações onde importa qual configuração eu uso, porque as penalidades para são diferentes. Eu tenho dois conjuntos de comparações de modelos e o modelo vencedor muda com base na penalidade de , mesmo que esses pareçam ser os mesmos conjuntos de modelos .
ATUALIZAÇÕES 2 e 3: Adicionadas as comparações ao modelo somente de interceptação e alteradas as sementes aleatórias para obter uma diferença de sinal no BIC.