Clustering

Cargando datos y haciendo data frame

dato <- read_excel("C:/Users/admin/Downloads/Cielab_tueste_cafe.xlsx")
datox <- data.frame(dato)
datoslab <- select(datox, -tueste)
#View(Cielab_tueste_cafe)

Agregando Chroma y Hue

Chroma <- sqrt(datox$a^2 + datox$b^2)
Hue <- atan(datox$b/datox$a)
datos <- cbind(datox, Chroma, Hue)
datos <- select(datos, -a,-b)
fig<- plot_ly(data = datos, 
               x = ~l, 
               y = ~Chroma, 
               z = ~Hue, 
               size = 0.7, 
               color = ~tueste)
fig
## No trace type specified:
##   Based on info supplied, a 'scatter3d' trace seems appropriate.
##   Read more about this trace type -> https://plotly.com/r/reference/#scatter3d
## No scatter3d mode specifed:
##   Setting the mode to markers
##   Read more about this attribute -> https://plotly.com/r/reference/#scatter-mode

Clustering

## Número óptimo de clusters
M = datos[ ,-2]
Ms = scale(M)
fviz_nbclust(Ms,
             FUNcluster = kmeans,
             method = 'gap_stat',
             diss = get_dist(Ms,
                             'euclidean'))

## Caracterizando datos

clus = kmeans(Ms, 3)
datos$cluster <- clus$cluster
datosf <- datos[-2]
datosf |>
  group_by(cluster) |>
  summarise(media_Chroma = mean(Chroma),
            media_Hue = mean(Hue),
            media_l = mean(l),
            desv_Chroma = sd(Chroma),
            desv_Hue = sd(Hue),
            desv_l = sd(l),
            coeV_Chroma = 100 * desv_Chroma/media_Chroma,
            coeV_Hue = 100 *desv_Hue/media_Hue,
            coeV_l = 100 *desv_l/media_l)
## # A tibble: 3 x 10
##   cluster media_Chroma media_Hue media_l desv_Chroma desv_Hue desv_l coeV_Chroma
##     <int>        <dbl>     <dbl>   <dbl>       <dbl>    <dbl>  <dbl>       <dbl>
## 1       1         38.4     0.842    28.8        1.94   0.0153   1.55        5.05
## 2       2         25.3     0.823    16.9        3.43   0.0192   2.02       13.6 
## 3       3         27.2     0.768    15.9        4.12   0.0208   2.71       15.2 
## # ... with 2 more variables: coeV_Hue <dbl>, coeV_l <dbl>

Gráficando clusters

# Dimension reduction using PCA
res.pca <- prcomp(datos[, -2],  scale = TRUE)
# Coordinates of individuals
ind.coord <- as.data.frame(get_pca_ind(res.pca)$coord)
# Add clusters obtained using the K-means algorithm
ind.coord$cluster <- factor(clus$cluster)
# Add Species groups from the original data sett
ind.coord$tueste <- datos$tueste
# Data inspection
#head(ind.coord)
eigenvalue <- round(get_eigenvalue(res.pca), 1)
variance.percent <- eigenvalue$variance.percent
#head(eigenvalue)


ggscatter(
  ind.coord, x = "Dim.1", y = "Dim.2", title = "Clusters",
  color = "cluster", palette = "npg", ellipse = TRUE, ellipse.type = "convex",
  shape = "tueste", size = 1.5,  legend = "right", ggtheme = theme_bw(),
  xlab = paste0("Dim 1 (", variance.percent[1], "% )" ),
  ylab = paste0("Dim 2 (", variance.percent[2], "% )" )
) +
  stat_mean(aes(color = cluster), size = 4)

