FHARR
Computes an oblique rotation of an unrotated factor loading matrix using the Harris‑Kaiser method.
Required Arguments
A — NVAR by NF matrix of unrotated factor loadings. (Input)
W — Constant used to define the rotation. (Input)
The value of W must be nonnegative. See Comments.
C — Constant between zero and one used to define the rotation. (Input)
See Comments.
B — NVAR by NF matrix containing the rotated factor loadings. (Output)
T — NF by NF factor rotation matrix. (Output)
FCOR — NF by NF matrix containing the 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. Otherwise, row normalization is not performed.
Default: NRM = 1.
MAXIT — Maximum number of iterations. (Input)
A typical value is 30.
Default: MAXIT = 30.
EPS — Convergence constant for the rotation angle. (Input)
EPS = 0.0001 is typical. If EPS is less that or equal to 0.0, then EPS = 0.0001 is used.
Default: EPS = 0.0.
SCALE — Vector of length NVAR containing a scaling vector. (Input)
All elements in SCALE should be set to one if principal components or unweighted least squares was used to obtain the unrotated factor loadings. The elements of SCALE should be set to the unique error variances (vector UNIQ in subroutine FACTR) if the principal factor, generalized least squares, maximum likelihood, or the image method was used. Finally, in alpha factor analysis, the elements of SCALE should be set to the communalities (one minus the uniquenesses in standardized data).
Default: SCALE = 1.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 FHARR (A, W, C, B, T, FCOR [, …])
Specific: The specific interface names are S_FHARR and D_FHARR.
FORTRAN 77 Interface
Single: CALL FHARR (NVAR, NF, A, LDA, NRM, MAXIT, W, C, EPS, SCALE, B, LDB, T, LDT, FCOR, LDFCOR)
Double: The double precision name is DFHARR.
Description
Routine FHARR performs an oblique analytic rotation of unrotated factor loadings via a method proposed by Harris and Kaiser (1964). In this method of rotation, the eigenvectors obtained from the factor extraction are weighted by a factor Δc∕2 where Δ is the diagonal matrix of eigenvalues obtained in the factor extraction and c is a specified constant. These transformed eigenvectors are then rotated according to an orthomax criterion.
The transformation used to obtain the weighted eigenvectors, Γ*, from the unrotated loadings, A, is given as Γ* = Ψ−1∕2 AΔ(c−1)∕ 2 where Ψ is the matrix of unique error variances output by routine FACTR. The matrix should be set to an identity matrix if the principal component, unweighted least squares, or alpha factor analysis method is used in routine FACTR to obtain the unrotated factor loadings (IMTH = 0,1, or 5). This is required because in these methods of factor analysis, the eigenvectors are not premultiplied by a diagonal matrix when obtaining the unrotated factor loadings.
After Γ* has been computed, it is rotated according to a user‑selected orthomax criterion. The member of the orthomax family to be used is selected via a constant W. (See the description of routine FROTA.) Because Γ* is used in place of A (the unrotated factor loadings in routine FROTA), the matrix resulting from the rotation is (after standardizing by pre and postmultiplication by the diagonal matrices U−1 and Δ1−c) a matrix of obliquely rotated loadings.
Note that the effect of W is less pronounced than the effect of C. Using c = 1.0 yields an orthogonal orthomax rotation while c = 0.0 yields the most oblique factors. A common choice for c is given by c = 0.5. One good choice for W is 1.0. W = 1.0 yields a varimax rotation on the weighted eigenvectors.
Comments
1. Workspace may be explicitly provided, if desired, by use of F2ARR/DF2ARR. The reference is:
CALL F2ARR (NVAR, NF, A, LDA, NRM, MAXIT, W, C, EPS, SCALE, B, LDB, T, LDT, FCOR, LDFCOR, RWK1, RWK2)
The additional arguments are as follows:
RWK1 — Real work vector of length equal to 2 * NF.
RWK2 — Real work vector of length equal to NVAR.
2. Argument C must be between 0.0 and 1.0. The larger C is, the more orthogonal the rotated factors are. Rarely, should C be greater than 0.5.
3. Arguments W, EPS, and NRM are arguments to routine FROTA. See FROTA for common values of W in orthogonal rotations. For FHARR, the best values of W are in the range (0.0, 5.0 * NF). Generally, the variances of the factors converge to the same value as W increases.
Example
The example is a continuation of the example in routine FROTA. It involves 9 variables. A rotation with row normalization and 3 factors is performed.
USE FHARR_INT
USE WRRRN_INT
IMPLICIT NONE
INTEGER LDA, LDB, LDFCOR, LDT, NF, NVAR
REAL C, W
PARAMETER (C=0.5, LDA=9, LDB=9, LDFCOR=3, LDT=3, NF=3, &
NVAR=9, W=1.0)
!
REAL A(LDA,NF), B(LDB,NF), FCOR(LDFCOR,NF), SCALE(NVAR), &
T(LDT,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 SCALE/.4505, .4271, .6165, .2123, .3805, .1769, .3995, &
.4616, .2309/
!
CALL FHARR (A, W, C, B, T, FCOR, SCALE=SCALE)
!
CALL WRRRN ('B', B)
CALL WRRRN ('T', T)
CALL WRRRN ('FCOR', FCOR)
END
Output
B
1 2 3
1 0.1542 -0.5103 0.2749
2 0.2470 -0.6477 -0.0233
3 0.0744 -0.6185 -0.0750
4 0.7934 -0.1897 0.0363
5 0.7329 -0.1909 -0.1175
6 0.8456 -0.0194 0.1610
7 0.0966 -0.6713 0.1320
8 0.0198 -0.1067 0.6773
9 0.1340 -0.6991 0.2285
T
1 2 3
1 0.649 -0.469 0.175
2 0.850 0.777 -0.249
3 -0.053 0.687 1.065
FCOR
1 2 3
1 1.000 -0.335 0.250
2 -0.335 1.000 -0.413
3 0.250 -0.413 1.000