Posterior Distribution of Total, Direct, and Indirect Effects of X on Y Through M Over a Specific Time Interval or a Range of Time Intervals
Source:R/cTMed-posterior-med.R
PosteriorMed.RdThis function generates a posterior distribution of the total, direct and indirect effects of the independent variable \(X\) on the dependent variable \(Y\) through mediator variables \(\mathbf{m}\) over a specific time interval \(\Delta t\) or a range of time intervals using the posterior distribution of the first-order stochastic differential equation model drift matrix \(\boldsymbol{\Phi}\).
Arguments
- phi
List of numeric matrices. Each element of the list is a sample from the posterior distribution of the drift matrix (\(\boldsymbol{\Phi}\)). Each matrix should have row and column names pertaining to the variables in the system.
- delta_t
Numeric. Time interval (\(\Delta t\)).
- from
Character string. Name of the independent variable \(X\) in
phi.- to
Character string. Name of the dependent variable \(Y\) in
phi.- med
Character vector. Name/s of the mediator variable/s in
phi.- ncores
Positive integer. Number of cores to use. If
ncores = NULL, use a single core. Consider using multiple cores when number of replicationsRis a large value.- tol
Numeric. Smallest possible time interval to allow.
Value
Returns an object
of class ctmedmc which is a list with the following elements:
- call
Function call.
- args
Function arguments.
- fun
Function used ("PosteriorMed").
- output
A list of length
length(delta_t).
Each element in the output list has the following elements:
- est
Mean of the posterior distribution of the total, direct, and indirect effects.
- thetahatstar
Posterior distribution of the total, direct, and indirect effects.
Details
See Total(),
Direct(), and
Indirect() for more details.
References
Bollen, K. A. (1987). Total, direct, and indirect effects in structural equation models. Sociological Methodology, 17, 37. doi:10.2307/271028
Deboeck, P. R., & Preacher, K. J. (2015). No need to be discrete: A method for continuous time mediation analysis. Structural Equation Modeling: A Multidisciplinary Journal, 23 (1), 61-75. doi:10.1080/10705511.2014.973960
Pesigan, I. J. A., Russell, M. A., & Chow, S.-M. (2025). Inferences and effect sizes for direct, indirect, and total effects in continuous-time mediation models. Psychological Methods. doi:10.1037/met0000779
Ryan, O., & Hamaker, E. L. (2021). Time to intervene: A continuous-time approach to network analysis and centrality. Psychometrika, 87 (1), 214-252. doi:10.1007/s11336-021-09767-0
See also
Other Continuous-Time Mediation Functions:
BootBeta(),
BootBetaStd(),
BootDirectCentral(),
BootDirectCentralStd(),
BootIndirectCentral(),
BootIndirectCentralStd(),
BootMed(),
BootMedStd(),
BootTotalCentral(),
BootTotalCentralStd(),
DeltaBeta(),
DeltaBetaStd(),
DeltaDirectCentral(),
DeltaDirectCentralStd(),
DeltaIndirectCentral(),
DeltaMed(),
DeltaMedStd(),
DeltaTotalCentral(),
DeltaTotalCentralStd(),
Direct(),
DirectCentral(),
DirectCentralStd(),
DirectStd(),
Indirect(),
IndirectCentral(),
IndirectCentralStd(),
IndirectStd(),
MCBeta(),
MCBetaStd(),
MCDirectCentral(),
MCDirectCentralStd(),
MCIndirectCentral(),
MCIndirectCentralStd(),
MCMed(),
MCMedStd(),
MCPhi(),
MCPhiSigma(),
MCTotalCentral(),
MCTotalCentralStd(),
Med(),
MedStd(),
PosteriorBeta(),
PosteriorBetaStd(),
PosteriorDirectCentral(),
PosteriorDirectCentralStd(),
PosteriorIndirectCentral(),
PosteriorIndirectCentralStd(),
PosteriorMedStd(),
PosteriorTotalCentral(),
PosteriorTotalCentralStd(),
Total(),
TotalCentral(),
TotalCentralStd(),
TotalStd(),
Trajectory()
Examples
phi <- matrix(
data = c(
-0.357, 0.771, -0.450,
0.0, -0.511, 0.729,
0, 0, -0.693
),
nrow = 3
)
colnames(phi) <- rownames(phi) <- c("x", "m", "y")
vcov_phi_vec <- matrix(
data = c(
0.00843, 0.00040, -0.00151,
-0.00600, -0.00033, 0.00110,
0.00324, 0.00020, -0.00061,
0.00040, 0.00374, 0.00016,
-0.00022, -0.00273, -0.00016,
0.00009, 0.00150, 0.00012,
-0.00151, 0.00016, 0.00389,
0.00103, -0.00007, -0.00283,
-0.00050, 0.00000, 0.00156,
-0.00600, -0.00022, 0.00103,
0.00644, 0.00031, -0.00119,
-0.00374, -0.00021, 0.00070,
-0.00033, -0.00273, -0.00007,
0.00031, 0.00287, 0.00013,
-0.00014, -0.00170, -0.00012,
0.00110, -0.00016, -0.00283,
-0.00119, 0.00013, 0.00297,
0.00063, -0.00004, -0.00177,
0.00324, 0.00009, -0.00050,
-0.00374, -0.00014, 0.00063,
0.00495, 0.00024, -0.00093,
0.00020, 0.00150, 0.00000,
-0.00021, -0.00170, -0.00004,
0.00024, 0.00214, 0.00012,
-0.00061, 0.00012, 0.00156,
0.00070, -0.00012, -0.00177,
-0.00093, 0.00012, 0.00223
),
nrow = 9
)
phi <- MCPhi(
phi = phi,
vcov_phi_vec = vcov_phi_vec,
R = 1000L
)$output
# Specific time interval ----------------------------------------------------
PosteriorMed(
phi = phi,
delta_t = 1,
from = "x",
to = "y",
med = "m"
)
#> Call:
#> PosteriorMed(phi = phi, delta_t = 1, from = "x", to = "y", med = "m")
#>
#> Total, Direct, and Indirect Effects
#>
#> effect interval est se R 2.5% 97.5%
#> 1 total 1 -0.1009 0.0302 1000 -0.1574 -0.0427
#> 2 direct 1 -0.2675 0.0386 1000 -0.3457 -0.1938
#> 3 indirect 1 0.1666 0.0174 1000 0.1340 0.2025
# Range of time intervals ---------------------------------------------------
posterior <- PosteriorMed(
phi = phi,
delta_t = 1:5,
from = "x",
to = "y",
med = "m"
)
# Methods -------------------------------------------------------------------
# PosteriorMed has a number of methods including
# print, summary, confint, and plot
print(posterior)
#> Call:
#> PosteriorMed(phi = phi, delta_t = 1:5, from = "x", to = "y",
#> med = "m")
#>
#> Total, Direct, and Indirect Effects
#>
#> effect interval est se R 2.5% 97.5%
#> 1 total 1 -0.1009 0.0302 1000 -0.1574 -0.0427
#> 2 direct 1 -0.2675 0.0386 1000 -0.3457 -0.1938
#> 3 indirect 1 0.1666 0.0174 1000 0.1340 0.2025
#> 4 total 2 0.0773 0.0343 1000 0.0075 0.1407
#> 5 direct 2 -0.3225 0.0544 1000 -0.4374 -0.2243
#> 6 indirect 2 0.3998 0.0454 1000 0.3178 0.4934
#> 7 total 3 0.2480 0.0356 1000 0.1784 0.3190
#> 8 direct 3 -0.2953 0.0608 1000 -0.4265 -0.1913
#> 9 indirect 3 0.5433 0.0702 1000 0.4220 0.6918
#> 10 total 4 0.3434 0.0401 1000 0.2696 0.4232
#> 11 direct 4 -0.2435 0.0616 1000 -0.3835 -0.1443
#> 12 indirect 4 0.5869 0.0865 1000 0.4444 0.7727
#> 13 total 5 0.3700 0.0452 1000 0.2855 0.4645
#> 14 direct 5 -0.1906 0.0589 1000 -0.3293 -0.1004
#> 15 indirect 5 0.5606 0.0936 1000 0.4055 0.7647
summary(posterior)
#> Call:
#> PosteriorMed(phi = phi, delta_t = 1:5, from = "x", to = "y",
#> med = "m")
#>
#> Total, Direct, and Indirect Effects
#>
#> effect interval est se R 2.5% 97.5%
#> 1 total 1 -0.1009 0.0302 1000 -0.1574 -0.0427
#> 2 direct 1 -0.2675 0.0386 1000 -0.3457 -0.1938
#> 3 indirect 1 0.1666 0.0174 1000 0.1340 0.2025
#> 4 total 2 0.0773 0.0343 1000 0.0075 0.1407
#> 5 direct 2 -0.3225 0.0544 1000 -0.4374 -0.2243
#> 6 indirect 2 0.3998 0.0454 1000 0.3178 0.4934
#> 7 total 3 0.2480 0.0356 1000 0.1784 0.3190
#> 8 direct 3 -0.2953 0.0608 1000 -0.4265 -0.1913
#> 9 indirect 3 0.5433 0.0702 1000 0.4220 0.6918
#> 10 total 4 0.3434 0.0401 1000 0.2696 0.4232
#> 11 direct 4 -0.2435 0.0616 1000 -0.3835 -0.1443
#> 12 indirect 4 0.5869 0.0865 1000 0.4444 0.7727
#> 13 total 5 0.3700 0.0452 1000 0.2855 0.4645
#> 14 direct 5 -0.1906 0.0589 1000 -0.3293 -0.1004
#> 15 indirect 5 0.5606 0.0936 1000 0.4055 0.7647
confint(posterior, level = 0.95)
#> effect interval 2.5 % 97.5 %
#> 1 total 1 -0.157431942 -0.04273335
#> 2 direct 1 -0.345683481 -0.19384850
#> 3 indirect 1 0.134021684 0.20250818
#> 4 total 2 0.007544824 0.14072604
#> 5 direct 2 -0.437373178 -0.22425067
#> 6 indirect 2 0.317766642 0.49342686
#> 7 total 3 0.178407210 0.31902675
#> 8 direct 3 -0.426547847 -0.19132730
#> 9 indirect 3 0.422034534 0.69181288
#> 10 total 4 0.269640000 0.42324698
#> 11 direct 4 -0.383543401 -0.14426053
#> 12 indirect 4 0.444437441 0.77270338
#> 13 total 5 0.285480283 0.46446836
#> 14 direct 5 -0.329328214 -0.10040666
#> 15 indirect 5 0.405494535 0.76472640
plot(posterior)