The bcmixed package provides two categories of important functions: bcmarg and bcmmrm. The bcmarg function provides inferences on the marginal model of the mixed effect model with the Box-Cox transformation and the bcmmrm function provides inferences on the model median differences between treatment groups for longitudinal randomized clinical trials. These statistical methods are proposed by Maruo et al. (2017).
You can install the released version of bcmixed from CRAN with:
install.packages("bcmixed")
And the development version from GitHub with:
# install.packages("devtools")
::install_github("kzkzmr/bcmixed") devtools
This is a basic example which shows you how to solve a common problem:
library(bcmixed)
data(aidscd4)
# Marginal model of mixed model with the Box-Cox transformation
<- bcmarg(cd4 ~ as.factor(treatment) * as.factor(weekc) + age,
res1 data = aidscd4, time = weekc, id = id)
summary(res1)
#> Box-Cox transformed mixed model analysis
#> Formula: cd4 ~ as.factor(treatment) * as.factor(weekc) + age
#> Time: weekc
#> ID: id
#> Covariance structure: "UN"
#> Data: aidscd4
#> Log-likelihood: -13623.31
#> Estimated transformation parameter: 0.183
#>
#> Coefficients on the transformed scale:
#> Value Std.Error t-value p-value
#> (Intercept) 3.1483 0.25917 12.147 0.000
#> as.factor(treatment)2 0.2967 0.16995 1.746 0.081
#> as.factor(treatment)3 0.4716 0.16946 2.783 0.005
#> as.factor(treatment)4 0.7614 0.16763 4.542 0.000
#> as.factor(weekc)16 -0.2254 0.09248 -2.437 0.015
#> as.factor(weekc)24 -0.4863 0.09781 -4.972 0.000
#> as.factor(weekc)32 -0.7246 0.10834 -6.688 0.000
#> age 0.0207 0.00612 3.384 0.001
#> as.factor(treatment)2:as.factor(weekc)16 -0.1386 0.12994 -1.067 0.286
#> as.factor(treatment)3:as.factor(weekc)16 -0.0500 0.12943 -0.387 0.699
#> as.factor(treatment)4:as.factor(weekc)16 0.0682 0.12896 0.529 0.597
#> as.factor(treatment)2:as.factor(weekc)24 -0.2078 0.13763 -1.510 0.131
#> as.factor(treatment)3:as.factor(weekc)24 -0.0235 0.13758 -0.171 0.864
#> as.factor(treatment)4:as.factor(weekc)24 0.0821 0.13754 0.597 0.551
#> as.factor(treatment)2:as.factor(weekc)32 -0.1034 0.15508 -0.667 0.505
#> as.factor(treatment)3:as.factor(weekc)32 -0.1018 0.15353 -0.663 0.507
#> as.factor(treatment)4:as.factor(weekc)32 0.1436 0.15162 0.947 0.344
#>
#> Covariance parameters on the transformed scale:
#> UN(1,1) UN(1,2) UN(1,3) UN(1,4) UN(2,2) UN(2,3) UN(2,4) UN(3,3) UN(3,4) UN(4,4)
#> 3.72 2.76 2.61 2.34 3.47 2.67 2.56 3.24 2.68 3.27
#>
#> Correlations on the transformed scale:
#> 8 16 24 32
#> 8 1.000 0.767 0.751 0.670
#> 16 0.767 1.000 0.797 0.761
#> 24 0.751 0.797 1.000 0.821
#> 32 0.670 0.761 0.821 1.000
# Box-Cox transformation for the baseline
<- bcmarg(cd4.bl ~ 1, data = aidscd4[aidscd4$weekc == 8, ])$lambda
lmd.bl $cd4.bl.tr <- bct(aidscd4$cd4.bl, lmd.bl)
aidscd4
# Inference on model median differences between groups at each time point
<- bcmmrm(outcome = cd4, group = treatment, data = aidscd4, time = weekc,
res2 id = id, covv = c("cd4.bl.tr", "sex"), cfactor = c(0, 1),
glabel = c("Zid/Did", "Zid+Zal", "Zid+Did", "Zid+Did+Nev"))
# Summarize
print(res2)
#> Model median estimation based on MMRM with Box-Cox transformation
#> Outcome: cd4
#> Group: treatment
#> Time: weekc
#> ID: id
#> Covariate(s): c("cd4.bl.tr", "sex")
#> Covariance structure: "UN"
#> Data: aidscd4
#> Estimated transformation parameter: 0.154
#> Log-likelihood: -13322.36
#>
#> Model median estimates (row: group, col: time):
#> treatment | weekc 8 16 24 32
#> 1 Zid/Did 18.9 16.5 14.1 12.1
#> 2 Zid+Zal 22.0 17.9 14.6 13.5
#> 3 Zid+Did 24.5 20.9 18.2 15.1
#> 4 Zid+Did+Nev 30.1 27.8 24.2 21.8
summary(res2)
#> Model median inference based on MMRM with Box-Cox transformation
#>
#> Data and variable information:
#> Outcome: cd4
#> Group: treatment
#> Time: weekc
#> ID: id
#> Covariate(s): c("cd4.bl.tr", "sex")
#> Data: aidscd4
#>
#> Analysis information:
#> Covariance structure: "UN"
#> Robust inference: TRUE
#> Empirical small sample adjustment: TRUE
#> Confidence level: 0.95
#>
#> Analysis results:
#> Estimated transformation parameter: 0.154
#>
#>
#> Model median inferences for weekc = 8
#>
#> treatment median SE lower.CL upper.CL
#> 1 Zid/Did 18.9 0.862 17.2 20.6
#> 2 Zid+Zal 22.0 1.124 19.8 24.2
#> 3 Zid+Did 24.5 1.465 21.6 27.4
#> 4 Zid+Did+Nev 30.1 1.597 27.0 33.3
#>
#>
#> Model median inferences for weekc = 16
#>
#> treatment median SE lower.CL upper.CL
#> 1 Zid/Did 16.5 0.799 15.0 18.1
#> 2 Zid+Zal 17.9 0.932 16.1 19.8
#> 3 Zid+Did 20.9 1.207 18.5 23.2
#> 4 Zid+Did+Nev 27.8 1.596 24.6 30.9
#>
#>
#> Model median inferences for weekc = 24
#>
#> treatment median SE lower.CL upper.CL
#> 1 Zid/Did 14.1 0.716 12.7 15.5
#> 2 Zid+Zal 14.6 0.864 12.9 16.3
#> 3 Zid+Did 18.2 1.175 15.9 20.5
#> 4 Zid+Did+Nev 24.2 1.510 21.3 27.2
#>
#>
#> Model median inferences for weekc = 32
#>
#> treatment median SE lower.CL upper.CL
#> 1 Zid/Did 12.1 0.662 10.8 13.4
#> 2 Zid+Zal 13.5 0.813 11.9 15.1
#> 3 Zid+Did 15.1 1.019 13.1 17.1
#> 4 Zid+Did+Nev 21.8 1.376 19.1 24.5
#>
#>
#> Inferences of model median difference between groups ( treatment 1 - treatment 0 ) for weekc = 8
#>
#> treatment 1 treatment 0 delta SE lower.CL upper.CL t.value p.value
#> 1 Zid+Zal Zid/Did 3.12 1.40 0.363 5.87 2.22 0.027
#> 2 Zid+Did Zid/Did 5.64 1.69 2.325 8.96 3.34 0.001
#> 3 Zid+Did+Nev Zid/Did 11.25 1.80 7.711 14.80 6.24 0.000
#> 4 Zid+Did Zid+Zal 2.53 1.83 -1.059 6.12 1.39 0.167
#> 5 Zid+Did+Nev Zid+Zal 8.14 1.93 4.349 11.93 4.22 0.000
#> 6 Zid+Did+Nev Zid+Did 5.61 2.16 1.372 9.85 2.60 0.010
#>
#>
#> Inferences of model median difference between groups ( treatment 1 - treatment 0 ) for weekc = 16
#>
#> treatment 1 treatment 0 delta SE lower.CL upper.CL t.value p.value
#> 1 Zid+Zal Zid/Did 1.38 1.21 -1.0015 3.75 1.14 0.256
#> 2 Zid+Did Zid/Did 4.31 1.43 1.4940 7.12 3.01 0.003
#> 3 Zid+Did+Nev Zid/Did 11.22 1.78 7.7118 14.73 6.29 0.000
#> 4 Zid+Did Zid+Zal 2.93 1.50 -0.0162 5.88 1.95 0.051
#> 5 Zid+Did+Nev Zid+Zal 9.84 1.84 6.2318 13.46 5.36 0.000
#> 6 Zid+Did+Nev Zid+Did 6.91 2.00 2.9767 10.84 3.45 0.001
#>
#>
#> Inferences of model median difference between groups ( treatment 1 - treatment 0 ) for weekc = 24
#>
#> treatment 1 treatment 0 delta SE lower.CL upper.CL t.value p.value
#> 1 Zid+Zal Zid/Did 0.534 1.12 -1.660 2.73 0.479 0.632
#> 2 Zid+Did Zid/Did 4.139 1.36 1.459 6.82 3.035 0.003
#> 3 Zid+Did+Nev Zid/Did 10.135 1.66 6.874 13.40 6.108 0.000
#> 4 Zid+Did Zid+Zal 3.605 1.44 0.768 6.44 2.498 0.013
#> 5 Zid+Did+Nev Zid+Zal 9.601 1.73 6.204 13.00 5.554 0.000
#> 6 Zid+Did+Nev Zid+Did 5.996 1.89 2.291 9.70 3.180 0.002
#>
#>
#> Inferences of model median difference between groups ( treatment 1 - treatment 0 ) for weekc = 32
#>
#> treatment 1 treatment 0 delta SE lower.CL upper.CL t.value p.value
#> 1 Zid+Zal Zid/Did 1.35 1.04 -0.692 3.40 1.30 0.194
#> 2 Zid+Did Zid/Did 3.00 1.20 0.633 5.37 2.49 0.013
#> 3 Zid+Did+Nev Zid/Did 9.70 1.52 6.705 12.69 6.37 0.000
#> 4 Zid+Did Zid+Zal 1.65 1.30 -0.907 4.20 1.27 0.206
#> 5 Zid+Did+Nev Zid+Zal 8.34 1.60 5.206 11.48 5.23 0.000
#> 6 Zid+Did+Nev Zid+Did 6.70 1.71 3.338 10.06 3.92 0.000
plot(res2, ylab = "CD4+1", xlab = "Week", verbose = TRUE)
#> Analysis information:
#> Covariance structure: "UN"
#> Robust inference: TRUE
#> Empirical small sample adjustment: TRUE
#>
#> Error bar: 95% confidence interval