Learn R Programming

nFactors (version 2.3.1)

nBartlett: Bartlett, Anderson and Lawley Procedures to Determine the Number of Components/Factors

Description

This function computes the Bartlett, Anderson and Lawley indices for determining the number of components/factors to retain.

Usage

nBartlett(x, N, alpha=0.05, cor=TRUE, details=TRUE, correction=TRUE, ...)

Arguments

x
numeric: a vector of eigenvalues, a matrix of correlations or of covariances or a data.frame of data (eigenFrom)
N
numeric: number of subjects
alpha
numeric: statistical significance level
cor
logical: if TRUE computes eigenvalues from a correlation matrix, else from a covariance matrix
details
logical: if TRUE also return detains about the computation for each eigenvalue
correction
logical: if TRUE use a correction for the degree of freedom after the first eigenvalue
...
variable: additionnal parameters to give to the cor or cov functions

Value

  • nFactorsnumeric: vector of the number of factors retained by the Bartlett, Anderson and Lawley procedures.
  • detailsnumeric: matrix of the details for each indices.

Details

The hypothesis tested is: (1) $\qquad \qquad H_k: \lambda_{k+1} = \ldots = \lambda_p$ This hypothesis is verified by the application of different version of a $\chi^2$ test with different values for the degrees of freedom. Each of these tests share the compution of a $V_k$ value: (2) $\qquad \qquad V_k = \prod\limits_{i = k + 1}^p {\left{ {{{\lambda _i } \over {{\raise0.7ex\hbox{$1$} \!\mathord{\left/ {\vphantom {1 q}}\right.\kern-\nulldelimiterspace} \!\lower0.7ex\hbox{$q$}}\sum\limits_{i = k + 1}^p {\lambda _i } }}} \right}}$ Where $p$ being the number of eigenvalues, $k$ the number of eigenvalues to test, and $q$ the $p-k$ remaining eigenvalues. With $n$ equal to the sample size minus 1 ($n = N-1$). The Anderson statistic is distributed as a $\chi^2$ with $(q + 2)(q - 1)/2$ degrees of freedom and is equal to: (3) $\qquad \qquad - n\log (V_k ) \sim \chi _{(q + 2)(q - 1)/2}^2$ An improvement of this statistic from Bartlett (Bentler, and Yuan, 1996, p. 300; Horn and Engstrom, 1979, equation 8) is distributed as a $\chi^2$ with $(q)(q - 1)/2$ degrees of freedom is equal to: (4) $\qquad \qquad - \left[ {n - k - {{2q^2 q + 2} \over {6q}}} \right]\log (V_k ) \sim \chi _{(q + 2)(q - 1)/2}^2$ Finally, Anderson (1956) and James (1969) proposed another statistic. (5) $\qquad \qquad - \left[ {n - k - {{2q^2 q + 2} \over {6q}} + \sum\limits_{i = 1}^k {{{\bar \lambda _q^2 } \over {\left( {\lambda _i - \bar \lambda _q } \right)^2 }}} } \right]\log (V_k ) \sim \chi _{(q + 2)(q - 1)/2}^2$ Bartlett (1950, 1951) proposed a correction to the degrees of freedom of these $\chi^2$ after the first siginificant test that is $(q+2)(q - 1)/2$.

References

Anderson, T. W. (1963). Asymptotic theory for principal component analysis. Annals of Mathematical Statistics, 34, 122-148. Bartlett, M. S. (1950). Tests of significance in factor analysis. British Journal of Psychology, 3, 77-85. Bartlett, M. S. (1951). A further note on tests of significance. British Journal of Psychology, 4, 1-2. Bentler, P. M. and Yuan, K.-H. (1996). Test of linear trend in eigenvalues of a covariance matrix with application to data analysis. British Journal of Mathematical and Statistical Psychology, 49, 299-312. Bentler, P. M. and Yuan, K.-H. (1998). Test of linear trend in the smallest eigenvalues of the correlation matrix. Psychometrika, 63(2), 131-144. Horn, J. L. and Engstrom, R. (1979). Cattell's scree test in relation to Bartlett's chi-square test and other observations on the number of factors problem. Multivariate Behavioral Reasearch, 14(3), 283-300. James, A. T. (1969). Test of equality of the latent roots of the covariance matrix. In P. K. Krishna (Eds): Multivariate analysis, volume 2. New-York, NJ: Academic Press. Lawley, D. N. (1956). Tests of significance for the latemt roots of covariance and correlation matrix. Biometrika, 43(1/2), 128-136.

See Also

plotuScree, nScree, plotnScree, plotParallel

Examples

Run this code
## SIMPLE EXAMPLE OF A BARTLETT PROCEDURE

 data(dFactors)
 eig      <- dFactors$Raiche$eigenvalues

 results  <- nBartlett(x=eig, N= 100, alpha=0.05, details=TRUE)
 results

 plotuScree(eig, main=paste(results$nFactors[1], ", ",
                            results$nFactors[2], "or ",
                            results$nFactors[3],
                            "factors retained by the LRT procedures",
                            sep=""))

Run the code above in your browser using DataLab