vexel ha scritto:Ho fatto mente locale, credo di averci capito qualcosa ora.
Ho calcolato le medie e centrato/depurato la matrice tramite excel, l'ho importata su Matlab e ho calcolato la matrice varianza covarianza.
Alleluja
vexel ha scritto:Facendo la decomposizione della matrice che abbiamo chiamato B, ho gli stessi risultati inserendo il comando che mi ha suggerito la prof ovvero:
[C,L,X]=pcacov(B)
che dovrebbe essere questo:
https://it.mathworks.com/help/stats/pcacov.htmlQuindi presumo sia lo stesso.
Con questo comando però ottengo anche gli autovalori, cioè la X e quindi la variabilità spiegata.
La decomposizione è quella a valori singolari, punto.
Guarda invece cosa hai fatto tu...te lo spiego con un po' di algebra matriciale.
$A=USV^T$
Dove A è la matrice rettangolare depurata dalle medie. U e V sono matrici ortogonali. S è la matrice diagonale dei valori singolari.
Ora calcolo B da
questa decomposizione:
$B=1/nA^TA=1/n(USV^T)^TUSV^T=1/nVS^TU^TUSV^T=1/nVS^TSV^T=VDV^T$ (ovvero B diagonalizzata!)
Dove $D=1/nS^TS$ è la matrice diagonale degli autovalori associati alla matrice di varianza e covarianza B.
Se non dividevi per n, lavoravi con la matrice di devianza e codevianza, tutto qua.
Gli autovalori altro non sono che le varianze associate ai nuovi assi, ovvero gli autovettori...che a loro volta sono le colonne di V...ed ogni singola colonna sono i famosi coefficienti (su cui torniamo tra poco).
Inoltre adesso vedi chiaramente la relazione fra gli autovalori della matrice D (ovvero le varianze rispetto ai nuovi assi/colonne di V) e i valori singolari della matrice S: i valori singolari sono gli scarti quadrati medi, ovvero la radice degli autovalori/varianze. E personalmente penso che sia più corretto usare e valutare le variabilità nella scala originaria e non in quella quadratica.
Se vuoi provare l'emozione di ritrovare i medesimi valori che hai trovato usando il comando della prof., allora carica la matrice A (sempre quella depurata delle medie) e dividi tutti i suoi valori per 522 (insomma trova $1/nA=K$).
Poi scrivi $[U,S,V]=svd(K)$ e ti verrà fuori una matrice U 522x522 (ignorala per ora), la matrice V degli autovettori che sarà identica a quella che hai trovato con l'altro comando e infine la matrice S. Prendi la macchinetta e fai il quadrato dei valori diversi da zero che trovi in S e scoprirai che sono gli autovalori della B.
vexel ha scritto:Per la scelta delle dimensioni so che esistono vari criteri, ho deciso di utilizzare quello della variabilità cumulata e con le prime 4 componenti arrivo al 70% di informazione.
La C sono i coefficienti della componente principali, ma praticamente a cosa servono? A me interessano autovalori e autovettori, però toglimi questa curiosità
Sulla scelta fai quello che vuoi, tanto è un esercizio privo di reale significato statistico.
I coefficienti invece sono appunto le colonne di V, ovvero gli autovettori. E bada bene, quegli autovettori sono gli stessi sia che tu faccia la decomposizione totale o che tu faccia la diagonalizzazione della matrice di varianza e covarianza o infine della matrice di devianza e codevianza.
Vengono fuori sempre quelli...perchè devono venire fuori sempre uguali. Per questo non capisco l'ossessione di dividere per 522...non cambia niente, se non che gli autovalori saranno devianze se diagonalizzi $A^TA$ oppure radici di queste medesime devianze se trovi S.
La vera differenza è che trovando gli autovettori dalla matrice che abbiamo chiamato B, non sai che fartene perchè
B non è la matrice originaria (anche se col baricentro modificato) mentre nella decomposizione completa, ovvero quella a valori singolari vedi chiaramente a cosa serve.
Infatti $A=USV^T rArr AV=US$
Quindi gli autovettori sono i coefficienti delle combinazioni lineari delle colonne di A.
Tradotto, diciamo, per esempio, che A sia composta tre colonne $T_1$ $T_2$ $T_3$ corripondenti ai rendimenti di tre titoli.
La prima colonna di V è (v_1,v_2,v_3).
Quando moltiplico la matrice A per la prima colonna di V è equivalente a fare $v_1*T_1+v_2*T_2+v_3*T_3$ e sarà la mia prima componente principale, ovvero una combinazione lineare, ovvero una somma "pesata" dei "titoli" originari.
A per la seconda colonna mi darà la seconda combinazione lineare/componente principale. Etc etc.
Però non devo usare per forza tutte le colonne di V...infatti alcune (ovvero gli autovettori collegati agli autovalori più piccoli) posso decidere di "buttarle via". E quindi alla fine mi verranno fuori un numero di componenti principali inferiori al numero di titoli di partenza...e dovranno essere interpretate dato che sono "astratte" essendo appunto un mix dei titoli originari.
Per esempio, se una componente (che ho tenuto) è un mix, in cui i pesi più "grandi" sono associati alle colonne dei titoli (chessò) relati al petrolio e carburanti, allora la chiamerò "energia". E via così.