Ejemplo 1 | Ejemplo 2

Ejemplo 1

# Análisis en componentes principales
 
data(iris)
 
iris.pca <- prcomp(iris[-5])  # ACP
 
# Preparación de colores par gráficos
colores <- as.character(iris$Specie)
colores[colores=="setosa"] <- "red"
colores[colores=="virginica"] <- "black"
colores[colores=="versicolor"] <- "blue"
 
pairs(iris.pca$x,col=colores) # Dibujo de los pares de componentes
 
# Valores propios con la varianza explicada por las componentes
cat("\nValores propios\n")
print(iris.pca$sdev)
cat("\nValores propios en % \n")
print(round(100*(iris.pca$sdev)/sum(iris.pca$sdev),1))
cat("\nValores propios acumulados en % \n")
print(cumsum(round(100*(iris.pca$sdev)/sum(iris.pca$sdev),1)))
 
# Correlaciones de las variables con cada componente
# Las componentes se pueden interpretar según el peso de las variables
iris.pca$rotation
 
# Grafico PC1-2 variables
plot(iris.pca$rotation,pch='')
abline(h = 0, v = 0, col = "gray60")
text(iris.pca$rotation,labels=rownames(iris.pca$rotation))
 
# Grafico PC1-3 variables
plot(iris.pca$rotation[,1],iris.pca$rotation[,3],pch='.')
abline(h = 0, v = 0, col = "gray60")
text(iris.pca$rotation[,1],iris.pca$rotation[,3],labels=rownames(iris.pca$rotation))
 
Probar este programa
> # Análisis en componentes principales
>
> data(iris)
>
> iris.pca <- prcomp(iris[-5])  # ACP
>
> # Preparación de colores par gráficos
> colores <- as.character(iris$Specie)
> colores[colores=="setosa"] <- "red"
> colores[colores=="virginica"] <- "black"
> colores[colores=="versicolor"] <- "blue"
>
> pairs(iris.pca$x,col=colores) # Dibujo de los pares de componentes
>
> # Valores propios con la varianza explicada por las componentes
> cat("\nValores propios\n")
 
Valores propios
> print(iris.pca$sdev)
[1] 2.0562689 0.4926162 0.2796596 0.1543862
> cat("\nValores propios en % \n")
 
Valores propios en %
> print(round(100*(iris.pca$sdev)/sum(iris.pca$sdev),1))
[1] 68.9 16.5  9.4  5.2
> cat("\nValores propios acumulados en % \n")
 
Valores propios acumulados en %
> print(cumsum(round(100*(iris.pca$sdev)/sum(iris.pca$sdev),1)))
[1]  68.9  85.4  94.8 100.0
>
> # Correlación de las variables con cada componente
> # Las componentes se pueden interpretar según el peso de las variables
> iris.pca$rotation
                     PC1         PC2         PC3        PC4
Sepal.Length  0.36138659 -0.65658877  0.58202985  0.3154872
Sepal.Width  -0.08452251 -0.73016143 -0.59791083 -0.3197231
Petal.Length  0.85667061  0.17337266 -0.07623608 -0.4798390
Petal.Width   0.35828920  0.07548102 -0.54583143  0.7536574
>
> # Grafico PC1-2 variables
> plot(iris.pca$rotation,pch='')
> abline(h = 0, v = 0, col = "gray60")
> text(iris.pca$rotation,labels=rownames(iris.pca$rotation))
>
> # Grafico PC1-3 variables
> plot(iris.pca$rotation[,1],iris.pca$rotation[,3],pch='.')
> abline(h = 0, v = 0, col = "gray60")
> text(iris.pca$rotation[,1],iris.pca$rotation[,3],labels=rownames(iris.pca$rotation))





ACP1.png
ACP2.png
ACP3.png


Ejemplo 2

# Análisis de componentes principales
# Datos de presencia/ausencia de características genéticas mendelianas
 
x <- read.table("http://pastebin.com/raw.php?i=xeV7h24k",header=T,sep=",", row.names=1)
 
 
x.pca <- prcomp(x)
 
plot(x.pca$x,pch="")
text(x.pca$x,labels=rownames(x))
abline(h = 0, v = 0, col = "gray60")
 
cat("\nValores propios\n")
print(x.pca$sdev)
cat("\nValores propios en % \n")
print(round(100*(x.pca$sdev)/sum(x.pca$sdev),1))
cat("\nValores propios acumulados en % \n")
print(cumsum(round(100*(x.pca$sdev)/sum(x.pca$sdev),1)))
 
# Aportación de cada variable a 5 primeras las componentes
x.pca$rotation[,1:5]
Probar este programa
> # Análisis de componentes principales
> # Datos de presencia/ausencia de características genéticas mendelianas
>
> x <- read.table("http://pastebin.com/raw.php?i=xeV7h24k",header=T,sep=",", row.names=1)
>
>
> x.pca <- prcomp(x)
>
> plot(x.pca$x,pch="")
> text(x.pca$x,labels=rownames(x))
> abline(h = 0, v = 0, col = "gray60")
>
> cat("\nValores propios\n")
 
Valores propios
> print(x.pca$sdev)
 [1] 7.923089e-01 7.662847e-01 6.504913e-01 5.891933e-01 5.154883e-01 3.943740e-01 2.887579e-01
 [8] 2.748080e-01 1.767189e-01 8.847078e-02 4.013925e-02 3.330074e-17
> cat("\nValores propios en % \n")
 
Valores propios en %
> print(round(100*(x.pca$sdev)/sum(x.pca$sdev),1))
 [1] 17.3 16.7 14.2 12.9 11.3  8.6  6.3  6.0  3.9  1.9  0.9  0.0
> cat("\nValores propios acumulados en % \n")
 
Valores propios acumulados en %
> print(cumsum(round(100*(x.pca$sdev)/sum(x.pca$sdev),1)))
 [1]  17.3  34.0  48.2  61.1  72.4  81.0  87.3  93.3  97.2  99.1 100.0 100.0
>
> # Aportación de cada variable a 5 primeras las componentes
> x.pca$rotation[,1:5]
          PC1         PC2          PC3         PC4          PC5
A -0.25869186 -0.39603846 -0.376634526  0.17951294  0.329789782
B -0.17569212  0.05923729  0.172243380  0.35801772 -0.383292805
C -0.32811372 -0.16190465 -0.050648696 -0.32735156  0.232846962
D  0.13270178  0.41879155 -0.278706686  0.43596414  0.301753022
E  0.48718251 -0.15960156  0.240787051  0.16487422  0.031481914
F -0.34944930  0.07128590  0.546906735 -0.21001982  0.263917930
G -0.36246365  0.26677998  0.087854093 -0.09400621  0.002055299
H  0.42160633 -0.22573780  0.085149014 -0.30537690  0.456144569
I -0.30806545 -0.14379142  0.053361550  0.34018687  0.230896493
J -0.06545005 -0.46220971 -0.008689361  0.17037712 -0.129113973
K -0.06545005 -0.46220971 -0.008689361  0.17037712 -0.129113973
L  0.06909402 -0.13959705  0.581252692  0.23109115 -0.017517373
M -0.01016352  0.13387536  0.187959333  0.37656824  0.483090022

ACP4.png