Università di Bologna - Facoltà di Scienze Statistiche Laurea Triennale in Statistica e Ricerca Sociale Corso di Analisi di Serie Storiche e Multidimensionali Prof.ssa Marilena Pillati Analisi Fattoriale con R Francesca Marta Lilja Di Lascio francesca.dilascio@unibo.it Facoltà di Scienze Statistiche Università di Bologna 1
Outlines 1. Idea base e obiettivo dell analisi fattoriale 2. Preparazione del proprio ambiente di lavoro e del dataset 3. La funzione factanal 4. Analisi dei fattori 4.1 Stima del modello (3/3) 4.2 Proprietà del modello fattoriale 4.3 Rotazione degli assi fattoriali (2/2) 4.4 Calcolo dei punteggi fattoriali 4.5 Calcolo della matrice di correlazione riprodotta 4.6 Calcolo delle comunalità 4.7 Interpretazione dei risultati ottenuti e valutazione della bontà del modello 5. Nota sulla selezione del numero di fattori 2
1. Idea base e obiettivo dell analisi fattoriale L analisi dei fattori è uno dei metodi di analisi multivariata che permette di ridurre un elevato numero di variabili correlate ad un piccolo numero di variabili non correlate e latenti. Gli aspetti dell analisi fattoriale hanno radici negli studi eseguiti in ambito psicologico da Spearman nel 1904. L idea base consiste nel supporre che la relazione tra le variabili osservate, X i, con i = 1,2,..., p, dipenda da fattori comuni a tutte le variabili, f k, con k = 1,2,..., m, e da fattori specifici a ciascuna di esse, u i, con i = 1,2,..., p, cioè X i = λ i1 f 1 +... + λ ik f k +... + λ im f m + u i dove p è il numero delle variabili rilevate, m il numero di fattori latenti e i coefficienti λ ik sono i pesi fattoriali. In generale, il modello fattoriale presenta la seguente formulazione X = Λf + u + µ in cui Λ è la matrice di dimensione (p m) dei pesi fattoriali (costanti), f è il vettore (m 1) dei fattori comuni (aleatori), u è il vettore (p 1) dei fattori specifici (aleatori) e µ è il vettore delle medie della variabili osservate. 3
2. Preparazione del workspace e dei dati Copiare il file candidati.txt dalla rete alla cartella c://temp (o ad una sua sottocartella, ad es. AnFat ) Aprire la console di R e cambiare directory di lavoro direttamente dalla console di R digitando: setwd("c://temp//anfat"); check digitando getwd() Il file candidati.txt contiene i punteggi rilevati su 48 candidati relativi a 15 caratteristiche ritenute importanti per il datore di lavoro per la scelta tra i candidati. Tali punteggi assumono valori compresi tra 0 e 10. Caricare il file di dati: dati <- read.table("candidati.txt", sep=",", dec=".", header=t) Guardare come è fatto il dataset: dim(dati); dati[1:5,]; summary(dati) L obiettivo è riprodurre e sintetizzare le informazioni contenute in queste 15 variabili mediante un insieme di variabili latenti di dimensione inferiore a 15. 4
3. La funzione factanal Il comando factanal effettua la stima di un modello fattoriale con il metodo della massima verosimiglianza. Consente di ricevere in input sia la matrice dei dati sia la matrice di varianza e covarianza. L analisi viene comunque effettuata con riferimento a variabili standardizzate. La funzione factanal prevede diversi argomenti tra cui molti opzionali factanal(x, factors, data=null, covmat=null, n.obs=na, subset, start=null, scores=c("none", "regression", "Bartlett"), rotation=c("varimax", "none")) Per il momento ci si concentra sui seguenti argomenti: x: può essere una formula oppure una matrice di dati; factors: il numero di fattori da stimare; data: un data frame solo se il primo argomento x è una formula. 5
4.1 Stima del modello (1/3) Digitare: g <- factanal(~., factors=4, dati) g o, equivalentemente, g1 <- factanal(dati, factors=4) g1 Verificare la coincidenza tra i due output: g e g1. Digitare: summary(g) per vedere l elenco degli oggetti calcolati. Si noti che l output della funzione è una lista. Usare il simbolo $ per estrarre oggetti da g; es.: g$factors 6
4.1 Stima del modello (2/3) uniquenesses è il vettore delle specificità: g$uniquenesses loadings è la matrice dei pesi fattoriali, in cui ogni colonna riporta i pesi di ciascun fattore: g$loadings STATISTIC, PVAL e dof contengono i risultati del test chi quadrato di adeguamento al campione e, rispettivamente, il valore della statistica test, il p value ad esso associato e il numero di gradi di libertà: g$statistic; g$pval; g$dof correlation è la matrice di correlazione di partenza: g$correlation criteria contiene informazioni sul processo di stima basato sulla massima verosimiglianza: g$method; g$criteria factors indica il numero dei fattori: g$factors n.obs indica il numero delle osservazioni: g$n.obs 7
4.1 Stima del modello (3/3) Argomenti opzionali del comando factanal possono essere: covmat: la matrice di covarianza (o correlazione) se non si dispone dei dati; n.obs: il numero di unità statistiche (se è stata inserita la matrice di varianza e covarianza); subset: un sottoinsieme dei casi da usare, se x è una matrice o una formula; start: NULL o una matrice di valori iniziali (in colonna) per il calcolo delle uniquenesses. Provare a digitare: g2 <- factanal(factors=4, covmat=cov(dati), n.obs=48) g2 Analizzare l output confrontandolo con gli altri precedentemente generati (g e g1). 8
4.2 Proprietà del modello fattoriale Il modello fattoriale è equivariante rispetto a cambiamenti di scala delle X. Tale proprietà permette, quindi, di lavorare indifferentemente sulle variabili osservate o sulle sue standardizzate, quindi con la matrice di var-cov o con la matrice di correlazione, rispettivamente. Infatti, digitando il seguente codice: dati2 <- scale(dati,t,t) prova1 <- factanal(dati2, factors=4) round(prova1$loadings[,1:4],2)==round(g$loadings[,1:4],2) round(prova1$uniqueness,2)==round(g$uniqueness,2) è possibile osservare che i risultati che si ottengono sono equivalenti. È ovvio che applicare l analisi fattoriale a dati2 (var. standardizzate) o a partire dalla matrice di correlazione delle X porta agli stessi risultati: prova2 <- factanal(factors=4, covmat=cor(dati), n.obs=48) round(prova2$loadings[,1:4],2)==round(g$loadings[,1:4],2) round(prova2$uniqueness,2)==round(g$uniqueness,2) 9
4.3 Rotazione degli assi fattoriali (1/2) Un importante argomento opzionale è: rotation che permette di scegliere il tipo di rotazione da effettuare. La rotazione dei fattori consente di scegliere, tra le possibili trasformazioni della matrice dei pesi fattoriali, quella che facilita l interpretazione dei fattori comuni in termini delle variabili (si chiama rotatione la procedura che consente di selezionare una tra le molteplici soluzioni possibili). La scelta viene fatta in base al principio per cui l identificazione dei fattori risulta semplificata se ciascuno di essi è fortemente correlato con un numero limitato di variabili (ed è poco correlato con le altre). In R è possibile non eseguire alcuna rotazione digitando none o specificare il nome di una funzione da usare per ruotare gli assi tra varimax a promax. 10
4.3 Rotazione degli assi fattoriali (2/2) Di default è la varimax (Kaiser, 1958), una rotazione che massimizza un indice basato sulla somma della varianza dei quadrati dei pesi fattoriali normalizzati entro ciascuna colonna della matrice dei pesi fattoriali (soddisfando il vincolo per cui i fattori risultano tra loro incorrelati). Il metodo Varimax è quello più comunemente accettato poichè pone maggiore enfasi nella semplificazione della struttura dei fattori in termini delle variabili. La matrice Λ è semplificata amplificando le correlazioni più alte di ciascun fattore e riducendo quelle più basse, agevolandone l interpretazione. Interpretare i pesi fattoriali ruotati con il metodo Varimax e confrontarli con quelli che si ottengono senza eseguire alcuna rotazione: g$loadings[,1:4] g3 <- factanal(dati, 4, rotation="none") g3$loadings[,1:4] Osservare come i valori dei pesi fattoriali siano cambiati. 11
4.4 Calcolo dei punteggi fattoriali Un ultimo argomento opzionale del comando factanal è: scores che consente di produrre i punteggi fattoriali, cioè i punteggi che i singoli individui hanno sui fattori identificati dall analisi. Di default è none, alternativamente si può digitare regression o Bartlett. Il metodo di Thomson ( regression ) stima i punteggi fattoriali in base all approccio della regressione multipla che impiega le correlazioni tra le variabili e le correlazioni delle variabili con il fattore. Ricalcolare g introducendo anche l opzione scores e richiamare i punteggi: g4 <- factanal(dati, factors=4, scores="regression") fs <- g4$scores Si noti che (usando una Varimax per default) i punteggi fattoriali risultano incorrelati: fs <- cbind(g4$scores[,1], g4$scores[,2], g4$scores[,3], g4$scores[,4]) cor(fs) 12
4.5 Calcolo della matrice di correlazione riprodotta La matrice ˆR = ˆΛˆΛ + ˆΨ contiene le correlazioni riprodotte dai fattori comuni. Nel caso in esame la matrice ˆΛ ha dimensioni 15 4 e la matrice diagonale ˆΨ ha dimensioni 15 15. La matrice R ˆR è la matrice delle differenze tra le correlazioni campionarie e quelle riprodotte; tanto più piccoli sono gli elementi di R ˆR, tanto meglio i fattori comuni riproducono la matrice osservata. Calcolare le correlazioni riprodotte dal modello fattoriale g4 digitando; LL <- (g4$loadings[,1:4])%*%t(g4$loadings[,1:4]) RR <- LL + diag(g4$uniqueness) Calcolare gli scarti tra le correlazioni campionarie e quelle riprodotte utilizzando il metodo della massima verosimiglianza: round(g4$cor-rr,3) 13
4.6 Calcolo delle comunalità Ciascuna variabile manifesta ha un unità di varianza. La specificità (uniqueness) indica la proporzione della varianza della variabile considerata che non viene spiegata dalla soluzione fattoriale. Le comunalità si trovano calcolando il complemento a uno delle specificità: 1-factanal(dati,4,scores="regression")$uniquenesses o, equivalentemente, per il modello già trovato: 1-g4$uniquenesses Le comunalità permettono di valutare - in che misura il modello stimato riesce a render conto della variabilità di ogni singola variabile osservata e, quindi, costituiscono uno strumento per la diagnostica della bontà del modello usato e stimato. 14
4.7 Interpretazione dei risultati ottenuti Dire qual è la percentuale di variabilità spiegata dal modello stimato: g4$loadings (guardare le righe Cumulative Var e Proportion Var ) Dare un interpretazione ai fattori estratti a partire dalla matrice dei pesi fattoriali ruotata: g4$loadings[,1:4] Dire in che misura il modello stimato riesce a render conto della variabilità di ogni singola variabile osservata: 1-g4$uniquenesses Dire in che misura il modello riesce a riprodurre le correlazioni tra le variabili osservate ( analisi fattoriale confermativa ): round(g4$cor-rr,3); round(g4$cor-ll,3) (matr. di correlaz. residua) Valutare se il numero di fattori scelto è appropriato (ricordando il principio di parsimonia): g4$statistic; g4$pval 15
5. Nota sulla selezione del numero di fattori Se si può ipotizzare la normalità distributiva (multivariata) di X e si sono stimati i pesi fattoriali con il metodo della massima verosimiglianza (come nel nostro caso), allora è possibile controllare ipotesi sulla significatività del modello fattoriale adottato attraverso la seguente statistica test (con la correzione di Bartlett): { 2p + 11 W = n 2m } {log ˆΛˆΛ + ˆΨ log S } χ 2 {(p m) 6 3 2 (p+m)} 2 che saggia l ipotesi nulla H 0 : Σ = ΛΛ + Ψ con Λ(p m) a rango pieno. L idea base è quella di trovare il valore di m (ponendo m = 1 e successivamente uguale a 2,3,...) tale che il test risulti NON significativo. Digitare: f1 <- factanal(dati, factors=4, scores="regression") f2 <- factanal(dati, factors=5, scores="regression") e scegliere il miglior numero di fattori digitando quanto segue (α = 0.01) e ricordando il principio di parsimonia: f1$pval>0.01 f2$pval>0.01 La scelta del numero dei fattori da selezionare rientra nella cosiddetta analisi fattoriale esplorativa. 16