On a state space expectation model that has been run, mxEval does not correctly find/use at least some definition variables.
require(OpenMx)
data(demoOneFactor)
nvar <- ncol(demoOneFactor)
varnames <- colnames(demoOneFactor)
demoOneFactorInputs <- cbind(demoOneFactor, V1=rnorm(nrow(demoOneFactor)))
ssModel <- mxModel(model="State Space Inputs Manual Example",
mxMatrix("Full", 1, 1, TRUE, .3, name="A"),
mxMatrix("Full", 1, 1, TRUE, values=1, name="B"),
mxMatrix("Full", nvar, 1, TRUE, .6, name="C", dimnames=list(varnames, "F1")),
mxMatrix("Zero", nvar, 1, name="D"),
mxMatrix("Diag", 1, 1, FALSE, 1, name="Q"),
mxMatrix("Diag", nvar, nvar, TRUE, .2, name="R"),
mxMatrix("Zero", 1, 1, name="x0"),
mxMatrix("Diag", 1, 1, FALSE, 1, name="P0"),
mxMatrix("Full", 1, 1, FALSE, labels="data.V1", name="u"),
mxData(observed=demoOneFactorInputs, type="raw"),
mxExpectationStateSpace("A", "B", "C", "D", "Q", "R", "x0", "P0", u="u"),
mxFitFunctionML()
)
ssRun <- mxRun(ssModel)
mxEval(data.V1, ssRun, compute=T, defvar.row=1) #NA
#1
require(OpenMx)
data(demoOneFactor)
manifests <- names(demoOneFactor)
latents <- c("G")
factorModel <- mxModel("One Factor",
type="RAM",
manifestVars = manifests,
latentVars = latents,
mxPath(from=latents, to=manifests),
mxPath(from=manifests, arrows=2),
mxPath(from=latents, arrows=2,
free=FALSE, values=1.0),
mxPath(from = 'one', to = manifests),
mxMatrix(name="blah", nrow=1, ncol=1, labels="data.x1"),
mxData(demoOneFactor, type="raw"))
factorRun <- mxRun(factorModel)
mxEval(blah, factorRun, compute=TRUE, defvar.row=1)
mxEval(blah, factorModel, compute=TRUE, defvar.row=1)
factorNoSort <- mxOption(factorModel, "No Sort Data", "One Factor")
factorNoSortRun <- mxRun(factorNoSort)
mxEval(blah, factorNoSort, compute=TRUE, defvar.row=1)
mxEval(blah, factorNoSortRun, compute=TRUE, defvar.row=1)
# NA !!!
This is because running makes the data set say it @.isSorted but when sorting is turned off the @indexVector is NA. See lines 44-46 of DefinitionVars.R.
Log in or register to post comments
#2
Log in or register to post comments