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.
Values are where model estimation starts from, and, once run, a model’s values are the best estimates of its parameters()
.
In this tutorial, we are going to set values, and get values. In a more advanced tutorial, we will learn how to equate values using constraints and labels.
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 umxPath
:
manifests = names(demoOneFactor)
m1 = umxRAM("One Factor", data = demoOneFactor,
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(means = manifests, freeAt= 0), # Start values of manifest means at 0.
umxPath(v1m0 = "G") # 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 “values” slot, which holds the values matrix (mxMatrices
consist of a slab of three matrices representing not only the value of a cell, but whether that cell is free, and what its label is).
tmp = mxMatrix(name = "IwasFilledByRow", type = "Full", nrow = 3, ncol = 3, values = 1:9, byrow = TRUE)
tmp$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:
tmp = mxMatrix(name = "IamAllOnes", type = "Full", nrow = 3, ncol = 3, values = 1:3, byrow = TRUE)
tmp$values
[,1] [,2] [,3]
[1,] 1 2 3
[2,] 1 2 3
[3,] 1 2 3
To set a value by label, use umxSetParameters
.
m2 = umxSetParameters(m1, labels= "G_to_x1", values=0)
To modify a model setting a value by label, use umxModify