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

## Description

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).

## Usage

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

## Arguments

X

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

K.scree

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

K.factors

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

robust

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

## Value

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

## Details

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.

## References

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

## Examples

# NOT RUN {
set.seed(100)
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)
# }