TL; DR: Mà là chính xác cho BIC trong hồi quy logistic, được tổng hợp nhị thức hoặc Bernoulli ?
CẬP NHẬT TẠI BOTTOM
Giả sử tôi có một bộ dữ liệu mà tôi muốn áp dụng hồi quy logistic. Vì lợi ích của ví dụ, giả sử có nhóm với mỗi người tham gia, tổng cộng . Kết quả là 0 hoặc 1. Ví dụ, tập dữ liệu sau (mã R):
library(dplyr)
library(tidyr)
set.seed(45)
d <- tibble(y = rbinom(500, 1, .5),
x = factor(rep(LETTERS[1:5], each = 100)))
Có hai cách tôi có thể đại diện cho điều này: như trên, coi mọi quan sát là biến ngẫu nhiên Bernoulli hoặc tổng hợp các quan sát trong các nhóm và coi mỗi quan sát là Binomial. Số lượng hàng trong tập dữ liệu sẽ là 500 trong trường hợp đầu tiên và 5 trong lần thứ hai.
Tôi có thể xây dựng tập dữ liệu tổng hợp:
d %>%
group_by(x, y) %>%
summarise(n = n()) %>%
spread(y, n) %>%
rename(f = `0`, s = `1`) %>%
mutate(n = s + f) -> d_agg
Sau đó tôi có thể điều chỉnh hồi quy logistic bằng cả hai bộ dữ liệu trong R:
g_bern <- glm(y ~ x, data=d, family=binomial)
g_binom <- glm(cbind(s,f) ~ x, data=d_agg, family=binomial)
CẬP NHẬT 2: Bây giờ chúng tôi phù hợp với các mô hình chỉ chặn:
g_bern0 <- glm(y ~ 1, data=d, family=binomial)
g_binom0 <- glm(cbind(s,f) ~ 1, data=d_agg, family=binomial)
và tính toán AIC:
> AIC(g_bern)
# [1] 694.6011
> AIC(g_binom)
# [1] 35.22172
trong đó tất nhiên có sự khác biệt với một hằng số
2*sum(lchoose(d_agg$n, d_agg$s)) # [1] 659.3794
như mong đợi (xem: Hồi quy logistic: Bernoulli so với biến phản ứng nhị thức ).
Tuy nhiên, BIC khác nhau bởi hằng số VÀ một yếu tố phụ thuộc vào "số lượng quan sát" và số lượng quan sát khác nhau ở mỗi:
> BIC(g_bern)
# [1] 715.6742
> BIC(g_binom)
# [1] 33.26891
> nobs(g_bern)
# [1] 500
> nobs(g_binom)
# [1] 5
Chỉ cần xác nhận, chúng tôi có thể tính toán lại BIC cho cả hai:
> -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)
và thực sự nơi duy nhất hai số này khác nhau là .
CẬP NHẬT 2: Khi chúng tôi cố gắng đánh giá yếu tố x
, chúng tôi thấy sự bất đồng CHỈ được quy cho số lượng quan sát:
> BIC(g_bern0) - BIC(g_bern)
# [1] -17.66498
> BIC(g_binom0) - BIC(g_binom)
# [1] 0.7556999
CẬP NHẬT 2: Như mong đợi, AIC là nhất quán:
> AIC(g_bern0) - AIC(g_bern)
# [1] -0.8065485
> AIC(g_binom0) - AIC(g_binom)
# [1] -0.8065485
Điều này làm tôi ngạc nhiên, vì tôi sẽ nghĩ rằng R sẽ "biết" nên dùng cái nào trong hai cái để tránh sự mơ hồ. Nó có cùng thông tin trong cả hai trường hợp.
Cái nào là đúng"? Hay là BIC thực sự tùy tiện?
CẬP NHẬT: Tôi không cố so sánh Bernoulli với mô hình Binomial. Đây chỉ là một ví dụ đồ chơi. Tôi có một bộ so sánh nơi tôi sử dụng cài đặt nào, vì các hình phạt cholà khác nhau Tôi có hai bộ so sánh mô hình và mô hình chiến thắng thay đổi dựa trênhình phạt, mặc dù những điều này dường như là cùng một bộ mô hình .
CẬP NHẬT 2 và 3: Đã thêm các so sánh vào mô hình chỉ chặn và thay đổi hạt giống ngẫu nhiên để có sự khác biệt về dấu hiệu trong BIC.