\[-El\ grupo\ 2\ representa\ el\ tostion\ claro\ de\ acuerdo\ a\ Luz,\ hue\ y\ Chroma \\ - Los\ tostiones\ medio,\ oscuro\ y\ verde\ se\ encuentran\ en\ el\ grupo\ 2\ y\ 3 \\ - El\ tostión\ verde\ está\ en\ mayor\ proporción\ en\ el\ grupo\ 1 \\ \small Conclusión:\ Hay\ influencia\ del\ hue\ y\ el\ chroma\ en\ la\ conformación\ de\ clusters\ ya\ que\ a\ comparación\ con\ los\ grupos\ lab,\\ \small el\ tueste\ verde\ pasó\ a\ estar\ agrupado\ con\ los\ tuestes\ medio\ y\ oscuro\]

## Método de Ward
# Ward Hierarchical Clustering
df_scale <- scale(datosf)
d <- dist(df_scale, method = "euclidean") # distance matrix
fit <- hclust(d, method="ward.D2")
plot(fit) # display dendogram
groups <- cutree(fit, k=3) # cut tree into 5 clusters
# draw dendogram with red borders around the 5 clusters
rect.hclust(fit, k=3, border="red")

tapply(datosf$Chroma, groups, mean)
##        1        2        3 
## 27.16622 25.26230 38.37024
tapply(datosf$Hue, groups, mean)
##         1         2         3 
## 0.7679318 0.8227090 0.8415492
tapply(datosf$l, groups, mean)
##        1        2        3 
## 15.85863 16.90728 28.84291

\[ Las\ medias\ coinciden\ con\ las\ del\ método\ Kmeans \]

Conversión a rgb

