Am 12.12.2025 um 15:33 schrieb Riccardo (Jack) Lucchetti:
On 12/12/2025 15:03, Sven Schreiber wrote:
> I guess that this help predates the introduction of the mreverse()
> function?
Yes
> So, OK to change the help example there? Or am I missing something?
Let's change it, yes. Could you please see to it?
OK
> I have verified that the following computations coincide: [...]
That's not necessarily true, because the eigenvectors (and hence the
principal components) are identified up to a sign switch.
Yes, I know that it depends on the implementation / normalization, but
that's exactly the point of checking concrete code snippets: in the one
I gave it seems to be identical. Of course, it could be that gretl
doesn't guarantee the signs there in the future.
Moreover, there's an even neater way:
<hansl>
clear
A = mnormal(30,10)
# SVD-based
matrix ps = empty
l = svd(cdemean(A), &ps)
ps = ps .* l
</hansl>
Neater perhaps, but in fact the following variant seems to be faster:
<hansl>
m = cdemean(A)
v = {}
svd(m'm, &v)
ps2 = m * v # up to sign
</hansl>
> I think it would be helpful to include an example like this one in
> the princomp help. Or maybe a variant based on the correlation matrix
> (default in princomp) instead of the covariance like here. OK?
Fine by me.
Alright. Thanks,
sven