The argument external
is mandatory and allows for the specification of a covariate data frame (or matrix) of dimension (n x q). Alternatively, for simplex fitting the user can specify a list of the following structure: external = list("simplex", dim2)
with dim2
denoting the dimension of the simplex with dim2 < n. For a circumplex fitting, the list has to be of the following form: external = list("circumplex", dim2, k1, k2)
with \(1 \leq k1 \leq k2 \leq n\) (see also examples section). k1 and k2 denote the circumplex width.
In constraint smacof, the configuration matrix is subject of a constraint based on the external scales (predictors). This constraint can be specified using the constraint
argument. We provide the following standard setting:
For constraint = "linear"
the configurations \(X\) are decomposed linearly, i.e. \(X = ZC\) where \(Z\) is the known predictor matrix specified using external
.
The same for constraint = "diagonal"
where \(X\) needs to be of dimension \((n \times q)\) where \(q\) is the number of columns of the external scale matrix (and thus number of dimensions). Here, \(C\) is restricted to be diagonal.
For constraint = "linear"
or "diagonal"
, the external covariates \(Z\) can be optimally transformed as specified by constraint.type
. Choosing the number of covariates equal to the number of dimensions together with constraint.type = "ordinal"
, constraint.ties = "primary"
will effectively restrict the configuration to parallel regions defined by the categories of the covariates. Note that missing values of the covariates are estimated by the model.
For constraint = "unique"
we get the Bentler-Weeks uniqueness model. Hence \(X\) is of dimension \((n x (n + p))\). This implies that we fit a certain number of dimensions p and, in addition we extract n additional dimensions where each object is scored on a separate dimension. More technical details can be found in the corresponding JSS article (reference see below).
In addition, the user can specify his own constraint function with the following arguments: configuration matrix with starting values (init
) (mandatory in this case), matrix \(V\) (weightmat
; based on the weight matrix, see package vignette), external scale matrix (external
). The function must return a matrix of resulting configurations.
If no starting configuration is provided, a random starting solution is used. In most applications, this is not a good idea in order
to find a good fitting model. The user can fit an exploratory MDS using mds()
first and use the resulting configurations
as starting configuration for smacofConstraint()
. Alternatively, if the user has starting configurations determined by
some underlying theory, they can be used as well.