|
Computes an oblique Promax or Procrustes rotation of a factor loading matrix using a target matrix, including pivot and power vector options.
A — NVAR by NF matrix of unrotated factor loadings. (Input)
W — Constant used
to define the orthomax orthogonal rotation. (Input)
Values for
W are discussed
in the Comments. W must be nonnegative.
Not used if
IMTH
= 3.
F — Vector of
length NF
containing the power vector or the pivot constants depending upon whether IMTH
= 1 or IMTH
= 2, respectively. (Input)
Not used if IMTH
= 3.
X — NVAR
by NF target
matrix for the rotation. (Output, if IMTH
= 1 or 2; input, if IMTH
= 3)
For IMTH
= 1 or 2, X is the target matrix
derived from the orthomax rotation. For
IMTH
= 3, X is
input.
B — NVAR by NF matrix of rotated factor loadings. (Output)
T — NF by NF factor rotation matrix. (Output)
FCOR — NF by NF matrix of factor correlations. (Output)
NVAR — Number of
variables. (Input)
NVAR
must be greater than or equal to 2.
Default: NVAR = size (A,1).
NF — Number of
factors. (Input)
NF must be greater
than or equal to 2.
Default: Nf = size (A,2).
LDA — Leading
dimension of A
exactly as specified in the dimension statement in the calling
program. (Input)
Default: LDA = size (A,1).
IMTH — Method
used for rotation. (Input)
Default: IMTH = 1.
IMTH Method
1 The Promax method.
2 The pivotal Promax method.
3 Oblique Procrustes method.
NRM —
Normalization option parameter. (Input)
NRM = 0 indicates that
no row (Kaiser) normalization is to be performed in the orthomax orthogonal
rotation. Otherwise, row normalization is performed. Not used when IMTH
= 3.
Default: NRM = 1.
MAXIT — Maximum
number of iterations. (Input)
Thirty is typical. Not used if
IMTH
= 3.
Default: MAXIT = 30.
EPS — Convergence
constant for the orthogonal rotation. (Input)
When the relative
change in the orthomax criterion function is less than EPS from one iteration
to the next, convergence is assumed. EPS = 0.0001 is
typical. EPS
nonpositive defaults to EPS =
0.0001.
Default: EPS = 0.0001.
LDX — Leading
dimension of X
exactly as specified in the dimension statement in the calling
program. (Input)
Default: LDX = size (X,1).
LDB — Leading
dimension of B
exactly as specified in the dimension statement in the calling
program. (Input)
Default: LDB = size (B,1).
LDT — Leading
dimension of T
exactly as specified in the dimension statement in the calling
program. (Input)
Default: LDT = size (T,1).
LDFCOR — Leading
dimension of FCOR exactly as
specified in the dimension statement in the calling program.
(Input)
Default: LDFCOR = size (FCOR,1).
Generic: CALL FPRMX (A, W, F, X, B, T, FCOR [,…])
Specific: The specific interface names are S_FPRMX and D_FPRMX.
Single: CALL FPRMX (NVAR, NF, A, LDA, IMTH, NRM, W, MAXIT, EPS, F, X, LDX, B, LDB, T, LDT, FCOR, LDFCOR)
Double: The double precision name is DFPRMX.
Routine FPRMX performs oblique rotations via the Promax, the pivotal Promax, or the oblique Procrustes methods. In all of these methods, a target matrix X is first either computed or specified by the user. The differences in the methods relate to how the target matrix is first obtained.
Given a p × k target matrix, X, and a p ×
k orthogonal matrix of unrotated factor loadings, A, compute the
rotation matrix T as follows: First regress each column of A on
X yielding a
k × k matrix β. Then,
let γ = diag(βT β) where diag
denotes the diagonal matrix obtained from the diagonal of the square matrix.
Standardize β to obtain
T = γ−1∕2 β. The rotated
loadings are computed as B = AT while the factor
correlations can be computed as the inverse of the
T TT matrix.
In the Promax method, the unrotated factor loadings are first rotated according to an orthomax criterion via routine FROTA. The target matrix X is taken as the elements of the B raised to a power greater than one but retaining the same sign as the original loadings. In FPRMX, column i of the rotated matrix B is raised to the power F(i). A power of four is commonly used. Generally, the larger the power, the more oblique the solution.
In the pivotal Promax method, the unrotated matrix is first rotated to an orthomax orthogonal solution as in the Promax case. Then, rather than raising the i-th column in B to the power F(i), the elements xij of X are obtained from the elements bij of B by raising the ij element of B to the power F(i)/bij. This has the effects of greatly increasing in X those elements in B that are greater in magnitude than the pivot elements F(i), and of greatly decreasing those elements that are less than F(i).
In the oblique Procrustes method, the elements of X are specified by the user as input to the FPRMX routine. No orthogonal rotation is performed in the oblique Procrustes method.
1. Workspace may be explicitly provided, if desired, by use of F2RMX/DF2RMX. The reference is:
CALL F2RMX (NVAR, NF, A, LDA, IMTH, NRM, W, MAXIT, EPS, F, X, LDX, B, LDB, T, LDT, FCOR, LDFCOR, QR, QRAUX, IPVT, WORK)
The additional arguments are as follows:
QR — Work vector of length NVAR * NF.
QRAUX — Work vector of length NF.
IPVT — Work vector of length NF.
WORK — Work vector of length 2 * NF.
2. Arguments W, EPS, and NRM are input arguments to routine FROTA when IMTH = 1 or 2. (They are not used when IMTH = 3.) See FROTA for common values of W. Generally, W can be any positive real number, but the best values lie in the range (1.0, 5.0 * NF). Generally, the variances accounted for by the factors approach the same value as W increases.
3. For IMTH = 1, all F(j) should be greater than 1.0, typically 4.0. Generally, the larger the values of F(j), the more oblique the solution will be. For IMTH = 2, F(j) should be in the interval (0.0, 1.0).
4. When IMTH = 3, the target matrix, X, is a hypothesized rotated factor loading matrix based upon prior knowledge with loadings chosen to enhance interpretability. A simple structure solution will have most of the weights X(i, j) either zero or large in magnitude. Note that the two options IMTH = 1 or 2 attempt to achieve this simple structure based upon an initial orthogonal rotation.
The following example is a continuation of the example in the FROTA procedure. It involves nine variables and three factors. The pivotal Promax method is illustrated.
USE FPRMX_INT
USE WRRRN_INT
IMPLICIT NONE
INTEGER IMTH, LDA, LDB, LDFCOR, LDT, LDX, NF, NVAR
REAL W
PARAMETER (IMTH=2, LDA=9, LDB=9, LDFCOR=3, LDT=3, LDX=9, NF=3, &
NVAR=9, W=1.0)
!
REAL A(LDA,NF), B(LDB,NF), F(NF), FCOR(LDFCOR,NF), &
T(LDT,NF), X(LDX,NF)
!
DATA A/.6642, .6888, .4926, .8372, .7050, .8187, .6615, .4579, &
.7657, -.3209, -.2471, -.3022, .2924, .3148, .3767, -.3960, &
-.2955, -.4274, .0735, -.1933, -.2224, -.0354, -.1528, &
.1045, -.0778, .4914, -.0117/
!
DATA F/0.5, 0.5, 0.5/
!
CALL FPRMX (A, W, F, X, B, T, FCOR, IMTH=IMTH)
!
CALL WRRRN ('X', X)
CALL WRRRN ('B', B)
CALL WRRRN ('T', T)
CALL WRRRN ('FCOR', FCOR)
END
X
1
2 3
1 0.0800
-0.6157 0.2967
2 0.2089 -0.7311
0.0007
3 0.0037 -0.6454 0.0000
4
0.8800 -0.1681 0.0032
5 0.8116
-0.1030 0.0000
6 0.9096 -0.0122
0.0640
7 0.0291 -0.7649 0.0982
8
0.0001 -0.0546 0.7563
9 0.0866
-0.8189
0.2807
B
1
2 3
1 0.0997
-0.5089 0.3038
2 0.1900 -0.6463
0.0077
3 0.0163 -0.6270 -0.0421
4
0.7991 -0.1469 0.0285
5 0.7408
-0.1531 -0.1256
6 0.8668 0.0308
0.1436
7 0.0280 -0.6777 0.1699
8
-0.0094 -0.1017 0.6911
9 0.0611
-0.7031
0.2683
T
1 2
3
1 0.617 -0.439 0.189
2
0.963 0.839 -0.318
3 -0.015
0.707
1.039
FCOR
1 2
3
1 1.000 -0.464 0.316
2
-0.464 1.000 -0.395
3 0.316
-0.395 1.000
PHONE: 713.784.3131 FAX:713.781.9260 |