help-octave
[Top][All Lists]
Advanced

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

function princomp.m results differs from octave version


From: Samir Sharshar
Subject: function princomp.m results differs from octave version
Date: Sun, 12 Dec 2004 21:37:00 +0100

Hi all,

I use the fonction princomp.m as below

<x-tad-smaller>## </x-tad-smaller><x-tad-smaller>Compute</x-tad-smaller><x-tad-smaller> </x-tad-smaller><x-tad-smaller>principal</x-tad-smaller><x-tad-smaller> </x-tad-smaller><x-tad-smaller>components</x-tad-smaller><x-tad-smaller> </x-tad-smaller><x-tad-smaller>of</x-tad-smaller><x-tad-smaller> </x-tad-smaller><x-tad-smaller>X</x-tad-smaller><x-tad-smaller>
## [</x-tad-smaller><x-tad-smaller>pc,z,w,Tsq]</x-tad-smaller><x-tad-smaller> = </x-tad-smaller><x-tad-smaller>X</x-tad-smaller><x-tad-smaller>)
## </x-tad-smaller><x-tad-smaller>pc</x-tad-smaller><x-tad-smaller> </x-tad-smaller><x-tad-smaller>the</x-tad-smaller><x-tad-smaller> </x-tad-smaller><x-tad-smaller>principal</x-tad-smaller><x-tad-smaller> </x-tad-smaller><x-tad-smaller>components</x-tad-smaller><x-tad-smaller>
## </x-tad-smaller><x-tad-smaller>z</x-tad-smaller><x-tad-smaller> </x-tad-smaller><x-tad-smaller>the</x-tad-smaller><x-tad-smaller> </x-tad-smaller><x-tad-smaller>transformed</x-tad-smaller><x-tad-smaller> </x-tad-smaller><x-tad-smaller>data</x-tad-smaller><x-tad-smaller>
## </x-tad-smaller><x-tad-smaller>w</x-tad-smaller><x-tad-smaller> </x-tad-smaller><x-tad-smaller>the</x-tad-smaller><x-tad-smaller> </x-tad-smaller><x-tad-smaller>eigenvalues</x-tad-smaller><x-tad-smaller> </x-tad-smaller><x-tad-smaller>of</x-tad-smaller><x-tad-smaller> </x-tad-smaller><x-tad-smaller>the</x-tad-smaller><x-tad-smaller> </x-tad-smaller><x-tad-smaller>covariance</x-tad-smaller><x-tad-smaller> </x-tad-smaller><x-tad-smaller>matrix</x-tad-smaller><x-tad-smaller>
## </x-tad-smaller><x-tad-smaller>Tsq</x-tad-smaller><x-tad-smaller> </x-tad-smaller><x-tad-smaller>s</x-tad-smaller><x-tad-smaller> </x-tad-smaller><x-tad-smaller>T</x-tad-smaller><x-tad-smaller>^2 </x-tad-smaller><x-tad-smaller>statistic</x-tad-smaller><x-tad-smaller> </x-tad-smaller><x-tad-smaller>for</x-tad-smaller><x-tad-smaller> </x-tad-smaller><x-tad-smaller>the</x-tad-smaller><x-tad-smaller> </x-tad-smaller><x-tad-smaller>transformed</x-tad-smaller><x-tad-smaller> </x-tad-smaller><x-tad-smaller>data</x-tad-smaller><x-tad-smaller>
function [pc,z,w,Tsq] = princomp(X)
C = cov(X);
[U,D,pc] = svd(C);

</x-tad-smaller><x-tad-smaller>if</x-tad-smaller><x-tad-smaller> nargout>1, z = center(X)*pc; end

</x-tad-smaller><x-tad-smaller>if</x-tad-smaller><x-tad-smaller> nargout>2, w = diag(D); end

</x-tad-smaller><x-tad-smaller>if</x-tad-smaller><x-tad-smaller> nargout>3, Tsq = sumsq(zscore(z),2); end

to compute principal component analysis. I've tried this function on a Linux Mandrake 10.1 operating system with octave 2.1.64 compiled from sources and octave 2.1.57 compiled from sources on a Mac OS 10.3.6 (Panther).

Obviously the result of the transformed data differs from one version to another. Is it due to a different implementation of the svd function ?

Any idea ?

Regards,

Samir</x-tad-smaller>

reply via email to

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