The binaryMM
package allows users to fit marginalized
transition and latent variables (mTLV) models for binary correlated
data. You can install the development version from GitHub with:
{r, eval = FALSE} install.packages("devtools") devtools::install_github("ChiaraDG/binaryMM")
The function mm
allows users to fit marginalized models
with a transition and/or a latent term. Users specify the marginal mean
model with mean.formula
, the transition component of the
dependence model with t.formula
and the latent variable
component of the dependence model with lv.formula
. The
model below specifies both a transition and a latent variable term in
the dependence model:
{r, eval = FALSE} mod.mtlv <- mm(mean.formula = thought ~ month*gender + month*age, t.formula = ~1, lv.formula = ~1, data = madras, id = id)
Results from the model above can be displayed using the
summary
function:
#>
#> Class:
#> MMLong
#>
#> Call:
#> mm(mean.formula = thought ~ month * gender + month * age, lv.formula = ~1,
#> t.formula = ~1, id = id, data = madras)
#>
#> Information Criterion:
#> AIC BIC logLik Deviance
#> 680.1283 699.7631 -332.0642 664.1283
#>
#> Marginal Mean Parameters:
#> Estimate Model SE Chi Square Pr(>Chi)
#> (Intercept) 1.327440 0.434588 9.3299 0.002255
#> month -0.367564 0.077443 22.5268 2.072e-06
#> gender -0.282497 0.402015 0.4938 0.482241
#> age -0.732176 0.436180 2.8177 0.093228
#> month:gender -0.111740 0.078306 2.0362 0.153591
#> month:age 0.117705 0.080870 2.1184 0.145536
#>
#> Association Parameters:
#> Estimate Model SE Chi Square Pr(>Chi)
#> gamma:(Intercept) 2.511119 0.303963 68.2486 <2e-16
#> log(sigma):(Intercept) 0.074494 0.244870 0.0925 0.761
#>
#> Number of clusters: 86
#> Maximum cluster size: 12
#> Convergence status (nlm code): 1
#> Number of iterations: 50
User can speficy a dependence model with a transition term only with the code below:
```{r, eval = FALSE} mod.mt <- mm(mean.formula = thought ~ monthgender + monthage, t.formula = ~1, lv.formula = NULL, data = madras, id = id) summary(mod.mt)
#> #> Class: #> MMLong #> #> Call: #>
mm(mean.formula = thought ~ month * gender + month * age, t.formula =
~1, #> id = id, data = madras) #> #> Information Criterion:
#> AIC BIC logLik Deviance
#> 688.3789 705.5594 -337.1895 674.3789
#> #> Marginal Mean Parameters: #> Estimate Model SE Chi Square
Pr(>Chi) #> (Intercept) 1.183683 0.444318 7.0971 0.007721 #>
month -0.342857 0.081841 17.5501 2.798e-05 #> gender -0.141884
0.416152 0.1162 0.733147 #> age -0.649770 0.449183 2.0925 0.148021
#> month:gender -0.143788 0.081853 3.0859 0.078975 #> month:age
0.111555 0.085896 1.6867 0.194040 #> #> Association Parameters:
#> Estimate Model SE Chi Square Pr(>Chi) #> gamma:(Intercept)
3.16583 0.23014 189.23 < 2.2e-16 #> #> Number of clusters: 86
#> Maximum cluster size: 12 #> Convergence status (nlm code): 1
#> Number of iterations: 22
### Generate Outcome Data under a Marginalized Model Framework
The function `GenerateBinayY` in the `binaryMM` package allows users to generate outcome data under a marginalized model framework. The code below shows how the data can be generated. Note that the output of `GenerateBinayY` is the longitudinal outcome vector.
```{r}
set.seed(1)
N = 100
nclust = sample( seq(10,10), N, replace=TRUE)
id = rep(seq(N), nclust)
Xe = rep(rbinom(N,size=1,prob=.5), nclust) # binary exposure
time = unlist( sapply( as.list(nclust), function(ZZ) seq(ZZ)-1 ) )
data = data.frame(id, time, Xe)
data = data[order(data$id, data$time),]
Y = GenBinaryY(mean.formula=~time*Xe, lv.formula=~1, t.formula=~1,
beta=c(-2.5, 0.25, 0.25, 0.1), sigma=1, gamma=1, id=id, data=data, q=20, Yname = "binY")