Learn R Programming

gap (version 1.6)

metareg: Fixed and random effects model for meta-analysis

Description

Fixed and random effects model for meta-analysis

Usage

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

Value

The returned value is a data frame with the following variables:

  • p_f P value (fixed effects model).

  • p_r P value (random effects model).

  • beta_f regression coefficient.

  • beta_r regression coefficient.

  • se_f standard error.

  • se_r standard error.

  • z_f z value.

  • z_r z value.

  • p_heter heterogeneity test p value.

  • i2 \(I^2\) statistic.

  • k No of tests used.

  • eps smallest double-precision number.

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". The function accepts a wide format data with estimates as \(b1,...,bN\) and standard errors as \(se1,...,seN\). More generally, they can be specified by prefixes in the function argument.

Author

Shengxu Li, Jing Hua Zhao

Details

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)\).

References

higgins03gap

Examples

Run this code
if (FALSE) {
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