#ANALISI FATTORIALE #1. verificare che un'AF possa essere eseguita #1.a: i dati sono quantitativi e standardizzabili? #se si --> continua #analizziamo la struttura dei dati getwd() #cambia directory torte=read.csv2("torte.csv") str(torte) View(torte) #da qui vediamo com'è compostpo il database e la natura dei dati in esso contenuti #ricordarsi la regola empirica: n=>5*k #1.b: i dati seguono una distribuzione normale? #verifichiamolo con un istogramma dei dati hist(vendita) #questi sono istogrammi di frequenza assoluta hist(prezzo) hist(pubb) hist(vendita,freq=FALSE) #questo è istogragramma che utilizza frequenze relative #nel caso non seguano una distribuzione normale possiamo trasformare le variabili #le trasformazioni più utilizzate sono: ^2 e log() ovvero il logaritmo naturale #2. analisi delle correlazioni vedere se la distribuzione è GAUSSIANA O NO ==> SE E' GAUSSIANA --> PEARSON ==> SE NON E' GAUSSIANA --> SPEARMAN O KENDALL #2.1: indice di Pearson cor.test(vendita,prezzo) #Il valore del coefficiente di Pearson è -0.443: è un valore modesto, che indica una correlazione tra le variabili non molto forte. Controlliamo ora la significatività di R dal valore della statistica test: #qt(valore dell'intervallo di confidenza,valore dei gradi di libertà=df) qt(0.950,13) #Risulta che t-calcolato < t-tabulato; del resto p-value > 0.05. Quindi il coefficiente R di Pearson non è statisticamente significativo. #2.2 Correlazione di Spearman: test Rho di Spearman (variabili ordinali o che si presume non abbiano intervalli uguali) #cor.test(variabile 1, variabile 2, method="spearman") #2.3 Correlazione di Kendall: thest Tau di Kendall (quando var non gaussiane) #cor.test(variabile 1, variabile 2, method="kendall") #sia per spearman che kendall si guarda il valore (che indica la relazione) e il confronto tra p-value e alfa di significatività) #2.4 matrice di correlazione m=cor(torta) m #visualizzazione grafica delle relazioni quando le serie di variabili non sono molte (K limitato) pairs(x=torta,panel=panel.smooth) #osservazione e commento della matrice di correlazione #ricordare: se il determinante della matrice di correlazione è nullo non si può procedere con l'analisi det(matrice di correlazione) det(m) 3.test dell'adeguatezza campionaria (KMO) x <- subset(torta, complete.cases(torta)) # Omit missing values r <- cor(x) # Correlation matrix r2 <- r^2 # Squared correlation coefficients i <- solve(r) # Inverse matrix of correlation matrix d <- diag(i) # Diagonal elements of inverse matrix p2 <- (-i/sqrt(outer(d, d)))^2 # squared partial correlation coefficients KMO <- sum(r2)/(sum(r2)+sum(p2)) KMO #il criterio di adeguatezza campionaria di Kaiser-Meyer-Olkin ha un range di valori tra 0 e 1, e sono accettabili valori al di sopra di 0.5 per continuare l'analisi fattoriale 4. test di sfericità BARTLETT (devono esserci almeno due osservazioni in ogni gruppo) batlett.test(variabile 1, variabile 2) --> dà erore dicendo che ci devono essere almeno due osservazioni ogni gruppo??? 5.performiamo l'Analisi Fattoriale: stima del modello f=factanal(torta, factors=1) #dobbiamo noi identificare il numero dei fattori f #visualizza i valori di unicità e i loadings; l'ultima riga identifica la proporzione di variabilità spiegata. E' accettabile un valore pari o superiore a 0.7 infine si osserva il test di ipotesi che un fattore sia sufficiente #guardiamo come sono composti i dati: dim(torte) summary(torte) OBIETTIVO: riprodurre e sintetizzare le informazioni contenute in queste variabili mediante un insieme di variabili latenti di dimensione inferiore alle attuali. il comando factanal effettua la stima di un modello fattoriale con il metodo della massima verosimiglianza Ipotesi base: le matrici di covarianza dei dati originari e del modello stimato convergano H0= il modello si adatta perfettamente H1=il modello non si adatta perfettamente --> p-value se tende a 0 l'ipotesi H0 è rigettata comando: g=factanal(torte,factors=n) summary(g) #elenco degli oggetti calcolati per estrarre gli oggetti $ g$factors #estraiamo i fattori comuni uniqueness= vettore delle unicità u g$uniqueness loadings = matrice dei pesi fattoriali in cui ogni colonna riporta i pesi di ciascun fattore g$loadings per vedere il p-value e la statistica test: g$PVAL g$STATISTIC per vedere i gradi di libertà g$dof la matrice di correlazione di partenza è: g$correlation il criterio utilizzato (o metodo) viene indicato con g$method o g$criteria il numero di fattori è indicato con g$factors il numero di osservazioni è g$n.obs PROPRIETA' DEL MODELLO FATTORIALE il modello fattoriale è equivalente rispetto a cambiamenti di scala delle x osservate Tale proprietà permette di lavorare indifferentemente sulle variabili osservate (matrice di varianza-covarianza) o sulle standardizzate (matrice di correlazione) quindi: dati2=scale(torta,T,T) #standardizziamo i dati prova1=factanal(dati2,factors=n) #dà risultati equivalenti ROTAZIONE DEGLI ASSI il comando "rotation" 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. 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 nessuna rotazione "none" -usare la rotazione varimax -usare la rotazione promax generalmente se non digitiamo nulla viene eseguita varimax GLI SCORES O PUNTEGGI FATTORIALI (PER IL DATABASE) Sono i punteggi che i singoli oggetti-unità-individui hanno sui fattori identificati dall'analisi, ovvero i dati da inserire nel nostro database quali "nuove variabili" g$scores se vogliamo calcolarli con un determinato metodo: gs=factanal(torte,factors=n,scores="regression") #metodo della regressione multipla (o metodo di Thomson) che impiega le correlazioni tra le variabili e le correlazioni delle variabili con il fattore gs$scores e confrontare NB: con varimax i punteggi o scores risultano sempre incorrelati! LE COMUNALITA' Ogni variabile presenta un'unità di varianza. questa si distingue in -specificità= la proporzione della varianza della variabile che non viene spiegata dalla soluzione fattoriale -comunalità=il complemento a 1 della unicità 1-g$uniquenesses le comunalità permettono di valutare: -in che misura il modello stimato riesce a rendere conto della variabilità di ogni singola variabile osservata -costituiscono quindi un elemento per la DIAGNOSTICA della bontà del modello stimato INTERPRETAZIONE DEI RISULTATI OTTENUTI 1) dire qual è la variabilità spiegata del modello stimato gs$loadings (guardare Cumulative var e Proportion var) 2) dare un'interpretazione ai fattori estratti a partire dalla matrice dei pesi fattoriali ruotata: gs$loadings[,1:4] #4=n utilizzato 3)dire in che misura il modello stimato riesce a rendere conto della variabilità di ogni singola variabile osservata 1-gs$uniquenesses 4)valutare se il numero di fattori scelto è appropriato gs$STATISTIC gs$PVAL 5)confrontare due modelli con numero di fattori differente (ipotizzando alfa=0.01) e ricordando il principio di parsimonia: f1=factanal(torte,factors=4,scores="regression") f2=factanal(torte,factors=3,scores="regression") f1$PVAL>0.01 f2$PVAL>0.01