New names:
• `` -> `...22`
Actividad 1 - Métodos de Muestreo
Telco Customer Churn
1 Enunciado de la actividad
Trabajo grupal síncrono. Realizar una busca de una población de datos en que se pueda obtener una muestra que correspondan a los tipos de muestreo. Describir el problema, describir los datos y aplicar un muestreo simple, estratificado, sistemático o conglomerado para esos datos. También se puede obtener algunas medidas estadísticas y conclusiones. Presentar estos resultados por medio de un informe (pdf). La fecha de entrega: desde 19 de octubre hasta 26 de octubre.
Adjunto link de este trabajo para mejorar la visualización de algunos outputs: https://rpubs.com/LPFernando/1235658
2 Descripción del problema
Una alta tasa de abandono de clientes indica que un gran porcentaje de tus clientes ya no desea comprar tus productos o servicios por varias razones, lo que puede ser un signo que el negocio es insatisfactorio.
Este estudio pretende analizar y aplicar los diferentes métodos de muestreo de una población de clientes para posteriormente dar recomendaciones o implementar estrategias de retención.
3 Descripción del dataset
El dataset contiene datos demográficos, de servicio, estado de clientes que solicitaron servicios de empresa de Telecomunicaciones en California - USA. Se usó los datos registrados en la plataforma Kaggle (ir Link).
Cuenta con 7043 clientes al primer trimestre (no especifican año)
Distribución de ciudad principal de residencia del cliente. La mayoria de nuestros clientes residen principalmente en California-Estados Unidos.
Hasta el primer trimestre tenemos que 67% de nuestros clientes permanecen suscritos a algun servicio de la compañia. 6% (454) son nuevos clientes y el 27% ya no son clientes.
Los principales motivos que dan los clientes al abandonar el servicio, son debido a que la competencia ofrece mejores servicios a menor precio y a una mala atención al cliente.
4 Muestreo aleatorio simple sin reposición
Obtener una muestra de 100 clientes sin reposición, y analizar la variable edad.
Adjuntando el paquete: 'dplyr'
The following objects are masked from 'package:stats':
filter, lag
The following objects are masked from 'package:base':
intersect, setdiff, setequal, union
set.seed(2)
clientes.elegidos.100.sin=sample(1:7043,100,replace=FALSE)
muestra.clientes.100.sin = datos_clientes[clientes.elegidos.100.sin,]Una vez obtenida la muestra procedemos a mostrar algunos datos estadisticos, la media de edad de la muestra es 46.19 mientras que el de la población es 47.46.
Min. 1st Qu. Median Mean 3rd Qu. Max.
19.00 33.00 44.00 46.19 60.00 109.00
5 Muestreo aleatorio sistemático
Vamos a tomar el tamaño y caso del muestreo simple anterior aplicado a la variable tarifa del plan contratado. Ordenaremos el CustomerID es probable con esto que el muestreo sistemático sea más preciso que el muestreo aleatorio.
# A tibble: 6 × 2
CustomerID Monthly_Charges
<int> <dbl>
1 1 18.2
2 2 18.4
3 3 18.6
4 4 18.7
5 5 18.7
6 6 18.8
N <- dim(precios_ordenados)[1]
n <- 100
q <- floor(N/n) # Definimos intervalo
q[1] 70
set.seed(2) # Obtenemos q0 inicial aleatorio
u <- runif(1)
q0 <- round((q-0)*u + 0)
q0[1] 13
La muestra está compuesta por los elementos: primero obtenemos el corte de los intervalos.
vector_multiplos_q <- q*0:(n-1)
#length(vector_multiplos_q)
vector_multiplos_q [1] 0 70 140 210 280 350 420 490 560 630 700 770 840 910 980
[16] 1050 1120 1190 1260 1330 1400 1470 1540 1610 1680 1750 1820 1890 1960 2030
[31] 2100 2170 2240 2310 2380 2450 2520 2590 2660 2730 2800 2870 2940 3010 3080
[46] 3150 3220 3290 3360 3430 3500 3570 3640 3710 3780 3850 3920 3990 4060 4130
[61] 4200 4270 4340 4410 4480 4550 4620 4690 4760 4830 4900 4970 5040 5110 5180
[76] 5250 5320 5390 5460 5530 5600 5670 5740 5810 5880 5950 6020 6090 6160 6230
[91] 6300 6370 6440 6510 6580 6650 6720 6790 6860 6930
Obtenemos el índice de los elementos.
indice_elementos <- round(q0 + vector_multiplos_q)
#indice_elementos
muestra.precios.100.sin = precios_ordenados[indice_elementos,]
#muestra.precios.100.sinNuestra muestra sistematica tiene una media de 64.16 dolares mientras que la media de la población es 64.76.
Min. 1st Qu. Median Mean 3rd Qu. Max.
18.80 35.02 70.12 64.16 89.41 113.65
6 Muestra estratificada para proporciones
Antes de obtener la muestra ya sabemos (ver gráfico pie del inicio) que la variable Customer_Status no está balanceada, por lo tanto, se decide considerar las proporciones de cada segmento de dicha variable y asi mantener su comportamiento. Que hubiera pasado con la muestra si no preservamos la proporcionalidad?
La variable Customer_Status será nuestro estrato.
¿Cuántas personas hay y cuál es la tarifa promedio mensual?
dato1 %>% summarise(num_personas = n_distinct(CustomerID), promedio_tarifa = mean(Monthly_Charges), sd_tarifa = sd(Monthly_Charges), min_tarifa = min(Monthly_Charges), max_tarifa = max(Monthly_Charges))# A tibble: 1 × 5
num_personas promedio_tarifa sd_tarifa min_tarifa max_tarifa
<int> <dbl> <dbl> <dbl> <dbl>
1 7043 64.8 30.1 18.2 119.
¿Cuál es el número de elementos (personas) por estrato?
dato1 %>% group_by(Customer_Status) %>%
summarise(num_personas = n_distinct(CustomerID), promedio_tarifa = mean(Monthly_Charges), sd_tarifa = sd(Monthly_Charges))# A tibble: 3 × 4
Customer_Status num_personas promedio_tarifa sd_tarifa
<chr> <int> <dbl> <dbl>
1 Churned 1869 74.4 24.7
2 Joined 454 43.5 24.1
3 Stayed 4720 63.0 31.2
¿Cuánta muestra se necesita si se quisiera estimar la tarifa promedio con un margen de error de 2 dolares y para un intervalo de confianza del 95%?
alpha <- 0.05
z <- qnorm(1-alpha/2)
me <- 2
s <- 30.09005
((z*s)/me)**2[1] 869.5249
Estamos tomando la sd total sin haber realizado limpieza de nuestros datos. Así, nuestra muestra debe ser de 870.
Calcular el tamaño de muestra para cada estrato, así como su factor de expansión correspondiente
El tamaño de muestra en cada estrato está dado por: nh = n*(Wh).
# A tibble: 3 × 4
Customer_Status Nh nh factorh
<chr> <int> <dbl> <dbl>
1 Churned 1869 231 8.09
2 Joined 454 56 8.11
3 Stayed 4720 583 8.10
Seleccionamos una muestra estratificada
[1] 870 30
7 Muestra de conglomerados
Queremos encontrar aglemoraciones de la ubicacion de clientes que abandonaron la empresa.
[1] 1869 2
Estimación del número óptimo de conglomerados.
Welcome! Want to learn more? See two factoextra-related books at https://goo.gl/ve3WBa
Según el gráfico, el número sugerido de grupos es 2.
#Computación CLARA
clara.res <- clara(dato2, 4, samples=50, pamLike = TRUE)
#Componentes de clara.res
print(clara.res)Call: clara(x = dato2, k = 4, samples = 50, pamLike = TRUE)
Medoids:
Latitude Longitude
[1,] 34.11044 -118.1570
[2,] 37.97450 -121.3196
[3,] 39.88439 -122.5875
[4,] 32.96106 -117.1349
Objective function: 0.8381597
Clustering vector: int [1:1869] 1 2 1 2 2 2 3 4 4 4 1 2 1 1 2 2 4 2 ...
Cluster sizes: 621 670 225 353
Best sample:
[1] 19 22 86 199 240 256 296 362 377 406 455 462 528 617 622
[16] 647 653 668 686 751 756 803 840 846 855 898 942 1006 1098 1160
[31] 1305 1328 1389 1416 1455 1466 1473 1491 1501 1533 1549 1551 1672 1735 1772
[46] 1797 1814 1816
Available components:
[1] "sample" "medoids" "i.med" "clustering" "objective"
[6] "clusinfo" "diss" "call" "silinfo" "data"
La salida de la función clara() presenta componentes clave, incluyendo los medoides que representan los clusters y el vector de clustering que asigna a cada objeto un número de cluster.
dd <- cbind(dato2, cluster=clara.res$cluster)
head(dd, n=10) Latitude Longitude cluster
1 33.64567 -117.9226 1
2 38.01446 -122.1154 2
3 34.22785 -119.0799 1
4 37.68084 -122.4813 2
5 37.16154 -121.6494 2
6 39.22743 -120.0918 2
7 40.76660 -123.8046 3
8 33.30985 -116.8231 4
9 32.96106 -117.1349 4
10 33.83280 -116.2510 4
#Medoids
#clara.res$medoidsLa muestra que toma el modelo en su ultma iteración podemos recuperarlo con clara.res$sample el cual contiene los indices. Son 48 registros.
8 Conclusiones y observaciones
Se logró aplicar los 4 métodos de muestreo, cada una debe aplicarse para el caso correcto. Está pendiente saber (evaluar) si las muestras obtenidas describen a la poblacion.
Al aplicar el M.A.S y muestreo sistematico obtuvimos medias diferente al de la población, estpy seguro que las desviaciones. Se puede aplicar pruebas de hipotesis?
En el muestreo estratificado, surgió una duda, que pasa si la población que se pretende encuestar decide no responder, hay algun impacto o como amortiguar costos en este caso.
Cuando uno aplica clustering a la población, que ocurre si 2 o más cluster se traslapan, como se decide a que grupo pertenecerán.