matriz <- as.matrix(datoslab)
rgbd <- convert_colour(matriz, "lab", "rgb")
rgbd <- data.frame(rgbd)
tueste <- datox$tueste
rgbdata <- cbind(rgbd, tueste)
rgbdata
##             r        g           b tueste
## 1    72.67764 20.92596  2.73267573  verde
## 2    62.80198 17.51391  0.00000000  verde
## 3    68.68871 17.37661  0.00000000  verde
## 4    65.91809 20.08825  0.79302516  verde
## 5    63.83378 20.99274  0.00000000  verde
## 6    63.92127 16.40077  0.00000000  verde
## 7    76.81804 22.85914  1.39417457  verde
## 8    68.36776 20.70484  0.00000000  verde
## 9    60.39985 17.12378  0.00000000  verde
## 10   70.80204 20.28769  0.07709687  verde
## 11   68.41939 16.22298  0.00000000  verde
## 12   71.29125 20.75246  0.00000000  verde
## 13   70.98326 20.73070  0.00000000  verde
## 14   67.93681 22.37354  0.28745091  verde
## 15   70.76505 21.49941  1.96940393  verde
## 16   69.03642 17.78844  0.00000000  verde
## 17   65.80367 17.11087  0.00000000  verde
## 18   63.92970 18.29821  0.00000000  verde
## 19   67.37263 19.83552  0.00000000  verde
## 20   68.77106 20.55613  0.00000000  verde
## 21   68.77614 21.98758  0.00000000  verde
## 22   68.74562 23.88500  0.66161441  verde
## 23   70.06856 18.07190  0.00000000  verde
## 24   60.24529 18.76858  1.01975592  verde
## 25   69.90397 19.83317  0.00000000  verde
## 26   63.94644 19.29920  1.85133011  verde
## 27   73.95803 23.00820  2.15978757  verde
## 28   56.36678 14.91563  0.00000000  verde
## 29   54.18067 15.58712  0.00000000  verde
## 30   66.11327 16.28020  0.00000000  verde
## 31  106.87410 49.58532 23.16851804  claro
## 32   99.66334 38.44458 16.02761489  claro
## 33  108.39261 48.66785 21.92270089  claro
## 34  121.20785 51.23165 23.59925178  claro
## 35  103.85262 45.55531 21.39241939  claro
## 36  118.66186 52.25492 25.98962496  claro
## 37  113.77134 47.52208 22.82939697  claro
## 38  116.74964 52.11466 23.68627677  claro
## 39  117.86707 53.88962 27.00060190  claro
## 40  117.97379 51.94398 24.41957047  claro
## 41  103.78617 46.52540 21.64925140  claro
## 42  123.55288 55.26656 26.13137881  claro
## 43  114.39631 50.90986 24.77053469  claro
## 44  112.80462 50.87835 24.61266124  claro
## 45  106.72050 51.42888 27.39301640  claro
## 46  111.32003 50.00690 24.13744731  claro
## 47  110.29886 49.45873 23.40996336  claro
## 48  111.10117 47.94954 22.93801277  claro
## 49  108.40412 52.18133 26.93807366  claro
## 50  114.32981 49.91905 24.04580901  claro
## 51  113.66298 50.03531 25.91257888  claro
## 52  111.41798 49.06226 24.62848560  claro
## 53  109.30148 47.34455 23.11818144  claro
## 54  104.37160 46.91030 23.20142866  claro
## 55  112.99048 54.24933 28.10964800  claro
## 56  111.01404 49.28273 23.72082811  claro
## 57  108.41972 48.73494 24.00020677  claro
## 58  113.44339 52.26206 28.54764446  claro
## 59  111.69406 51.31429 26.34352683  claro
## 60  118.69793 51.61667 23.91064680  claro
## 61   59.19814 27.32729 17.59884964  medio
## 62   65.80884 30.53196 15.13057211  medio
## 63   68.59459 30.80435 16.05367995  medio
## 64   66.35272 32.86064 17.48510704  medio
## 65   64.18658 28.78635 17.87586420  medio
## 66   65.27337 29.98946 19.95420083  medio
## 67   67.47122 30.42804 18.85395779  medio
## 68   71.76801 33.06048 18.05216165  medio
## 69   67.13516 32.38932 18.78026538  medio
## 70   83.34513 35.30951 20.25202425  medio
## 71   64.33502 32.94329 20.79545176  medio
## 72   68.73709 32.95713 21.74966318  medio
## 73   60.78390 28.28824 17.84776104  medio
## 74   69.75101 32.20084 18.82777130  medio
## 75   77.26769 32.63654 19.03741349  medio
## 76   66.14862 26.77646 10.50587565  medio
## 77   71.45927 31.11504 16.08009105  medio
## 78   67.31535 32.80723 18.81152109  medio
## 79   59.75839 30.05384 15.87061671  medio
## 80   68.95957 31.50741 18.60522686  medio
## 81   64.59914 30.40266 18.33234091  medio
## 82   60.21391 26.06094 14.99721535  medio
## 83   68.71319 32.02094 21.51584748  medio
## 84   70.52051 31.66818 17.40027451  medio
## 85   77.51342 35.42468 23.71882259  medio
## 86   69.28028 31.57800 19.23674232  medio
## 87   60.49671 29.31402 16.64622363  medio
## 88   66.77907 30.76577 21.30820563  medio
## 89   74.96630 35.78173 20.51951416  medio
## 90   62.07350 30.37804 17.52859297  medio
## 91   77.83784 32.84928 17.20769899 oscuro
## 92   70.97274 31.95185 18.67594824 oscuro
## 93   64.70535 29.03691 17.42533255 oscuro
## 94   66.51603 30.51775 17.31870484 oscuro
## 95   77.72817 32.10519 17.35750013 oscuro
## 96   68.79068 31.89727 20.90211736 oscuro
## 97   74.81262 36.52343 20.76098892 oscuro
## 98   75.73127 35.22184 22.32960723 oscuro
## 99   73.01286 35.36284 21.75627793 oscuro
## 100  73.68432 34.95950 21.69207126 oscuro
## 101  74.36798 29.93017 16.55624451 oscuro
## 102  73.52240 32.86448 20.57650578 oscuro
## 103  78.49626 35.92212 22.47465071 oscuro
## 104  76.72987 33.04649 22.48265074 oscuro
## 105  79.60777 35.05733 21.44949264 oscuro
## 106  76.59288 36.44203 22.29225342 oscuro
## 107  78.48510 36.48283 19.39674118 oscuro
## 108  71.26705 30.98873 14.26218059 oscuro
## 109  72.64089 33.59417 17.95779029 oscuro
## 110  78.00722 37.91390 23.31575167 oscuro
## 111  65.00828 28.75483 14.93933244 oscuro
## 112  71.53906 35.16540 25.09611230 oscuro
## 113  87.20987 40.68375 23.53446426 oscuro
## 114  66.81742 31.51330 16.95757930 oscuro
## 115  72.59407 33.22025 16.93933807 oscuro
## 116  70.11708 31.62267 17.07399406 oscuro
## 117  74.04029 31.59935 17.28935300 oscuro
## 118  71.08770 33.57784 20.62737112 oscuro
## 119  83.02760 36.60495 21.21118220 oscuro
## 120  70.31887 35.43990 21.82361742 oscuro

