[R] PCA problem in R

Prof Brian Ripley ripley at stats.ox.ac.uk
Mon Aug 15 19:42:32 CEST 2005


On Mon, 15 Aug 2005, Dennis Shea wrote:

> [SNIP]>>
>>>> On Sat, 13 Aug 2005, Alan Zhao wrote:
>>>>
>>>>> When I have more variables than units, say a 195*10896 matrix which has
>>>>> 10896 variables and 195 samples. prcomp will give only 195 principal
>>>>> components. I checked in the help, but there is no explanation that why
>>>>> this happen.
>
> [SNIP]
>
>> Sincerely,
>> Zheng Zhao
>> Aug-14-2005
>> ______________________________________________
>
> Just yesterday I subscribed to r-help because I am planning
> on learning the basics of R ... today.   :-)
> Thus, I am not sure about the history of this question.

> The above situation, more variables than samples,
> is commonly encounterd in the climate studies.
> Consider annual mean temperatures for 195 years
> on a coarse 72 [lat] x 144 [lon]  grid [72*144=10368
> spatial variables].

Which are variables and which are samples here?  In standard statistical 
parlance you have 195 variables at 10368 samples. In some fields there are 
the concepts of R-mode and Q-mode PCA, and you seem to be in Q-mode, which 
is why you have a transpose.

> Let  S be the number of grid points and T be the number
> of years. I think there is a theorem (?Eckart-Young?)
> which states that the maximum number of unique eigenvalues
> is min(S,T). In your case 195 eigenvalues is correct.

Eigenvalues of what?  Eckart-Young is about the SVD, see e.g.

http://voteview.com/ideal_point_Eckart_Young_Theorem.htm

as Googling easily shows.  (It is used to prove some of the approximation 
properties of PCA, e.g. in

http://www.stats.ox.ac.uk/~ripley/MultAnal_MT2004/PCA.pdf)

> I speculate that the underlying function transposes the
> input data matrix and computes the the TxT [rather than SxS]
> covariance matrix and solves for the eigenvalues/vectors.
> It then uses a linear transformation to get the results
> for the original input data matrix.
>
> Computationally, the above is much faster and uses less memory.

You speculate incorrectly, even in your Q-mode view of the world.
The real point is that is solves a different problem, which is what my 
answer to the original post was about.

> PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html

It really would be a good idea to do the homework it suggests.

-- 
Brian D. Ripley,                  ripley at stats.ox.ac.uk
Professor of Applied Statistics,  http://www.stats.ox.ac.uk/~ripley/
University of Oxford,             Tel:  +44 1865 272861 (self)
1 South Parks Road,                     +44 1865 272866 (PA)
Oxford OX1 3TG, UK                Fax:  +44 1865 272595




More information about the R-help mailing list