Sunteți pe pagina 1din 15

Analiza factoriala

Analiza factoriala este o tehnica statistica mutltivarianta si


are ca scop extragerea unui numar mic de factori ascunsi
responsabili de corelatiile ditnre variabilele originale.

Aceasta analiza este asemanatoare cu analiza


componentelor principale in sensul ca extragem un numar
mic de componente numite factori.

Se pleaca de la premiza ca exista un model factorial care


explica covariantele dintre cele p elemente ale lui x printr-
un numar limitat de factori ascunsi.

1. Coeficientii de corelatie dintre componente


2.Inversa matricii de corealtie

3.Extragerea coeficientilor de corelatie partiali


4.Valorea indicelui KMO

Este de 63% ceea ce inseamna ca datele noastre au fost


corect alese.

5.Testul Bartlett pentru sfericitate

6. Pachetul rela pentru KMO si Bartlett

7.Summary de res
8. Fit 2

9.Fit 3
H0: modelul este valid
H1: modelul este invalid
P value este 0.159 > 0.05 deci modelul este valid, deci 3
factori sunt sufiecinti pentru analiza noastra.
Uniquenesses reprezinta proportia din varianta comuna
care este asociata factorilor.
Loadings = sarcina factorilor cu fiecare componenta.
Observam ca 3 factori sunt suficienti pentru a explica
patternurile existente intre relatiile dintre variabile.
Ss Loadings(varianta facotorilor): 2.51, 1.78, 1.65
Cei 3 factori explica 82% din varianta.

10. Summary de fit

11. Corrplot factori


12.Coeficienti fit

13. Scoruri coeficineti


14. Biplot
Axele din stanga si cea inferioara prezinta scorurile
principale ale componentelor, iar cea superioara si din
dreapta prezinta sarcinile sau loadings.
In general, biplot-ul arata ca doua componente explica o
cantitate suficienta de varianta pentru a oferi o
reprezentare vizuala semnificativa a structurii
componentelor.
Forma generala a factorilor
F1 = -.0.032*Procesor + 0.08*MemorieRam -
0.021*MemorieVideo - 0.178*CacheProcesor +
0.34*Hard + 0.67*VitezaHard - 0.032*SSD
F2 = -0.058*Procesor + 1.115*MemorieRam -
0.021*MemorieVideo - 0.206*CacheProcesor -
0.05*Hard + 0.07*VitezaHard + 0.012*SSD
F3 = 0.225*Procesor - 0.41*MemorieRam +
0.108*MemorieVideo + 0.89*CacheP + 0.105*Hard -
0.175*VitezaHard + 0.005*SSD

Anexe
date<-read.csv("dateproiect.csv", header=TRUE,sep=",")
View(date)

#Indicele KMO

date_std = scale(date[4:10],scale=TRUE)
View(date_std)

R = cor(date_std)
R

invR <- solve(R)


invR

#extragerea coeficintilor de corelatie partiala


A <- matrix(1, nrow(invR), ncol(invR))
for(i in 1:nrow(invR)){
for(j in (i+1):ncol(invR)){
#deasupra diagonalei
A[i,j] <- invR[i,j]/sqrt(invR[i,i]*invR[j,j])
#sub diagonala
A[j,i] <- A[i,j]
}
}
colnames(A) <-colnames(date_std)
rownames(A) <-colnames(date_std)
print(A)

kmo.num <- sum(R^2) - sum(diag(R^2))


kmo.denom <- kmo.num + (sum(A^2) - sum(diag(A^2)))
kmo <- kmo.num/kmo.denom
print(kmo)

# Testul bartlett de sfericitate - scrierea functiei


bart<-function(date){
R<-cor(date)
p<-ncol(date)
n<-nrow(date)
chi2<- -((n-1)-((2*p)+5)/6 ) * log(det(R))
df<-(p*(p-1)/2)
crit<-qchisq(.95,df) #critical value
p<-pchisq(chi2,df,lower.tail=F) #pvalue
cat("Bartlett's test of sphericity: X2(",df,")=",chi2,", p=",
round(p,6),sep="" )
}
bart(date_std)
?pchisq() ### Functia repartitie
qchisq(0.05,45,lower.tail=F)
### Utilizarea pachetului rela pentru kmo si bartlett
library(rela)
res <- paf(as.matrix(date_std))
res$KMO
res$Bartlett
summary(res)

#Utilizarea functiei factanal pentru analiza factoriala


(MLE)
fit.2 <- factanal(date_std, factors=2, rotation="varimax")
print(fit.2, digits = 2, cutoff = .2, sort = TRUE)
fit.3 <- factanal(date_std, factors=3, rotation="varimax")
print(fit.3, digits = 2, cutoff = .2, sort = TRUE)

colnames(fit.2$loadings)<-c("Procesor","Memoria
Ram","Memoria Video","Cache Procesor","Memoria
Hard","Viteza Hard","SSD")
print(loadings(fit.2), digits=2, cutoff=0.2, sort=TRUE)

library(corrplot)
corrplot(fit.2$loadings, method="circle")
fit.2_coef <- solve(fit.2$correlation) %*% fit.2$loadings
fit.2_coef

fit.2_scores <- date_std %*% solve(cor(date_std)) %*%


fit.2$loadings
fit.2_scores
df = data.frame(fit.2_scores)
rownames(df) = date[,1]
biplot(df[,1:2], fit.3$loadings[,1:2],cex=c(0.7,0.8))

S-ar putea să vă placă și