graficando

figrgb <- plot_ly(data = rgbdata, 
               x = ~r, 
               y = ~g, 
               z = ~b, 
               size = 0.7, 
               color = ~tueste)
figrgb
## No trace type specified:
##   Based on info supplied, a 'scatter3d' trace seems appropriate.
##   Read more about this trace type -> https://plotly.com/r/reference/#scatter3d
## No scatter3d mode specifed:
##   Setting the mode to markers
##   Read more about this attribute -> https://plotly.com/r/reference/#scatter-mode

`` ## Clustering

## Número óptimo de clusters
M1 = rgbdata[ ,-4]
Ms1 = scale(M1)
fviz_nbclust(Ms1,
             FUNcluster = kmeans,
             method = 'gap_stat',
             diss = get_dist(Ms1,
                             'euclidean'))

## Caracterizando datos

clus1 = kmeans(Ms1, 3)
rgbdata$cluster <- clus1$cluster
rgbdataf <- rgbdata[-4]
rgbdataf |>
  group_by(cluster) |>
  summarise(media_r = mean(r),
            media_g = mean(g),
            media_b = mean(b),
            desv_r = sd(r),
            desv_g = sd(g),
            desv_b = sd(b),
            coeV_r = 100 *desv_r/media_r,
            coeV_g = 100 *desv_g/media_g,
            coeV_b = 100 *desv_b/media_b)
## # A tibble: 3 x 10
##   cluster media_r media_g media_b desv_r desv_g desv_b coeV_r coeV_g coeV_b
##     <int>   <dbl>   <dbl>   <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>
## 1       1    70.7    32.5  19.0     6.16   2.83  2.73    8.72   8.72  14.3 
## 2       2    67.0    19.4   0.432   4.93   2.39  0.788   7.36  12.3  183.  
## 3       3   112.     49.9  24.3     5.48   3.17  2.42    4.90   6.35   9.97

Gráficando clusters

# Dimension reduction using PCA
res.pca <- prcomp(rgbdata[, -4],  scale = TRUE)
# Coordinates of individuals
ind.coord <- as.data.frame(get_pca_ind(res.pca)$coord)
# Add clusters obtained using the K-means algorithm
ind.coord$cluster <- factor(clus1$cluster)
# Add Species groups from the original data sett
ind.coord$tueste <- rgbdata$tueste
# Data inspection
#head(ind.coord)
eigenvalue <- round(get_eigenvalue(res.pca), 1)
variance.percent <- eigenvalue$variance.percent
#head(eigenvalue)


ggscatter(
  ind.coord, x = "Dim.1", y = "Dim.2", title = "Clusters rgb",
  color = "cluster", palette = "npg", ellipse = TRUE, ellipse.type = "convex",
  shape = "tueste", size = 1.5,  legend = "right", ggtheme = theme_bw(),
  xlab = paste0("Dim 1 (", variance.percent[1], "% )" ),
  ylab = paste0("Dim 2 (", variance.percent[2], "% )" )
) +
  stat_mean(aes(color = cluster), size = 4)

