ANÁLISIS DE CLUSTER

# Cargar base de datos (encuesta)
datos <- read.csv("C:\\Users\\ca\\Desktop\\R Studio\\Evidencia 2 RETO\\Encuesta_Evidencia.csv")
datos_numericos <- datos[sapply(datos, is.numeric)]
rotacion <- scale(datos_numericos)
rotacion = as.data.frame(rotacion)
# Cargar librerías
library(factoextra)
## Loading required package: ggplot2
## Welcome! Want to learn more? See two factoextra-related books at https://goo.gl/ve3WBa
library(ggplot2)
library(dplyr)
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
library(cluster)
library(stats)
# Determinar el numero optimo de clusters x Metodo del Codo

fviz_nbclust(rotacion, kmeans, method = "wss")

# Determinar el numero optimo de clusters
gap_stat <- clusGap(rotacion,
                    FUN = kmeans,
                    nstart = 25,
                    K.max = 10,
                    B = 50)

#plot number of clusters vs. gap statistic
fviz_gap_stat(gap_stat)

# Modelo Kmeans

set.seed(123)
km=kmeans(rotacion,centers = 3, nstart = 25)
km
## K-means clustering with 3 clusters of sizes 49, 13, 44
## 
## Cluster means:
##    Antiguedad    Salario Prestaciones Jornada_Laboral Herramientas Temperatura
## 1  0.04978401  0.5066609    0.8096968      0.44017050    0.5889614  0.21319654
## 2 -0.11684085 -1.2840110   -1.1176558     -1.35000450   -1.5489734  0.01811968
## 3 -0.02092012 -0.1848691   -0.5714914     -0.09132491   -0.1982376 -0.24277696
##       Estrés  Transporte Instalaciones   Rotación Dependientes
## 1  0.4923460  0.22370940    0.39664759  0.5128835   0.14591582
## 2 -0.3759302 -1.07698374   -1.70295050 -1.0516751   0.06287495
## 3 -0.4372241  0.06906881    0.06142329 -0.2604435  -0.18107385
## 
## Clustering vector:
##   [1] 1 3 2 1 3 1 3 1 3 1 1 1 1 1 1 3 3 1 2 3 3 3 3 2 1 3 1 3 3 1 1 3 3 3 1 3 2
##  [38] 3 3 1 1 3 2 3 1 3 3 3 2 1 1 1 1 3 3 2 1 3 1 1 1 3 1 1 3 3 3 1 3 3 1 1 1 2
##  [75] 2 3 2 3 2 1 1 1 1 2 1 3 3 1 1 3 1 1 3 1 2 3 1 3 1 1 3 1 3 3 1 1
## 
## Within cluster sum of squares by cluster:
## [1] 290.6576 142.0079 417.2390
##  (between_SS / total_SS =  26.4 %)
## 
## Available components:
## 
## [1] "cluster"      "centers"      "totss"        "withinss"     "tot.withinss"
## [6] "betweenss"    "size"         "iter"         "ifault"
# Grafica con los 3 clusters
fviz_cluster(km,data=rotacion)

TABLAS DE CONTINGENCIA

