Giter Club home page Giter Club logo

geeasy's People

Contributors

annennenne avatar arch-stanton avatar ekstroem avatar hojsgaard avatar lsubioscomputing avatar

Watchers

 avatar  avatar  avatar  avatar

geeasy's Issues

Is weighting in geeasy implemented in the same way as in geepack?

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.]

  1. Xu, Cong et al. “An R package for model fitting, model selection and the simulation for longitudinal data with dropout missingness.” Communications in statistics: Simulation and computation vol. 48,9 (2019): 2812-2829. doi:10.1080/03610918.2018.1468457
    https://www.ncbi.nlm.nih.gov/pmc/articles/PMC7188076/
    obraz

and

  1. CRTgeeDR: an R Package for Doubly Robust Generalized Estimating Equations Estimations in Cluster Randomized Trials with Missing Data PDF download
    Melanie Prague, Rui Wang and Victor De Gruttola , The R Journal (2017) 9:2, pages 105-115.
    https://journal.r-project.org/archive/2017/RJ-2017-041/RJ-2017-041.pdf
    obraz

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

Trying to match SAS results

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.

Discrepancy between emmeans::joint_tests and geeasy::drop1

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?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.