Salta ai contenuti. | Salta alla navigazione

Strumenti personali

LAB 11_ analisi fattoriale

Plain Text icon R_ANALISI FATTORIALE.txt — Plain Text, 7 kB (7827 bytes)

Contenuto del file

 #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