Computes various stress criteria in multidimensional scaling.
DIST — Vector of
length N
containing the distances. (Input)
Missing values are not allowed
in DIST.
DISP — Vector of length N containing the disparities. (Input)
A — The
intercept. (Input)
If INTCEP = 0, A is not used.
B — The
slope. (Input)
If ISLOPE = 0, B is not used.
POWER — Power to
use in the stress function. (Input)
POWER must be greater
than or equal to 1.
STRSS — The computed stress criterion. (Output)
WT — The weight
used in computing the stress. (Output)
If the weight is too
large, a maximum weight is used. See the Description section of the manual
document.
N — Number of
distances and disparities. (Input)
Default: N = size (DIST,1).
INTCEP —
Intercept option parameter. (Input)
If INTCEP = 0, the
intercept is not used in the model. If INTCEP = 1, the
intercept is used in the model.
Default: INTCEP = 1.
ISLOPE — Slope
option parameter. (Input)
If ISLOPE = 0, the slope
B is not used.
If ISLOPE = 1,
the slope is used.
Default: ISLOPE = 1.
ISTRS — Stress
option parameter. (Input)
Default: ISTRS = 1.
ISTRS Stress Criterion Used
0 Log stress
1 Stress weighted by the inverse of the sum of the squared disparities
2 Stress weighted by the inverse of the sum of the centered squared disparities
Generic: CALL MSTRS (DIST, DISP, A, B, POWER, STRSS, WT [,…])
Specific: The specific interface names are S_MSTRS and D_MSTRS.
Single: CALL MSTRS (N, DIST, DISP, INTCEP, A, ISLOPE, B, POWER, ISTRS, STRSS, WT)
Double: The double precision name is DMSTRS.
Routine MSTRS computes the value of stress criteria commonly used in multidimensional scaling. Routine MSTRS allows transformed values of the disparities and distances to be input and will compute the stress on the transformed values. Additionally, the user can input a slope and/or an intercept to be used in the stress computations, and the stress can be computed using an arbitrary Lp norm as well as the squared error norm in which p = 2.
Let
denote a disparity, δi denote the corresponding distance, α denote the intercept, and let β denote the slope. If INTCEP = 0, then set α = 0. If ISLOPE = 0, then set β = 1.
Set ε = 0.001, and let
When ISTRS = 0, the stress is computed as
where n is the number of nonmissing disparities, and p = POWER is the power to be used. This stress formula, when optimized, can lead to to normal distribution theory maximum likelihood estimation. It can not be used in nonmetric scaling. The weight is computed as n/max(nε, τ).
When ISTRS is 1, the stress is computed as
and the weight returned is given as
Takane, Young, and de Leeuw (1977) recommend using this formula when the data is not column conditional (i.e., whenever the stress is computed over one or more dissimilarity matrices rather than over one column in a single matrix). When ISTRS = 2, the stress is given by
where
is the average of the nonmissing disparities. The weight is computed as
Takane, Young, and de Leeuw (1977) recommend this stress for column conditional data.
Missing values (NaN) are not allowed in DIST while missing disparities in DISP are not used in the computations. If all disparities are missing, the stress criteria is set to 0, and the weight (WT) is set to missing (NaN).
In general, a single call to MSTRS would be made for each strata (“conditionality group”) in the data.
The following example illustrates the computation of stress when the log of the distances and disparities are input. For this example, ISTRS is 1 and POWER is 2.
USE MSTRS_INT
USE UMACH_INT
USE SDOT_INT
IMPLICIT NONE
INTEGER INTCEP, ISLOPE, ISTRS, N
REAL A, POWER
PARAMETER (A=0.0, INTCEP=0, N=10, POWER=2.0)
!
INTEGER I, NOUT
REAL ALOG, B, DISP(N), DIST(N), STRSS, WT
INTRINSIC ALOG
!
DATA DIST/4.0, 1.5, 1.25, 3.0, 1.75, 2.0, 1.0, 3.5, 2.5, 3.75/
DATA DISP/4.0, 1.0, 1.0, 3.0, 1.0, 2.0, 1.0, 3.0, 2.0, 4.0/
! Transform the data
DO 10 I=1, N
DIST(I) = ALOG(DIST(I))
DISP(I) = ALOG(DISP(I))
10 CONTINUE
! Compute a slope
B = SDOT(N,DISP,1,DIST,1)/SDOT(N,DIST,1,DIST,1)
! Compute the stress
CALL MSTRS (DIST, DISP, A, B, POWER, STRSS, WT, INTCEP=INTCEP)
! Print results
CALL UMACH (2, NOUT)
WRITE (NOUT,99999) STRSS, WT
!
99999 FORMAT (' STRSS = ', F12.4, ' WT = ', F12.4)
END
STRSS = 0.0720 WT = 0.1385
PHONE: 713.784.3131 FAX:713.781.9260 |