Factor analysis

`lambda = factoran(X,m)`

[lambda,psi] = factoran(X,m)

[lambda,psi,T] = factoran(X,m)

[lambda,psi,T,stats] = factoran(X,m)

[lambda,psi,T,stats,F] = factoran(X,m)

[...] = factoran(...,* param1*,

`val1`

`param2`

`val2`

`lambda = factoran(X,m)`

returns
the maximum likelihood estimate, `lambda`

, of the
factor loadings matrix, in a common factor analysis model with `m`

common
factors. `X`

is an `n`

-by-`d`

matrix
where each row is an observation of `d`

variables.
The `(i,j)`

th element of the `d`

-by-`m`

matrix `lambda`

is
the coefficient, or loading, of the `j`

th factor
for the `i`

th variable. By default, `factoran`

calls
the function `rotatefactors`

to rotate the estimated
factor loadings using the `'varimax'`

option.

`[lambda,psi] = factoran(X,m)`

also
returns maximum likelihood estimates of the specific variances as
a column vector `psi`

of length `d`

.

`[lambda,psi,T] = factoran(X,m)`

also
returns the `m`

-by-`m`

factor loadings
rotation matrix `T`

.

`[lambda,psi,T,stats] = factoran(X,m)`

also
returns a structure `stats`

containing information
relating to the null hypothesis, H_{0}, that the
number of common factors is `m`

. `stats`

includes
the following fields:

Field | Description |
---|---|

`loglike` | Maximized log-likelihood value |

`dfe` | Error degrees of freedom = |

`chisq` | Approximate chi-squared statistic for the null hypothesis |

`p` | Right-tail significance level for the null hypothesis |

`factoran`

does not compute the `chisq`

and `p`

fields
unless `dfe`

is positive and all the specific variance
estimates in `psi`

are positive (see Heywood Case below). If `X`

is
a covariance matrix, then you must also specify the `'nobs'`

parameter
if you want `factoran`

to compute the `chisq`

and `p`

fields.

`[lambda,psi,T,stats,F] = factoran(X,m)`

also
returns, in `F`

, predictions of the common factors,
known as factor scores. `F`

is an `n`

-by-`m`

matrix
where each row is a prediction of `m`

common factors.
If `X`

is a covariance matrix, `factoran`

cannot
compute `F`

. `factoran`

rotates `F`

using
the same criterion as for `lambda`

.

`[...] = factoran(...,`

enables
you to specify optional parameter name/value pairs to control the
model fit and the outputs. The following are the valid parameter/value
pairs.* param1*,

`val1`

`param2`

`val2`

Parameter | Value | |
---|---|---|

`'xtype'` | Type of input in the matrix | |

`'data'` | Raw data (default) | |

| Positive definite covariance or correlation matrix | |

`'scores'` | Method for predicting factor
scores. | |

| Synonyms for a weighted least-squares estimate that treats | |

| Synonyms for a minimum mean squared error prediction that is equivalent to a ridge regression | |

`'start' ` | Starting point for the specific
variances | |

| Chooses | |

| Chooses the starting vector as a scale factor times | |

Positive integer | Performs the given number of maximum likelihood fits,
each initialized as with | |

Matrix | Performs one maximum likelihood fit for each column of
the specified matrix. The | |

`'rotate'` | Method used to rotate factor
loadings and scores. | |

| Performs no rotation. | |

| Special case of the orthomax rotation. Use the | |

| Orthogonal rotation that maximizes a criterion based on the variance of the loadings. Use the | |

| Special case of the orthomax rotation (default). Use the | |

| Performs either an oblique rotation (the default) or
an orthogonal rotation to best match a specified pattern matrix. Use
the | |

| Performs either an oblique (the default) or an orthogonal rotation to best match a specified target matrix in the least squares sense. Use the | |

| Performs an oblique procrustes rotation to a target matrix
determined by Use the | |

| Special case of the orthomax rotation (default). Use the | |

| Special case of the orthomax rotation (default). Use the | |

Function | Function handle to rotation function of the form [B,T] = myrotation(A,...) where Use the | |

`'coeff'` | Coefficient, often denoted
as | |

`'normalize'` | Flag indicating whether
the loading matrix should be row-normalized (1) or left unnormalized
(0) for | |

`'reltol'` | Relative convergence tolerance
for | |

`'maxit'` | Iteration limit for | |

`'target'` | Target factor loading matrix
for | |

`'type'` | Type of | |

`'power'` | Exponent for creating the
target matrix in the | |

`'userargs'` | Denotes the beginning of
additional input values for a user-defined rotation function. | |

`'nobs'` | If | |

`'delta'` | Lower bound for the specific
variances | |

`'optimopts'` | Structure that specifies
control parameters for the iterative algorithm the function uses to
compute maximum likelihood estimates. Create this structure with the
function |

The variables in the observed data matrix `X`

must
be linearly independent, i.e., `cov(X)`

must have
full rank, for maximum likelihood estimation to succeed. `factoran`

reduces
both raw data and a covariance matrix to a correlation matrix before
performing the fit.

`factoran`

standardizes the observed data `X`

to
zero mean and unit variance before estimating the loadings `lambda`

.
This does not affect the model fit, because MLEs in this model are
invariant to scale. However, `lambda`

and `psi`

are
returned in terms of the standardized variables, i.e., `lambda*lambda'+diag(psi)`

is
an estimate of the correlation matrix of the original data `X`

(although
not after an oblique rotation). See Estimate and Plot Factor Loadings and User-Defined Rotation Function.

If elements of `psi`

are equal to the value
of the `'delta'`

parameter (i.e., they are essentially
zero), the fit is known as a Heywood case, and interpretation of the
resulting estimates is problematic. In particular, there can be multiple
local maxima of the likelihood, each with different estimates of the
loadings and the specific variances. Heywood cases can indicate overfitting
(i.e., `m`

is too large), but can also be the result
of underfitting.

Unless you explicitly specify no rotation using the `'rotate'`

parameter, `factoran`

rotates
the estimated factor loadings, `lambda`

, and the
factor scores, `F`

. The output matrix `T`

is
used to rotate the loadings, i.e., `lambda = lambda0*T`

, where `lambda0`

is
the initial (unrotated) MLE of the loadings. `T`

is an orthogonal matrix for orthogonal rotations, and
the identity matrix for no rotation. The inverse of `T`

is
known as the primary axis rotation matrix, while `T`

itself
is related to the reference axis rotation matrix. For orthogonal rotations,
the two are identical.

`factoran`

computes factor scores that have
been rotated by `inv(T')`

, i.e., `F = F0 * inv(T')`

,
where `F0`

contains the unrotated predictions. The
estimated covariance of `F`

is `inv(T'*T)`

,
which, for orthogonal or no rotation, is the identity matrix. Rotation
of factor loadings and scores is an attempt to create a more easily
interpretable structure in the loadings matrix after maximum likelihood
estimation.

[1] Harman, H. H. *Modern Factor
Analysis*. 3rd Ed. Chicago: University of Chicago Press,
1976.

[2] Jöreskog, K. G. “Some Contributions
to Maximum Likelihood Factor Analysis.” *Psychometrika*.
Vol. 32, Issue 4, 1967, pp. 443–482.

[3] Lawley, D. N., and A. E. Maxwell. *Factor
Analysis as a Statistical Method*. 2nd Ed. New York: American
Elsevier Publishing Co., 1971.

`biplot`

| `pca`

| `pcacov`

| `procrustes`

| `rotatefactors`

| `statset`