Computes distances in a multidimensional scaling model.
CFL — NSTIM by NDIM matrix containing the stimulus configuration. (Input)
NSUB — Number of subjects. (Input)
DIST — Vector of
length nv * NSUB, where nv = NSTIM * (NSTIM − 1)/2 if IFORM = 0, and nv = NSTIM * NSTIM
otherwise. (Output)
DIST may be treated as
NSUB distance
matrices. Storage in DIST is such that the
elements of each column of a subject’s distance matrix are adjacent. Each column
in the matrix is immediately followed by the elements in the next column. If
IFORM = 0, then
only the elements in each column above the diagonal are stored. Otherwise, all
elements are stored.
NSTIM — Number of
stimuli. (Input)
Default: NSTIM = size (CFL,1).
NDIM — Number of
dimensions in the model. (Input)
Default: NDIM = size (CFL,2).
LDCFL — Leading
dimension of CFL
exactly as specified in the dimension statement in the calling
program. (Input)
Default: LDCFL = size (CFL,1).
IMOD — Vector of
length 3 describing the weighting to be used. (Input)
Default:
IMOD = 0.
IMOD |
Weight |
1 |
Not used. Reserved for other scaling subroutines. |
2 |
Subject weights (in W). |
3 |
Stimulus weights (in WS). |
If IMOD(i) is zero, then the i-th set of weights is not used. Otherwise, the weights are used. For the Euclidean model, set IMOD(2) = IMOD(3) = 0. For the individual differences model, IMOD(2) should not be zero. For the stimulus weighted individual differences model, both IMOD(2) and IMOD(3) are not zero.
IFORM — Form
option. (Input)
If IFORM = 0, the
computed distances are stored as the upper triangle of square matrices stored
columnwise without the diagonal elements. Otherwise, the distances are stored as
square matrices and include the diagonal elements. See argument DIST.
Default:
IFORM = 0.
ITRANS —
Transformation option. (Input)
ITRANS determines the
output returned in DIST.
Default:
ITRANS = 0.
ITRANS |
Output in DIST |
0 |
Squared distances |
1 |
Distances |
2 |
Log of the distances |
W — NSUB by NDIM matrix of
individual weights. (Input)
If IMOD(2) is zero, then
W is not
referenced and can be a 1x1 array.
Default: W is a 1x1 array and
not used.
LDW — Leading
dimension of W
exactly as specified in the dimension statement in the calling
program. (Input)
Default: LDW =size(W,1).
WS — NSTIM by NDIM matrix of
stimulus weights. (Input)
If IMOD(3) is zero, then
W is not
referenced and can be a 1x1array.
Default: WS is a 1x1 array and
not used.
LDWS — Leading
dimension of WS
exactly as specified in the dimension statement in the calling
program. (Input)
Default: LDWS =size(WS,1)
Generic: CALL MSDST (CFL, NSUB, DIST [,…])
Specific: The specific interface names are S_MSDST and D_MSDST.
Single: CALL MSDST (NSTIM, NDIM, CFL, LDCFL, NSUB, IMOD, IFORM, ITRANS, W, LDW, WS, LDWS, DIST)
Double: The double precision name is DMSDST.
Routine MSDST computes squared distances, distances, or log distances for various metrics in multidimensional scaling. The “distances” are computed and stored as either square matrices or as upper triangular symmetric matrices stored columnwise without the diagonal. In both cases, the distances are output in a vector of the required length. The terminology and metrics used here are the same as those used in the ALSCAL program of Takane, Young, De Leeuw (1977).
Suppose that there are q stimuli, m subjects,
and d dimensions. Let λik denote the location
of the
i-th stimulus in the k-th dimension. If wik denotes the weight of
the i-th subject on the k-th dimension (matrix W)
and piik denotes the weight
for the i-th stimulus on the k-th dimension (matrix WS),
then the distance models computed are the same as the distance models in MSIDV.
They are given by:
Euclidean Model
Individual Differences Model
Stimulus-Weighted Model
Stimulus-Weighted Individual Differences Model
where δijm is the distance between the i-th and j-th stimuli on the m-th subject.
The following small example illustrates the distance computations in symmetric matrices. The data are fictional.
USE MSDST_INT
USE UMACH_INT
IMPLICIT NONE
INTEGER IFORM, ITRANS, LDCFL, LDW, LDWS, NDIM, NSTIM, NSUB
PARAMETER (LDCFL=4, LDW=2, LDWS=4, NDIM=2, NSTIM=4, NSUB=2)
!
INTEGER IMOD(3), NOUT
REAL CFL(NSTIM,NDIM), DIST(12), W(NSUB,NDIM), WS(1,1)
!
DATA IMOD/0, 1, 0/
!
DATA CFL/1.0, -1.0, 1.0, -1.0, &
1.0, 1.0, -1.0, -1.0/
!
DATA W/1.0, 2.0, 1.0, 2.0/
!
CALL MSDST (CFL, NSUB, DIST, IMOD=IMOD, W=W)
!
CALL UMACH (2, NOUT)
WRITE (NOUT,*) DIST
END
4.00000 4.00000
8.00000 8.00000 4.00000
4.00000 8.00000
8.00000
16.0000 16.0000 8.00000
8.00000
PHONE: 713.784.3131 FAX:713.781.9260 |