This S4 generic function takes a numeric vector of free parameters and
manipulates it into the matrices that are typical when estimating a
factor analysis model. There is little need to call it directly. Various
methods are defined for the restrictions
object, corresponding to
different kinds of factor analysis models; see FAiR-package
.
"restrictions2model"(par, restrictions, manifest, lower, mapping_rule)
restrictions-class
.manifest-class
.Factanal
.optim
restrictions
objectrestrictions
and
manifest
. Methods are currently only defined for objects of class
"manifest.basic"
, which are inherited by objects of class
"manifest.data"
and "manifest.data.mcd"
. There are methods
for each of the classes that inherit from restrictions-class
,
except for "restrictions.factanal"
, which does not utilize the
restrictions2model
mechanism. There are also two arguments that are not part of the signature.
The first is par
, which is a numeric vector of free parameters and
is conceptually similar to the par
argument to optim
.
The second is lower
, which is a small positive number that is used
as a threshold for positive-definiteness of various matrices.Factanal
thousands of times
during the course of the optimization. Let the factor analysis model in the population be
$$\Sigma = \Omega(\beta\Phi\beta^\prime + \Theta)\Omega$$
and let $theta$ be a vector of all the free parameters in the factor
analysis model. The restrictions2model
methods are essentially a mapping
from $theta$ to the free elements of $beta$,
$Phi$, and $Omega$. The methods are currently defined on
the restrictions
argument, which is fairly skeletal at the outset, is
filled in by the body of the restrictions2model
method using a bunch of
calls to the make_parameter-methods
.The restrictions2model
method can (and does) also do some checking of
whether the parameters in par
are admissable in the context of a factor
analysis model. For each admissability check, if par
is admissable, it
should receive the value of $-1.0$ in a numeric vector whose length is equal
to the number of admissability checks. If par
is inadmissable with respect
to some check, it should receive a value greater than $-1.0$. This numeric
vector should also be returned as an element of a list called "criteria"
.
make_parameter
, restrictions-class
showMethods("restrictions2model")
Run the code above in your browser using DataLab