Model with arow objective runs fine once, then dies the second time, trying to update "filteredDataRow"
OpenMx version: 2.0.0.3751
R version: R version 3.1.1 (2014-07-10)
Platform: x86_64-apple-darwin13.1.0
Default optimiser: CSOLNP
# ===============================
# = Model fails on being re-run =
# ===============================
library(OpenMx)
# =================
# = 1. Make data set =
# =================
set.seed(159)
xdat <- data.frame(a=rnorm(10, mean=4.2), b=1:10)
# =========================================
# = 2. Make a model with a row objective =
# =========================================
cmod <- mxModel(
name='Estimation Row Model with Missingness',
mxData(observed=xdat, type='raw'),
mxMatrix(values=.75, ncol=2, nrow=1, free=TRUE, name='M'),
mxAlgebra(omxSelectCols(M, existenceVector), name='fM'),
mxAlgebra((filteredDataRow-fM)%^%2, name='rowAlgebra'),
mxAlgebra(sum(rowResults), name='reduceAlgebra'),
mxFitFunctionRow(
rowAlgebra='rowAlgebra',
reduceAlgebra='reduceAlgebra',
dimnames=c('a', 'b'))
)
# ==========
# = 3. Run =
# ==========
cmod <- mxRun(cmod)
# ==============
# = Now re-run =
# ==============
cmod <- mxRun(cmod)
# Error: The filteredDataRow cannot have name 'Estimation Row Model with Missingness.filteredDataRow' because this entity already exists in the model
# Expected: runs quickly, returning something near the already-reached solution.
# Obtained: fails with error copied above
#1
Log in or register to post comments
#2
Incidentally, I think
cmod <- mxRun(cmod)
is bad coding practice in R, that includes for any function. Do it at your own risk. It saves memory in C/C++ and FORTRAN, but not in R.
Log in or register to post comments
#3
Log in or register to post comments
#4
Log in or register to post comments
#5
Log in or register to post comments