data(sdata)
#------------------------------------------------------------------------------#
# Example 1-a: Continuous Outcome
#------------------------------------------------------------------------------#
require(PSweight)
fit.r1 <- SumStat(R ~ C.num + C.bin, data = sdata, weight = "IPW")
require(CBPS)
fit.r2 <- CBPS(R ~ C.num + C.bin, data = sdata, method = "exact",
standardize = "TRUE")
# Continuous mediator
fit.m1 <- lm(M.num ~ R + C.num + C.bin, data = sdata)
fit.y1 <- lm(Y.num ~ R + M.num + X + C.num + C.bin, data = sdata)
res.1a1 <- smi(fit.r = fit.r1, fit.m = fit.m1,
fit.y = fit.y1, sims = 40, conditional = FALSE,
covariates = c("C.num", "C.bin"), group = "R", seed = 32)
res.1a1
# Binary mediator
fit.m2 <- glm(M.bin ~ R + C.num + C.bin, data = sdata,
family = binomial(link = "logit"))
fit.y2 <- lm(Y.num ~ R + M.bin + X + C.num + C.bin, data = sdata)
res.1a2 <- smi(fit.r = fit.r1, fit.m = fit.m2,
fit.y = fit.y2, sims = 40, conditional = FALSE,
covariates = c("C.num", "C.bin"), group = "R", seed = 111)
res.1a2
# Categorical mediator
require(MASS)
fit.m3 <- polr(M.cat ~ R + C.num + C.bin, data = sdata)
fit.y3 <- lm(Y.num ~ R + M.cat + X + C.num + C.bin, data = sdata)
res.1a3 <- smi(fit.r = fit.r1, fit.m = fit.m3,
fit.y = fit.y3, sims = 40, conditional = FALSE,
covariates = c("C.num", "C.bin"), group = "R", seed = 111)
res.1a3
require(nnet)
fit.m4 <- multinom(M.cat ~ R + C.num + C.bin, data = sdata)
res.1a4 <- smi(fit.r = fit.r1, fit.m = fit.m4,
fit.y = fit.y3, sims = 40, conditional = FALSE,
covariates = c("C.num", "C.bin"), group = "R", seed = 111)
res.1a4
#------------------------------------------------------------------------------#
# Example 1-b: Binary Outcome
#------------------------------------------------------------------------------#
# Continuous mediator
fit.y1 <- glm(Y.bin ~ R + M.num + X + C.num + C.bin,
data = sdata, family = binomial(link = "logit"))
res.1b1 <- smi(fit.r = fit.r1, fit.m = fit.m1,
fit.y = fit.y1, sims = 40, conditional = FALSE,
covariates = c("C.num", "C.bin"), group = "R", seed = 32)
res.1b1
# Binary mediator
fit.y2 <- glm(Y.bin ~ R + M.bin + X + C.num + C.bin,
data = sdata, family = binomial(link = "logit"))
res.1b2 <- smi(fit.r = fit.r1, fit.m = fit.m2,
fit.y = fit.y2, sims = 40, conditional = FALSE,
covariates = c("C.num", "C.bin"), group = "R", seed = 111)
res.1b2
# Categorical mediator
fit.y3 <- glm(Y.bin ~ R + M.cat + X + C.num + C.bin,
data = sdata, family = binomial(link = "logit"))
res.1b3 <- smi(fit.r = fit.r1, fit.m = fit.m3,
fit.y = fit.y3, sims = 40, conditional = FALSE,
covariates = c("C.num", "C.bin"), group = "R", seed = 111)
res.1b3
res.1b4 <- smi(fit.r = fit.r1, fit.m = fit.m4,
fit.y = fit.y3, sims = 40, conditional = FALSE,
covariates = c("C.num", "C.bin"), group = "R", seed = 111)
res.1b4
#---------------------------------------------------------------------------------#
# Example 2-a: Continuous Outcome, Conditional on Covariates
#---------------------------------------------------------------------------------#
# For conditional = T, need to create data with centered covariates
# copy data
sdata.c <- sdata
# center quantitative covariate(s)
sdata.c$C.num <- scale(sdata.c$C.num, center = TRUE, scale = FALSE)
# center binary (or categorical) covariates(s)
# only neccessary if the desired baseline level is NOT the default baseline level.
sdata.c$C.bin <- relevel(sdata.c$C.bin, ref = "1")
# Continuous mediator
fit.y1 <- lm(Y.num ~ R + M.num + X + C.num + C.bin, data = sdata.c)
fit.m1 <- lm(M.num ~ R + C.num + C.bin, data = sdata.c)
res.2a1 <- smi(fit.m = fit.m1,
fit.y = fit.y1, sims = 40, conditional = TRUE,
covariates = c("C.num", "C.bin"), group = "R", seed = 111)
res.2a1
# Binary mediator
fit.y2 <- lm(Y.num ~ R + M.bin + X + C.num + C.bin, data = sdata.c)
fit.m2 <- glm(M.bin ~ R + C.num + C.bin, data = sdata.c,
family = binomial(link = "logit"))
res.2a2 <- smi(fit.m = fit.m2,
fit.y = fit.y2, sims = 40, conditional = TRUE,
covariates = c("C.num", "C.bin"), group = "R", seed = 111)
res.2a2
# Categorical mediator
fit.y3 <- lm(Y.num ~ R + M.cat + X + C.num + C.bin, data = sdata.c)
fit.m3 <- polr(M.cat ~ R + C.num + C.bin, data = sdata.c)
res.2a3 <- smi(fit.m = fit.m3,
fit.y = fit.y3, sims = 40, conditional = TRUE,
covariates = c("C.num", "C.bin"), group = "R", seed = 111)
res.2a3
fit.m4 <- multinom(M.cat ~ R + C.num + C.bin, data = sdata.c)
res.2a4 <- smi(fit.m = fit.m4,
fit.y = fit.y3, sims = 40, conditional = TRUE,
covariates = c("C.num", "C.bin"), group = "R", seed = 111)
res.2a4
#------------------------------------------------------------------------------#
# Example 2-b: Binary Outcome, Conditional on Covariates
#------------------------------------------------------------------------------#
# Continuous mediator
fit.y1 <- glm(Y.bin ~ R + M.num + X + C.num + C.bin,
data = sdata.c, family = binomial(link = "logit"))
res.2b1 <- smi(fit.m = fit.m1,
fit.y = fit.y1, sims = 40, conditional = TRUE,
covariates = c("C.num", "C.bin"), group = "R", seed = 111)
res.2b1
# Binary mediator
fit.y2 <- glm(Y.bin ~ R + M.bin + X + C.num + C.bin,
data = sdata.c, family = binomial(link = "logit"))
res.2b2 <- smi(fit.m = fit.m2,
fit.y = fit.y2, sims = 40, conditional = TRUE,
covariates = c("C.num", "C.bin"), group = "R", seed = 111)
res.2b2
# Categorical mediator
fit.y3 <- glm(Y.bin ~ R + M.cat + X + C.num + C.bin,
data = sdata.c, family = binomial(link = "logit"))
res.2b3 <- smi(fit.m = fit.m3,
fit.y = fit.y3, sims = 40, conditional = TRUE,
covariates = c("C.num", "C.bin"), group = "R", seed = 111)
res.2b3
res.2b4 <- smi(fit.m = fit.m4,
fit.y = fit.y3, sims = 40, conditional = TRUE,
covariates = c("C.num", "C.bin"), group = "R", seed = 111)
res.2b4
Run the code above in your browser using DataLab