lunes, 14 de septiembre de 2009

Análisis factorial en R

Factorial1b

Factorial 2

Aplicaciones-Ejemplos

 datos<-read.table("factorial.txt",header=TRUE,row.names=1)
attach(datos)
fac<-prcomp(datos, retx=,center=TRUE,scale.=TRUE,tol=NULL)
#En primer lugar, es importante, imprimir el resumen del an´alisis y la gr´afica de los autovalores
#(plot) para determinar el n´umero de factores
summary(fac)
plot(fac)
fac$rotation #cargas factoriales
fac$x

cargas<-matrix(0,7,3) #16=2ºdim(datos) y 4=nºfactores a retener
for (i in 1:3) cargas[,i]<-fac$rotation[,i]*fac$sdev[i]
cargas2<-varimax(cargas,normalize=T)$loadings
print(cargas2,cutoff=0.3)

comunalidad<-matrix(0,7,3)

for (i in 1:7)
{for (j in 1:3)
{comunalidad[i,1]=comunalidad[i,1]+cargas[i,j]^2
comunalidad[i,2]=1-comunalidad[i,1]}}
comunalidad

cargas3<-matrix(0,7,3)
cargas4<-matrix(0,7,3)
for (i in 1:7){
cargas3[i,]<-cargas2[i,]^2
cargas4[i,]<-cargas3[i,]/comunalidad[i,1]}
cargas3
cargas4

ajuste<-cor(datos)-cargas2%*%t(cargas2)
ajuste

biplot(fac)
par(mfrow=c(3,1))
for (i in 1:3){
plot(cargas2[,i],cargas2[,i+1])
text(cargas2[,i],cargas2[,i+1],labels=row.names(datos))}

par(mfrow=c(3,2))
for (i in 1:3){
for(j in 1:4){
{plot(fac$x[,i],fac$x[,j])}
text(fac$x[,i],fac$x[,j],labels=row.names(fac$x))}}

facmle<-vector("list",3)
for (i in 1:3) {facmle<-factanal(datos2,i)}
facmle

function (xmat, factors=NULL, cor=TRUE) {
prc <- princomp ( covmat = xmat ,cor = cor )
eig <- prc$sdev^2
if (is.null(factors))
factors <- sum ( eig >= 1 )
loadings <- prc$loadings [ , 1:factors ]
coefficients <- loadings [ , 1:factors ] %*% diag ( prc$sdev[1:factors] )
rotated <- varimax ( coefficients ) $ loadings
fct.ss <- apply( rotated, 2 , function (x) sum (x^2) )
pct.ss <- fct.ss / sum (eig)
cum.ss <- cumsum ( pct.ss )
ss <- t ( cbind ( fct.ss , pct.ss, cum.ss ) )
return ( coefficients , rotated , ss )
}