Values and why they are important
Parameters know three things: Whether they are free, what their label is, and, importantly, what their current value is.
As in life, so too in
umx: “values matter”.
Values are where model estimation starts from.
Once run, a model’s values are the best estimates of its
Setting start values in a path
as we saw in the introductory chapters,
umxRAM does a good job at guessing start values. Sometimes, however, you want to set your own start values, or, indeed, to fix values at certain points. This is done with the
values parameter of
latents = c("G") manifests = names(demoOneFactor) df = mxData(cov(demoOneFactor), type = "cov", numObs = nrow(demoOneFactor)) m1 <- umxRAM("One Factor", data = df, umxPath(latents, to = manifests, values = .5), # start path estimate for these paths at .5 umxPath(var = manifests, values= .1), # set starting values of manifest residuals to .1 umxPath(v1m0 = latents) # fix value of mean at zero, and value of variance to 1 )
Set values in a matrix
In R matrices, values flow down columns. To do what humans do (fill across a row before moving to the next), you can say
byrow = TRUE.
It’s the same for
mxMatrices, except these have a special “values” slot, which holds the values matrix (mxMatrices have to have a slab of three inner matrices to represent not only the value of a cell, but whether that cell is free, and what its label is).
mxMatrix(name = "IwasFilledByRow", type = "Full", nrow = 3, ncol = 3, values = 1:9, byrow = TRUE) $values [,1] [,2] [,3] [1,] 1 2 3 [2,] 4 5 6 [3,] 7 8 9
nb: Values are re-used (if needed) fill the cells of a matrix:
a = mxMatrix(name = "IamAllOnes", type = "Full", nrow = 3, ncol = 3, values = 1, byrow = TRUE) a$values [,1] [,2] [,3] [1,] 1 1 1 [2,] 1 1 1 [3,] 1 1 1
More to do…
umxSetParameters(model, labels, values="")