Análisis de Componentes Principales en R: Guía Paso a Paso con Ejemplos
Lectura de los datos
d <- read.table("C:\\File\\...\\Data.txt", header=TRUE)
Datos centrados y reducidos
ds <- scale(d, center=TRUE, scale=TRUE)
Rango de la matriz
library(matrixcalc)
matrix.rank(var(ds))
Dimensión de la matriz
dim(d)
Matriz de varianzas y covarianzas
s <- var(ds)
Traza
traza_s <- sum(diag(s))
Cálculo de valores y vectores propios
ds.ei <- eigen(s)
Valores y vectores propios redondeados a 4 decimales
ds.val <- round(ds.ei$values, 4)
ds.vec <- round(ds.ei$vectors, 4)
Proporción de la varianza explicada y varianza acumulada
pro.var <- round((ds.val/traza_s)*100, 4)
pro.var.cum <- round(cumsum(pro.var), 4)
Componentes principales o proyección de los individuos en los vectores propios
pci <- ds %*% ds.vec
Correlación entre las componentes y las variables
CorVarPC <- diag(sqrt(ds.val)) %*% t(ds.ei$vectors)
Conjunto de datos mtcars
data(mtcars) mtcars ana <- mtcars ana
Visualizar los datos
carolina <- cbind(ana[, 1], ana[, 3:7]) carolina
Visualizar la nueva matriz de datos
nombre.de.las.filas <- rownames(carolina) nombre.de.las.filas nombre.columnas <- colnames(carolina) nombre.columnas
Estadísticos descriptivos
summary(carolina)
Prueba de independencia (chi cuadrado)
res.test.chi2 <- chisq.test(K)
res.test.chi2
Matriz de frecuencias absolutas esperadas
round(res.test.chi2$expected, 1)
Matriz de residuos
round(res.test.chi2$residuals, 2)
Matriz de residuos en porcentaje
round(100 * res.test.chi2$residuals^2 / res.test.chi2$stat, 2)
Totales por fila, por columna y total general
tot.fil <- rowSums(K)
tot.fil
tot.col <- colSums(K)
tot.col
total <- sum(K)
total
Matriz de frecuencias relativas
F <- as.matrix(round(K/total, 4))
F
Perfil marginal fila y perfil marginal columna
mar.fil <- round(tot.fil/total, 4)
mar.fil
sum(mar.col)
Perfil fila y perfil columna
PF <- round(solve(diag(mar.fil)) %*% F, 4)
PF
Valores y vectores propios (análisis de correspondencias)
DF <- round(diag(sqrt(mar.fil)), 4)
DF
Varianza acumulada
int <- sum(a[2:length(a)])
pro.var <- round((a[2:length(a)]/int)*100, 4)
pro.var
pro.var.cum <- round(cumsum(pro.var), 4)
pro.var.cum
Regla del codo
plot(a[2:length(a)], type="b", main="", xlab="Número de componentes", ylab="Varianza", pch=20, col="blue", lwd=5)