datos1<-datos
datos1$Cluster<-km$cluster
# Tabla de contingencia de Genero
contingency <- table(datos1$Cluster, datos1$Genero)
contingency <- prop.table(contingency, margin = 1) * 100
print(contingency)
##    
##     Femenino Masculino
##   1 67.34694  32.65306
##   2 53.84615  46.15385
##   3 65.90909  34.09091
# Tabla de contingencia de Estado Civil
contingency2 <- table(datos1$Cluster, datos1$Estado.Civil)
contingency2 <- prop.table(contingency2, margin = 1) * 100
print(contingency2)
##    
##        Casado Divorciado   Soltero Unión libre
##   1 38.775510   2.040816 34.693878   24.489796
##   2 61.538462   0.000000 38.461538    0.000000
##   3 25.000000   0.000000 56.818182   18.181818
# Tabla de contingencia de Municipio
contingency3 <- table(datos1$Cluster, datos1$Municipio)
contingency3 <- prop.table(contingency3, margin = 1) * 100
print(contingency3)
##    
##       Apodaca Guadalupe    Juárez Monterrey      Otro Pesquería
##   1 63.265306  6.122449 10.204082  6.122449  8.163265  6.122449
##   2 69.230769  0.000000 23.076923  0.000000  7.692308  0.000000
##   3 84.090909  2.272727  9.090909  0.000000  2.272727  2.272727
# Tabla de contingencia de Escolaridad
contingency4 <- table(datos1$Cluster, datos1$Escolaridad)
contingency4 <- prop.table(contingency4, margin = 1) * 100
print(contingency4)
##    
##     Licenciatura      Otro Preparatoria  Primaria Secundaria
##   1    26.530612  4.081633    18.367347  8.163265  42.857143
##   2     7.692308  0.000000    46.153846 15.384615  30.769231
##   3    22.727273  2.272727    27.272727  6.818182  40.909091
# Tabla de contingencia de Puesto
contingency5 <- table(datos1$Cluster, datos1$Puesto)
contingency5 <- prop.table(contingency5, margin = 1) * 100
print(contingency5)
##    
##     Administrativo Ayudante general Costurera  Limpieza Mantenimiento      Otro
##   1      16.326531        44.897959  4.081633  2.040816      0.000000 26.530612
##   2       7.692308        38.461538  7.692308  7.692308      7.692308 23.076923
##   3      18.181818        43.181818  9.090909  0.000000      0.000000 20.454545
##    
##      Soldador Supervisor
##   1  0.000000   6.122449
##   2  7.692308   0.000000
##   3  2.272727   6.818182
# Tabla de contingencia de Edad
contingency6 <- table(datos1$Cluster, datos1$Edad)
contingency6 <- prop.table(contingency6, margin = 1) * 100
print(contingency6)
##    
##            18        20        21        22        23        24        25
##   1  0.000000  2.040816  4.081633  0.000000  4.081633  4.081633  4.081633
##   2  7.692308  0.000000  7.692308  0.000000  0.000000  7.692308  0.000000
##   3  2.272727  9.090909  6.818182  6.818182  0.000000  4.545455  4.545455
##    
##            26        27        28        29        30   30 años        31
##   1  0.000000  4.081633  2.040816  4.081633 10.204082  2.040816  2.040816
##   2  7.692308  0.000000  7.692308  0.000000  0.000000  0.000000  0.000000
##   3 11.363636  2.272727  6.818182  0.000000  0.000000  0.000000  0.000000
##    
##            33        34        35        36        37        38        39
##   1  4.081633  2.040816  0.000000  8.163265  0.000000  0.000000  2.040816
##   2  0.000000  0.000000  7.692308  0.000000  0.000000  7.692308  0.000000
##   3  2.272727  4.545455  2.272727  0.000000  2.272727  0.000000  2.272727
##    
##            40        41        42        43        44        45        46
##   1  0.000000  2.040816  4.081633  2.040816  0.000000  4.081633  0.000000
##   2  0.000000  7.692308  7.692308 15.384615  0.000000  0.000000  7.692308
##   3  2.272727  0.000000  0.000000  4.545455  2.272727  0.000000  4.545455
##    
##            47        48        49        50        51        53        54
##   1  2.040816  2.040816  4.081633  2.040816  4.081633  2.040816  2.040816
##   2  0.000000  0.000000  0.000000  0.000000  0.000000  7.692308  0.000000
##   3  0.000000  0.000000  0.000000  2.272727  4.545455  0.000000  4.545455
##    
##            55        56        58        61        68
##   1  0.000000  4.081633  2.040816  2.040816  2.040816
##   2  0.000000  0.000000  0.000000  0.000000  0.000000
##   3  2.272727  2.272727  2.272727  0.000000  0.000000
# Tabla de contingencia de Dependientes
contingency7 <- table(datos1$Cluster, datos1$Dependientes)
contingency7 <- prop.table(contingency7, margin = 1) * 100
print(contingency7)
##    
##             0         1         2         3
##   1 28.571429 32.653061 24.489796 14.285714
##   2 53.846154  7.692308  7.692308 30.769231
##   3 52.272727 15.909091 22.727273  9.090909
LS0tDQp0aXRsZTogIkFOw4FMSVNJUyBERSBTRUdNRU5UT1MiDQphdXRob3I6ICJBdXRob3I6IEVyaWthIElzZWxhIFJvZHJpZ3VleiBHb256YWxleiINCmRhdGU6ICJEYXRlOiAyMDIzLTExLTE2Ig0Kb3V0cHV0OiANCiAgaHRtbF9kb2N1bWVudDoNCiAgICB0b2M6IHRydWUNCiAgICB0b2NfZmxvYXQ6IHRydWUNCiAgICBjb2RlX2Rvd25sb2FkOiB0cnVlDQogICAgdGhlbWU6ICJqb3VybmFsIg0KICAgIGhpZ2hsaWdodDogImRlZmF1bHQiDQotLS0NCg0KIyBBTsOBTElTSVMgREUgQ0xVU1RFUg0KDQpgYGB7cn0NCiMgQ2FyZ2FyIGJhc2UgZGUgZGF0b3MgKGVuY3Vlc3RhKQ0KZGF0b3MgPC0gcmVhZC5jc3YoIkM6XFxVc2Vyc1xcY2FcXERlc2t0b3BcXFIgU3R1ZGlvXFxFdmlkZW5jaWEgMiBSRVRPXFxFbmN1ZXN0YV9FdmlkZW5jaWEuY3N2IikNCmRhdG9zX251bWVyaWNvcyA8LSBkYXRvc1tzYXBwbHkoZGF0b3MsIGlzLm51bWVyaWMpXQ0Kcm90YWNpb24gPC0gc2NhbGUoZGF0b3NfbnVtZXJpY29zKQ0Kcm90YWNpb24gPSBhcy5kYXRhLmZyYW1lKHJvdGFjaW9uKQ0KYGBgDQoNCg0KYGBge3J9DQojIENhcmdhciBsaWJyZXLDrWFzDQpsaWJyYXJ5KGZhY3RvZXh0cmEpDQpsaWJyYXJ5KGdncGxvdDIpDQpsaWJyYXJ5KGRwbHlyKQ0KbGlicmFyeShjbHVzdGVyKQ0KbGlicmFyeShzdGF0cykNCmBgYA0KDQoNCmBgYHtyfQ0KIyBEZXRlcm1pbmFyIGVsIG51bWVybyBvcHRpbW8gZGUgY2x1c3RlcnMgeCBNZXRvZG8gZGVsIENvZG8NCg0KZnZpel9uYmNsdXN0KHJvdGFjaW9uLCBrbWVhbnMsIG1ldGhvZCA9ICJ3c3MiKQ0KYGBgDQoNCmBgYHtyfQ0KIyBEZXRlcm1pbmFyIGVsIG51bWVybyBvcHRpbW8gZGUgY2x1c3RlcnMNCmdhcF9zdGF0IDwtIGNsdXNHYXAocm90YWNpb24sDQogICAgICAgICAgICAgICAgICAgIEZVTiA9IGttZWFucywNCiAgICAgICAgICAgICAgICAgICAgbnN0YXJ0ID0gMjUsDQogICAgICAgICAgICAgICAgICAgIEsubWF4ID0gMTAsDQogICAgICAgICAgICAgICAgICAgIEIgPSA1MCkNCg0KI3Bsb3QgbnVtYmVyIG9mIGNsdXN0ZXJzIHZzLiBnYXAgc3RhdGlzdGljDQpmdml6X2dhcF9zdGF0KGdhcF9zdGF0KQ0KYGBgDQoNCmBgYHtyfQ0KIyBNb2RlbG8gS21lYW5zDQoNCnNldC5zZWVkKDEyMykNCmttPWttZWFucyhyb3RhY2lvbixjZW50ZXJzID0gMywgbnN0YXJ0ID0gMjUpDQprbQ0KYGBgDQoNCmBgYHtyfQ0KIyBHcmFmaWNhIGNvbiBsb3MgMyBjbHVzdGVycw0KZnZpel9jbHVzdGVyKGttLGRhdGE9cm90YWNpb24pDQpgYGANCg0KIyMjIyBUQUJMQVMgREUgQ09OVElOR0VOQ0lBDQoNCmBgYHtyfQ0KZGF0b3MxPC1kYXRvcw0KZGF0b3MxJENsdXN0ZXI8LWttJGNsdXN0ZXINCmBgYA0KDQpgYGB7cn0NCiMgVGFibGEgZGUgY29udGluZ2VuY2lhIGRlIEdlbmVybw0KY29udGluZ2VuY3kgPC0gdGFibGUoZGF0b3MxJENsdXN0ZXIsIGRhdG9zMSRHZW5lcm8pDQpjb250aW5nZW5jeSA8LSBwcm9wLnRhYmxlKGNvbnRpbmdlbmN5LCBtYXJnaW4gPSAxKSAqIDEwMA0KcHJpbnQoY29udGluZ2VuY3kpDQpgYGANCg0KYGBge3J9DQojIFRhYmxhIGRlIGNvbnRpbmdlbmNpYSBkZSBFc3RhZG8gQ2l2aWwNCmNvbnRpbmdlbmN5MiA8LSB0YWJsZShkYXRvczEkQ2x1c3RlciwgZGF0b3MxJEVzdGFkby5DaXZpbCkNCmNvbnRpbmdlbmN5MiA8LSBwcm9wLnRhYmxlKGNvbnRpbmdlbmN5MiwgbWFyZ2luID0gMSkgKiAxMDANCnByaW50KGNvbnRpbmdlbmN5MikNCmBgYA0KDQpgYGB7cn0NCiMgVGFibGEgZGUgY29udGluZ2VuY2lhIGRlIE11bmljaXBpbw0KY29udGluZ2VuY3kzIDwtIHRhYmxlKGRhdG9zMSRDbHVzdGVyLCBkYXRvczEkTXVuaWNpcGlvKQ0KY29udGluZ2VuY3kzIDwtIHByb3AudGFibGUoY29udGluZ2VuY3kzLCBtYXJnaW4gPSAxKSAqIDEwMA0KcHJpbnQoY29udGluZ2VuY3kzKQ0KYGBgDQoNCmBgYHtyfQ0KIyBUYWJsYSBkZSBjb250aW5nZW5jaWEgZGUgRXNjb2xhcmlkYWQNCmNvbnRpbmdlbmN5NCA8LSB0YWJsZShkYXRvczEkQ2x1c3RlciwgZGF0b3MxJEVzY29sYXJpZGFkKQ0KY29udGluZ2VuY3k0IDwtIHByb3AudGFibGUoY29udGluZ2VuY3k0LCBtYXJnaW4gPSAxKSAqIDEwMA0KcHJpbnQoY29udGluZ2VuY3k0KQ0KYGBgDQoNCmBgYHtyfQ0KIyBUYWJsYSBkZSBjb250aW5nZW5jaWEgZGUgUHVlc3RvDQpjb250aW5nZW5jeTUgPC0gdGFibGUoZGF0b3MxJENsdXN0ZXIsIGRhdG9zMSRQdWVzdG8pDQpjb250aW5nZW5jeTUgPC0gcHJvcC50YWJsZShjb250aW5nZW5jeTUsIG1hcmdpbiA9IDEpICogMTAwDQpwcmludChjb250aW5nZW5jeTUpDQpgYGANCg0KYGBge3J9DQojIFRhYmxhIGRlIGNvbnRpbmdlbmNpYSBkZSBFZGFkDQpjb250aW5nZW5jeTYgPC0gdGFibGUoZGF0b3MxJENsdXN0ZXIsIGRhdG9zMSRFZGFkKQ0KY29udGluZ2VuY3k2IDwtIHByb3AudGFibGUoY29udGluZ2VuY3k2LCBtYXJnaW4gPSAxKSAqIDEwMA0KcHJpbnQoY29udGluZ2VuY3k2KQ0KYGBgDQoNCmBgYHtyfQ0KIyBUYWJsYSBkZSBjb250aW5nZW5jaWEgZGUgRGVwZW5kaWVudGVzDQpjb250aW5nZW5jeTcgPC0gdGFibGUoZGF0b3MxJENsdXN0ZXIsIGRhdG9zMSREZXBlbmRpZW50ZXMpDQpjb250aW5nZW5jeTcgPC0gcHJvcC50YWJsZShjb250aW5nZW5jeTcsIG1hcmdpbiA9IDEpICogMTAwDQpwcmludChjb250aW5nZW5jeTcpDQpgYGANCg0K