Learn R Programming

gap (version 1.1-1)

metareg: Fixed and random effects model for meta-analysis

Description

Given $k=n$ studies with $b_1, ..., b_N$ being $\beta$'s and $se_1, ..., se_N$ standard errors from regression, the fixed effects model uses inverse variance weighting such that $w_1=1/se_1^2$, ..., $w_N=1/se_N^2$ and the combined $\beta$ as the weighted average, $\beta_f=(b_1*w_1+...+b_N*w_N)/w$, with $w=w_1+...+w_N$ being the total weight, the se for this estimate is $se_f=\sqrt{1/w}$. A normal z-statistic is obtained as $z_f=\beta_f/se_f$, and the corresponding p value $p_f=2*pnorm(-abs(z_f))$. For the random effects model, denote $q_w=w_1*(b_1-\beta_f)^2+...+w_N*(b_N-\beta_f)^2$ and $dl=max(0,(q_w-(k-1))/(w-(w_1^2+...+w_N^2)/w))$, corrected weights are obtained such that ${w_1}_c=1/(1/w_1+dl)$, ..., ${w_N}_c=1/(1/w_N+dl)$, totaling $w_c={w_1}_c+...+{w_N}_c$. The combined $\beta$ and se are then $\beta_r=(b_1*{w_1}_c+...+b_N*{w_N}_c)/w_c$ and $se_r=\sqrt(1/w_c)$, leading to a z-statistic $z_r=\beta_r/se_r$ and a p-value $p_r=2*pnorm(-abs(z_r))$. Moreover, a p-value testing for heterogeneity is $p_{heter}=pchisq(q_w,k-1,lower.tail=FALSE)$.

Usage

metareg(data, N, verbose="Y", prefixb="b", prefixse="se")

Arguments

data
Data frame to be used
N
Number of studies
verbose
A control for screen output
prefixb
Prefix of estimate; default value is "b"
prefixse
Prefix of standard error; default value is "se"

Value

  • The returned value is a data frame with the following variables:
  • p_fP value (fixed effects model)
  • p_rP value (random effects model)
  • beta_fregression coefficient
  • beta_rregression coefficient
  • se_fstandard error
  • se_rstandard error
  • z_fz value
  • z_rz value
  • p_heterheterogeneity test p value
  • i2$I^2$ statistic
  • kNo of tests used
  • epssmallest double-precision number

References

JPT Higgins, SG Thompson, JJ Deeks, DG Altman. Measuring inconsistency in meta-analyses. BMJ 327:557-60

Examples

Run this code
abc <- data.frame(chromosome=1,rsn='abcd',startpos=1234,b1=1,se1=2,p1=0.1,b2=2,se2=6,p2=0,b3=3,se3=8,p3=0.5)
metareg(abc,3)
abc2 <- data.frame(b1=c(1,2),se1=c(2,4),b2=c(2,3),se2=c(4,6),b3=c(3,4),se3=c(6,8))
print(metareg(abc2,3))

Run the code above in your browser using DataLab