mlma: Multilevel Mediation Analysis

View source: R/mlma.r

mlmaR Documentation

Multilevel Mediation Analysis

Description

The function transforms the data set and does multilevel mediation analysis. The total, direct, and indirect effects will be returned as the results.

Usage

mlma(y, data1=NULL, x=data1$parameter$x, m=data1$parameter$m, 
               yref=NULL, xref=NULL, levelx=data1$parameter$levelx, 
               levely=data1$parameter$levely, 
               l1=data1$parameter$l1,l2=data1$parameter$l2, 
               c1=data1$parameter$c1, #levelx is the level of x
               c1r=data1$parameter$c1r, c2=data1$parameter$c2, 
               c2r=data1$parameter$c2r,level=data1$parameter$level,  
               weight=rep(1, nrow(data.frame(x))), 
               random="(1|level)", random.m1=NULL,intercept=TRUE, 
               family1=NULL, familym=vector("list",ncol(m)),
               covariates=NULL, cy1=NULL, cy2=NULL, cm=NULL,joint=NULL,
               f01y=data1$parameter$f01y,f10y=data1$parameter$f10y, 
               f02ky=data1$parameter$f02ky, f20ky=data1$parameter$f20ky, 
               f01km1=data1$parameter$f01km1,f01km2=data1$parameter$f01km2, 
               f10km=data1$parameter$f10km, data2=NULL, x.new=NULL, 
               m.new=NULL, level.new=level, weight.new=NULL,
               covariates.new=covariates,cov.mat=FALSE)

Arguments

y

the vector of the outcome variable.

data1

The transformed and organized data set from data.org. If the data set has not been organized, leave data1=NULL (by default), and set the transformation functions (f arguments). Otherwise, set data1 as the output from the data.org function and do not include the arguments starting with fs.

x

the vector of the predictive variable.

m

the mediators. The program will identify the levels and types of each mediator if not specified by l1, l2, c1, or c2. A mediator is identified as categorical if the mediator is a factor, a character, or has only two unque values.

yref

the reference group of y if it is binary. By default it will be the first level of y.

xref

the reference group of x if it is binary. By default it will be the first level of x.

levelx

the level of x (1 or 2). If it is not given, levelx will be decided by x.

levely

the level of y (1 or 2). If it is not given, levely will be decided by y.

l1

the column numbers of level 1 continuous mediators in m or the list of names of the level 1 continuous mediators.

l2

the column numbers of level 2 continuous mediators in m or the list of names of the level 2 continuous mediators.

c1

the column numbers of level 1 categorical mediators in m or the list of names of the level 1 categorical mediators.

c1r

the reference groups of categorical mediators specified by c1.

c2

the column numbers of level 2 categorical mediators in m or the list of names of the level 2 categorical mediators.

c2r

the reference groups of categorical mediators specified by c2.

level

a vector that record the group number for each observation.

weight

the weight of cases in groups.

random

the random effect part for the full model. random = "(1|level)" by default.

random.m1

the random effect part for model explaining the mediators. If not null, 1st item of random.m1 is the list of level 1 mediators, following items are the random item of the same order. All other random effects are random = "(1|level)" if not specified here.

intercept

True if fit an intercept to models, by default.

covariates

the covariates matrix to explain the outcome, y, and/or the mediators, m.

family1

the glm family for the response variable y. If it is null, will be binomial with logic link for binary y and gaussian with identity link for continuous y.

familym

a list of length ncol(m), each item gives the glm family for the corresponding column of m. If an item is null, the family will be binomial with logic link for binary m and gaussian with identity link for continuous m.

cy1

the column numbers of covariates that are level 1 and used to explain y.

cy2

the column numbers of covariates that are level 2 and used to explain y.

cm

the column numbers of covariates that are used to explain m. cm[[1]] gives the mediators (in l1, cl, l2, or c2) that can be partially explained by covariates. Each of the rest items of the cm list shows the column number(s) in covariates that should be used to explain each mediator listed in cm[[1]] and by that order.

joint

the list of group(s) of mediators whose joint mediation effect is of interests. joint[[1]] list the levels of mediators in each group and by the order of the list. Note that if any mediator in the group is of level 2, the level of the group should be 2.

f01y, f10y, f02ky, f20ky, f01km1, f01km2, f10km

the transformation functions as describe in the function "data.org". Need these arguments only when org.data=T.