\[-El\ grupo\ 1\ representa\ ambos\ tuestes\ medio\ y\ oscuro\ de\ acuerdo\ a\ rgb \\ - El\ tueste\ claro,\ pertenece\ a\ el\ grupo\ 3 \\ - El\ tueste\ verde\ está\ en\ el\ grupo\ 2 \\ \small Conclusión:\ tanto\ en\ lab\ como\ en\ rgb\ los\ tuestes\ verdes\ y\ claros\ están\ en\ grupos\ separados\ mientras\ que\ los\\ tuestes\ medio\ y\ oscuro\ comparten\ grupo\]

## Método de Ward
# Ward Hierarchical Clustering
df1_scale <- scale(rgbdataf)
d1 <- dist(df1_scale, method = "euclidean") # distance matrix
fit1 <- hclust(d1, method="ward.D2")
plot(fit1) # display dendogram
groups <- cutree(fit1, k=3) # cut tree into 5 clusters
# draw dendogram with red borders around the 5 clusters
rect.hclust(fit, k=3, border="red")

tapply(rgbdataf$r, groups, mean)
##         1         2         3 
##  67.02811 111.89141  70.73459
tapply(rgbdata$g, groups, mean)
##        1        2        3 
## 19.36928 49.88490 32.45031
tapply(rgbdata$b, groups, mean)
##          1          2          3 
##  0.4315438 24.2518433 19.0175785

\[Las\ medias\ coinciden\ con\ el\ método\ Kmeans\]

