nFactors (version 2.4.1.1)

nScree: Non Graphical Cattel's Scree Test

Description

The nScree function returns an analysis of the number of component or factors to retain in an exploratory principal component or factor analysis. The function also returns information about the number of components/factors to retain with the Kaiser rule and the parallel analysis.

Usage

nScree(eig = NULL, x = eig, aparallel = NULL, cor = TRUE,
  model = "components", criteria = NULL, ...)

Value

Components

Data frame for the number of components/factors according to different rules

Components$noc

Number of components/factors to retain according to optimal coordinates oc

Components$naf

Number of components/factors to retain according to the acceleration factor af

Components$npar.analysis

Number of components/factors to retain according to parallel analysis

Components$nkaiser

Number of components/factors to retain according to the Kaiser rule

Analysis

Data frame of vectors linked to the different rules

Analysis$Eigenvalues

Eigenvalues

Analysis$Prop

Proportion of variance accounted by eigenvalues

Analysis$Cumu

Cumulative proportion of variance accounted by eigenvalues

Analysis$Par.Analysis

Centiles of the random eigenvalues generated by the parallel analysis.

Analysis$Pred.eig

Predicted eigenvalues by each optimal coordinate regression line

Analysis$OC

Critical optimal coordinates oc

Analysis$Acc.factor

Acceleration factor af

Analysis$AF

Critical acceleration factor af

Otherwise, returns a summary of the analysis.

Arguments

eig

depreciated parameter (use x instead): eigenvalues to analyse

x

numeric: a vector of eigenvalues, a matrix of correlations or of covariances or a data.frame of data

aparallel

numeric: results of a parallel analysis. Defaults eigenvalues fixed at \(\lambda >= \bar{\lambda}\) (Kaiser and related rule) or \(\lambda >= 0\) (CFA analysis)

cor

logical: if TRUE computes eigenvalues from a correlation matrix, else from a covariance matrix

model

character: "components" or "factors"

criteria

numeric: by default fixed at \(\bar{\lambda}\). When the \(\lambda\)s are computed from a principal component analysis on a correlation matrix, it corresponds to the usual Kaiser \(\lambda >= 1\) rule. On a covariance matrix or from a factor analysis, it is simply the mean. To apply \(\lambda >= 0\), sometimes used with factor analysis, fix the criteria to \(0\).

...

variabe: additionnal parameters to give to the cor or cov functions

Author

Gilles Raiche
Centre sur les Applications des Modeles de Reponses aux Items (CAMRI)
Universite du Quebec a Montreal
raiche.gilles@uqam.ca

Details

The nScree function returns an analysis of the number of components/factors to retain in an exploratory principal component or factor analysis. Different solutions are given. The classical ones are the Kaiser rule, the parallel analysis, and the usual scree test (plotuScree). Non graphical solutions to the Cattell subjective scree test are also proposed: an acceleration factor (af) and the optimal coordinates index oc. The acceleration factor indicates where the elbow of the scree plot appears. It corresponds to the acceleration of the curve, i.e. the second derivative. The optimal coordinates are the extrapolated coordinates of the previous eigenvalue that allow the observed eigenvalue to go beyond this extrapolation. The extrapolation is made by a linear regression using the last eigenvalue coordinates and the \(k+1\) eigenvalue coordinates. There are \(k-2\) regression lines like this. The Kaiser rule or a parallel analysis criterion (parallel) must also be simultaneously satisfied to retain the components/factors, whether for the acceleration factor, or for the optimal coordinates.

If \(\lambda_i\) is the \(i^{th}\) eigenvalue, and \(LS_i\) is a location statistics like the mean or a centile (generally the followings: \(1^{st}, \ 5^{th}, \ 95^{th}, \ or \ 99^{th}\)).

The Kaiser rule is computed as: $$ n_{Kaiser} = \sum_{i} (\lambda_{i} \ge \bar{\lambda}).$$ Note that \(\bar{\lambda}\) is equal to 1 when a correlation matrix is used.

The parallel analysis is computed as: $$n_{parallel} = \sum_{i} (\lambda_{i} \ge LS_i).$$

The acceleration factor (\(AF\)) corresponds to a numerical solution to the elbow of the scree plot: $$n_{AF} \equiv \ If \ \left[ (\lambda_{i} \ge LS_i) \ and \ max(AF_i) \right].$$

The optimal coordinates (\(OC\)) corresponds to an extrapolation of the preceeding eigenvalue by a regression line between the eigenvalue coordinates and the last eigenvalue coordinates: $$n_{OC} = \sum_i \left[(\lambda_i \ge LS_i) \cap (\lambda_i \ge (\lambda_{i \ predicted}) \right].$$

References

Cattell, R. B. (1966). The scree test for the number of factors. Multivariate Behavioral Research, 1, 245-276.

Dinno, A. (2009). Gently clarifying the application of Horn's parallel analysis to principal component analysis versus factor analysis. Portland, Oregon: Portland Sate University.

Guttman, L. (1954). Some necessary conditions for common factor analysis. Psychometrika, 19, 149-162.

Horn, J. L. (1965). A rationale for the number of factors in factor analysis. Psychometrika, 30, 179-185.

Kaiser, H. F. (1960). The application of electronic computer to factor analysis. Educational and Psychological Measurement, 20, 141-151.

Raiche, G., Walls, T. A., Magis, D., Riopel, M. and Blais, J.-G. (2013). Non-graphical solutions for Cattell's scree test. Methodology, 9(1), 23-29.

See Also

plotuScree, plotnScree, parallel, plotParallel,

Examples

Run this code

## INITIALISATION
 data(dFactors)                      # Load the nFactors dataset
 attach(dFactors)
 vect         <- Raiche              # Uses the example from Raiche
 eigenvalues  <- vect$eigenvalues    # Extracts the observed eigenvalues
 nsubjects    <- vect$nsubjects      # Extracts the number of subjects
 variables    <- length(eigenvalues) # Computes the number of variables
 rep          <- 100                 # Number of replications for PA analysis
 cent         <- 0.95                # Centile value of PA analysis

## PARALLEL ANALYSIS (qevpea for the centile criterion, mevpea for the
## mean criterion)
 aparallel    <- parallel(var     = variables,
                          subject = nsubjects,
                          rep     = rep,
                          cent    = cent
                          )$eigen$qevpea  # The 95 centile

## NUMBER OF FACTORS RETAINED ACCORDING TO DIFFERENT RULES
 results      <- nScree(x=eigenvalues, aparallel=aparallel)
 results
 summary(results)

## PLOT ACCORDING TO THE nScree CLASS
 plotnScree(results)

Run the code above in your browser using DataLab