metareg | R Documentation |
Fixed and random effects model for meta-analysis
metareg(data, N, verbose = "Y", prefixb = "b", prefixse = "se")
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 |
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)
.
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.
Adapted from a SAS macro, 23-7-2009 MRC-Epid JHZ
Shengxu Li, Jing Hua Zhao
higgins03gap
## Not run:
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))
## End(Not run)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.