hsvd <- convert_colour(matriz, "lab", "hsv")
hsvd <- data.frame(hsvd)
hsvdata <- cbind(hsvd, tueste)
hsvdata
##            h         s         v tueste
## 1   15.60651 0.9624000 0.2850104  verde
## 2   20.00781 1.0000000 0.2462823  verde
## 3   19.68317 1.0000000 0.2693675  verde
## 4   17.77677 0.9879695 0.2585023  verde
## 5   20.30000 1.0000000 0.2503286  verde
## 6   18.34603 1.0000000 0.2506717  verde
## 7   17.07547 0.9818509 0.3012472  verde
## 8   21.44449 1.0000000 0.2681088  verde
## 9   19.23513 1.0000000 0.2368622  verde
## 10  17.14580 0.9989111 0.2776551  verde
## 11  18.93798 1.0000000 0.2683113  verde
## 12  18.48172 1.0000000 0.2795735  verde
## 13  19.07124 1.0000000 0.2783657  verde
## 14  19.58873 0.9957688 0.2664188  verde
## 15  17.03306 0.9721698 0.2775100  verde
## 16  18.70100 1.0000000 0.2707310  verde
## 17  18.50810 1.0000000 0.2580536  verde
## 18  19.16756 1.0000000 0.2507047  verde
## 19  18.82095 1.0000000 0.2642064  verde
## 20  20.90034 1.0000000 0.2696904  verde
## 21  19.83876 1.0000000 0.2697104  verde
## 22  20.46594 0.9903759 0.2695907  verde
## 23  18.44496 1.0000000 0.2747787  verde
## 24  17.98091 0.9830733 0.2362560  verde
## 25  19.70933 1.0000000 0.2741332  verde
## 26  16.85917 0.9710487 0.2507703  verde
## 27  17.42250 0.9707971 0.2900315  verde
## 28  21.90418 1.0000000 0.2210462  verde
## 29  21.49104 1.0000000 0.2124732  verde
## 30  18.25407 1.0000000 0.2592677  verde
## 31  18.93551 0.7832167 0.4191141  claro
## 32  16.08186 0.8391824 0.3908366  claro
## 33  18.55800 0.7977473 0.4250690  claro
## 34  16.98563 0.8052993 0.4753249  claro
## 35  17.58150 0.7940117 0.4072652  claro
## 36  17.00528 0.7809774 0.4653406  claro
## 37  16.29128 0.7993397 0.4461621  claro
## 38  18.32841 0.7971191 0.4578417  claro
## 39  17.75507 0.7709233 0.4622238  claro
## 40  17.65249 0.7930085 0.4626423  claro
## 41  18.17172 0.7914052 0.4070046  claro
## 42  17.94379 0.7885005 0.4845211  claro
## 43  17.49898 0.7834674 0.4486130  claro
## 44  17.86944 0.7818116 0.4423711  claro
## 45  18.17972 0.7433200 0.4185118  claro
## 46  17.80364 0.7831707 0.4365492  claro
## 47  17.98764 0.7877588 0.4325446  claro
## 48  17.02175 0.7935394 0.4356909  claro
## 49  18.59174 0.7515032 0.4251142  claro
## 50  17.19457 0.7896803 0.4483522  claro
## 51  16.49410 0.7720227 0.4457372  claro
## 52  16.89175 0.7789541 0.4369333  claro
## 53  16.86617 0.7884916 0.4286332  claro
## 54  17.52531 0.7777036 0.4093004  claro
## 55  18.47744 0.7512211 0.4430999  claro
## 56  17.56968 0.7863259 0.4353492  claro
## 57  17.57987 0.7786362 0.4251754  claro
## 58  16.76014 0.7483534 0.4448760  claro
## 59  17.55403 0.7641457 0.4380159  claro
## 60  17.53781 0.7985589 0.4654821  claro
## 61  14.03165 0.7027128 0.2321496  medio
## 62  18.23431 0.7700830 0.2580739  medio
## 63  16.84479 0.7659629 0.2689984  medio
## 64  18.87819 0.7364824 0.2602068  medio
## 65  14.13559 0.7215016 0.2517121  medio
## 66  13.28610 0.6942980 0.2559740  medio
## 67  14.28391 0.7205629 0.2645930  medio
## 68  16.76412 0.7484651 0.2814432  medio
## 69  16.88647 0.7202619 0.2632751  medio
## 70  14.31930 0.7570101 0.3268437  medio
## 71  16.74041 0.6767631 0.2522942  medio
## 72  14.31123 0.6835818 0.2695572  medio
## 73  14.58978 0.7063735 0.2383682  medio
## 74  15.75674 0.7300717 0.2735334  medio
## 75  14.01243 0.7536174 0.3030106  medio
## 76  17.54470 0.8411777 0.2594064  medio
## 77  16.28946 0.7749754 0.2802324  medio
## 78  17.31291 0.7205463 0.2639818  medio
## 79  19.39021 0.7344203 0.2343466  medio
## 80  15.37367 0.7302009 0.2704297  medio
## 81  15.65310 0.7162138 0.2533300  medio
## 82  14.68094 0.7509344 0.2361330  medio
## 83  13.35468 0.6868746 0.2694635  medio
## 84  16.11578 0.7532594 0.2765510  medio
## 85  13.05617 0.6940037 0.3039742  medio
## 86  14.79662 0.7223345 0.2716874  medio
## 87  17.33317 0.7248408 0.2372420  medio
## 88  12.47951 0.6809149 0.2618787  medio
## 89  16.81887 0.7262835 0.2939855  medio
## 90  17.30763 0.7176155 0.2434255  medio
## 91  15.47902 0.7789289 0.3052464 oscuro
## 92  15.23141 0.7368574 0.2783245 oscuro
## 93  14.73550 0.7306972 0.2537465 oscuro
## 94  16.09727 0.7396311 0.2608472 oscuro
## 95  14.65714 0.7766897 0.3048163 oscuro
## 96  13.77592 0.6961490 0.2697674 oscuro
## 97  17.49709 0.7224935 0.2933828 oscuro
## 98  14.48520 0.7051468 0.2969854 oscuro
## 99  15.92759 0.7020213 0.2863249 oscuro
## 100 15.31085 0.7056080 0.2889581 oscuro
## 101 13.88015 0.7773740 0.2916391 oscuro
## 102 13.92513 0.7201328 0.2883231 oscuro
## 103 14.40245 0.7136851 0.3078285 oscuro
## 104 11.68411 0.7069896 0.3009014 oscuro
## 105 14.03876 0.7305603 0.3121873 oscuro
## 106 15.63494 0.7089514 0.3003643 oscuro
## 107 17.34970 0.7528608 0.3077847 oscuro
## 108 17.60539 0.7998769 0.2794786 oscuro
## 109 17.15672 0.7527868 0.2848662 oscuro
## 110 16.01510 0.7011078 0.3059107 oscuro
## 111 16.55577 0.7701934 0.2549344 oscuro
## 112 13.00859 0.6491971 0.2805453 oscuro
## 113 16.15941 0.7301399 0.3419995 oscuro
## 114 17.51596 0.7462102 0.2620291 oscuro
## 115 17.55205 0.7666567 0.2846826 oscuro
## 116 16.45682 0.7564931 0.2749690 oscuro
## 117 15.12926 0.7664872 0.2903541 oscuro
## 118 15.39880 0.7098321 0.2787753 oscuro
## 119 14.94144 0.7445285 0.3255984 oscuro
## 120 16.84654 0.6896478 0.2757603 oscuro

