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