escalc(measure, formula, ...)
## S3 method for class 'default':
escalc(measure, formula, ai, bi, ci, di, n1i, n2i,
x1i, x2i, t1i, t2i, m1i, m2i, sd1i, sd2i,
xi, mi, ri, ni, ti, data,
add=1/2, to="only0", vtype="LS", append=FALSE, ...)
## S3 method for class 'formula':
escalc(measure, formula, weights, data,
add=1/2, to="only0", vtype="LS", ...)add should be added (either "all", "only0", "if0all", or "none"). See "LS" or "UB"). See data argument (if one has been specified) should be returned together with the effect sizes and sampling variances (default is FALSE).append=TRUE and a data frame was specified via the data argument, then yi and vi are append to this data frame.escalc function, the default and a formula interface. The two interfaces are described below.
measure is a character string specifying which outcome measure should be calculated (see below for the various options), arguments ai through ni are then used to specify the needed information to calculate the various measures (depending on the outcome measure, different arguments need to be supplied), and data can be used to specify a data frame containing the variables given to the previous arguments. The add and to arguments may be needed when dealing with 2x2 table data that contain cells with zeros. Finally, the vtype argument is used to specify how to calculate the sampling variance estimate (see below).
ai bi n1i
group 2 ci di n2i
} where ai, bi, ci, and di denote the cell frequencies and n1i and n2i the row totals. For example, in a set of randomized clinical trials (RCTs) or cohort studies, group 1 and group 2 may refer to the treatment (exposed) and placebo/control (not exposed) group, with outcome 1 denoting some event of interest (e.g., death) and outcome 2 its complement. In a set of case-control studies, group 1 and group 2 may refer to the group of cases and the group of controls, with outcome 1 denoting, for example, exposure to some risk factor and outcome 2 non-exposure. The 2x2 table may also be the result of cross-sectional (i.e., multinomial) sampling, so that none of the table margins (except the total sample size n1i+n2i) are fixed through the study design.
Depending on the type of design (sampling method), a meta-analysis of 2x2 table data can be based on one of several different outcome measures, including the odds ratio, the relative risk (also called risk ratio), the risk difference, and the arcsine transformed risk difference (for example, for case-control, the odds ratio is the measure of choice, while for RCTs and cohort studies, all of these measures may be applicable). The phi coefficient, Yule's Q, and Yule's Y are additional measures of association for 2x2 table data (although they are not frequently used in meta-analyses). For these outcome measures, one needs to specify either ai, bi, ci, and di or alternatively ai, ci, n1i, and n2i. The options for the measure argument are then:
"RR": Thelog relative riskis equal to the log of(ai/n1i)/(ci/n2i)."OR": Thelog odds ratiois equal to the log of(ai*di)/(bi*ci)."RD": Therisk differenceis equal to(ai/n1i)-(ci/n2i)."AS": The arcsine transformation is a variance stabilizing transformation for proportions. Thearcsine transformed risk differenceis equal toasin(sqrt(ai/n1i)) - asin(sqrt(ci/n2i)). See Ruecker et al. (2009) for a discussion of this and other outcome measures for 2x2 table data."PETO": Thelog odds ratio estimated with Peto's method(see Yusuf et al., 1985) is equal to(ai-si*n1i/ni)/((si*ti*n1i*n2i)/(ni^2*(ni-1))), wheresi=ai+ci,ti=bi+di, andni=n1i+n2i."PHI": Thephi coefficientis equal to(ai*di-bi*ci)/sqrt(n1i*n2i*si*ti), wheresi=ai+ciandti=bi+di."YUQ":Yule's Qis equal to(oi-1)/(oi+1), whereoiis the odds ratio."YUY":Yule's Yis equal to(sqrt(oi)-1)/(sqrt(oi)+1), whereoiis the odds ratio.to="all", the value of add is added to each cell of all 2x2 tables. When to="only0", the value of add is added to each cell of the 2x2 tables with at least one cell equal to 0. When to="if0all", the value of add is added to each cell of all 2x2 tables, but only when there is at least one 2x2 table with a zero cell. Setting to="none" or add=0 has the same effect: No adjustment to the observed table frequencies is made. Depending on the outcome measure and the data, this may lead to division by zero inside of the function (when this occurs, the resulting Inf value is recoded to NA).
An example dataset corresponding to data of this type is provided in dat.bcg.
}
x1i t1i
group 2 x2i t2i
} where x1i and x2i denote the number of cases in the first and the second group, respectively, and t1i and t2i the corresponding total person-times at risk. Commonly used effect size or outcome measures in this context are the ratio or the difference between the two incidence rates. The options for the measure argument are then:
"IRR": Thelog incidence rate ratiois equal to the log of(x1i/t1i)/(x2i/t2i)."IRD": Theincidence rate differenceis equal to(x1i/t1i)-(x2i/t2i)."IRSD": The square-root transformation is a variance stabilizing transformation for incidence rates. Thesquare-root transformed incidence rate differenceis equal tosqrt(x1i/t1i)-sqrt(x2i/t2i).to="all", the value of add is added to x1i and x2i in all k studies. When to="only0", the value of add is added to x1i and x2i only in the studies that have zero cases in one or both groups. When to="if0all", the value of add is added to x1i and x2i in all k studies, but only when there is at least one study with zero cases in one or both groups. Setting to="none" or add=0 has the same effect: No adjustment to the observed number of cases is made. Depending on the outcome measure and the data, this may lead to division by zero inside of the function (when this occurs, the resulting Inf value is recoded to NA).
An example dataset corresponding to data of this type is provided in dat.warfarin.
}
m1i and m2i are used to specify the means of the two groups, sd1i and sd2i the standard deviations of the scores in the two groups, and n1i and n2i the sample sizes of the two groups. The options for the measure argument are then:
"MD": Theraw mean differenceis equal tom1i-m2i."SMD": Thestandardized mean differenceis equal to(m1i-m2i)/spi, wherespiis the pooled standard deviation of the two groups (which is calculated inside of the function based onsd1iandsd2i). The standardized mean difference is automatically corrected for its slight positive bias within the function (see Hedges & Olkin, 1985). Whenvtype="LS", the sampling variances are calculated based on the large sample approximation. Alternatively, the unbiased estimates of the sampling variances can be obtained withvtype="UB".dat.los.
}
ri, the vector with the raw correlation coefficients, and ni, the corresponding sample sizes. The options for the measure argument are then:
"COR": Theraw correlation coefficientis simply equal torias supplied to the function. Whenvtype="LS", the sampling variances are calculated based on the large sample approximation. Alternatively, an approximation to the unbiased estimates of the sampling variances can be obtained withvtype="UB"(see Hedges, 1989)."UCOR": Theunbiased estimate of the correlation coefficientis obtained by correcting the raw correlation coefficient for its slight negative bias (based on equation 2.7 in Olkin & Pratt, 1958). Again,vtype="LS"andvtype="UB"can be used to choose between the large sample approximation or approximately unbiased estimates of the sampling variances."ZCOR": Fisher's r-to-z transformation is a variance stabilizing transformation for correlation coefficients with the added benefit of also being a rather effective normalizing transformation (Fisher, 1921). TheFisher's r-to-z transformed correlation coefficientis equal to1/2*log((1+ri)/(1-ri)).dat.empint.
}
xi and ni, denoting the number of individuals experiencing the event of interest and the total number of individuals, respectively. Instead of specifying ni, one can use mi to specify the number of individuals that do not experience the event of interest. The options for the measure argument are then:
"PR": Theraw proportionis equal toxi/ni."PLN": Thelog transformed proportionis equal to the log ofxi/ni."PLO": Thelogit transformed proportionis equal to the log ofxi/(ni-xi)(i.e., the log of the odds)."PAS": The arcsine transformation is a variance stabilizing transformation for proportions. Thearcsine transformed proportionis equal toasin(sqrt(xi/ni))."PFT": Another variance stabilizing transformation for proportions was suggested by Freeman & Tukey (1950). TheFreeman-Tukey double arcsine transformed proportionis equal to1/2*(asin(sqrt(xi/(ni+1))) + asin(sqrt((xi+1)/(ni+1)))).to="all", the value of add is added to xi and mi in all $k$ studies. When to="only0", the value of add is added only for studies where xi or mi is equal to 0. When to="if0all", the value of add is added in all $k$ studies, but only when there is at least one study with a zero value for xi or mi. Setting to="none" or add=0 again means that no adjustment to the observed values is made.
}
xi and ti, denoting the number of individuals experiencing the event of interest and the total person-time at risk, respectively. The options for the measure argument are then:
"IR": Theraw incidence rateis equal toxi/ti."IRLN": Thelog transformed incidence rateis equal to the log ofxi/ti."IRS": The square-root transformation is a variance stabilizing transformation for incidence rates. Thesquare-root transformed incidence rateis equal tosqrt(xi/ti)."IRFT": Another variance stabilizing transformation for incidence rates can be based on Freeman & Tukey (1950). TheFreeman-Tukey transformed incidence rateis equal tosqrt(xi/ti) + sqrt(xi/ti+1/ti).to="all", the value of add is added to xi in all k studies. When to="only0", the value of add is added to xi only in the studies that have zero cases. When to="if0all", the value of add is added to xi in all k studies, but only when there is at least one study with zero cases. Setting to="none" or add=0 has the same effect: No adjustment to the observed number of cases is made. Depending on the outcome measure and the data, this may lead to division by zero inside of the function (when this occurs, the resulting Inf value is recoded to NA).
}
}
measure is a character string specifying which outcome measure should be calculated. The formula argument is then used to specify the data structure as a multipart formula. The data argument can be used to specify a data frame containing the variables in the formula. The add, to, and vtype arguments work as described above.
formula argument takes the form outcome ~ group | study, where group is a two-level factor specifying the rows of the tables, outcome is a two-level factor specifying the columns of the tables (the two possible outcomes), and study is a factor specifying the study factor. The weights argument is used to specify the frequencies in the various cells.
}
formula argument takes the form cases/times ~ group | study, where group is a two-level factor specifying the group factor and study is a factor specifying the study factor. The left-hand side of the formula is composed of two parts, with the first variable for the number of cases and the second variable for the person-time at risk.
}
formula argument takes the form means/sds ~ group | study, where group is a two-level factor specifying the group factor and study is a factor specifying the study factor. The left-hand side of the formula is composed of two parts, with the first variable for the means and the second variable for the standard deviations. The weights argument is used to specify the sample sizes in the groups.
}
formula argument takes the form outcome ~ 1 | study, where outcome is used to specify the observed correlations and study is a factor specifying the study factor. The weights argument is used to specify the sample sizes.
}
formula argument takes the form outcome ~ 1 | study, where outcome is a two-level factor specifying the columns of the tables (the two possible outcomes) and study is a factor specifying the study factor. The weights argument is used to specify the frequencies in the various cells.
}
formula argument takes the form cases/times ~ 1 | study, where study is a factor specifying the study factor. The left-hand side of the formula is composed of two parts, with the first variable for the number of cases and the second variable for the person-time at risk.
}
}rma.uni, rma.mh, rma.peto### load BCG vaccine data
data(dat.bcg)
### calculate log relative risks and corresponding sampling variances
dat <- escalc(measure="RR", ai=tpos, bi=tneg, ci=cpos, di=cneg,
data=dat.bcg, append=TRUE)
dat
### using formula interface (first rearrange data into required format)
k <- length(dat.bcg$trial)
dat.fm <- data.frame(study=factor(rep(1:k, each=4)))
dat.fm$grp <- factor(rep(c("T","T","C","C"), k), levels=c("T","C"))
dat.fm$out <- factor(rep(c("+","-","+","-"), k), levels=c("+","-"))
dat.fm$freq <- with(dat.bcg, c(rbind(tpos, tneg, cpos, cneg)))
dat.fm
escalc(out ~ grp | study, weights=freq, data=dat.fm, measure="RR")Run the code above in your browser using DataLab