if (FALSE) {
# minimal example of a model using builtin data, allowing R
# to automatically guess the correct variables to use
test <- mplusObject(MODEL = "mpg ON wt hp;
wt WITH hp;", rdata = mtcars)
# estimate the model in Mplus and read results back into R
res <- mplusModeler(test, modelout = "model1.inp", run = 1L)
# when forcing writeData = "always" data gets overwritten (with a warning)
resb <- mplusModeler(test, modelout = "model1.inp", run = 1L,
writeData = "always")
# using writeData = "ifmissing", the default, no data re-written
resc <- mplusModeler(test, modelout = "model1.inp", run = 1L)
# using writeData = "ifmissing", the default, data ARE written
# if data changes
test <- mplusObject(MODEL = "mpg ON wt hp;
wt WITH hp;", rdata = mtcars[-10, ])
resd <- mplusModeler(test, modelout = "model1.inp", run = 1L)
# show summary
summary(resd)
# show coefficients
coef(resd)
# what if you wanted confidence intervals
# and standardized values?
# first update to tell Mplus you want them, re-run and print
test <- update(test, OUTPUT = ~ "CINTERVAL; STDYX;")
resd <- mplusModeler(test, modelout = "model1.inp", run = 1L)
coef(resd)
confint(resd)
# now standardized
coef(resd, type = "stdyx")
confint(resd, type = "stdyx")
# put together in one data frame if desired
merge(
coef(resd, type = "stdyx"),
confint(resd, type = "stdyx"),
by = "Label")
# remove files
unlink(resc$results$input$data$file)
unlink(resd$results$input$data$file)
unlink("model1.inp")
unlink("model1.out")
# simple example of a model using builtin data
# demonstrates use with a few more sections
test2 <- mplusObject(
TITLE = "test the MplusAutomation Package and mplusModeler wrapper;",
MODEL = "
mpg ON wt hp;
wt WITH hp;",
usevariables = c("mpg", "wt", "hp"),
rdata = mtcars)
res2 <- mplusModeler(test2, modelout = "model2.inp", run = 1L)
# remove files
unlink(res2$results$input$data$file)
unlink("model2.inp")
unlink("model2.out")
# similar example using a robust estimator for standard errors
# and showing how an existing model can be easily updated and reused
test3 <- update(test2, ANALYSIS = ~ "ESTIMATOR = MLR;")
res3 <- mplusModeler(test3, modelout = "model3.inp", run = 1L)
unlink(res3$results$input$data$file)
unlink("model3.inp")
unlink("model3.out")
# now use the built in bootstrapping methods
# note that these work, even when Mplus will not bootstrap
# also note how categorical variables and weights are declared
# in particular, the usevariables for Mplus must be specified
# because mroe variables are included in the data than are in the
# model. Note the R usevariables includes all variables for both
# model and weights. The same is true for clustering.
test4 <- mplusObject(
TITLE = "test bootstrapping;",
VARIABLE = "
CATEGORICAL = cyl;
WEIGHT = wt;
USEVARIABLES = cyl mpg;",
ANALYSIS = "ESTIMATOR = MLR;",
MODEL = "
cyl ON mpg;",
usevariables = c("mpg", "wt", "cyl"),
rdata = mtcars)
res4 <- mplusModeler(test4, "mtcars.dat", modelout = "model4.inp", run = 10L,
hashfilename = FALSE)
# see the results
res4$results$boot
# remove files
unlink("mtcars.dat")
unlink("model4.inp")
unlink("model4.out")
# Monte Carlo Simulation Example
montecarlo <- mplusObject(
TITLE = "Monte Carlo Example;",
MONTECARLO = "
NAMES ARE i1-i5;
NOBSERVATIONS = 100;
NREPS = 100;
SEED = 1234;",
MODELPOPULATION = "
f BY i1-i5*1;
f@1;
i1-i5*1;",
ANALYSIS = "
ESTIMATOR = BAYES;
PROC = 2;
fbiter = 100;",
MODEL = "
f BY i1-i5*.8 (l1-l5);
f@1;
i1-i5*1;",
MODELPRIORS = "
l1-l5 ~ N(.5 .1);",
OUTPUT = "TECH9;")
fitMonteCarlo <- mplusModeler(montecarlo,
modelout = "montecarlo.inp",
run = 1L,
writeData = "always",
hashfilename = FALSE)
unlink("montecarlo.inp")
unlink("montecarlo.out")
# Example including ID variable and extracting factor scores
dat <- mtcars
dat$UID <- 1:nrow(mtcars)
testIDs <- mplusObject(
TITLE = "test the mplusModeler wrapper with IDs;",
VARIABLE = "IDVARIABLE = UID;",
MODEL = "
F BY mpg wt hp;",
SAVEDATA = "
FILE IS testid_fscores.dat;
SAVE IS fscores;
FORMAT IS free;",
usevariables = c("UID", "mpg", "wt", "hp"),
rdata = dat)
resIDs <- mplusModeler(testIDs, modelout = "testid.inp", run = 1L)
# view the saved data from Mplus, including factor scores
# the indicator variables, and the ID variable we specified
head(resIDs$results$savedata)
# merge the factor scores with the rest of the original data
# merge together by the ID column
dat <- merge(dat, resIDs$results$savedata[, c("F", "UID")],
by = "UID")
# correlate merged factor scores against some other new variable
with(dat, cor(F, qsec))
# can write multiply imputed data too
# here are three "imputed" datasets
idat <- list(
data.frame(mpg = mtcars$mpg, hp = c(100, mtcars$hp[-1])),
data.frame(mpg = mtcars$mpg, hp = c(110, mtcars$hp[-1])),
data.frame(mpg = mtcars$mpg, hp = c(120, mtcars$hp[-1])))
# if we turn on hashing in the filename the first time,
# we can avoid overwriting notes the second time
testobjimp <- mplusObject(MODEL = "[mpg];", rdata = idat, imputed = TRUE)
testimp <- mplusModeler(
testobjimp,
modelout = "testimp.inp",
writeData = "ifmissing", hashfilename=FALSE)
testimp <- mplusModeler(
testobjimp,
modelout = "testimp.inp",
writeData = "ifmissing", hashfilename=TRUE)
testimp <- mplusModeler(
testobjimp,
modelout = "testimp.inp",
writeData = "ifmissing", hashfilename=TRUE,
run = TRUE)
testobjimp2 <- mplusObject(MODEL = "[hp];", rdata = idat, imputed = TRUE)
testimp2 <- mplusModeler(
testobjimp2,
modelout = "testimp2.inp",
writeData = "ifmissing", hashfilename=TRUE,
run = TRUE)
# remove files
unlink(resIDs$results$input$data$file)
unlink("testid.inp")
unlink("testid.out")
unlink("testid_fscores.dat")
unlink("Mplus Run Models.log")
}
Run the code above in your browser using DataLab