dat.dagostino1998.Rd
Results from 9 studies on the effectiveness of antihistamines in reducing the severity of runny nose and sneezing in the common cold.
dat.dagostino1998
The data frame contains the following columns:
study | numeric | study id |
cold | character | natural or induced cold study |
scale.rn | character | scale for measuring runny nose severity |
scale.sn | character | scale for measuring sneezing severity |
drug | character | type of antihistamine studied |
tnt | numeric | total sample size of the treatment group |
tnc | numeric | total sample size of the control (placebo) group |
outcome | character | outcome variable (see ‘Details’) |
mt | numeric | mean in the treatment group |
sdt | numeric | SD in the treatment group |
mc | numeric | mean in the control group |
sdc | numeric | SD in the control group |
xt | numeric | number of patients reaching the therapy goal in the treatment group |
xc | numeric | number of patients reaching the therapy goal in the control (placebo) group |
nt | numeric | sample size of the treatment group for measuring the outcome |
nc | numeric | sample size of the control group for measuring the outcome |
The studies for this meta-analysis were assembled to examine the effectiveness of antihistamines in reducing the severity of runny nose and sneezing in the common cold. Effectiveness was measured after one and two days of treatment in terms of 4 different outcome variables:
rnic1
and rnic2
(continuous): incremental change (improvement) in runny nose severity at day 1 and day 2,
rngoal1
and rngoal2
(dichotomous): reaching the goal of therapy (of at least a 50% reduction in runny nose severity) at day 1 and day 2,
snic1
and snic2
(continuous): incremental change (improvement) in sneezing severity at day 1 and day 2, and
rngoal1
and rngoal2
(dichotomous): reaching the goal of therapy (of at least a 50% reduction in sneezing severity) at day 1 and day 2.
For the continuous outcomes, standardized mean differences can be computed to quantify the difference between the treatment and control groups. For the dichotomous outcomes, one can compute (log) odds ratios to quantify the difference between the treatment and control groups.
D'Agostino, R. B., Sr., Weintraub, M., Russell, H. K., Stepanians, M., D'Agostino, R. B., Jr., Cantilena, L. R., Jr., Graumlich, J. F., Maldonado, S., Honig, P., & Anello, C. (1998). The effectiveness of antihistamines in reducing the severity of runny nose and sneezing: A meta-analysis. Clinical Pharmacology & Therapeutics, 64(6), 579–596. https://doi.org/10.1016/S0009-9236(98)90049-2
medicine, standardized mean differences, odds ratios, multivariate models
### copy data into 'dat' and examine data
dat <- dat.dagostino1998
head(dat, 16)
#> study cold scale.rn scale.sn drug tnt tnc outcome mt sdt mc sdc xt xc
#> 1 1 natural 0-3 0-3 chlorpheniramine 128 136 rnic1 0.932 0.593 0.810 0.556 NA NA
#> 2 1 natural 0-3 0-3 chlorpheniramine 128 136 rnic2 1.433 0.648 1.182 0.629 NA NA
#> 3 1 natural 0-3 0-3 chlorpheniramine 128 136 rngoal1 NA NA NA NA 54 45
#> 4 1 natural 0-3 0-3 chlorpheniramine 128 136 rngoal2 NA NA NA NA 99 94
#> 5 1 natural 0-3 0-3 chlorpheniramine 128 136 snic1 0.927 0.488 0.937 0.467 NA NA
#> 6 1 natural 0-3 0-3 chlorpheniramine 128 136 snic2 1.298 0.538 1.104 0.561 NA NA
#> 7 1 natural 0-3 0-3 chlorpheniramine 128 136 sngoal1 NA NA NA NA 87 91
#> 8 1 natural 0-3 0-3 chlorpheniramine 128 136 sngoal2 NA NA NA NA 112 104
#> 9 2 natural 0-3 0-3 chlorpheniramine 63 64 rnic1 0.730 0.745 0.578 0.773 NA NA
#> 10 2 natural 0-3 0-3 chlorpheniramine 63 64 rnic2 1.145 0.903 0.891 1.041 NA NA
#> 11 2 natural 0-3 0-3 chlorpheniramine 63 64 rngoal1 NA NA NA NA 10 9
#> 12 2 natural 0-3 0-3 chlorpheniramine 63 64 rngoal2 NA NA NA NA 19 19
#> 13 2 natural 0-3 0-3 chlorpheniramine 63 64 snic1 0.540 0.800 0.297 0.634 NA NA
#> 14 2 natural 0-3 0-3 chlorpheniramine 63 64 snic2 0.710 0.876 0.469 0.712 NA NA
#> 15 2 natural 0-3 0-3 chlorpheniramine 63 64 sngoal1 NA NA NA NA 16 12
#> 16 2 natural 0-3 0-3 chlorpheniramine 63 64 sngoal2 NA NA NA NA 25 20
#> nt nc
#> 1 128 136
#> 2 128 133
#> 3 128 136
#> 4 128 136
#> 5 118 116
#> 6 118 118
#> 7 118 118
#> 8 118 118
#> 9 63 64
#> 10 62 64
#> 11 63 64
#> 12 62 64
#> 13 63 64
#> 14 62 64
#> 15 50 49
#> 16 49 49
### load metafor package
library(metafor)
### compute standardized mean differences and corresponding sampling variances
dat <- escalc(measure="SMD", m1i=mt, m2i=mc, sd1i=sdt, sd2i=sdc, n1i=nt, n2i=nc, data=dat,
add.measure=TRUE)
### compute log odds ratios and corresponding sampling variances
dat <- escalc(measure="OR", ai=xt, ci=xc, n1i=nt, n2i=nc, data=dat,
replace=FALSE, add.measure=TRUE, add=1/2, to="all")
### inspect data for the first study
head(dat, 8)
#>
#> study cold scale.rn scale.sn drug tnt tnc outcome mt sdt mc sdc xt xc
#> 1 1 natural 0-3 0-3 chlorpheniramine 128 136 rnic1 0.932 0.593 0.810 0.556 NA NA
#> 2 1 natural 0-3 0-3 chlorpheniramine 128 136 rnic2 1.433 0.648 1.182 0.629 NA NA
#> 3 1 natural 0-3 0-3 chlorpheniramine 128 136 rngoal1 NA NA NA NA 54 45
#> 4 1 natural 0-3 0-3 chlorpheniramine 128 136 rngoal2 NA NA NA NA 99 94
#> 5 1 natural 0-3 0-3 chlorpheniramine 128 136 snic1 0.927 0.488 0.937 0.467 NA NA
#> 6 1 natural 0-3 0-3 chlorpheniramine 128 136 snic2 1.298 0.538 1.104 0.561 NA NA
#> 7 1 natural 0-3 0-3 chlorpheniramine 128 136 sngoal1 NA NA NA NA 87 91
#> 8 1 natural 0-3 0-3 chlorpheniramine 128 136 sngoal2 NA NA NA NA 112 104
#> nt nc yi vi measure
#> 1 128 136 0.2118 0.0153 SMD
#> 2 128 133 0.3920 0.0156 SMD
#> 3 128 136 0.3860 0.0647 OR
#> 4 128 136 0.4167 0.0781 OR
#> 5 118 116 -0.0209 0.0171 SMD
#> 6 118 118 0.3518 0.0172 SMD
#> 7 118 118 -0.1805 0.0905 OR
#> 8 118 118 0.8761 0.2413 OR
#>
### fit a random-effects model for incremental change in runny nose severity at day 1
res <- rma(yi, vi, data=dat, subset=outcome=="rnic1")
res
#>
#> Random-Effects Model (k = 9; tau^2 estimator: REML)
#>
#> tau^2 (estimated amount of total heterogeneity): 0.0000 (SE = 0.0147)
#> tau (square root of estimated tau^2 value): 0.0023
#> I^2 (total heterogeneity / total variability): 0.01%
#> H^2 (total variability / sampling variability): 1.00
#>
#> Test for Heterogeneity:
#> Q(df = 8) = 9.5056, p-val = 0.3015
#>
#> Model Results:
#>
#> estimate se zval pval ci.lb ci.ub
#> 0.2325 0.0630 3.6919 0.0002 0.1091 0.3559 ***
#>
#> ---
#> Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
#>
### fit a random-effects model for reaching the goal of therapy for runny nose severity at day 1
res <- rma(yi, vi, data=dat, subset=outcome=="rngoal1")
res
#>
#> Random-Effects Model (k = 9; tau^2 estimator: REML)
#>
#> tau^2 (estimated amount of total heterogeneity): 0.0000 (SE = 0.0829)
#> tau (square root of estimated tau^2 value): 0.0008
#> I^2 (total heterogeneity / total variability): 0.00%
#> H^2 (total variability / sampling variability): 1.00
#>
#> Test for Heterogeneity:
#> Q(df = 8) = 10.8895, p-val = 0.2080
#>
#> Model Results:
#>
#> estimate se zval pval ci.lb ci.ub
#> 0.5313 0.1530 3.4726 0.0005 0.2314 0.8312 ***
#>
#> ---
#> Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
#>
predict(res, transf=exp)
#>
#> pred ci.lb ci.ub pi.lb pi.ub
#> 1.7012 1.2604 2.2961 1.2604 2.2961
#>
### construct approximate V matrix assuming a correlation of 0.7 for sampling errors within studies
dat$esid <- ave(dat$study, dat$study, FUN=seq)
V <- vcalc(vi, cluster=study, obs=esid, rho=0.7, data=dat)
### fit a model for incremental change in runny nose severity at day 1 and at day 2, allowing for
### correlated sampling errors (no random effects added, since there does not appear to be any
### noteworthy heterogeneity in these data)
res <- rma.mv(yi, V, mods = ~ 0 + outcome, data=dat, subset=outcome %in% c("rnic1","rnic2"))
#> Warning: Redundant predictors dropped from the model.
res
#>
#> Multivariate Meta-Analysis Model (k = 18; method: REML)
#>
#> Variance Components: none
#>
#> Test for Residual Heterogeneity:
#> QE(df = 16) = 15.6883, p-val = 0.4749
#>
#> Test of Moderators (coefficients 1:2):
#> QM(df = 2) = 17.4520, p-val = 0.0002
#>
#> Model Results:
#>
#> estimate se zval pval ci.lb ci.ub
#> outcomernic1 0.2315 0.0630 3.6773 0.0002 0.1081 0.3549 ***
#> outcomernic2 0.2528 0.0634 3.9896 <.0001 0.1286 0.3769 ***
#>
#> ---
#> Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
#>
### test if there is a difference in effects at day 1 and day 2
anova(res, X=c(1,-1))
#>
#> Hypothesis:
#> 1: outcomernic1 - outcomernic2 = 0
#>
#> Results:
#> estimate se zval pval
#> 1: -0.0212 0.0489 -0.4342 0.6642
#>
#> Test of Hypothesis:
#> QM(df = 1) = 0.1885, p-val = 0.6642
#>