GEE 模型返回 GLM 结果

机器算法验证 r 广义线性模型 广义估计方程 可交换性
2022-04-04 16:56:48

我用 100 名受试者和每个受试者 7 次测量模拟了一些纵向数据。我的数据具有随机截距,这将导致“可交换”相关矩阵。我的目标是在下面拟合两个单独的模型并比较结果:

  1. 模型 1:GLM(不考虑主体内相关性)
  2. 模型 2:具有可交换关联结构的 GEE

我们知道 GLM 基本上是具有“独立”相关结构的 GEE。发生的情况是我的 GEE 只进行一次迭代,因此返回第一次迭代的估计值(初始估计值),即 GLM 估计值(代码在 R 中)。

我尝试了不同的模拟场景,其中估计的可交换相关矩阵具有:低、中和高非对角相关值,但在所有这些场景中,我的 GLM 估计和 GEE 估计都是相同的(即超过 2000 个不同的模拟数据和GEE 和 GLM 之间 100% 的估计值相同)。你认为为什么会发生这种情况?

这是我的代码:

# Data Simulation:
dataSim <- function(seedNum, n, mi, beta0FE, beta1, beta0RE){

      # Setting the seed number:
      set.seed(seedNum)

      # Generating covariates:
      x <- rnorm(n, mean = 0, sd = 1)

      # Generating Y:
      data <- data.frame(id = rep(1:n, each = mi), x = rep(x, each = mi), 
                 beta0_RE = rep(beta0RE, each = mi))
      etaTmp <- data$beta0_RE + beta0FE + beta1*data$x
      piTmp <- exp(etaTmp)/(1 + exp(etaTmp))
      data$Y <- sapply(piTmp, rbinom, n = 1, size = 1)  
      return(data)
}

# Data Simulation Parameters:
n <- 300
mi <- 7
beta0FE <- 0.3
beta1 <- 1
beta0RE <- rnorm(n, mean = 0, sd = 1)

data <- dataSim(1, n, mi, beta0FE, beta1, beta0RE)
fit.glm <- glm(Y ~ x, data = data, family='binomial')
fit.gee <- gee(Y ~ x, id = id, data = data, family = binomial, 
               corstr = "exchangeable", silent = TRUE)
2个回答

GLM 和 GEE 的截距和斜率的参数估计值相同,这是预期的。然而,标准误差是不同的,这也是意料之中的。GEE 使用可交换协方差来调整标准误差,以便通过为每个 ID 添加随机截距来解释Y

或许知道答案。如果您的 id 变量未在数据框中“排序”,则 GEE 将不起作用。检查以确保它按顺序“聚集”。

来自 GEE 文档:“id:标识集群的向量。id 的长度应与观察次数相同。假设数据已排序,以便集群上的观察是公式中所有实体的连续行。”