Хорошая пригодность для модели с фиксированным эффектом и использованием пакета 'bife' - PullRequest
0 голосов
/ 08 ноября 2018

Я использую пакет 'bife', чтобы запустить модель логита с фиксированным эффектом в R. Однако я не могу вычислить какую-либо пригодность для измерения общего соответствия модели, учитывая результат, который я имею ниже. Я был бы признателен, если бы я мог знать, как измерить добротность, учитывая эту ограниченную информацию. Я предпочитаю тест хи-квадрат, но все еще не могу найти способ реализовать это.

    ---------------------------------------------------------------                 
    Fixed effects logit model                   
    with analytical bias-correction                 

    Estimated model:                    
    Y ~ X1 +X2 + X3 + X4 + X5 | Z                   

    Log-Likelihood= -9153.165                   
    n= 20383, number of events= 5104                    
    Demeaning converged after 6 iteration(s)                    
    Offset converged after 3 iteration(s)                   

    Corrected structural parameter(s):                  

        Estimate    Std. error  t-value Pr(> t) 
    X1  -8.67E-02   2.80E-03    -31.001 < 2e-16 ***
    X2  1.79E+00    8.49E-02    21.084  < 2e-16 ***
    X3  -1.14E-01   1.91E-02    -5.982  2.24E-09    ***
    X4  -2.41E-04   2.37E-05    -10.171 < 2e-16 ***
    X5  1.24E-01    3.33E-03    37.37   < 2e-16 ***
    ---                 
    Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1                  

    AIC=  18730.33 , BIC=  20409.89                     


    Average individual fixed effects= 1.6716                    
    ---------------------------------------------------------------                 

1 Ответ

0 голосов
/ 11 ноября 2018

Пусть DGP будет

n <- 1000
x <- rnorm(n)
id <- rep(1:2, each = n / 2)
y <- 1 * (rnorm(n) > 0)

так что мы будем под нулевой гипотезой. Как сказано в ?bife, когда нет коррекции смещения, все то же, что и с glm, за исключением скорости. Итак, начнем с glm.

modGLM <- glm(y ~ 1 + x + factor(id), family = binomial())
modGLM0 <- glm(y ~ 1, family = binomial())

Один из способов выполнить тест LR -

library(lmtest)
lrtest(modGLM0, modGLM)
# Likelihood ratio test
#
# Model 1: y ~ 1
# Model 2: y ~ 1 + x + factor(id)
#   #Df  LogLik Df  Chisq Pr(>Chisq)
# 1   1 -692.70                     
# 2   3 -692.29  2 0.8063     0.6682

Но мы можем сделать это и вручную,

1 - pchisq(c((-2 * logLik(modGLM0)) - (-2 * logLik(modGLM))),
           modGLM0$df.residual - modGLM$df.residual)
# [1] 0.6682207

Теперь давайте перейдем к bife.

library(bife)
modBife <- bife(y ~ x | id)
modBife0 <- bife(y ~ 1 | id)

Здесь modBife - полная спецификация, а modBife0 - только с фиксированными эффектами. Для удобства пусть

logLik.bife <- function(object, ...) object$logl_info$loglik

для извлечения логарифмического правдоподобия. Тогда мы можем сравнить modBife0 с modBife, как в

1 - pchisq((-2 * logLik(modBife0)) - (-2 * logLik(modBife)), length(modBife$par$beta))
# [1] 1

, тогда как modGLM0 и modBife можно сравнить, запустив

1 - pchisq(c((-2 * logLik(modGLM0)) - (-2 * logLik(modBife))), 
           length(modBife$par$beta) + length(unique(id)) - 1)
# [1] 0.6682207

, который дает тот же результат, что и раньше, хотя с bife у нас по умолчанию есть коррекция смещения.

Наконец, в качестве бонуса, мы можем смоделировать данные и увидеть, что тест работает так, как должен. 1000 итераций ниже показывают, что оба теста (так как два теста одинаковы) действительно отклоняют так часто, как это должно быть при нулевом значении.

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...