Learn R Programming

⚠️There's a newer version (0.4.0) of this package.Take me there.

metagam

Overview

metagam is an R-package for meta-analysis of generalized additive models (GAMs). Its main application is cases in which raw data are located in multiple locations, and cannot be shared due to ethical or regulatory restrictions. metagam provides functions for removing all individual participant data from from GAMs fitted separately at each location, such that the resulting object can be shared to a central location. Next, metagam provides functions for meta-analysing these fitted GAMs using pointwise meta-analysis, as well as plotting and summary methods for analyzing the meta-analytic fits. The methods implemented are described in Sorensen et al. (2021), extending upon previous works by Schwartz and Zanobetti (2000) and Crippa, Thomas, and Orsini (2018).

Currently, GAMs objects created with the following functions are supported:

  • From package mgcv: bam(), gam() and gamm().
  • From package gamm4: gamm4().

This package is under development, so changes to the interface can be expected. Suggestions for improvements and bug reports are warmly welcome, either by filing an Issue or opening a Pull Request.

Installation

Install the current release of metagam from CRAN with:

# install.packages("BiocManager")
BiocManager::install("metagam")

BiocManager is necessary because metagam depends on the Bioconductor package multtest.

Install the current development version of metagam from GitHub with:

# install.packages("remotes")
remotes::install_github("lifebrain/metagam")

Application Example

library(metagam)
library(mgcv)
#> Loading required package: nlme
#> This is mgcv 1.8-33. For overview type 'help("mgcv-package")'.

Simulate three datasets and fit a GAM to each of them. Then use strip_rawdata() from metagam to remove individual participant data.

## Set seed for reproducible random numbers
set.seed(8562957)
## Simulate using mgcv::gamSim
datasets <- lapply(1:3, function(x) gamSim(verbose = FALSE))
## Fit a model to each dataset
models <- lapply(datasets, function(dat){
  ## Full gam with mgcv
  full_model <- gam(y ~ s(x2, bs = "cr"), data = dat)
  ## Strip rawdata
  strip_rawdata(full_model)
})

models now is a list containing three GAMs without individual participant data. We can then meta-analyze them using metagam().

meta_analysis <- metagam(models)
#> 
#> Attaching package: 'purrr'
#> The following object is masked from 'package:testthat':
#> 
#>     is_null
summary(meta_analysis)
#> Meta-analysis of GAMs from 3 cohorts, using method FE.
#> 
#> Smooth terms analyzed: s(x2) .
#> 
#> Meta-analytic p-values of smooth terms:
#> 
#> |Test                  |s(x2)     |
#> |:---------------------|:---------|
#> |Stouffer's sum of z   |2.547e-46 |
#> |Edgington's sum of p  |6.158e-48 |
#> |Wilkinson's maximum p |1.000e-48 |
#> |Wilkinson's minimum p |3.000e-16 |
#> |logit p method        |1.628e-19 |
#> |Fisher's sum of logs  |6.219e-45 |

For further documentation and vignettes, please visit the package website.

Code of Conduct

Please note that the metagam project is released with a Contributor Code of Conduct. By contributing to this project, you agree to abide by its terms.

References

Crippa, Alessio, Ilias Thomas, and Nicola Orsini. 2018. “A Pointwise Approach to Dose-Response Meta-Analysis of Aggregated Data.” International Journal of Statistics in Medical Research 7 (May): 25–32. https://doi.org/10.6000/1929-6029.2018.07.02.1.

Schwartz, Joel, and Antonella Zanobetti. 2000. “Using Meta-Smoothing to Estimate Dose-Response Trends Across Multiple Studies, with Application to Air Pollution and Daily Death.” Epidemiology 11 (6): 666–72.

Sorensen, Oystein, Andreas M. Brandmaier, Didac Macia, Klaus Ebmeier, Paolo Ghisletta, Rogier A. Kievit, Athanasia M. Mowinckel, Kristine B. Walhovd, Rene Westerhausen, and Anders Fjell. 2021. “Meta-Analysis of Generalized Additive Models in Neuroimaging Studies.” NeuroImage 224 (January): 117416. https://doi.org/10.1016/j.neuroimage.2020.117416.

Copy Link

Version

Install

install.packages('metagam')

Monthly Downloads

248

Version

0.2.0

License

GPL-3

Issues

Pull Requests

Stars

Forks

Maintainer

Oystein Sorensen

Last Published

November 12th, 2020

Functions in metagam (0.2.0)

metagam

Meta-analysis of generalized additive models
make_heterogeneity_data

Prepare heterogeneity data
metagam-package

metagam: Meta-analysis of generalized additive models.
summary.metagam

Summary method for metagam objects
summary.striprawdata

Summary method for GAMs stripped for rawdata
print.summary.metagam

Print output from summary of metagam fit.
strip_rawdata

Strip rawdata from a generalized additive model
plot.metagam

Plot estimated smooth terms
plot_heterogeneity_q

Heterogeneity Q-plot
plot_dominance

Dominance plot
print.metagam

Print method for metagam objects.
plot_heterogeneity

Heterogeneity Plot
plot_heterogeneity_p

Heterogeneity p-plot
print.striprawdata

Print method for striprawdata