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
Donde MOD: Modelo, DF: DataFrame, VEC: Variables empleadas para formar clusters, N°C: Numero optimo de clusters, CC: Porcentaje de correctas clasificaciones, C1/C2/C3: Clusters

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).