On Thu, 30 Aug 2012, Andreas Tudyka wrote: > Hi I am new to gretl and I am trying to find out how the calculations > behind different commands are done. > > For example, if I run the pca command I would like to see how exactly the > eigenvectors are multplied with my data and how the data is standardized > etc.. This also applies to the princomp function. > > Is it possible to look "into" these commands and functions or would I have > to resort to some source code in C?
For the command and function that you mention, yes, your only choice is to look at the C code; it may seem intimidating at first, but it's very instructive and IMHO it pays off in the long run to get acquainted with a low-level language like C. The file you want to look at is http://gretl.cvs.sourceforge.net/viewvc/gretl/gretl/plugin/pca.c?view=log That said: (i) it would be very nice to have, for each gretl command/function, a detailed explanation of its inner working like the "Methods and Formulas" section of the Stata manual(s). We simply don't have the manpower to do this (but, unlike Stata, you do have the C source to look at). (ii) the pca command can be replicated pretty easily through a hansl function, so an answer to your specific question is implied by the following script: <hansl> function list PC(list X, scalar n) scalar k = nelem(X) matrix mX = {X} scalar N = rows(mX) # note the dof adjustment matrix Z = (mX .- meanc(mX)) ./ sdc(mX) * (sqrt(1 - 1/N)) matrix C = Z'Z ./ N matrix Evec = {} matrix Eval = eigensym(C, &Evec) list ret = null loop i=1..n --quiet series PC_via_func_$i = Z * Evec[,k-i+1] ret += PC_via_func_$i end loop return ret end function open maschool.gdt list X = 2 3 4 6 pca X --save=2 matrix z = princomp({X}, 2) series PC_alt_1 = z[,1] series PC_alt_2 = z[,2] list L = PC(X, 2) # check that the principal components are in fact the same ols PC_alt_1 0 PC_via_func_1 ols PC_alt_2 0 PC_via_func_2 </hansl> -------------------------------------------------- Riccardo (Jack) Lucchetti Dipartimento di Economia Università Politecnica delle Marche (formerly known as Università di Ancona) r.lucchetti(a)univpm.it http://www2.econ.univpm.it/servizi/hpp/lucchetti --------------------------------------------------