x.new, m.new, level.new, weight.new, covariates.new

the settings that we want to make inferences on the mediation effects.

data2

The transformed and organized data set from data.org on the set of new x.new and m.new etc.. If the data set has not been organized, leave data2=NULL (by default).

cov.mat

If true, save the estimated variances for mediation effects by normal assumption.

Details

The multilevel mediation is based on the following linear multilevel additive models:

Y_{ij} = u_{0j}^Y(X_{.j}, \mathbf{M}_{.j}, \mathbf{Z}_{.j})+{\boldsymbol{\beta}_{10}^Y}^T\mathbf{f}_{10}^Y(X_{ij}-X_{.j})+\sum_{k=1}^K{\boldsymbol{\beta}_{20k}^Y}^T\mathbf{f}_{20k}^Y(M_{ijk}-M_{.jk})+{\boldsymbol{\beta}_{30}^Y}^T(\mathbf{Z}_{ij}-\mathbf{Z}_{.j})+r_{ij}^Y,

where

u_{0j}^Y(X_{.j}, \mathbf{M}_{.j}, \mathbf{Z}_{.j}) = c_{00}^Y + {\boldsymbol{\beta}_{01}^Y}^T\mathbf{f}_{01}^Y(X_{.j}) + \sum_{k=1}^K{\boldsymbol{\beta}_{02k}^Y}^T\mathbf{f}_{02k}^Y(M_{.jk}) + {\boldsymbol{\beta}_{03}^Y}^T\mathbf{Z}_{.j} + r_{0j}^Y.

For k=1,\ldots,K,

M_{.jk} = u_{0jk}^M(X_{.j})+{\boldsymbol{\beta}_{10k}^M}^T\mathbf{f}_{10k}^M(X_{ij}-X_{.j})+r_{ijk}^M,

u_{0jk}^M(X_{.j}) = c_{00k}^M + {\boldsymbol{\beta}_{01k}^M}^T\mathbf{f}_{01k}^{M1}(X_{.j}) + r_{0jk}^M.

If for some k, M_k is level 2 variable,

M_{.jk} = c_{00k}^M + {\boldsymbol{\beta}_{01k}^M}^T\mathbf{f}_{01k}^{M2}(X_{.j}) + r_{0jk}^M.

Note that in the models, \mathbf{f}(\cdot)=(f_1(\cdot), f_2(\cdot), \cdots, f_l(\cdot))^T is a set of l transformation functions on \cdot, with the corresponding linear coefficients vector \boldsymbol{\beta}=(\beta_1, \beta_2, \cdots, \beta_l)^T. \mathbf{f} and l are known for model fitting. l may be different with \mathbf{f} of different sub- and super-scripts.

Value

A "mlma" mode list will be returned with the following items:

de1

direct effect(s) of level 1 exposure(s). de1 is a matrix of dimension n by nx1, where n is the number of observations, and nx1 is the number of level 1 exposures.

de2

direct effect(s) of level 2 exposure(s). de2 is a matrix of dimension n2 by nx2, where n2 is the number of unique levels, and nx2 is the number of level 2 exposures.

ade1

average direct effect(s) of level 1 exposure(s). ade1 is a vector of length nx1.

ade2

average direct effect(s) of level 2 exposure(s). ade2 is a vector of length nx2.

te1

total effect of each level 1 exposure. te1 is a matrix of dimension n by nx1, where n is the number of observations, and nx1 is the number of level 1 exposures.

te2

total effect of each level 2 exposure. te2 is a matrix of dimension n2 by nx2, where n2 is the number of unique levels, and nx2 is the number of level 2 exposures.

ate1

average total effect(s) of level 1 exposure(s). ate1 is a vector of length nx1.

ate2

average total effect(s) of level 2 exposure(s). ate2 is a vector of length nx2.

ie1

level 1 indirect effect from level 1 exposure(s) to level 1 mediator(s) on the outcome. ie1 is an array of dimension (n,nm1,nx1), where nm1 is the number of level 1 mediators.

ie2

level 2 indirect effect from level 2 exposure(s) to level 2 mediator(s) on the outcome. ie2 is an array of dimension (n2,nm2,nx2), where nm2 is the number of level 2 mediators.

ie12

level 2 indirect effect from level 2 exposure(s) to level 1 mediator(s) on the outcome. ie12 is an array of dimension (n2,nm1,nx2).

