Variables del espacio CieLab en granos de acuerdo al tipo de tueste.
library(readxl)
dfcie <- read_excel("C:/Users/sararita/Documents/Sara/Universidad Nacional/Semestre 12/Metodos Multivariados/Excel/Cielab_tueste_cafe.xlsx")
View(dfcie)
library(rgl)
## Warning: package 'rgl' was built under R version 4.0.5
plot3d(dfcie$L,
dfcie$a,
dfcie$b,
type='s',
col=rep(1:4,each=30)) # Asignanado numeros a cada numeros a cada tipo de tueste del café
legend3d('topright',legend=unique(dfcie$tueste),col=1:4,pch=16,cex=1)
# Creando los componentes principales
dfcie_pca<-prcomp(dfcie[,c(1:3)],center=TRUE,scale.=TRUE);dfcie_pca
## Standard deviations (1, .., p=3):
## [1] 1.6040326 0.6290170 0.1772488
##
## Rotation (n x k) = (3 x 3):
## PC1 PC2 PC3
## L 0.5308812 -0.8322630 0.1596982
## a 0.5879159 0.4974223 0.6379075
## b 0.6103443 0.2447640 -0.7533727
# Resumen de la tecnica
summary(dfcie_pca)
## Importance of components:
## PC1 PC2 PC3
## Standard deviation 1.6040 0.6290 0.17725
## Proportion of Variance 0.8576 0.1319 0.01047
## Cumulative Proportion 0.8576 0.9895 1.00000
# Estructura del pca (outputs de la función)
str(dfcie_pca)
## List of 5
## $ sdev : num [1:3] 1.604 0.629 0.177
## $ rotation: num [1:3, 1:3] 0.531 0.588 0.61 -0.832 0.497 ...
## ..- attr(*, "dimnames")=List of 2
## .. ..$ : chr [1:3] "L" "a" "b"
## .. ..$ : chr [1:3] "PC1" "PC2" "PC3"
## $ center : Named num [1:3] 19.4 20.3 21.2
## ..- attr(*, "names")= chr [1:3] "L" "a" "b"
## $ scale : Named num [1:3] 5.92 4 4.99
## ..- attr(*, "names")= chr [1:3] "L" "a" "b"
## $ x : num [1:120, 1:3] 0.207 -0.591 0.238 -0.507 -0.723 ...
## ..- attr(*, "dimnames")=List of 2
## .. ..$ : NULL
## .. ..$ : chr [1:3] "PC1" "PC2" "PC3"
## - attr(*, "class")= chr "prcomp"
## SALIDA 1
# Desviaciones (o valores propios)
dfcie_pca$sdev
## [1] 1.6040326 0.6290170 0.1772488
# Volviendolos varianzas explicadas (se vuelven los valores propios)
var_pca<-dfcie_pca$sdev**2
100*var_pca/sum(var_pca) # Varianza explicada
## [1] 85.764015 13.188748 1.047237
cumsum(100*var_pca/sum(var_pca))
## [1] 85.76401 98.95276 100.00000
## SALIDA 2
# Matriz de rotación (coeficientes de las variables estandarizadas)
dfcie_pca$rotation
## PC1 PC2 PC3
## L 0.5308812 -0.8322630 0.1596982
## a 0.5879159 0.4974223 0.6379075
## b 0.6103443 0.2447640 -0.7533727
## SALIDA 3
# Centroide de las variables (Media de las variables)
dfcie_pca$center
## L a b
## 19.42803 20.30929 21.20293
## SALIDA 4
# (Desviación estandar)
dfcie_pca$scale
## L a b
## 5.918993 3.999667 4.990121
## SALIDA 5
# Extrayendo las nuevas variables
# Variables rotadas
# Variables latentes
dfcie_pca$x
## PC1 PC2 PC3
## [1,] 0.206893248 1.05102435 0.3064670966
## [2,] -0.590861124 1.04740456 -0.0888176848
## [3,] 0.238499895 1.33230150 -0.0868486014
## [4,] -0.506692855 0.87679630 0.0846579898
## [5,] -0.722904735 0.73305042 -0.2126348342
## [6,] -0.444507088 1.17513476 0.1177577378
## [7,] 0.694787333 1.07664457 0.1081318307
## [8,] 0.032737102 1.02304858 -0.3635277688
## [9,] -0.950203081 0.95300775 0.0165519290
## [10,] 0.107317500 1.06920300 0.1522250226
## [11,] 0.243216373 1.41230122 0.0237986794
## [12,] 0.225502989 1.07827452 -0.0110330420
## [13,] 0.226517324 1.08185393 -0.0801843809
## [14,] -0.307798730 0.77259017 -0.1747401170
## [15,] -0.007479291 0.93992342 0.1338517135
## [16,] 0.181065240 1.28042306 0.0265559587
## [17,] -0.228045846 1.19493860 0.0771462223
## [18,] -0.549468311 1.00067097 -0.0163171224
## [19,] -0.217323968 0.99731226 -0.0225732316
## [20,] 0.063218952 1.04368144 -0.2935451422
## [21,] -0.138936587 0.86243168 -0.1944811407
## [22,] -0.269601940 0.66870333 -0.3164318104
## [23,] 0.282627339 1.29217395 0.0476634534
## [24,] -1.176897591 0.74525609 0.0946096737
## [25,] 0.199885846 1.14110439 -0.1368087759
## [26,] -0.766233065 0.84625747 0.1964779040
## [27,] 0.321325129 0.94004608 0.0594877607
## [28,] -1.197792987 1.04047856 -0.2055121358
## [29,] -1.604452073 0.84672966 -0.1551594764
## [30,] -0.132677351 1.28513264 0.1201516961
## [31,] 2.060082028 -0.46426176 -0.2848854526
## [32,] 2.095581688 0.39986569 0.1020894330
## [33,] 2.328718850 -0.28873742 -0.2261407159
## [34,] 3.505283709 -0.03458247 0.1134877143
## [35,] 1.978304181 -0.18459921 -0.0810172455
## [36,] 3.062140686 -0.27770896 0.1147151056
## [37,] 2.890546755 0.01085783 0.1941001070
## [38,] 2.998745360 -0.29181670 -0.1478785268
## [39,] 2.863444519 -0.47714088 -0.0160753580
## [40,] 3.091832213 -0.24319942 -0.0160859624
## [41,] 1.922095081 -0.28128690 -0.1768682332
## [42,] 3.467599287 -0.34769984 -0.0370938058
## [43,] 2.726537006 -0.30507606 -0.0001597873
## [44,] 2.567098599 -0.36430710 -0.0723928756
## [45,] 1.729267757 -0.73536365 -0.1226098601
## [46,] 2.466110694 -0.33707446 -0.0697911338
## [47,] 2.418482531 -0.31391242 -0.1106980721
## [48,] 2.584267635 -0.13580965 0.0554978731
## [49,] 1.913202112 -0.72144001 -0.1912910815
## [50,] 2.796011344 -0.20383181 0.0478757187
## [51,] 2.609833888 -0.28336631 0.1803168271
## [52,] 2.479454064 -0.25977921 0.0915233891
## [53,] 2.401252093 -0.15949413 0.0749181552
## [54,] 1.879145237 -0.32687532 -0.0559850659
## [55,] 2.266866046 -0.73950957 -0.1504275885
## [56,] 2.482770491 -0.27551589 -0.0335644596
## [57,] 2.206237812 -0.34029617 -0.0432737235
## [58,] 2.354294212 -0.55033759 0.1525899320
## [59,] 2.330746015 -0.48865868 -0.0083753901
## [60,] 3.209266778 -0.17411400 0.0040022857
## [61,] -2.246512060 -0.36596246 0.1073765812
## [62,] -1.427452218 -0.31788246 -0.3073366181
## [63,] -1.156908729 -0.22914336 -0.1417676388
## [64,] -1.565375253 -0.57252373 -0.3965792757
## [65,] -1.714755915 -0.27651408 0.1352569330
## [66,] -1.751109759 -0.39003481 0.2291516197
## [67,] -1.438980253 -0.30442735 0.1409343310
## [68,] -0.974896337 -0.34355907 -0.1267975287
## [69,] -1.536129349 -0.51430863 -0.1603631758
## [70,] 0.131892902 -0.08976538 0.2761052956
## [71,] -2.007755024 -0.75462734 -0.1475826874
## [72,] -1.559557828 -0.56361273 0.1567423569
## [73,] -2.100821125 -0.39038960 0.0592828494
## [74,] -1.228550538 -0.37128479 -0.0139541076
## [75,] -0.389545091 -0.07526918 0.2573024428
## [76,] -1.058078970 0.14225021 -0.1314121155
## [77,] -0.833228155 -0.12619543 -0.0629914353
## [78,] -1.530367244 -0.54840764 -0.2089871945
## [79,] -2.169278468 -0.58458167 -0.4447820816
## [80,] -1.284529029 -0.33513560 0.0261267232
## [81,] -1.743350265 -0.42767626 -0.0331345699
## [82,] -1.950155034 -0.14122901 0.0886174007
## [83,] -1.517454530 -0.46612564 0.2624963794
## [84,] -1.035667236 -0.25117517 -0.0521121136
## [85,] -0.758849524 -0.44316137 0.3999624545
## [86,] -1.288783677 -0.34138472 0.0963575155
## [87,] -2.099841473 -0.48540436 -0.2253951894
## [88,] -1.688666900 -0.42805907 0.3353114213
## [89,] -0.853566093 -0.51944603 -0.1033341393
## [90,] -1.993853798 -0.53273470 -0.2246309580
## [91,] -0.217582791 -0.02758594 0.0681913220
## [92,] -1.069245062 -0.28609921 0.0566425373
## [93,] -1.635438255 -0.26725970 0.0759500639
## [94,] -1.462583341 -0.32544704 -0.0688806202
## [95,] -0.214420551 0.03393040 0.1751824887
## [96,] -1.464158042 -0.43552867 0.2141733855
## [97,] -0.910947150 -0.60584453 -0.1870272320
## [98,] -0.865228519 -0.47203496 0.2022111825
## [99,] -1.143771376 -0.59957281 0.0034702538
## [100,] -1.049677698 -0.52649227 0.0819803743
## [101,] -0.483543052 0.10691434 0.2542069890
## [102,] -0.927567585 -0.30268520 0.2417502623
## [103,] -0.582017689 -0.41647788 0.2371606136
## [104,] -0.691517312 -0.22219929 0.5540157227
## [105,] -0.360856750 -0.25923983 0.2878953561
## [106,] -0.803650201 -0.55016636 0.0666700583
## [107,] -0.403140037 -0.39769678 -0.1645982893
## [108,] -0.755352511 -0.08741803 -0.2146778001
## [109,] -0.885677099 -0.35295430 -0.1724381394
## [110,] -0.755690490 -0.65228895 0.0348166168
## [111,] -1.456993636 -0.17651873 -0.1045730375
## [112,] -1.522358667 -0.72804487 0.3405393192
## [113,] 0.177629949 -0.50278350 0.0726370995
## [114,] -1.438157764 -0.40280667 -0.2332553629
## [115,] -0.818465188 -0.29620036 -0.2230947291
## [116,] -1.062259280 -0.25866126 -0.0946825536
## [117,] -0.618403597 -0.08058694 0.0906029252
## [118,] -1.234480741 -0.48696940 0.0460207019
## [119,] -0.009184642 -0.24798780 0.1961183545
## [120,] -1.460070269 -0.73834919 -0.1202929443
# Variables originales
cor(dfcie[,-4])
## L a b
## L 1.0000000 0.6424449 0.7492989
## a 0.6424449 1.0000000 0.9563176
## b 0.7492989 0.9563176 1.0000000
heatmap(cor(dfcie[,-4]))
#Variables rotadas (Los componentes principales)
heatmap(cor(dfcie_pca$x))
# Comparacion correlaciones variables rotadas y originales
dfcie_join<-cbind(dfcie[,-4],dfcie_pca$x)
corrplot::corrplot(cor(dfcie_join))
# Grafico 3d de las correlaciones
plot3d(dfcie_pca$x,
type='s',
col=rep(1:4,each=30))
legend3d('topright',legend=unique(dfcie$tueste),col=1:4,pch=16,cex=1)
# Grafico de la PC1 (Tengo casi el 85% de la varianza original)
plot(dfcie_pca$x[,1],pch=16,col=as.factor(dfcie$tueste))
# Grafico de PC1 y PC2 (Tengo casi el 99% de la varianza original)
plot(dfcie_pca$x[,c(1,2)],pch=16,col=as.factor(dfcie$tueste))
# Instalando paquetes fuera del CRAN
#install.packages("remotes")
#remotes::install_github("vqv/ggbiplot")
library(ggbiplot)
## Loading required package: ggplot2
## Loading required package: plyr
## Warning: package 'plyr' was built under R version 4.0.5
## Loading required package: scales
## Warning: package 'scales' was built under R version 4.0.5
## Loading required package: grid
ggbiplot(dfcie_pca)+geom_hline(yintercept=0)+geom_vline(xintercept=0)
# La variable mejor representada en el CP1 es "b"
Otras formas de realizar el gráfico Biplot
ggbiplot(dfcie_pca,ellipse=TRUE,labels=rownames(dfcie[,1:3]),
groups=dfcie$tueste)
# Con choices se seleccionan las componentes que se desean visualizar
ggbiplot(dfcie_pca,ellipse=TRUE,choices=c(1,2),
labels=rownames(dfcie[,1:3]), groups=dfcie$tueste)
# Añadiendo un circulo
ggbiplot(dfcie_pca,ellipse=TRUE,circle=TRUE,
labels=rownames(dfcie[,1:3]), groups=dfcie$tueste)
# Gráfico personalizado
ggbiplot(dfcie_pca,ellipse=TRUE,labels=rownames(dfcie[,1:3]), groups=dfcie$tueste) +
scale_colour_manual(name="Origin",values=c("forest green","red3","dark blue","orange"))+
ggtitle("PCA tueste de cafe")+ theme_minimal()+
theme(legend.position = "bottom")
# MANOVA Variables originales
Y <- as.matrix(dfcie[,-4])
mod1<-manova(Y~dfcie$tueste)
summary(mod1) # Hay diferencias en los grados de tostion
## Df Pillai approx F num Df den Df Pr(>F)
## dfcie$tueste 3 1.8362 61.004 9 348 < 2.2e-16 ***
## Residuals 116
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
# ANOVA con solo b (la mejor )
mod2<-aov(b~tueste,dfcie)
summary(mod2) # Hay diferencias en los grados de tostion
## Df Sum Sq Mean Sq F value Pr(>F)
## tueste 3 2663.1 887.7 343.1 <2e-16 ***
## Residuals 116 300.1 2.6
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Complementando con clusters
# Deberian ser 3 clusters ya que en el grafico 3d vi 3 grupos
# Metodo K medias para ver cuantos clusters
library(factoextra)
## Warning: package 'factoextra' was built under R version 4.0.5
## Welcome! Want to learn more? See two factoextra-related books at https://goo.gl/ve3WBa
M<-dfcie[,-4]
Ms<-scale(M)
fviz_nbclust(Ms,FUNcluster = kmeans,method = 'gap_stat',diss = get_dist(Ms,'euclidean')) # Numero optimo de clusters es 3
clus1<-kmeans(Ms,3)
table(dfcie$tueste,clus1$cluster)
##
## 1 2 3
## claro 0 0 30
## medio 2 28 0
## oscuro 5 25 0
## verde 29 1 0
100*112/120 # Correctas clasificaciones
## [1] 93.33333
# Repitiendo analisis de cluster pero solo dejando la variable "a" y "b"
M2<-dfcie[,c('a','b')]
Ms2<-scale(M2)
fviz_nbclust(Ms2,FUNcluster = kmeans,method = 'gap_stat',diss = get_dist(Ms2,'euclidean')) # Numero optimo de clusters es 3
clus2<-kmeans(Ms2,3)
table(dfcie$tueste,clus2$cluster)
##
## 1 2 3
## claro 1 0 29
## medio 2 28 0
## oscuro 6 24 0
## verde 28 2 0
100*109/120 # Correctas clasificaciones
## [1] 90.83333
# Repitiendo analisis de cluster pero solo dejando la variable "b"
M3<-dfcie[,c('b')]
Ms3<-scale(M3)
fviz_nbclust(Ms3,FUNcluster = kmeans,method = 'gap_stat',diss = get_dist(Ms3,'euclidean')) # Numero optimo de clusters es 3
clus3<-kmeans(Ms3,3)
table(dfcie$tueste,clus3$cluster)
##
## 1 2 3
## claro 0 0 30
## medio 1 29 0
## oscuro 6 24 0
## verde 27 3 0
100*110/120 # Correctas clasificaciones
## [1] 91.66667
# Repitiendo analisis de cluster pero con CP1
M4<-dfcie_pca$x[,1]
Ms4<-scale(M4)
fviz_nbclust(Ms4,FUNcluster = kmeans,method = 'gap_stat',diss = get_dist(Ms4,'euclidean')) # Numero optimo de clusters es 3
clus4<-kmeans(Ms4,3)
table(dfcie$tueste,clus4$cluster)
##
## 1 2 3
## claro 0 0 30
## medio 2 28 0
## oscuro 10 20 0
## verde 25 5 0
100*101/120 # Correctas clasificaciones
## [1] 84.16667
Ejercicio en clase Añadiendo dos nuevas variables de color, “c” y “h”
dfcie$C<-with(dfcie,sqrt(a**2+b**2))
dfcie$h<-with(dfcie,atan(b/a)*180/pi)
head(dfcie)
## # A tibble: 6 x 6
## L a b tueste C h
## <dbl> <dbl> <dbl> <chr> <dbl> <dbl>
## 1 15.2 23.7 22.0 verde 32.3 42.9
## 2 12.3 20.8 21.0 verde 29.6 45.3
## 3 13.5 23.3 23.9 verde 33.4 45.7
## 4 13.6 21.1 20.4 verde 29.3 44.1
## 5 13.3 19.5 20.7 verde 28.5 46.7
## 6 12.4 21.9 20.8 verde 30.2 43.6
# Ordenando tueste al inicio
library(dplyr)
##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:plyr':
##
## arrange, count, desc, failwith, id, mutate, rename, summarise,
## summarize
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
dfcie2<-dfcie %>% relocate(tueste,.before=L)
dfcie2
## # A tibble: 120 x 6
## tueste L a b C h
## <chr> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 verde 15.2 23.7 22.0 32.3 42.9
## 2 verde 12.3 20.8 21.0 29.6 45.3
## 3 verde 13.5 23.3 23.9 33.4 45.7
## 4 verde 13.6 21.1 20.4 29.3 44.1
## 5 verde 13.3 19.5 20.7 28.5 46.7
## 6 verde 12.4 21.9 20.8 30.2 43.6
## 7 verde 16.4 24.4 24.2 34.4 44.8
## 8 verde 14.1 21.5 23.9 32.2 48.1
## 9 verde 11.8 20.0 19.4 27.9 44.1
## 10 verde 14.6 23.1 22.3 32.1 44.0
## # ... with 110 more rows
# Creando los componentes principales
dfcie_pca2<-prcomp(dfcie2[,c(2:6)],center=TRUE,scale.=TRUE);dfcie_pca2
## Standard deviations (1, .., p=5):
## [1] 1.963123832 0.896070585 0.584854454 0.033794989 0.002343376
##
## Rotation (n x k) = (5 x 5):
## PC1 PC2 PC3 PC4 PC5
## L 0.4238963 -0.2445950 -0.8709525 -0.04389454 -0.0003608497
## a 0.4701343 0.4181110 0.1460228 -0.68428529 -0.3385083918
## b 0.5042066 0.1018846 0.1824241 0.68577797 -0.4814823787
## C 0.4947461 0.2424953 0.1661286 0.12361619 0.8084198326
## h 0.3166822 -0.8343693 0.3990511 -0.21036762 0.0066356413
# Grafico Biplot para encontrar la mejor variable (columna)
library(ggbiplot)
ggbiplot(dfcie_pca2)+geom_hline(yintercept=0)+geom_vline(xintercept=0)
# En el componente principal 1 las mejores variables son b y c
Generando clusters con las variables faltantes
# Cluster solo con la coordenada L
M5<-dfcie[,c('L')]
Ms5<-scale(M5)
fviz_nbclust(Ms5,FUNcluster = kmeans,method = 'gap_stat',diss = get_dist(Ms5,'euclidean')) # Numero optimo de clusters es 3
clus5<-kmeans(Ms5,3)
table(dfcie$tueste,clus5$cluster)
##
## 1 2 3
## claro 0 0 30
## medio 20 10 0
## oscuro 28 2 0
## verde 1 29 0
100*107/120 # Correctas clasificaciones
## [1] 89.16667
# Cluster solo con la coordenada C
M6<-dfcie[,c('C')]
Ms6<-scale(M6)
fviz_nbclust(Ms6,FUNcluster = kmeans,method = 'gap_stat',diss = get_dist(Ms6,'euclidean')) # Numero optimo de clusters es 2
clus6<-kmeans(Ms6,2)
table(dfcie$tueste,clus6$cluster)
##
## 1 2
## claro 30 0
## medio 0 30
## oscuro 0 30
## verde 18 12
100*108/120 # Correctas clasificaciones
## [1] 90
# Cluster solo con la coordenada h
M7<-dfcie[,c('h')]
Ms7<-scale(M7)
fviz_nbclust(Ms7,FUNcluster = kmeans,method = 'gap_stat',diss = get_dist(Ms7,'euclidean')) # Numero optimo de clusters es 1 (No hay clusters ?)
clus7<-kmeans(Ms7,1)
table(dfcie$tueste,clus7$cluster)
##
## 1
## claro 30
## medio 30
## oscuro 30
## verde 30
100*120/120 # Correctas clasificaciones (Sesgadas debido a que solo existe un cluster)
## [1] 100
De acuerdo al biplot para el dataframe con las variables L,a,b,c y h se puede generar un sub dataframe con las variables mas representativas para el CP1 (b y c) para mirar la agrupación por clusters con el metodo de K medias
# Al mirar los coeficientes de las variables estandarizadas b' y c' es posible observar que son las variables con mayores valores dentro de la CP1 b: 0.504 // c: 0.49 (CP que explica mas del 75% de la varianza total de los datos)
dfcie_pca2$rotation
## PC1 PC2 PC3 PC4 PC5
## L 0.4238963 -0.2445950 -0.8709525 -0.04389454 -0.0003608497
## a 0.4701343 0.4181110 0.1460228 -0.68428529 -0.3385083918
## b 0.5042066 0.1018846 0.1824241 0.68577797 -0.4814823787
## C 0.4947461 0.2424953 0.1661286 0.12361619 0.8084198326
## h 0.3166822 -0.8343693 0.3990511 -0.21036762 0.0066356413
# Cluster con las variables "b" y "c"
M8<-dfcie[,c('b','C')]
Ms8<-scale(M8)
fviz_nbclust(Ms8,FUNcluster = kmeans,method = 'gap_stat',diss = get_dist(Ms8,'euclidean')) # Numero optimo de clusters es 3
clus8<-kmeans(Ms8,3)
table(dfcie$tueste,clus8$cluster)
##
## 1 2 3
## claro 0 0 30
## medio 1 29 0
## oscuro 5 25 0
## verde 28 2 0
100*112/120 # Correctas clasificaciones
## [1] 93.33333
Conclusiones MANOVA y ANOVA
# MANOVA para las variables originales, eliminando "L","a" y "h"
Y2 <- as.matrix(dfcie2[,-c(1:3,6)])
mod3<-manova(Y2~dfcie$tueste)
summary(mod3) # Hay diferencias entre los grados de tostion
## Df Pillai approx F num Df den Df Pr(>F)
## dfcie$tueste 3 1.1225 49.46 6 232 < 2.2e-16 ***
## Residuals 116
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Grafico de clusters
# Gráfico de clusters Modelo M3 (Clusters por variable b)
fviz_cluster(clus3,data=dfcie2[-1])
# Gráfico de clusters Modelo M8 (Clusters por variables b y c)
fviz_cluster(clus8,data=dfcie2[-1])
Resumen clasificaciones por clusters para los diferentes tipos de tueste del grano
| MOD | DF | VEC | N°C | CC(%) | Verde | Claro | Medio | Oscuro |
|---|---|---|---|---|---|---|---|---|
| M1 | Lab | Lab | 3 | 93.3 | C3 | C1 | C2 | C2 |
| M2 | Lab | ab | 3 | 90.8 | C3 | C2 | C1 | C1 |
| M3 | Lab | b | 3 | 91.6 | C1 | C3 | C2 | C2 |
| M4 | Lab | CP1 | 3 | 84.1 | C2 | C3 | C1 | C1 |
| M5 | LabCh | L | 3 | 89.1 | C2 | C1 | C3 | C3 |
| M6 | LabCh | C | 2 | 90 | C1 | C1 | C2 | C2 |
| M7 | LabCh | h | 1 | * | C1 | C1 | C1 | C1 |
| M8 | LabCh | bC | 3 | 93.3 | C3 | C1 | C2 | C2 |
Los mejores porcentajes de correctas clasificaciones se obtuvieron con las variables “b” y “b+c”, guardando relación con los resultados de los graficos biplot para los dataframes “Lab” y “LabCh” respectivamente. Indicando que las anteriores variables podrían ser las mas relevantes para la distinción por tueste del grano en el espacio de color CIELab (reducción de dimensionalidad a nivel de columnas). Por otra parte, debido a que en todos los casos las categorias “medio” y “oscuro” tendian a agruparse en un mismo cluster, a futuro podría trabajarse con una sola de estas, ya que no se diferencian entre sí (reducción de dimensionalidad a nivel de filas).