help-octave
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: how can I do Principal Components Analysis with octave?


From: Paul Kienzle
Subject: Re: how can I do Principal Components Analysis with octave?
Date: Wed, 12 May 2004 07:03:45 -0400

Up to a possible change in sign in some of the components, the
following, the following appears to be equivalent to princomp:

## Compute principal components of X
## [pc,z,w,Tsq] = princomp(X)
##   pc  the principal components
##   z   the transformed data
##   w   the eigenvalues of the covariance matrix
##   Tsq Hotelling's T^2 statistic for the transformed data
function [pc,z,w,Tsq] = princomp(X)
  C = cov(X);
  [U,D,pc] = svd(C);
  if nargout>1, z = center(X)*pc; end
  if nargout>2, w = diag(D); end
  if nargout>3, Tsq = sumsq(zscore(z),2); end

Do we want alternative PCA functions in octave-forge as well?
We could extend the princomp interface.  Some things that
seem useful to me are giving it a dimension argument, and
choosing a 'good' one if dimension is 0.  If nargout is zero
we could plot the data in the space of the first two principle
components, or a pareto chart of the eigenvalues.  Other
suggestions?

Thanks,

Paul Kienzle
address@hidden

On May 12, 2004, at 4:49 AM, Fredrik Lingvall wrote:

Try this:

function [pc,sv,n_sv]  = pca(x)
% [pc,sv,n_sv]  = pca(x)
%
% Input:
%   x - Data stored column-vise .
%
% Output:
% pc - Principal components (eigenvectors of the covariance matrix).
%  sv     - Singular values.
%  n_sv - Normalized singular values.

C = cov(x);
[U,D,pc] = svd(C);
sv = diag(D);
n_sv = 100*sv/sum(sv);

\Fredrik

I believe you would need the programs doing the work. They are called
functions in Octave or Matlab, something like "PCA.m". I would be interested
myself so I checked using Google what MATLAB has:

Here is a list of the functions with a short description of each:
PRINCOMP - principal components from raw data matrix
PCACOV - pca from covariance matrix
PCARES - residuals from pca
BARTTEST - Bartlett's test for dimensionality.

Next I checked for the first two, namely "PRINCOMP" and "PCACOV" in
octave-forge but apparently neither is present. I guess we're out of luck
for the time being unless we have the capability to write the program.
Henry


on 5/11/04 1:04 AM, rino mailing at address@hidden wrote:


I'd like to do Principal Components Analysis with octave

What are the command I ave to write?

How to plot the result?



Thank you in advance for the time you spend to answer me, Mario.






-------------------------------------------------------------
Octave is freely available under the terms of the GNU GPL.

Octave's home on the web:  http://www.octave.org
How to fund new projects:  http://www.octave.org/funding.html
Subscription information:  http://www.octave.org/archive.html
-------------------------------------------------------------




-------------------------------------------------------------
Octave is freely available under the terms of the GNU GPL.

Octave's home on the web:  http://www.octave.org
How to fund new projects:  http://www.octave.org/funding.html
Subscription information:  http://www.octave.org/archive.html
-------------------------------------------------------------



reply via email to

[Prev in Thread] Current Thread [Next in Thread]