Computes an oblique rotation of an unrotated factor loading matrix using the Harris-Kaiser method.
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)
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).
Generic: CALL FHARR (A, W, C, B, T, FCOR [,…])
Specific: The specific interface names are S_FHARR and D_FHARR.
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.
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 preand 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.
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.
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
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
PHONE: 713.784.3131 FAX:713.781.9260 |