FGCRF

   more...
Computes direct oblique rotation according to a generalized fourth‑degree polynomial criterion.
Required Arguments
ANVAR by NF matrix of unrotated factor loadings. (Input)
W — Vector of length 4 containing the constants ω1, ω2, ω3, ω4 necessary to define the rotation. (Input)
Some common rotations are
Rotation
W(1)
W(2)
W(3)
W(4)
Quartimin
0
1
0
1
Covarimin
1/NVAR
1
1/NVAR
1
Oblimin
γ/NVAR
1
γ/NVAR
1
Crawford‑Ferguson
0
K1
K2
K1  K2
where K1, K2, and γ are constants (determined by the user).
BNVAR by NF matrix of rotated factor loadings. (Output)
If A is not needed, A and B can share the same storage locations.
TNF by NF matrix containing the rotation transformation matrix. (Output)
FCORNF by NF matrix of factor correlations. (Output)
Optional Arguments
NVAR — Number of variables. (Input)
Default: NVAR = size (A,1).
NF — Number of factors. (Input)
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).
NRM — Row normalization option. (Input)
If NRM = 1, then row (i.e., Kaiser) normalization is performed. If NRM = 0, row normalization is not performed.
Default: NRM = 1.
MAXIT — Maximum number of iterations. (Input)
MAXIT = 30 is typical. MAXIT 30 defaults to 30 iterations.
Default: MAXIT = 30.
EPS — Convergence constant. (Input)
When the relative change in the criterion function is less than EPS from one iteration to the next, convergence is assumed. EPS = 0.0001 is typical. EPS 0.0 defaults to 0.0001.
Default: EPS = 0.0.
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 FGCRF (A, W, B, T, FCOR [])
Specific: The specific interface names are S_FGCRF and D_FGCRF.
FORTRAN 77 Interface
Single: CALL FGCRF (NVAR, NF, A, LDA, NRM, W, MAXIT, EPS, B, LDB, T, LDT, FCOR, LDFCOR)
Double: The double precision name is DFGCRF.
Description
Routine FGCRF performs direct oblique factor rotation for an arbitrary fourth‑degree polynomial criterion function. Let p = NVAR denote the number of variables, and let k = NF denote the number of factors. Then, the criterion function
is minimized by finding a rotation matrix T such that (λij) = Λ = AT and T1 (T1)T is a correlation matrix. Here, ωi = W(i), i = 1, , 4 are user specified constants. The rotation is said to be direct because it minimizes Q with respect to the factor loadings directly, ignoring the reference structure (see, e.g., Harman, 1976).
Kaiser normalization (Harman, 1976) is specified when option parameter NRM = 1. When Kaiser normalization is performed, the rows of A are first “normalized” by dividing each row by the square root of the sum of its squared elements. The rotation is then performed. The rows of B are then “denormalized” by multiplying each row by the initial row normalizing constant.
The criterion function Q was first proposed by Jennrich (1973). It generalizes the oblimin criterion function and the criterion function proposed by Crawford and Ferguson (1970) to an arbitrary fourth degree criterion. Q is optimized by accumulating simple rotations where a simple rotation is defined to be an optimal factor rotation (with respect to Q) for two columns of Λ, and for which the requirement that T 1 (T 1)T be a correlation matrix is satisfied. FGCRF determines the optimal simple rotation by finding the roots of a cubic polynomial equation. The details are contained in Clarkson and Jennrich (1988).
Table 1 – Specific Criteria in the General Symmetric Family
Criterion
ω1
ω2
ω3
ω4
Quartimin
0
1
0
1
Covarimin
1/p
1
1/p
1
Oblimin
γ/p
1
γ/p
1
Crawford‑Ferguson
0
K1
K2
K1  K2
An iteration is complete after all possible k(k  1) simple rotations have been performed. When the relative change in Q from one iteration to the next is less than EPS, the algorithm stops. EPS = .0001 is usually sufficient. Alternatively, the algorithm stops when the user specified maximum number of iterations, MAXIT, is reached. MAXIT = 30 is typical.
Notes
The parameters in the rotation, ω1, provide for a two‑dimensional family of rotations. When ω1 = γ/p, ω2 = 1, ω3 = γ/p, and ω4 = 1, then a direct oblimin rotation with parameter γ is performed. Direct oblimin rotations are also performed by routine FDOBL, which is somewhat faster. For ω1 = 0, ω2 = K1, ω3 = K2, and ω4 =  (K1 + K2) direct Crawford‑Ferguson rotation with parameters K1 and K2 results (see Crawford and Ferguson 1970, or Clarkson and Jennrich 1988). Other values of ω yield other rotations. Common values for ω are as in Table 1.
Comments
1. Workspace may be explicitly provided, if desired, by use of F2CRF/DF2CRF. The reference is:
CALL F2CRF (NVAR, NF, A, LDA, NRM, W, MAXIT, EPS, B, LDB, T, LDT, FCOR, LDFCOR, RWK1, RWK2, RWK3)
The additional arguments are as follows:
RWK1 — Work vector of length NVAR.
RWK2 — Work vector of length NVAR * (NF + 1).
RWK3 — Work vector of length NF2.
2. Informational Error
Type
Code
Description
3
1
The algorithm did not converge within MAXIT iterations.
Example
The example is a continuation of the example in routine FACTR. It involves nine variables. A Crawford‑Ferguson rotation with row normalization and 3 factors is performed.
 
USE FGCRF_INT
USE WRRRN_INT
INTEGER LDA, LDB, LDFCOR, LDT, NF, NVAR
PARAMETER (LDA=9, LDB=9, LDFCOR=3, LDT=3, NF=3, NVAR=9)
!
REAL A(LDA,NF), B(LDB,NF), FCOR(LDFCOR,NF), T(LDT,NF), W(4)
!
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 W/0.0, 7.0, 1.0, -8.0/
!
CALL FGCRF (A, W, B, T, FCOR)
!
CALL WRRRN ('B', B)
CALL WRRRN ('T', T)
CALL WRRRN ('FCOR', FCOR)
END
Output
B
1 2 3
1 0.1156 -0.3875 0.3992
2 0.2161 -0.5831 0.0924
3 0.0422 -0.5859 0.0264
4 0.8051 -0.0906 0.0886
5 0.7495 -0.1373 -0.0839
6 0.8639 0.1045 0.1987
7 0.0527 -0.5792 0.2671
8 -0.0162 0.0779 0.7748
9 0.0852 -0.5765 0.3803
T
1 2 3
1 0.632 -0.327 0.290
2 0.935 0.737 -0.399
3 -0.060 0.907 1.066
 
FCOR
1 2 3
1 1.000 -0.434 0.365
2 -0.434 1.000 -0.498
3 0.365 -0.498 1.000