Análisis gráfico

figrgb2 <- plot_ly(data = hsvdata, 
               x = ~h, 
               y = ~s, 
               z = ~v, 
               size = 0.7, 
               color = ~tueste)
figrgb2
## No trace type specified:
##   Based on info supplied, a 'scatter3d' trace seems appropriate.
##   Read more about this trace type -> https://plotly.com/r/reference/#scatter3d
## No scatter3d mode specifed:
##   Setting the mode to markers
##   Read more about this attribute -> https://plotly.com/r/reference/#scatter-mode
M2 = hsvdata[ ,-4]
Ms2 = scale(M2)
fviz_nbclust(Ms2,
             FUNcluster = kmeans,
             method = 'gap_stat',
             diss = get_dist(Ms2,
                             'euclidean'))

clus2 = kmeans(Ms2, 3)
hsvdata$cluster <- clus2$cluster
hsvf <- hsvdata[-4]
# Dimension reduction using PCA
res.pca <- prcomp(hsvdata[, -4],  scale = TRUE)
# Coordinates of individuals
ind.coord <- as.data.frame(get_pca_ind(res.pca)$coord)
# Add clusters obtained using the K-means algorithm
ind.coord$cluster <- factor(clus2$cluster)
# Add Species groups from the original data sett
ind.coord$tueste <- hsvdata$tueste
# Data inspection
#head(ind.coord)
eigenvalue <- round(get_eigenvalue(res.pca), 1)
variance.percent <- eigenvalue$variance.percent
#head(eigenvalue)


ggscatter(
  ind.coord, x = "Dim.1", y = "Dim.2", title = "Clusters hsv",
  color = "cluster", palette = "npg", ellipse = TRUE, ellipse.type = "convex",
  shape = "tueste", size = 1.5,  legend = "right", ggtheme = theme_bw(),
  xlab = paste0("Dim 1 (", variance.percent[1], "% )" ),
  ylab = paste0("Dim 2 (", variance.percent[2], "% )" )
) +
  stat_mean(aes(color = cluster), size = 4)

\[ \small Conclusión:\ La\ conformación\ de\ grupos\ en\ hsv\ sigue\ siendo\ la\ misma,\ pero\ cambia\ la\ magnitud\ respecto\ a\ rgb\ dónde\\ \small los\ tamaños\ del\ grupo\ 1\ y\ 2\ son\ inversos\ a\ los\ observados\ en\ hsv.\\ \small En\ general\ habría\ que\ considerar\ los\ tuestes\ medio\ y\ oscuro\ como\ uno\ mismo\ en\ base\ a\ los\ resultados\ observados \]