This class contains information in its slots about what restrictions are placed on a factor analysis model, which defines the model to be estimated.
new("restrictions", ...).
However, it is not recommended to do so in normal usage because
make_restrictions provides the constructor for users."restrictions" class is virtual has the following slots:
factors:nvars:nvars argument to
genoud.dof:Domains:nvars rows and exactly two
columns indicating the lower and upper bounds for each free parameter,
which corresponds to the Domains argument to genoud. model:"SEFA",
"EFA", or "CFA" model is to be estimated.discrepancy:make_manifestfree:"restrictions.independent" inherits from
"restrictions" and is used to define a null model where there are
no factors (hence factors = c(0L,0L) ) and the only parameters to estimate
are the manifest standard deviatiations. It has two additional slots:
scale:parameter.scale-classcriteria:discrepancy slot"restrictions.factanal" inherits from "restrictions"
but has the same slots. This class is used for exploratory factor analysis via the
same restrictions that are used in factanal. An object of class
"restrictions.orthonormal" inherits from "restrictions" and also implies
exploratory factor analysis but instead imposes the restrictions that the upper
triangle of the coefficient matrix has all zeros. It has the following additional slots:
beta:parameter.coef-class where the x
slot is a primary pattern matrix with $0.0$ in its upper triangle and NA
elsewherescale:parameter.scale-classcriteria:discrepancy slot"restrictions.1storder" inherits from "restrictions"
and is used for factor analysis models with multiple correlated factors. It has the
following additional slots:
Phi:parameter.cormat-classbeta:parameter.coef-class. If
model = "CFA" it should be of parameter.coef-class or
parameter.coef.nl-class, depending on whether there are any nonlinear
exact restrictions to impose. If model = "SEFA", it should be of
parameter.coef.SEFA-class or parameter.coef.SEFA.nl-class,
again depending on whether there are any nonlinear exact restrictions to impose.
Unlike the case for "restrictions.orthonormal", its x slot can have
any combination of free and fixed cells.coef:parameter.scale-classdiscrepancy slot must be the last element.
Preceeding list elements should be functions that return $-1.0$ if the constraint
is satisfied and some number greater than $-1.0$ if the constraint is not satisfied"restrictions.1storder.EFA" inherits from
"restrictions.1storder" and is used for exploratory factor analysis after the
preliminary factors have been transformed. It has the following additional slots:
Lambda:x slot of the beta
slot of an object of class "restrictions.orthonormal"Rotate only supports oblique transformations, but it is
possible to import an orthogonal transformation from the GPArotation
package using the GPA2FA functionRotate) If the
GPArotation package was used to find the transformation, then this list must
be a single character string naming the analytic criterion used"restrictions.general" inherits from
"restrictions.1storder" and is used for SEFA and CFA with a single second-order
factor that explains the systematic correlation among the first-order factors. It has one
additional slot,
Delta:parameter.coef-class or
parameter.coef.nl-class, depending on whether there are any
nonlinear exact restrictions to impose. Its x slot has only one column
but it can have any combination of free and fixed cells"restrictions.2ndorder" inherits from "restrictions.general"
and is used for SEFA and CFA models with multiple second-order factors to explain the
systematic correlation among the first-order factors. Its Delta slot now must
only inherit from parameter.coef-class and hence can also be
parameter.coef.nl-class if model = "CFA" or, if
model = "SEFA" can be of parameter.coef.SEFA-class or
parameter.coef.SEFA.nl-class, again depending on whether there are any
nonlinear exact restrictions to impose at level two. The "restrictions.2ndorder"
class has one additional slot,
Xi:parameter.cormat-classsignature(object = "restrictions"), prints the object
in a relatively easy-to-digest format and there are tailored methods for almost
all of the classes that inherit from the "restrictions" classrestrictions2model methods take a grand
parameter vector and fill in the free cells of the appropriate matrices
with a "restrictions" objectfitS4 methods evaluate all the lexical criteria
given a filled object that inherits from class "restrictions"bfgs_fitS4 methods return the discrepancy function
given a filled object that inherits from class "restrictions"gr_fitS4 methods return the gradient of the discrepancy
function given a filled object that inherits from class "restrictions"bfgs_fitS4 methods return a list that is then passed
to the bfgs_fitS4 and gr_fitS4 methods; see the
BFGShelp argument to genoudcreate_start methods return a matrix of starting
values for the genetic algorithm; see also genoudcreate_FAobject methods return an object that
inherits from FA-class once the optimal estimates have been foundrestrictions2draws methods return a list
of arrays of simulated draws from the sampling distribution of the estimated free
parametersrestrictions2RAM methods convert an object
that inherits from class "restrictions" from that parameterization used in
the FAiR package to the reticular action model (RAM) parameterization used in
the sem packageloadings methods extact the factor loadingscoef,restrictions-methods also extract the factor loadingscormat methods extract the correlation matrices among
factorsuniquenesses methods extract the uniquenessesfitted,restrictions-methods produce a correlation or
covariance matrix as a function of the model parametersdf.residual,restrictions-methods extract the
degrees of freedom for the factor analysis modelFactanal. During the genetic optimization
proccess, the restrictions2model method repeatedly calls
make_parameter-methods to fill the empty x slots
of the matrices within the "restrictions" object that inherit from
parameter-class. Eventually, the optimal parameters satisfying the
specified constraints are found by the genetic algorithm and the create_FAobject
creates an object that inherits from class FA-class on the basis of this
filled "restrictions" object. The second purpose of a "restrictions" object is to remind the user of exactly what
restrictions were imposed during the estimation process, which is why a tailored
show method is essential.
Here is a table of the class hierarchy:
| Class | Parent Class |
| Corresponding Model |
"restrictions" |
| none | none (virtual class) |
"restrictions.independent" |
"retrictions" |
| zero factor null model |
"restrictions.factanal" |
"restrictions" |
EFA via factanal algorithm |
"restrictions.orthonormal" |
"restrictions" |
| EFA via a different algorithm |
"restrictions.1storder" |
"restrictions" |
Models with correlated factors |
"restrictions.1storder.EFA" |
"restrictions.1storder" |
| EFA after factor transformation |
"restrictions.general" |
"restrictions.1storder" |
SEFA and CFA |
"restrictions.2ndorder" |
"restrictions.general" |
| SEFA and CFA | Class |
make_restrictionsshowClass("restrictions")
showClass("restrictions.independent")
showClass("restrictions.orthonormal")
showClass("restrictions.1storder")
showClass("restrictions.1storder.EFA")
showClass("restrictions.general")
showClass("restrictions.2ndorder")
Run the code above in your browser using DataLab