aie1

level 1 average indirect effect from level 1 exposure(s) to level 1 mediator(s) on the outcome. aie1 is a matrix of dimension (nm1,nx1).

aie2

level 2 average indirect effect from level 2 exposure(s) to level 2 mediator(s) on the outcome. aie2 is a matrix of dimension (nm2,nx2).

aie12

level 2 average indirect effect from level 2 exposure(s) to level 1 mediator(s) on the outcome. aie12 is a matrix of dimension (nm1,nx2).

je1

joint level 1 indirect effect from level 1 exposure(s) to joint level 1 mediators on the outcome. je1 is an array of dimension (n,nj1,nx1), where nj1 is the number of groups of level 1 mediators.

je2

joint level 2 indirect effect from level 2 exposure(s) to joint level 2 mediators on the outcome. je2 is an array of dimension (n2,nj2,nx2), where nj2 is the number of groups oflevel 2 mediators.

je12

joint level 2 indirect effect from level 2 exposure(s) to joint level 1 mediators on the outcome. je12 is an array of dimension (n2,nj1,nx2).

aje1

average joint level 1 indirect effect from level 1 exposure(s) to joint level 1 mediators on the outcome. aje1 is a matrix of dimension (nj1,nx1).

aje2

average joint level 2 indirect effect from level 2 exposure(s) to joint level 2 mediators on the outcome. je2 is a matrix of dimension (nj2,nx2), where nj2 is the number of groups oflevel 2 mediators.

aje12

average joint level 2 indirect effect from level 2 exposure(s) to joint level 1 mediators on the outcome. je12 is a matrix of dimension (nj1,nx2).

f1

the overall multilevel model.

fm1

a list, where the first item identifies the level 1 mediators, and in that order, the following items give the prediction functions of the mediators.

fm2

a list, where the first item identifies the level 2 mediators, and in that order, the following items give the prediction functions of the mediators.

ie1_1, ie1_2, ie1_3, ie2_1, ie2_2, ie2_3

the first, second and third part of the corresponding indirect effects.

x

the matrix of the new exposure variable(s) (x.new).

x.j

the vector of the aggregated x at the higher level by the order of unique(level.new[!is.na(level.new)]).

data1

The results from data.org on the original data (x, m, etc.).

data2

The results from data.org on the new data (x.new, m.new, etc.).

Author(s)

Qingzhao Yu (qyu@lsuhsc.edu), Bin Li (bli@lsu.edu).

Examples

#with a level 1 exposure
data(sim.111)
data2<-data.org(sim.111$x, m=sim.111$m, 
                   f10y=list(1,c("x^2","sqrt(x+6)")), 
                   f20ky=list(2,c("x","x^3")), 
                   f10km=list(matrix(c(2,1),1),"log(x+2)"), level=sim.111$level)
temp2<-mlma(y=sim.111$y, data1=data2)

#can also do the above analysis using the following code
temp2<-mlma(y=sim.111$y, x=sim.111$x, m=sim.111$m, 
           f10y=list(1,c("x^2","sqrt(x+6)")), 
           f20ky=list(2,c("x","x^3")), 
           f10km=list(matrix(c(2,1),1),"log(x+2)"), level=sim.111$level)
                
#with a level 2 exposure
data(sim.211)
data1<-data.org(x=sim.211$x, m=sim.211$m, 
                   f01y=list(1,c("x","log(x^2)")), f02ky=list(1,c("x","x^2")),  
                   f20ky=list(2,c("x","x^3")), f01km2=list(matrix(c(1,1),1),c("x^1.2","x^2.3")),
                   f01km1=list(matrix(c(2,1),1),"sqrt(x)+3"),level=sim.211$level) 
temp1<-mlma(y=sim.211$y, data1) 

#with both level 1 and 2 exposure
data3<-data.org(x=cbind(sim.211$x,sim.111$x), m=sim.211$m, 
                   f01y=list(1,c("x","log(x^2)")), f02ky=list(1,c("x","x^2")), 
                   f20ky=list(2,c("x","x^3")), f01km1=list(matrix(c(2,1),1),"sqrt(x)+3"), 
                   f01km2=list(matrix(c(1,1),1),c("x^1.2","x^2.3")), level=sim.211$level)
temp3<-mlma(y=sim.211$y, data3) 


mlma documentation built on Aug. 30, 2023, 1:10 a.m.