使用 'bife' 包的固定效应 logit 模型的拟合优度
Goodness-of-fit for fixed effect logit model using 'bife' package
我正在使用 'bife' 包来 运行 R 中的固定效应 logit 模型。但是,我无法计算任何拟合优度来衡量模型的整体拟合给定结果 I有以下。如果我能知道如何根据这些有限的信息来衡量拟合优度,我将不胜感激。我更喜欢卡方检验,但仍然找不到实现它的方法。
---------------------------------------------------------------
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
---------------------------------------------------------------
让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 次迭代表明两个测试(因为两个测试是相同的)确实拒绝了它们在 null 下应该拒绝的频率。
我正在使用 'bife' 包来 运行 R 中的固定效应 logit 模型。但是,我无法计算任何拟合优度来衡量模型的整体拟合给定结果 I有以下。如果我能知道如何根据这些有限的信息来衡量拟合优度,我将不胜感激。我更喜欢卡方检验,但仍然找不到实现它的方法。
---------------------------------------------------------------
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
---------------------------------------------------------------
让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 次迭代表明两个测试(因为两个测试是相同的)确实拒绝了它们在 null 下应该拒绝的频率。