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.