# umx!

## 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`