Análisis de Componentes Principales en R: Guía Paso a Paso con Ejemplos

Matemáticas2,73 KB

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)

Descargar

PDF Word HTML