The metafor Package

A Meta-Analysis Package for R

User Tools

Site Tools


analyses:vanhouwelingen2002

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
Next revisionBoth sides next revision
analyses:vanhouwelingen2002 [2021/10/22 14:46] Wolfgang Viechtbaueranalyses:vanhouwelingen2002 [2021/11/08 15:13] Wolfgang Viechtbauer
Line 39: Line 39:
 </code> </code>
  
-==== Fixed-Effects Model ====+==== Equal-Effects Model ====
  
-The first model considered is the fixed-effects model based on the log odds ratios. The same model can be fitted with:+The first model considered is the equal-effects model based on the log odds ratios. The same model can be fitted with:
 <code rsplus> <code rsplus>
-res <- rma(yi, vi, data=dat, method="FE")+res <- rma(yi, vi, data=dat, method="EE")
 res res
 </code> </code>
 <code output> <code output>
-Fixed-Effects Model (k = 13)+Equal-Effects Model (k = 13)
  
-Test for Heterogeneity:+I^2 (total heterogeneity / total variability):   92.65% 
 +H^2 (total variability / sampling variability):  13.60 
 +                                                                                                                          
 +Test for Heterogeneity:                                                                                                  
 Q(df = 12) = 163.1649, p-val < .0001 Q(df = 12) = 163.1649, p-val < .0001
  
 Model Results: Model Results:
  
-estimate       se     zval     pval    ci.lb    ci.ub +estimate      se      zval    pval    ci.lb    ci.ub  
- -0.4361   0.0423 -10.3190   <.0001  -0.5190  -0.3533      ***+ -0.4361  0.0423  -10.3190  <.0001  -0.5190  -0.3533  *** 
  
 --- ---
-Signif. codes: ***’ 0.001 **’ 0.01 *’ 0.05 .’ 0.1 ‘ ’ 1+Signif. codes: '***0.001 '**0.01 '*0.05 '.0.1 ' ' 1
 </code> </code>
 For easier interpretation, these results can be back-transformed to the odds ratio scale with: For easier interpretation, these results can be back-transformed to the odds ratio scale with:
Line 293: Line 296:
 Then Figure 5 in the paper (p. 605) can be recreated with: Then Figure 5 in the paper (p. 605) can be recreated with:
 <code rsplus> <code rsplus>
-tmp <- rma(measure="OR", ai=tpos, bi=tneg, ci=cpos, di=cneg, data=dat, method="FE")+tmp <- rma(measure="OR", ai=tpos, bi=tneg, ci=cpos, di=cneg, data=dat, method="EE")
 labbe(tmp, xlim=c(-8,0), ylim=c(-8,0), xlab="ln(odds) not-vaccinated group", ylab="ln(odds) vaccinated group", lty=c("dotted", "blank"), grid=TRUE) labbe(tmp, xlim=c(-8,0), ylim=c(-8,0), xlab="ln(odds) not-vaccinated group", ylab="ln(odds) vaccinated group", lty=c("dotted", "blank"), grid=TRUE)
 points(coef(res)[1], coef(res)[2], pch=19, cex=3) points(coef(res)[1], coef(res)[2], pch=19, cex=3)
Line 315: Line 318:
 abline(h=x[2]) abline(h=x[2])
 </code> </code>
 +
 +While the coefficient (i.e., 0.7300) of the relationship between the underlying true log odds in the vaccinated and unvaccinated groups obtained above is correct, the computation of the corresponding standard error is not quite right, as it assumes that the variance-covariance matrix used as input to ''matreg()'' (i.e., ''res$G'') was obtained from 'raw data' for ''res$g.levels.comb.k'' (i.e., 13) paired data points, when in fact ''res$G'' is the estimated variance-covariance matrix of the random effects from the bivariate model. To obtain a more appropriate standard error, we need to first obtain the variance-covariance matrix of the estimates in ''res$G'', which we can get with:((By default, there are numerical problems inverting the Hessian matrix in this example, which we can work around using ''control=list(nearpd=TRUE)''.))
 +
 +<code rsplus>
 +res <- rma.mv(yi, vi, mods = ~ group - 1, random = ~ group | trial, struct="UN", data=dat.long, method="ML", cvvc="varcov", control=list(nearpd=TRUE))
 +</code>
 +
 +Now ''res$vvc'' contains the variance-covariance matrix of the estimates in ''res$G'':
 +
 +<code rsplus>
 +res$vvc
 +</code>
 +<code output>
 +          tau^2.1       cov   tau^2.2
 +tau^2.1 0.9359073 0.6711028 0.4822374
 +cov     0.6711028 0.5245460 0.4066553
 +tau^2.2 0.4822374 0.4066553 0.3399395
 +</code>
 +
 +We can then use this matrix as part of the input to ''matreg()'', that is, instead of specifying the sample size via argument ''n'' as was done above, we specify argument ''V'' with this matrix as input:
 +
 +<code rsplus>
 +matreg(y=2, x=1, R=res$G, cov=TRUE, means=coef(res), V=res$vvc)
 +</code>
 +
 +<code output>
 +         estimate      se     zval    pval    ci.lb    ci.ub
 +intrcpt   -1.8437  0.3548  -5.1967  <.0001  -2.5391  -1.1484  ***
 +CON        0.7300  0.0866   8.4276  <.0001   0.5602   0.8998  ***
 +</code>
 +
 +Now the standard error of the coefficient of interest is computed in such a way that it correctly takes the imprecision of the estimates in ''res$G'' into consideration.
  
 ==== Meta-Regression ==== ==== Meta-Regression ====
analyses/vanhouwelingen2002.txt · Last modified: 2022/08/03 17:52 by Wolfgang Viechtbauer