| mvmeta | R Documentation |
Performs multivariate meta-analysis by pooling study-specific parameter estimates using generalized least squares (GLS) under a fixed-effects model.
mvmeta(b, V)
b |
Matrix of study estimates (studies × parameters). |
V |
may be supplied with
|
The function accepts a matrix of parameter estimates and the corresponding within-study covariance matrices (stored in upper-triangular vector form).
This approach is appropriate when combining correlated effect estimates, for example correlation coefficients of SNPs across studies.
The function fits a multivariate fixed-effects meta-analysis using generalized least squares (GLS).
For study i = 1,\dots,k, let d_i be the vector of observed
parameter estimates and \Psi_i the corresponding within-study
covariance matrix:
d_i \sim N(\beta,\; \Psi_i)
where \beta is the vector of common (pooled) parameters.
The study estimates are stacked into a single vector
d = (d_1^T,\dots,d_k^T)^T
with block-diagonal covariance matrix
\Psi = \mathrm{blockdiag}(\Psi_1,\dots,\Psi_k).
The model can then be written in GLS regression form
d = X\beta + \varepsilon, \qquad \varepsilon \sim N(0,\Psi)
where X is a block design matrix that repeats an identity matrix
for each study (intercept-only multivariate meta-analysis). Missing
outcomes are automatically removed when constructing d,
\Psi and X.
The pooled estimator is the GLS estimator
\hat{\beta} =
(X^T \Psi^{-1} X)^{-1} X^T \Psi^{-1} d.
Heterogeneity is assessed using the multivariate Cochran Q statistic
Q = (d - X\hat{\beta})^T \Psi^{-1} (d - X\hat{\beta}),
which is asymptotically \chi^2_{N-p}, where N is the number
of observed estimates and p the number of pooled parameters.
This implementation corresponds to the multivariate fixed-effects model described in Hartung et al. (2008, Example 11.3).
An object of class "mvmeta" with the following elements:
beta: pooled estimates
vcov: covariance matrix of pooled estimates
se: standard errors
z: z statistics
pval: p values
ci: 95% confidence intervals
X2, df, p: heterogeneity test
logLik: model log-likelihood
k: number of studies
p_outcomes: number of pooled outcomes
Jing Hua Zhao
hartung08gap
metareg
## Not run:
# Example 11.3 from Hartung et al.
b <- matrix(c(
0.808, 1.308, 1.379, NA, NA,
NA, 1.266, 1.828, 1.962, NA,
NA, 1.835, NA, 2.568, NA,
NA, 1.272, NA, NA, 2.038,
1.171, 2.024, 2.423, 3.159, NA,
0.681, NA, NA, NA, NA), ncol=5, byrow=TRUE)
psi1 <- psi2 <- psi3 <- psi4 <- psi5 <- psi6 <- matrix(0,5,5)
psi1[1,1] <- 0.0985; psi1[1,2] <- 0.0611; psi1[1,3] <- 0.0623
psi1[2,2] <- 0.1142; psi1[2,3] <- 0.0761; psi1[3,3] <- 0.1215
psi2[2,2] <- 0.0713; psi2[2,3] <- 0.0539; psi2[2,4] <- 0.0561
psi2[3,3] <- 0.0938; psi2[3,4] <- 0.0698; psi2[4,4] <- 0.0981
psi3[2,2] <- 0.1228; psi3[2,4] <- 0.1119; psi3[4,4] <- 0.1790
psi4[2,2] <- 0.0562; psi4[2,5] <- 0.0459; psi4[5,5] <- 0.0815
psi5[1,1] <- 0.0895; psi5[1,2] <- 0.0729; psi5[1,3] <- 0.0806
psi5[1,4] <- 0.0950; psi5[2,2] <- 0.1350; psi5[2,3] <- 0.1151
psi5[2,4] <- 0.1394; psi5[3,3] <- 0.1669; psi5[3,4] <- 0.1609
psi5[4,4] <- 0.2381
psi6[1,1] <- 0.0223
V <- rbind(psi1[upper.tri(psi1,diag=TRUE)],
psi2[upper.tri(psi2,diag=TRUE)],
psi3[upper.tri(psi3,diag=TRUE)],
psi4[upper.tri(psi4,diag=TRUE)],
psi5[upper.tri(psi5,diag=TRUE)],
psi6[upper.tri(psi6,diag=TRUE)])
fit <- mvmeta(b, V)
summary(fit)
logLik(fit)
AIC(fit)
BIC(fit)
## End(Not run)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.