Thanks a lot! I will have a go at the C code then.

On Thu, Aug 30, 2012 at 4:57 PM, Riccardo (Jack) Lucchetti <r.lucchetti@univpm.it> wrote:
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@univpm.it
 http://www2.econ.univpm.it/servizi/hpp/lucchetti
--------------------------------------------------
_______________________________________________
Gretl-users mailing list
Gretl-users@lists.wfu.edu
http://lists.wfu.edu/mailman/listinfo/gretl-users