Error message when using get() to return values of OpenMx object
Posted on
Veronica_echo
Joined: 02/23/2018
Attachment | Size |
---|---|
Screen Shot 2018-11-18 at 5.22.15 PM.png | 156.38 KB |
Forums
Hi everyone,
I am trying to return values of an OpenMx object from optimized mxModel by get() (more details could be found in attached). Is there any other way to return the value of an OpenMx object by string? Thanks in advance.
?mxSave ?omxGetParameters
Log in or register to post comments
In reply to ?mxSave ?omxGetParameters by mhunter
Thank you
Thanks for your informative reply. I want to evaluate algebras; for example, I have a series of algebras named "c1mean", "c2mean", ..., "ckmean". What I want is to create strings by paste0("c", 1:k, "mean"), change them to object names, and to evaluate them. Do you have suggestions about it? Any advice would be appreciated. Thank you!
Log in or register to post comments
In reply to Thank you by Veronica_echo
single algebra?
At any rate, the function `mxEvalByName()` may be useful to you, in case you didn't know about it already.
Log in or register to post comments
In reply to single algebra? by AdminRobK
Thanks!
Log in or register to post comments
In reply to single algebra? by AdminRobK
A relevant question
After having point estimates by mxEvalByName(), I still want to have the SEs, which I thought can be realized by mxSE(). Yet I got some errors as attached, which might be due to mxAlgebra(). I tried to find the string version of mxSE(), but failed. How can I fix this error? Any advice would be appreciated.
Log in or register to post comments
In reply to A relevant question by Veronica_echo
forceName=TRUE
Log in or register to post comments
In reply to forceName=TRUE by AdminRobK
It works
It works! Thank you very much!
Log in or register to post comments
In reply to It works by Veronica_echo
Glad to hear it!
Log in or register to post comments
accessing elements of a model with mxEval and mxEvalByName()
You might want mxEval() and mxEvalByName()
So, if we bang out a quick twin model, and interogate it:
require(umx)
data(twinData) # ?twinData from Australian twins.
# Pick the variables
selDVs = c("ht")
mzData <- twinData[twinData$zygosity %in% "MZFF", ]
dzData <- twinData[twinData$zygosity %in% "DZFF", ]
m1 = umxACE(selDVs = selDVs, sep = "", dzData = dzData, mzData = mzData) # -2ll= 9659, a1 = .92
#What's A?
mxEval(top.A, model = m1)
[,1]
[1,] 0.003727328
# or
mxEval(A, model = m1$top)
# or
mxEvalByName("top.A", model = m1)
Log in or register to post comments
mxAlgebraFromString
mxAlgebraFromString()
and thenmxEval()
that algebra. It it something like this.astring <- paste0("cbind(", paste0("c", 1:k, "mean", collapse=', '), ")")
# e.g. for k=7 astring is
# "cbind(c1mean, c2mean, c3mean, c4mean, c5mean, c6mean, c7mean)"
palg <- mxAlgebraFromString(astring, name='Jerry')
amodel <- mxModel(... stuff ..., palg)
# ... put palg in your model
mxEval(Jerry, amodel)
Of course, there is another consideration. You may want to re-think your model construction so that you don't need to do this. For example, you could have a matrix like this
amat <- mxMatrix('Full', nrow=k, ncol=1, free=TRUE, labels=paste0('c', 1:k, 'mean'), name='JerryM)
Anywhere you want to use 'c3mean' just refer to it by name. This way you don't need to construct 'Jerry' because you started with 'JerryM'.
Log in or register to post comments
Thank you very much!
Log in or register to post comments