Análisis de componentes principales

Cómo hacer un análisis de componentes principales en R
Estadística
PCA
Autor/a
Afiliación
Fecha de publicación

30 de noviembre de 2023

Fecha de modificación

30 de noviembre de 2023


Campo Experimental

Video de StatQuest with Josh Stamer

Código de R

Código
data.matrix <- matrix(nrow=10, ncol=8)
colnames(data.matrix) <- c(
  paste("TS", 1:4, sep=""),
  paste("TR", 1:4, sep="")
)
rownames(data.matrix) <- paste("planta", 1:10, sep="")

for (i in 1:10) {
  wt.values <- rpois(4, lambda = sample(x=0:150, size=1))
  ko.values <- rpois(4, lambda = sample(x=0:150, size=1))
  
  data.matrix[i,] <- c(wt.values, ko.values)
                    
}

head(data.matrix)
        TS1 TS2 TS3 TS4 TR1 TR2 TR3 TR4
planta1  86  79  79  76 143 102 127 144
planta2   8   7  15   8 126 120 116 135
planta3 142 134 139 132  85  81  71  71
planta4 103 102  74  79  95  99 108 107
planta5  11  11   8  11 110 117 112 107
planta6  70  51  60  48  52  68  71  68
Código
pca <- prcomp(t(data.matrix), scale = TRUE)

plot(pca$x[,1], pca$x[,2])

Código
pca.var <- pca$sdev^2
pca.var.per <- round(pca.var/sum(pca.var)*100,1)

barplot(pca.var.per, main ="Scree plot", xlab="Principal component", ylab = "Percent of Variation")

pca.data <- data.frame(Sample=rownames(pca$x),
                       X=pca$x[,1],
                       Y=pca$x[,2])

library(ggplot2)

Código
gg.PCA <- ggplot(data=pca.data, aes(x=X, y=Y, label=Sample)) +
  geom_text() +
  xlab(paste("PC1 - ", pca.var.per[1], "%", sep=""))+
  ylab(paste("PC2 - ", pca.var.per[2], "%", sep=""))+
  theme_bw()+
  ggtitle("My PCA Graph")

loading_scores <- pca$rotation[,1]
planta_scores <- abs(loading_scores)
planta_scores_ranked <- sort(planta_scores, decreasing = TRUE)

top_10_plantas <- names(planta_scores_ranked[1:10])

pca$rotation[top_10_plantas, 1]
   planta5    planta2    planta3    planta1    planta8   planta10    planta9 
-0.3724079 -0.3701929  0.3665763 -0.3434550  0.3381103  0.3322800 -0.2928192 
   planta7    planta4    planta6 
-0.2749108 -0.2300509 -0.1815461 
Código
### pruebas con 3d

gg.PCA

Código
library(rayshader)

plot_gg(gg.PCA, multicore = TRUE, width = 5, height = 5,
        scale = 200, windowsize=c(1280,720),
        zoom = 0.60, phi = 50, sunangle = 120, theta = 45)
render_snapshot()

Cómo citar

BibTeX
@online{garcía-mendívil2023,
  author = {García-Mendívil, Helio},
  title = {Análisis de componentes principales},
  date = {2023-11-30},
  url = {https://sonoraweedscience.org/recursos/2023-11-30-pca/},
  langid = {es-ES}
}
Por favor, cita este trabajo como:
García-Mendívil, Helio. 2023. “Análisis de componentes principales.” November 30, 2023. https://sonoraweedscience.org/recursos/2023-11-30-pca/.


Agricultura INIFAP