hide long namesshow long names
hide short namesshow short names
Integer type:  int32  int64  nag_int  show int32  show int32  show int64  show int64  show nag_int  show nag_int

PDF version (NAG web site, 64-bit version, 64-bit version)
Chapter Contents
Chapter Introduction
NAG Toolbox

NAG Toolbox: nag_mv_rot_promax (g03bd)


    1  Purpose
    2  Syntax
    7  Accuracy
    9  Example


nag_mv_rot_promax (g03bd) calculates a ProMax rotation, given information following an orthogonal rotation.


[fp, r, phi, fs, ifail] = g03bd(stand, x, ro, power, 'n', n, 'm', m)
[fp, r, phi, fs, ifail] = nag_mv_rot_promax(stand, x, ro, power, 'n', n, 'm', m)


Let X and Y denote n by m matrices each representing a set of n points in an m-dimensional space. The X matrix is a matrix of loadings as returned by nag_mv_rot_orthomax (g03ba), that is following an orthogonal rotation of a loadings matrix Z. The target matrix Y is calculated as a power transformation of X that preserves the sign of the loadings. Let Xij and Yij denote the i,jth element of matrices X and Y. Given a value greater than one for the exponent p:
Yij = δij Xij p ,  
The above power transformation tends to increase the difference between high and low values of loadings and is intended to increase the interpretability of a solution.
In the second step a solution of:
XW=Y , X,Y n×m , ​ W m×m ,  
is found for W in the least squares sense by use of singular value decomposition of the orthogonal loadings X. The ProMax rotation matrix R is then given by
R=OW W~ , O, ​ W~ m×m ,  
where O is the rotation matrix from an orthogonal transformation, and W~ is a matrix with the square root of diagonal elements of WTW-1 on its diagonal and zeros elsewhere.
The ProMax factor pattern matrix P is given by
P = X W W~ , P n×m ;  
the inter-factor correlations Φ are given by
Φ= QT Q-1 , Φ m×m ;  
where Q=WW~; and the factor structure S is given by
S=PΦ , S n×m .  
Optionally, the rows of target matrix Y can be scaled by the communalities of loadings.




Compulsory Input Parameters

1:     stand – string (length ≥ 1)
Indicates how loadings are normalized.
Rows of Y are (Kaiser) normalized by the communalities of the loadings.
Rows are not normalized.
Constraint: stand='U' or 'S'.
2:     xldxm – double array
ldx, the first dimension of the array, must satisfy the constraint ldxn.
The loadings matrix following an orthogonal rotation, X.
3:     roldrom – double array
ldro, the first dimension of the array, must satisfy the constraint ldrom.
The orthogonal rotation matrix, O.
4:     power – double scalar
p, the value of exponent.
Constraint: power>1.0.

Optional Input Parameters

1:     n int64int32nag_int scalar
Default: the first dimension of the array x.
n, the number of points.
Constraint: nm.
2:     m int64int32nag_int scalar
Default: the first dimension of the array ro and the second dimension of the arrays x, ro. (An error is raised if these dimensions are not equal.)
m, the number of dimensions.
Constraint: m1.

Output Parameters

1:     fpldfpm – double array
The factor pattern matrix, P.
2:     rldrm – double array
The ProMax rotation matrix, R.
3:     phildphim – double array
The matrix of inter-factor correlations, Φ.
4:     fsldfsm – double array
The factor structure matrix, S.
5:     ifail int64int32nag_int scalar
ifail=0 unless the function detects an error (see Error Indicators and Warnings).

Error Indicators and Warnings

Errors or warnings detected by the function:
Constraint: m1.
Constraint: power>1.0.
Constraint: stand='U' or 'S'.
Constraint: ldfpn.
Constraint: ldfsn.
Constraint: ldphim.
Constraint: ldrom.
Constraint: ldrm.
Constraint: ldxn.
Constraint: nm.
SVD failed to converge.
An internal error has occurred in this function. Check the function call and any array sizes. If the call is correct then please contact NAG for assistance.
An unexpected error has been triggered by this routine. Please contact NAG.
Your licence key may have expired or may not have been installed correctly.
Dynamic memory allocation failed.


The calculations are believed to be stable.

Further Comments



This example reads a loadings matrix and calculates a varimax transformation before calculating P, R and σ for a ProMax rotation.
function g03bd_example

fprintf('g03bd example results\n\n');

fl = [0.74215 -0.57806;
      0.71370 -0.55515;
      0.87899 -0.15847;
      0.62533  0.76621;
      0.71447  0.67936];

% Calculate orthogonal rotation
stand = 's';
g     = 1;
[n,m] = size(fl);
nvar  = int64(n);

[~, x, ro, iter, ifail] = g03ba( ...
				 stand, g, nvar, fl);

% Calculate ProMax rotation

power = 3;
[fp, r, phi, fs, ifail] = g03bd( ...
				 stand, x, ro, power);

mtitle = 'Factor pattern';
matrix = 'General';
diag   = ' ';

[ifail] = x04ca( ...
                 matrix, diag, fp, mtitle);

mtitle = 'Promax rotation';
[ifail] = x04ca( ...
                 matrix, diag, r, mtitle);

mtitle = 'Inter-factor correlations';
[ifail] = x04ca( ...
                 matrix, diag, phi, mtitle);

mtitle = 'Factor structure';
[ifail] = x04ca( ...
                 matrix, diag, fs, mtitle);

g03bd example results

 Factor pattern
             1          2
 1      0.9556    -0.0979
 2      0.9184    -0.0935
 3      0.7605     0.3393
 4     -0.0791     1.0019
 5      0.0480     0.9751

 Promax rotation
          1       2
 1   0.7380  0.5420
 2  -0.7055  0.8653

 Inter-factor correlations
          1       2
 1   1.0000  0.2019
 2   0.2019  1.0000

 Factor structure
          1       2
 1   0.9358  0.0950
 2   0.8995  0.0919
 3   0.8290  0.4928
 4   0.1232  0.9860
 5   0.2448  0.9848

PDF version (NAG web site, 64-bit version, 64-bit version)
Chapter Contents
Chapter Introduction
NAG Toolbox

© The Numerical Algorithms Group Ltd, Oxford, UK. 2009–2015