FMA.concurrent.CV {cfma}R Documentation

Functional mediation analysis under concurrent regression model

Description

This function performs functional mediation regression under the concurrent model. Tuning parameter is chosen based on cross-validation.

Usage

FMA.concurrent.CV(Z, M, Y, intercept = TRUE, basis = NULL, Ld2.basis = NULL, 
    basis.type = c("fourier"), nbasis = 3, timeinv = c(0, 1), timegrids = NULL, 
    lambda = NULL, nfolds = 5)

Arguments

Z

a data matrix. Z is the treatment trajectory in the mediation analysis. The number of rows is the number of subjects, and the number of columns is the number of measured time points.

M

a data matrix. M is the mediator trajectory in the mediation analysis. The number of rows is the number of subjects, and the number of columns is the number of measured time points.

Y

a data matrix. Y is the outcome trajectory in the mediation analysis. The number of rows is the number of subjects, and the number of columns is the number of measured time points.

intercept

a logic variable. Default is TRUE, an intercept term is included in the regression model.

basis

a data matrix. Basis function used in the functional data analysis. The number of columns is the number of basis function considered. If basis = NULL, Fourier basis functions will be generated.

Ld2.basis

a data matrix. The second derivative of the basis function. The number of columns is the number of basis function considered. If Ld2.basis = NULL, the second derivative of Fourier basis functions will be generated.

basis.type

a character of basis function type. Default is Fourier basis (basis.type = "fourier").

nbasis

an integer, the number of basis function included. If basis is provided, this argument will be ignored.

timeinv

a numeric vector of length two, the time interval considered in the analysis. Default is (0,1).

timegrids

a numeric vector of time grids of measurement. If timegrids = NULL, it is assumed the between measurement time interval is constant.

lambda

a numeric vector of tuning parameter values.

nfolds

a number gives the number of folds in cross-validation.

Details

The concurrent mediation model is

M(t)=Z(t)\alpha(t)+\epsilon_{1}(t),

Y(t)=Z(t)\gamma(t)+M(t)\beta(t)+\epsilon_{2}(t),

where \alpha(t), \beta(t), \gamma(t) are coefficient curves. The model coefficient curves are estimated by minimizing the penalized L_{2}-loss. Tuning parameter \lambda controls the smoothness of the estimated curves, and is chosen by cross-validation.

Value

basis

the basis functions used in the analysis.

M

a list of output for the mediator model

coefficient: the estimated coefficient with respect to the basis function

curve: the estimated coefficient curve

fitted: the fitted value of M

lambda: the chosen \lambda value

Y

a list of output for the outcome model

coefficient: the estimated coefficient with respect to the basis function

curve: the estimated coefficient curve

fitted: the fitted value of Y

lambda: the chosen \lambda value

IE

a list of output for the indirect effect comparing Z_{1}(t)=1 versus Z_{0}(t)=0

coefficients: the coefficient with respect to the basis function

curve: the estimated causal curve

DE

a list of output for the direct effect comparing Z_{1}(t)=1 versus Z_{0}(t)=0

coefficients: the coefficient with respect to the basis function

curve: the estimated causal curve

Author(s)

Yi Zhao, Johns Hopkins University, zhaoyi1026@gmail.com;

Xi Luo, Brown University xi.rossi.luo@gmail.com;

Martin Lindquist, Johns Hopkins University, mal2053@gmail.com;

Brian Caffo, Johns Hopkins University, bcaffo@gmail.com

References

Zhao et al. (2017). Functional Mediation Analysis with an Application to Functional Magnetic Resonance Imaging Data. arXiv preprint arXiv:1805.06923.

Examples


##################################################
# Concurrent functional mediation model
data(env.concurrent)
Z<-get("Z",env.concurrent)
M<-get("M",env.concurrent)
Y<-get("Y",env.concurrent)


# consider Fourier basis
fit<-FMA.concurrent.CV(Z,M,Y,intercept=FALSE,timeinv=c(0,300))

# estimate of alpha
plot(fit$M$curve[1,],type="l",lwd=5)
lines(get("alpha",env.concurrent),lty=2,lwd=2,col=2)

# estimate of gamma
plot(fit$Y$curve[1,],type="l",lwd=5)
lines(get("gamma",env.concurrent),lty=2,lwd=2,col=2)

# estimate of beta
plot(fit$Y$curve[2,],type="l",lwd=5)
lines(get("beta",env.concurrent),lty=2,lwd=2,col=2)

# estimate of causal curves
plot(fit$IE$curve,type="l",lwd=5)
plot(fit$DE$curve,type="l",lwd=5)

##################################################

[Package cfma version 1.0 Index]