I thought I was coming to understand the difference between (binary) GLMMs and Marginal Models using GEE...until I encountered the following passage in Hosmer et al (2013: 328):
The clear weakness of the population average model is that it cannot address effects such as age. The cluster-specific model is best suited for such a covariate, as one does not have to argue that the inferences apply to some hypothetical and unobservable group of subjects with the same random effect.
The dataset in question is from the GLOW study, available in the aplore3 package. The response is fracture risk in older women and Study Site is the only random effect / clustering factor being considered. I do not understand how the GEE model supposedly "cannot address" age effects. Unless I'm gravely mistaken, Age is in this case a within-cluster effect -- each cluster consists of diverse individuals of varying ages. The same is true of all the other covariates being discussed -- weight, armassist, and raterisk (self-reported fracture risk). I utterly fail to see how Age is any different. And unless I'm bungling something, both methods appear to give very similar results:
> require(aplore3) > data("glow_rand") > glow_rand <- glow_rand[order(glow_rand$site_id),] # gee() requires that the data be sorted by cluster > glow_rand$fracture <- as.integer(glow_rand$fracture)-1 > require(lme4) > require(gee) > mixed1 <- glmer(fracture ~ I(weight/5) + armassist + raterisk + I(age/10) + (1|site_id), data = glow_rand, family = binomial) > gee1 <- gee(fracture ~ I(weight/5) + armassist + raterisk + I(age/10), id = site_id, corstr = "exchangeable", data = glow_rand, family = binomial) > summary(mixed1) $coefficients Estimate Std. Error z value Pr(>|z|) (Intercept) -2.07854233 1.26925015 -1.637614 0.101502156 I(weight/5) -0.09539002 0.04257164 -2.240694 0.025045914 armassistYes 0.79628678 0.24245172 3.284311 0.001022321 rateriskSame 0.67040925 0.29702015 2.257117 0.024000761 rateriskGreater 0.79850456 0.31510339 2.534103 0.011273549 I(age/10) 0.19584698 0.13317737 1.470573 0.141406760 > summary(gee1) $coefficients Estimate Naive S.E. Naive z Robust S.E. Robust z (Intercept) -2.03588598 1.29422100 -1.573059 1.46348304 -1.3911237 I(weight/5) -0.09434044 0.04356005 -2.165756 0.02535551 -3.7207070 armassistYes 0.77830911 0.24740319 3.145914 0.18580885 4.1887624 rateriskSame 0.66712581 0.30526978 2.185365 0.11145660 5.9855210 rateriskGreater 0.78647050 0.32485535 2.420987 0.20396636 3.8558833 I(age/10) 0.19242950 0.13617708 1.413083 0.19698544 0.9768717
Isn't this GEE model is a very similar beast to a standard logit model, the difference being that it tries to address the clustering by adjusting the standard errors upwards for all estimation concerning between-cluster effects, and downwards for within-cluster estimation? And isn't its downside that there is no likelihood function, so standard GoF and variable-selection procedures aren't available?
I do not see how the Age effect estimated by the GEE model is somehow less valid or relevant than the GLMM estimate. In this dataset, AFAIK, the GEE estimate of the Age effect is based on information from both between-cluster and within-cluster comparisons (since Age varies both between and within clusters). In the GLMM, it is based solely on within-cluster information, no? Wouldn't this actually entail that the GEE estimate is better, since it's based on more information?
Hosmer, D. W. (2013). Applied logistic regression (3. ed.). New York, NY: Wiley.