annennenne / geeasy Goto Github PK
View Code? Open in Web Editor NEWR package with tools for fitting generalized linear models with clustered observations using generalized estimating equations.
R package with tools for fitting generalized linear models with clustered observations using generalized estimating equations.
Dear Authors of geeasy,
The weighting option in the geeglm packages has been claimed to be incorrect for correlation structure other than "independent" in two articles, and this sound as a serious problem. Maybe you could guide me how it looks like in geeasy? Because now it's a bit confusing: we have a number of packages for GEE in R: gee, geepack, wgeesel, geesmv, geeM, CRTgeeDR, geeasy... and it's not easy to determine which one is the reliable one.
EDIT: [I noticed that the geeM was consulted by the maintainer of the CRTgeeDR package and now it's consistent with SAS PROC GEE. So the articles below do not apply to geeM any more.]
and
Luckily, the mentioned paper is available here: https://cdn1.sph.harvard.edu/wp-content/uploads/sites/343/2013/03/jmr-ar-lz-anal-95.pdf
Does geeasy use the same method, which is already questioned in two different articles, or is this implemented differently? (if so, does it align with the cited paper?)
This may be important to you: @danielinteractive
Hi @annennenne and team,
first of all thanks for the nice geeasy
package! It is really easy to fit GEE models with it, and I think it is the most modern of the GEE packages for R. Because of this, we are currently working on a clinical reporting package (see https://github.com/insightsengineering/tern.gee/tree/2_prototype) that would build on geeasy
as the computation engine.
In order to check the results, I am trying to match results from SAS currently. In very small toy examples this looked good. Now in a more realistic example I get quite different results (using version 0.1.1 of geeasy
), see below the reproducible example. I am wondering if you have any ideas what could be differences between the geeasy
call and the SAS specs maybe? Or if I could try some other geeasy
options?
Thanks a lot for any pointers,
best regards
Daniel
Reproducible example: (apologies for the large data)
data <- structure(list(FEV1_BIN = c(
NA, 1L, NA, 0L, NA, 1L, 1L, 1L,
NA, 1L, NA, 1L, 1L, 1L, NA, 1L, 1L, NA, 1L, 1L, NA, NA, 1L, NA,
1L, 1L, NA, 1L, 1L, 1L, 1L, 1L, 1L, 1L, NA, 1L, NA, NA, 1L, NA,
1L, 1L, 1L, 1L, 1L, 1L, 1L, NA, NA, NA, 1L, 1L, NA, NA, 1L, NA,
NA, NA, 1L, 1L, NA, 1L, NA, 1L, 0L, NA, NA, 1L, 1L, 1L, NA, 1L,
1L, 1L, 1L, 1L, NA, 1L, 1L, NA, NA, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
0L, 1L, 1L, NA, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
0L, NA, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, NA, 1L, 1L, 1L, 1L, 1L,
0L, NA, 1L, NA, 1L, NA, NA, 1L, 0L, 1L, NA, 1L, 1L, 1L, 1L, 1L,
1L, 1L, NA, 1L, NA, 1L, NA, 1L, 1L, 1L, 1L, 1L, 1L, NA, 1L, NA,
1L, NA, 1L, 1L, 1L, 1L, 1L, NA, NA, 1L, 1L, 1L, 1L, NA, NA, 1L,
0L, 1L, 1L, 1L, 1L, NA, NA, NA, 1L, 1L, 1L, 1L, 0L, 1L, 1L, NA,
0L, 1L, 1L, NA, NA, 1L, 1L, NA, 1L, 1L, 1L, NA, 0L, 1L, 1L, NA,
0L, 1L, NA, 1L, NA, 1L, NA, 1L, 1L, 1L, NA, NA, NA, NA, NA, NA,
1L, 1L, 1L, NA, 0L, NA, NA, 1L, NA, 1L, 1L, 1L, NA, 1L, 1L, NA,
1L, NA, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, NA, 1L, NA, 0L, NA, NA,
NA, 1L, 1L, 1L, 1L, 0L, NA, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, NA, NA, 1L, 1L, 1L, 1L, 0L, 1L, NA, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, NA, NA, NA, 1L, 1L, 1L, NA, 1L, 1L,
NA, 1L, 1L, 1L, 1L, NA, NA, 1L, 1L, 1L, 1L, 0L, NA, 1L, 1L, 1L,
NA, NA, NA, 1L, 1L, 1L, 1L, NA, NA, 1L, 1L, 1L, 1L, NA, 1L, 1L,
1L, 1L, 1L, 1L, NA, NA, NA, 1L, NA, NA, 1L, 1L, 1L, 1L, 1L, 1L,
0L, NA, 1L, NA, 0L, NA, 1L, 1L, 1L, 1L, 1L, 1L, 0L, NA, NA, NA,
NA, NA, 1L, 1L, 1L, NA, 1L, 1L, NA, 1L, 1L, 1L, 1L, NA, 1L, 1L,
NA, 1L, 1L, NA, 1L, 1L, NA, 1L, 1L, 1L, NA, 1L, 0L, 0L, 1L, 1L,
NA, 1L, NA, NA, 1L, 1L, 1L, NA, NA, 1L, 1L, NA, 1L, 1L, 1L, 1L,
1L, 0L, 1L, NA, 1L, NA, 1L, 1L, NA, 1L, 1L, NA, 0L, 1L, 1L, 1L,
NA, NA, 1L, 1L, 1L, 1L, 1L, 1L, NA, 1L, 1L, 1L, NA, 1L, 1L, NA,
NA, NA, NA, 1L, 1L, NA, 1L, NA, 1L, 1L, 1L, NA, 0L, 1L, 1L, 1L,
1L, 1L, 1L, NA, 1L, NA, 1L, 1L, 0L, NA, NA, NA, 1L, 1L, 1L, NA,
1L, 1L, NA, NA, 1L, NA, NA, NA, NA, NA, NA, 1L, NA, NA, 1L, NA,
1L, 1L, 1L, NA, NA, 1L, 1L, 1L, 1L, 1L, 1L, NA, 1L, 1L, NA, 1L,
1L, NA, NA, 1L, 1L, 1L, 1L, 1L, 1L, NA, NA, NA, NA, 1L, 1L, NA,
0L, 1L, 1L, 0L, NA, 1L, 1L, 1L, NA, 1L, 1L, 1L, NA, 1L, 1L, 1L,
1L, 1L, 1L, 0L, 1L, NA, NA, 1L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, NA,
NA, NA, 1L, 1L, 0L, 1L, NA, 1L, NA, 1L, NA, 1L, NA, NA, NA, NA,
0L, 1L, NA, 1L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, NA, NA, 1L, 1L, 1L,
1L, 1L, 1L, NA, NA, 1L, 1L, NA, 1L, 1L, 1L, 1L, NA, NA, 1L, 1L,
1L, 1L, NA, 1L, NA, 1L, NA, 1L, 0L, 1L, 1L, 1L, 1L, 1L, NA, 1L,
1L, NA, 1L, 1L, 1L, 1L, 1L, 1L, 1L, NA, NA, 1L, NA, 1L, 1L, 1L,
0L, 1L, NA, NA, NA, 1L, 1L, 1L, NA, 1L, NA, NA, 0L, NA, NA, 1L,
NA, 1L, NA, 1L, NA, 1L, 1L, 1L, 1L, NA, NA, NA, 0L, NA, NA, NA,
1L, 1L, NA, 1L, 0L, 1L, 1L, NA, 0L, 1L, NA, NA, NA, 1L, 1L, 1L,
NA, 0L, NA, 1L, 1L, 1L, 1L, NA, 1L, 1L, 1L, NA, 1L, 1L, 1L, NA,
0L, 1L, NA, 1L, 1L, 1L, NA, 1L, NA, NA, 1L, NA, 1L, NA, NA, 1L,
1L, NA, 1L, 1L, 0L, 1L, 1L, NA, 1L, NA, 1L, 1L, NA, NA, 1L, 1L,
1L, 1L, NA, NA, NA, 1L, NA, 1L, NA, 1L, 1L, 1L, 1L, 1L, NA, 1L,
1L, NA, NA, NA, 1L, NA, 1L, NA, 1L, 1L, 1L, NA, 1L, 1L, 1L, 1L,
1L, NA, NA, 1L, 1L, 1L, 1L, 1L, NA, 1L, 1L, 1L, 0L, 1L, 1L, 1L,
NA, 1L, 1L, NA, 0L, 1L, NA, 1L, NA, NA, NA, 1L, 1L, 1L, NA, 1L,
NA, NA, NA, NA, 1L, 1L, NA, 1L
), ARMCD = structure(c(
2L, 2L,
2L, 2L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L,
2L, 2L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 1L, 1L, 1L, 1L, 2L, 2L,
2L, 2L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L,
2L, 2L, 2L, 2L, 2L, 2L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L,
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L,
2L, 2L, 2L, 2L, 2L, 2L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L,
2L, 2L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 1L, 1L,
1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 1L, 1L, 1L, 1L, 2L, 2L,
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L,
2L, 2L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L,
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L,
2L, 2L, 2L, 2L, 2L, 2L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 2L, 2L, 2L, 2L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L,
2L, 2L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L,
2L, 2L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L,
2L, 2L, 2L, 2L, 2L, 2L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 1L, 1L,
1L, 1L, 2L, 2L, 2L, 2L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 1L, 1L, 1L, 1L, 2L, 2L,
2L, 2L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 1L, 1L,
1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L,
2L, 2L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L,
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 1L, 1L, 1L, 1L, 2L, 2L,
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 2L, 2L, 2L, 2L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 1L, 1L, 1L, 1L, 2L, 2L,
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L,
2L, 2L, 2L, 2L, 2L, 2L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 2L, 2L, 2L, 2L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L,
2L, 2L, 2L, 2L, 2L, 2L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L,
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 1L, 1L, 1L, 1L
), levels = c(
"PBO",
"TRT"
), class = "factor"), RACE = structure(c(
2L, 2L, 2L, 2L,
1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L,
2L, 2L, 2L, 2L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L,
2L, 2L, 2L, 2L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 3L, 3L, 3L, 3L,
2L, 2L, 2L, 2L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 3L, 3L, 3L, 3L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L,
3L, 3L, 3L, 3L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L,
3L, 3L, 3L, 3L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L,
1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 1L, 1L, 1L, 1L, 3L, 3L, 3L, 3L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L,
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L,
1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L,
3L, 3L, 3L, 3L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L,
3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 2L, 2L, 2L, 2L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 3L, 3L, 3L, 3L, 2L, 2L, 2L, 2L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 2L, 2L, 2L, 2L,
2L, 2L, 2L, 2L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 3L, 3L, 3L, 3L,
3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 1L, 1L, 1L, 1L,
3L, 3L, 3L, 3L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 3L, 3L, 3L, 3L,
2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L,
1L, 1L, 1L, 1L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 2L, 2L, 2L, 2L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L,
1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L,
1L, 1L, 1L, 1L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 2L, 2L, 2L, 2L,
1L, 1L, 1L, 1L, 3L, 3L, 3L, 3L, 2L, 2L, 2L, 2L, 1L, 1L, 1L, 1L,
2L, 2L, 2L, 2L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L,
1L, 1L, 1L, 1L, 3L, 3L, 3L, 3L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L,
1L, 1L, 1L, 1L, 3L, 3L, 3L, 3L, 1L, 1L, 1L, 1L, 3L, 3L, 3L, 3L,
1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 1L, 1L, 1L, 1L, 3L, 3L, 3L, 3L,
3L, 3L, 3L, 3L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 3L, 3L, 3L, 3L,
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L,
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 1L, 1L, 1L, 1L,
3L, 3L, 3L, 3L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L,
2L, 2L, 2L, 2L, 1L, 1L, 1L, 1L, 3L, 3L, 3L, 3L, 2L, 2L, 2L, 2L,
2L, 2L, 2L, 2L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L,
1L, 1L, 1L, 1L, 3L, 3L, 3L, 3L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L,
1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L,
3L, 3L, 3L, 3L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 3L, 3L, 3L, 3L,
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L,
2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 2L, 2L, 2L, 2L,
3L, 3L, 3L, 3L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 1L, 1L, 1L, 1L,
2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 1L, 1L, 1L, 1L,
2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L,
2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 2L, 2L, 2L, 2L
), levels = c(
"Asian",
"Black or African American", "White"
), class = "factor"), id = c(
1L,
1L, 1L, 1L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 4L, 4L, 4L, 4L, 5L,
5L, 5L, 5L, 6L, 6L, 6L, 6L, 7L, 7L, 7L, 7L, 8L, 8L, 8L, 8L, 9L,
9L, 9L, 9L, 10L, 10L, 10L, 10L, 11L, 11L, 11L, 11L, 12L, 12L,
12L, 12L, 13L, 13L, 13L, 13L, 14L, 14L, 14L, 14L, 15L, 15L, 15L,
15L, 16L, 16L, 16L, 16L, 17L, 17L, 17L, 17L, 18L, 18L, 18L, 18L,
19L, 19L, 19L, 19L, 20L, 20L, 20L, 20L, 21L, 21L, 21L, 21L, 22L,
22L, 22L, 22L, 23L, 23L, 23L, 23L, 24L, 24L, 24L, 24L, 25L, 25L,
25L, 25L, 26L, 26L, 26L, 26L, 27L, 27L, 27L, 27L, 28L, 28L, 28L,
28L, 29L, 29L, 29L, 29L, 30L, 30L, 30L, 30L, 31L, 31L, 31L, 31L,
32L, 32L, 32L, 32L, 33L, 33L, 33L, 33L, 34L, 34L, 34L, 34L, 35L,
35L, 35L, 35L, 36L, 36L, 36L, 36L, 37L, 37L, 37L, 37L, 38L, 38L,
38L, 38L, 39L, 39L, 39L, 39L, 40L, 40L, 40L, 40L, 41L, 41L, 41L,
41L, 42L, 42L, 42L, 42L, 43L, 43L, 43L, 43L, 44L, 44L, 44L, 44L,
45L, 45L, 45L, 45L, 46L, 46L, 46L, 46L, 47L, 47L, 47L, 47L, 48L,
48L, 48L, 48L, 49L, 49L, 49L, 49L, 50L, 50L, 50L, 50L, 51L, 51L,
51L, 51L, 52L, 52L, 52L, 52L, 53L, 53L, 53L, 53L, 54L, 54L, 54L,
54L, 55L, 55L, 55L, 55L, 56L, 56L, 56L, 56L, 57L, 57L, 57L, 57L,
58L, 58L, 58L, 58L, 59L, 59L, 59L, 59L, 60L, 60L, 60L, 60L, 61L,
61L, 61L, 61L, 62L, 62L, 62L, 62L, 63L, 63L, 63L, 63L, 64L, 64L,
64L, 64L, 65L, 65L, 65L, 65L, 66L, 66L, 66L, 66L, 67L, 67L, 67L,
67L, 68L, 68L, 68L, 68L, 69L, 69L, 69L, 69L, 70L, 70L, 70L, 70L,
71L, 71L, 71L, 71L, 72L, 72L, 72L, 72L, 73L, 73L, 73L, 73L, 74L,
74L, 74L, 74L, 75L, 75L, 75L, 75L, 76L, 76L, 76L, 76L, 77L, 77L,
77L, 77L, 78L, 78L, 78L, 78L, 79L, 79L, 79L, 79L, 80L, 80L, 80L,
80L, 81L, 81L, 81L, 81L, 82L, 82L, 82L, 82L, 83L, 83L, 83L, 83L,
84L, 84L, 84L, 84L, 85L, 85L, 85L, 85L, 86L, 86L, 86L, 86L, 87L,
87L, 87L, 87L, 88L, 88L, 88L, 88L, 89L, 89L, 89L, 89L, 90L, 90L,
90L, 90L, 91L, 91L, 91L, 91L, 92L, 92L, 92L, 92L, 93L, 93L, 93L,
93L, 94L, 94L, 94L, 94L, 95L, 95L, 95L, 95L, 96L, 96L, 96L, 96L,
97L, 97L, 97L, 97L, 98L, 98L, 98L, 98L, 99L, 99L, 99L, 99L, 100L,
100L, 100L, 100L, 101L, 101L, 101L, 101L, 102L, 102L, 102L, 102L,
103L, 103L, 103L, 103L, 104L, 104L, 104L, 104L, 105L, 105L, 105L,
105L, 106L, 106L, 106L, 106L, 107L, 107L, 107L, 107L, 108L, 108L,
108L, 108L, 109L, 109L, 109L, 109L, 110L, 110L, 110L, 110L, 111L,
111L, 111L, 111L, 112L, 112L, 112L, 112L, 113L, 113L, 113L, 113L,
114L, 114L, 114L, 114L, 115L, 115L, 115L, 115L, 116L, 116L, 116L,
116L, 117L, 117L, 117L, 117L, 118L, 118L, 118L, 118L, 119L, 119L,
119L, 119L, 120L, 120L, 120L, 120L, 121L, 121L, 121L, 121L, 122L,
122L, 122L, 122L, 123L, 123L, 123L, 123L, 124L, 124L, 124L, 124L,
125L, 125L, 125L, 125L, 126L, 126L, 126L, 126L, 127L, 127L, 127L,
127L, 128L, 128L, 128L, 128L, 129L, 129L, 129L, 129L, 130L, 130L,
130L, 130L, 131L, 131L, 131L, 131L, 132L, 132L, 132L, 132L, 133L,
133L, 133L, 133L, 134L, 134L, 134L, 134L, 135L, 135L, 135L, 135L,
136L, 136L, 136L, 136L, 137L, 137L, 137L, 137L, 138L, 138L, 138L,
138L, 139L, 139L, 139L, 139L, 140L, 140L, 140L, 140L, 141L, 141L,
141L, 141L, 142L, 142L, 142L, 142L, 143L, 143L, 143L, 143L, 144L,
144L, 144L, 144L, 145L, 145L, 145L, 145L, 146L, 146L, 146L, 146L,
147L, 147L, 147L, 147L, 148L, 148L, 148L, 148L, 149L, 149L, 149L,
149L, 150L, 150L, 150L, 150L, 151L, 151L, 151L, 151L, 152L, 152L,
152L, 152L, 153L, 153L, 153L, 153L, 154L, 154L, 154L, 154L, 155L,
155L, 155L, 155L, 156L, 156L, 156L, 156L, 157L, 157L, 157L, 157L,
158L, 158L, 158L, 158L, 159L, 159L, 159L, 159L, 160L, 160L, 160L,
160L, 161L, 161L, 161L, 161L, 162L, 162L, 162L, 162L, 163L, 163L,
163L, 163L, 164L, 164L, 164L, 164L, 165L, 165L, 165L, 165L, 166L,
166L, 166L, 166L, 167L, 167L, 167L, 167L, 168L, 168L, 168L, 168L,
169L, 169L, 169L, 169L, 170L, 170L, 170L, 170L, 171L, 171L, 171L,
171L, 172L, 172L, 172L, 172L, 173L, 173L, 173L, 173L, 174L, 174L,
174L, 174L, 175L, 175L, 175L, 175L, 176L, 176L, 176L, 176L, 177L,
177L, 177L, 177L, 178L, 178L, 178L, 178L, 179L, 179L, 179L, 179L,
180L, 180L, 180L, 180L, 181L, 181L, 181L, 181L, 182L, 182L, 182L,
182L, 183L, 183L, 183L, 183L, 184L, 184L, 184L, 184L, 185L, 185L,
185L, 185L, 186L, 186L, 186L, 186L, 187L, 187L, 187L, 187L, 188L,
188L, 188L, 188L, 189L, 189L, 189L, 189L, 190L, 190L, 190L, 190L,
191L, 191L, 191L, 191L, 192L, 192L, 192L, 192L, 193L, 193L, 193L,
193L, 194L, 194L, 194L, 194L, 195L, 195L, 195L, 195L, 196L, 196L,
196L, 196L, 197L, 197L, 197L, 197L, 198L, 198L, 198L, 198L, 199L,
199L, 199L, 199L, 200L, 200L, 200L, 200L
), waves = c(
1L, 2L,
3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L,
3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L,
3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L,
3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L,
3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L,
3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L,
3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L,
3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L,
3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L,
3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L,
3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L,
3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L,
3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L,
3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L,
3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L,
3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L,
3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L,
3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L,
3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L,
3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L,
3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L,
3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L,
3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L,
3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L,
3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L,
3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L,
3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L,
3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L,
3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L,
3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L,
3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L,
3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L,
3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L,
3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L,
3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L,
3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L,
3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L,
3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L,
3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L,
3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L,
3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L,
3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L,
3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L,
3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L,
3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L,
3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L,
3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L,
3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L,
3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L,
3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L
)), row.names = c(
NA,
-800L
), class = c("tbl_df", "tbl", "data.frame"))
head(data)
model <- geeasy::geelm(
formula = FEV1_BIN ~ ARMCD + RACE,
id = id,
waves = waves,
data = data,
family = binomial(),
corstr = "unstructured",
control = geeasy::geelm.control(scale.fix = TRUE)
)
# proc genmod data=ana.dat descending;
# class RACE(ref = 'Asian') USUBJID ARMCD(ref = 'PBO') AVISIT;
# model FEV1_BIN = ARMCD RACE / dist=bin link=logit ;
# repeated subject=USUBJID / within=AVISIT type=UN CORRW;
# run;
# Working Correlation Matrix
#
# Col1 Col2 Col3 Col4
#
# Row1 1.0000 -0.0868 -0.1859 -0.1480
# Row2 -0.0868 1.0000 0.0788 0.0077
# Row3 -0.1859 0.0788 1.0000 0.0698
# Row4 -0.1480 0.0077 0.0698 1.0000
# We obtain different correlation parameter estimates:
model$geese$alpha
# [1] -0.056458907 -0.125737003 0.067815234 -0.083599271 -0.057773977 0.009216794
# GEE Fit Criteria
#
# QIC 303.9454
# QICu 303.6369
# We obtain different QIC values:
QIC(model)
# QIC QICu Quasi Lik CIC params QICC
# 302.767472 303.226407 -147.613203 3.770533 4.000000 303.950268
# Analysis Of GEE Parameter Estimates
# Empirical Standard Error Estimates
#
# Standard 95% Confidence
# Parameter Estimate Error Limits Z Pr > |Z|
#
# Intercept 1.7193 0.2775 1.1755 2.2632 6.20 <.0001
# ARMCD TRT 0.6781 0.3299 0.0315 1.3247 2.06 0.0398
# ARMCD PBO 0.0000 0.0000 0.0000 0.0000 . .
# RACE Black or African American 0.1492 0.3246 -0.4869 0.7853 0.46 0.6457
# RACE White 1.3111 0.5543 0.2246 2.3975 2.37 0.0180
# RACE Asian 0.0000 0.0000 0.0000 0.0000 . .
# We obtain different estimates:
coef(model)
# (Intercept) ARMCDTRT RACEBlack or African American RACEWhite
# 1.7582943 0.6784657 0.1705619 1.3864354
# And this fails, not sure why?
summary(model)
# seems the wts vector is too long (original size of the data instead of na omitted)
# Passing in na.omit(data) above works.
Hello,
My goal was the assessment of the main and interaction effects of a simple, exemplary longitudinal model.
It's easy for full-likelihood methods, e.g. GLS, mixed models via the sequence of likelihood ratio tests, doing the type-3 analysis (like type-3 ANOVA in SAS). In case of GEE, we can only employ the Wald's approach to joint test of contrasts.
Currently there's such function in the famous emmeans package (for LS-means), but it gave me different results, than drop1.
Let me show an example:
I checked the joint_tests against drop1 from geeasy and it agrees only partially. I decided to report it anyway. I don't say the joint_tests has any problem, reporting the discrepancy just in case, for "cross-verification".
The data:
d <- structure(list(ID = c(1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4,
4, 4, 4, 5, 5, 5, 5, 6, 6, 6, 6, 7, 7, 7, 7, 8, 8, 8, 8, 9, 9,
9, 9, 10, 10, 10, 10), TimeOrd = structure(c(1L, 2L, 3L, 4L,
1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L,
1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L,
1L, 2L, 3L, 4L), .Label = c("M0", "M1", "M2", "M3"), class = c("ordered",
"factor")), Result = c(1, 1.1, 1.5, 2, 1.1, 1.1, 1.4, 3, 1.1,
1.2, 1.7, 5, 1.5, 3, 4.6, 6, 2.3, 4.4, 5.5, 8, 2, 2.2, 2.3, 7,
4.5, 1, 3, 7, 3.3, 4.4, 5.5, 5, 3, 4, 5, 8, 1.1, 2.2, 3.3, 5),
SucN = c(0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1,
0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1,
1, 1, 1, 1, 0), Time = structure(c(1L, 2L, 3L, 4L, 1L, 2L,
3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L, 1L,
2L, 3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L,
1L, 2L, 3L, 4L), .Label = c("M0", "M1", "M2", "M3"), class = "factor")), row.names = c(NA,
40L), class = "data.frame")
And the test:
library(geepack)
library(emmeans)
library(geeasy)
> options(contrasts = c("contr.sum", "contr.poly"))
> m_geepack <- geeglm(SucN ~ Time * Result, family=binomial(link = "logit"), data=d, id=ID, corstr = "exchangeable", std.err="san.se")
> drop1(m_geepack,scope = SucN~Time*Result)
Single term deletions
Model:
SucN ~ Time * Result
DF Wald Pr(>Chi)
Time 3 6.49 0.090 .
Result 1 0.28 0.595
Time:Result 3 7.22 0.065 .
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
> joint_tests(m_geepack)
model term df1 df2 F.ratio p.value
Time 3 Inf 3.123 0.0250
Result 1 Inf 0.282 0.5950
Time:Result 3 Inf 2.406 0.0650
As we can see, it agrees well but only for Result and Time:Result. There is a disagreement for the Time effect.
Do they use a completely different approach, or is there any bug maybe?
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.