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.