FPRMX
Computes an oblique Promax or Procrustes rotation of a factor loading matrix using a target matrix, including pivot and power vector options.
Required Arguments
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)
Optional Arguments
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).
FORTRAN 90 Interface
Generic: CALL FPRMX (A, W, F, X, B, T, FCOR [, …])
Specific: The specific interface names are S_FPRMX and D_FPRMX.
FORTRAN 77 Interface
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.
Description
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 x k target matrix, X, and a p x 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 x 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.
Comments
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.
Example
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
Output
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