#
# Copyright 2007-2021 by the individuals mentioned in the source code history
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
require(OpenMx)
varNames <- c('x')
data1 <- mxData(matrix(1, dimnames = list(varNames,varNames)), type="cov", numObs=100)
data2 <- mxData(matrix(2, dimnames = list(varNames,varNames)), type="cov", numObs=100)
mat1 <- mxMatrix("Full",2,free=TRUE, nrow=1, ncol=1, name="mat1")
mat2 <- mxMatrix("Full",1,free=TRUE, nrow=1, ncol=1, name="mat2")
obj1 <- mxExpectationNormal("mat1", dimnames = varNames)
obj2 <- mxExpectationNormal("mat2", dimnames = varNames)
model1 <- mxModel("model1", data1, mat1, obj1, mxFitFunctionML())
model2 <- mxModel("model2", data2, mat2, obj2, mxFitFunctionML())
output1 <- mxRun(model1, suppressWarnings = TRUE)
output2 <- mxRun(model2, suppressWarnings = TRUE)
output1$output
output2$output
alg <- mxAlgebra(model1.objective + model2.objective, name="alg")
obj <- mxFitFunctionAlgebra("alg")
model <- mxModel("both", alg, obj, model1, model2)
model <- mxRun(model, suppressWarnings = TRUE)
omxCheckCloseEnough(model$output$estimate, .99 * c(1, 2), 0.001)
# Also use the multigroup fit function
mft <- mxFitFunctionMultigroup(c("model1", "model2"))
mgmodel <- mxModel("mgboth", mft, model1, model2)
mgmodel <- mxRun(mgmodel, suppressWarnings = TRUE)
#check estimates
omxCheckCloseEnough(omxGetParameters(model), omxGetParameters(mgmodel), 1e-3)
#check standard errors
omxCheckCloseEnough(summary(model)$parameters[,6], summary(mgmodel)$parameters[,6], 0.005)
mgmodel$output$hessian
mgmodel$output$calculatedHessian
mgmodel$output$hessianCholesky
omxCheckError(mxCheckIdentification(model), "Identification check is not possible for models with 'MxFitFunctionAlgebra', 'MxFitFunctionRow', and 'MxFitFunctionR' fit functions.
If you have a multigroup model, use mxFitFunctionMultigroup.")
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.