FarmTest (version 1.0.0)

farm.scree: Diagnostic plots and quantities arising from estimating the number of underlying factors


Given the data, this function draws a scree plot and a plot of the eigenvalue ratios. The eignevalue ratio test is used to estimate the number of factors. See Ahn and Horenstein(2013).


farm.scree(X, K.scree = NULL, K.factors = NULL, robust = FALSE)



an n x p data matrix with each row being a sample.


an optional integer specifying the number of eigenvalues to be plotted in the scree plot. Default is min(n,p).


an optional integer specifying the number of eigenvalues to be used for the eigenvalue ratio test. Default is min(n,p)/2.


a logical indicating whether to use a robust covariance estimator if TRUE, or the sample covariance estimator. Default is FALSE.


Two plots: First plot is the scree plot of the data. Second plot illustrates the eigenvalue ratio test.

A list with the data used for the plots:

  • eigenvalues Eigenvalues of the covariance matrix

  • proportions Proportion of variance explained by the principal components

  • eigenvalue.ratios Ratios calculated in the eigenvalue ratio test

  • nfactors Number of factors found using the eigenvalue ratio test


The maximum eigenvalue ratio is marked differently on the plot. The index of this maximum ratio gives the number of estimated factors.

User has to hit <Return> to see the second plot.

All the data used in the plots are output as a list.


Ahn, S. C. and Horenstein, A. R. (2013). "Eigenvalue Ratio Test for the Number of Factors," Econometrica, 81 (3), 1203<U+2013>1227.


Run this code
p = 100
n = 20
epsilon = matrix(rnorm( p*n, 0,1), nrow = n)
B = matrix(rnorm(p*3,0,1), nrow=p)
fx = matrix(rnorm(3*n, 0,1), nrow = n)
X = fx%*%t(B)+ epsilon
ouput = farm.scree(X)

# }

Run the code above in your browser using DataLab