FDOBL

 


   more...

Computes a direct oblimin rotation of a factor loading matrix.

Required Arguments

ANVAR by NF matrix of unrotated factor loadings. (Input)

W — Nonpositive constant used to define the rotation. (Input)

BNVAR by NF matrix of rotated factor loadings. (Output)
If A is not needed, A and B may 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. Otherwise, row normalization is not performed.
Default: NRM = 1.

MAXIT — Maximum number of iterations. (Input)
MAXIT = 30 is typical. MAXIT = 0 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 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 FDOBL (A, W, B, T, FCOR [])

Specific: The specific interface names are S_FDOBL and D_FDOBL.

FORTRAN 77 Interface

Single: CALL FDOBL (NVAR, NF, A, LDA, NRM, W, MAXIT, EPS, B, LDB, T, LDT, FCOR, LDFCOR)

Double: The double precision name is DFDOBL.

Description

Routine FDOBL performs direct oblimin rotation. In this analytic method of rotation, the criterion function

 

is minimized by finding a rotation matrix T such that (λir) = Λ = AT and (TT )1 is a correlation matrix. Here, γ  0 is a user‑specified constant (W) yielding a family of rotations, and p is the number of variables. The rotation is said to be direct because it minimizes Q with respect to the factor loadings directly, ignoring the reference structure.

Kaiser normalization can be performed on the factor loadings prior to rotation via the option parameter NRM. In Kaiser normalization (see Harman 1976), the rows of A are first “normalized” by dividing each row by the square root of the sum of its squared elements. After the rotation is complete, each row of B is “denormalized” by multiplication by its initial normalizing constant.

The method for optimizing Q is essentially the method first proposed by Jennrich and Sampson (1966). It proceeds by accumulating simple rotations where a simple rotation is defined to be one in which Q is optimized for a given factor in the plane of a second factor, and for which the requirement that (TTT)1 be a correlation matrix is satisfied. An iteration is defined to be such that each of the NF(NF  1) possible simple rotations is performed, where NF is the number of factors. When the relative change in Q from one iteration to the next is less than EPS (the user‑specified convergence criterion), 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 usually sufficient.

The parameter in the rotation, γ, is used to provide a family of rotations. Harman (1976) recommends that γ be strictly less than or equal to zero. When γ = 0.0, a direct quartimin rotation results. Other values of γ yield other rotations. Harman (1976) suggests that the direct quartimin rotations yield the most highly correlated factors while more orthogonal factors result as γ approaches .

Comments

1. Workspace may be explicitly provided, if desired, by use of F2OBL/DF2OBL. The reference is:

CALL F2OBL (NVAR, NF, A, LDA, NRM, W, MAXIT, EPS, B, LDB, T, LDT, FCOR, LDFCOR, WK1, WK2, WK3)

The additional arguments are as follows:

WK1 — Real work vector of length equal to NVAR.

WK2 — Real work vector of length equal to NF.

WK3 — Real work vector of length equal to NVAR.

2 Informational errors

 

Type

Code

Description

3

1

The algorithm did not converge within MAXIT iterations.

4

1

NF = 1. No rotation is possible.

3. The parameter W determines the type of direct OBLIMIN rotation to be performed. In general, W must be negative. W = 0.0 yields direct quartimin rotation. As W approaches negative infinity, the orthogonality among the factors will increase.

Example

The example is a continuation of the example given in routine FACTR. It involves factors derived from nine variables and uses γ =  1.

 

USE FDOBL_INT

USE WRRRN_INT

 

IMPLICIT NONE

INTEGER LDA, LDB, LDFCOR, LDT, NF, NVAR

REAL EPS, W

PARAMETER (EPS=0.00001, 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), 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/

!

CALL FDOBL (A, W, B, T, FCOR, EPS=EPS)

!

CALL WRRRN ('B', B)

CALL WRRRN ('T', T)

CALL WRRRN ('FCOR', FCOR)

END

Output

 

B

1 2 3

1 0.1127 -0.5145 0.2917

2 0.1847 -0.6602 -0.0019

3 0.0128 -0.6354 -0.0585

4 0.7797 -0.1751 0.0598

5 0.7147 -0.1813 -0.0959

6 0.8520 0.0038 0.1820

7 0.0355 -0.6845 0.1509

8 0.0276 -0.0941 0.6824

9 0.0729 -0.7100 0.2493

 

T

1 2 3

1 0.611 -0.462 0.203

2 0.923 0.813 -0.249

3 0.042 0.728 1.050

 

FCOR

1 2 3

1 1.000 -0.427 0.217

2 -0.427 1.000 -0.411

3 0.217 -0.411 1.000