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_manifest
free
:"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-class
criteria
: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-class
criteria
: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-class
beta
: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-class
discrepancy
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-class
signature(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 genoud
create_start
methods return a matrix of starting
values for the genetic algorithm; see also genoud
create_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-method
s also extract the factor loadingscormat
methods extract the correlation matrices among
factorsuniquenesses
methods extract the uniquenessesfitted,restrictions-method
s produce a correlation or
covariance matrix as a function of the model parametersdf.residual,restrictions-method
s 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_restrictions
showClass("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