Define regression association between variables in a lvm
object and
define linear constraints between model equations.
# S3 method for lvm regression(object = lvm(), to, from, fn = NA, messages = lava.options()$messages, additive=TRUE, y, x, value, ...) # S3 method for lvm regression(object, to=NULL, quick=FALSE, ...) < value
object 


...  Additional arguments to be passed to the low level functions 
value  A formula specifying the linear constraints or if

to  Character vector of outcome(s) or formula object. 
from  Character vector of predictor(s). 
fn  Real function defining the functional form of predictors (for simulation only). 
messages  Controls which messages are turned on/off (0: all off) 
additive  If FALSE and predictor is categorical a nonadditive effect is assumed 
y  Alias for 'to' 
x  Alias for 'from' 
quick  Faster implementation without parameter constraints 
A lvm
object
The regression
function is used to specify linear associations
between variables of a latent variable model, and offers formula syntax
resembling the model specification of e.g. lm
.
For instance, to add the following linear regression model, to the
lvm
object, m
:
$$ E(YX_1,X_2) = \beta_1 X_1 + \beta_2 X_2$$
We can write
regression(m) < y ~ x1 + x2
Multivariate models can be specified by successive calls with
regression
, but multivariate formulas are also supported, e.g.
regression(m) < c(y1,y2) ~ x1 + x2
defines $$ E(Y_iX_1,X_2) = \beta_{1i} X_1 + \beta_{2i} X_2 $$
The special function, f
, can be used in the model specification to
specify linear constraints. E.g. to fix \(\beta_1=\beta_2\)
, we could write
regression(m) < y ~ f(x1,beta) + f(x2,beta)
The second argument of f
can also be a number (e.g. defining an
offset) or be set to NA
in order to clear any previously defined
linear constraints.
Alternatively, a more straight forward notation can be used:
regression(m) < y ~ beta*x1 + beta*x2
All the parameter values of the linear constraints can be given as the right
handside expression of the assigment function regression<
(or
regfix<
) if the first (and possibly second) argument is defined as
well. E.g:
regression(m,y1~x1+x2) < list("a1","b1")
defines \(E(Y_1X_1,X_2) = a1 X_1 + b1 X_2\). The rhs argument can be a mixture of character and numeric values (and NA's to remove constraints).
The function regression
(called without additional arguments) can be
used to inspect the linear constraints of a lvm
object.
For backward compatibility the "$"symbol can be used to fix parameters at
a given value. E.g. to add a linear relationship between y
and
x
with slope 2 to the model m
, we can write
regression(m,"y") < "x$2"
. Similarily we can use the "@"symbol to
name parameters. E.g. in a multiple regression we can force the parameters
to be equal: regression(m,"y") < c("x1@b","x2@b")
. Fixed parameters
can be reset by fixing (with \$) them to NA
.
Variables will be added to the model if not already present.
intercept<
, covariance<
,
constrain<
, parameter<
,
latent<
, cancel<
, kill<
Klaus K. Holst
m < lvm() ## Initialize empty lvmobject ### E(y1z,v) = beta1*z + beta2*v regression(m) < y1 ~ z + v ### E(y2x,z,v) = beta*x + beta*z + 2*v + beta3*u regression(m) < y2 ~ f(x,beta) + f(z,beta) + f(v,2) + u ### Clear restriction on association between y and ### fix slope coefficient of u to beta regression(m, y2 ~ v+u) < list(NA,"beta") regression(m) ## Examine current linear parameter constraints#> Regression parameters: #> y1 z v y2 x u #> y1 * * #> y2 beta * beta beta