geer fits marginal models for independent, repeated, or
clustered responses using Generalized Estimating Equations (GEE).
Supported estimation methods include the traditional GEE, bias-reducing
GEE, bias-corrected GEE, and Jeffreys-prior penalized GEE. Continuous,
binary, and count responses are handled by geewa, while
binary responses can also be handled by geewa_binary
through an odds-ratio parameterization.
You can install the development version of geer from
GitHub:
# install.packages("devtools")
devtools::install_github("AnestisTouloumis/geer")Load the package:
library("geer")Fit a bias-reducing GEE with an exchangeable working correlation to the epilepsy seizure count data:
data("epilepsy", package = "geer")
fit <- geewa(
formula = seizures ~ treatment + lnbaseline + lnage,
family = poisson(link = "log"),
data = epilepsy,
id = id,
corstr = "exchangeable",
method = "brgee-robust"
)
summary(fit, cov_type = "bias-corrected")For binary responses, use geewa_binary() with an
odds-ratio parameterization:
data("cerebrovascular", package = "geer")
fit_bin <- geewa_binary(
formula = ecg ~ treatment + factor(period),
link = "logit",
data = cerebrovascular,
id = id,
orstr = "exchangeable",
method = "brgee-robust"
)
summary(fit_bin, cov_type = "bias-corrected")There are two core fitting functions:
geewa() for continuous, binary, and count responses
(Gaussian, Poisson, binomial, Gamma, inverse Gaussian, quasi,
quasibinomial, and quasipoisson families).geewa_binary() for binary responses via a marginalized
odds-ratio parameterization.Both functions support the following estimation methods via the
method argument:
| Method | Description |
|---|---|
"gee" |
Traditional GEE |
"brgee-robust", "brgee-naive",
"brgee-empirical" |
Bias-reducing GEE (differing in the bias adjustment used: robust, model-based, or empirical) |
"bcgee-robust", "bcgee-naive",
"bcgee-empirical" |
Bias-corrected GEE (one-step correction; same three variants) |
"pgee-jeffreys" |
Fully iterated Jeffreys-prior penalized GEE |
"opgee-jeffreys" |
One-step penalized GEE |
"hpgee-jeffreys" |
Hybrid one-step GEE |
The working correlation structure for geewa() is
controlled by corstr: "independence",
"exchangeable", "ar1",
"m-dependent", "unstructured",
"toeplitz", and "fixed". The working
odds-ratio structure for geewa_binary() is controlled by
orstr: "independence",
"exchangeable", "unstructured", and
"fixed".
Convergence and fitting options are set via
geer_control().
Standard S3 methods are available for fitted geer
objects:
summary(), print() — coefficient table and
model summary.coef(), vcov(), confint() —
estimates, covariance matrices, and confidence intervals.fitted(), residuals(),
predict() — fitted values and predictions.model.matrix() — design matrix.tidy(), glance() — tidy summaries
following broom
conventions.The cov_type argument controls the covariance estimator
used for inference: "bias-corrected" (default),
"robust" (sandwich), "df-adjusted", or
"naive" (model-based).
anova() — sequential or multi-model hypothesis test
tables.add1(), drop1() — single-term additions
and deletions with hypothesis tests and CIC.step_p() — stepwise model selection by hypothesis
testing.geecriteria() — QIC, CIC, RJC, QICu, GESSC, and GPC
model selection criteria.Fitted geer objects are compatible with the emmeans package
for estimated marginal means.
The package includes seven example datasets:
cerebrovascular, cholecystectomy,
depression, epilepsy, leprosy,
respiratory, and rinse.
Liang, K.Y. and Zeger, S.L. (1986) Longitudinal data analysis using generalized linear models. Biometrika, 73, 13–22.
Touloumis, A. (2026) Bias-Reduced GEE via Adjusted Estimating Equations, with Odds-Ratio Extensions. Preprint.
Touloumis, A. (2026) Jeffreys-Type Penalized GEE for Correlated Binary Data with an Odds-Ratio Parameterization. Preprint.