**Revisión de las condiciones de remuneración del Roaming Automático Nacional** Anexo: Notas aclaratorias: 1. La siguiente programación se elaboró en el programa R Studio que es un softwaree uso libre. ****Librerias necesarias: Las siguientes son las librerias que se necesita instlar en R para poder correr la programación: library(dplyr) library(tidyr) library(readr) library(xlsx) library(magrittr) library(jsonlite) library(haven) library(tidyverse) library(cluster) library(NbClust) library(factoextra) library(psych) library(GPArotation) ****Base de datos base_RAN <- read.csv("Entradas/base_RAN.csv", sep = ";", dec = ",", fileEncoding = "UTF-8") ****Calcular variables: base_RAN <- base_RAN%>% mutate(DENS_POB = POBLACION_2020/MPIO_NAREA)%>% mutate(TRAF_POB_DATOS=base_RAN$DATOS/base_RAN$POBLACION_2020)%>% mutate(TRAF_POB_VOZ=base_RAN$VOZ/base_RAN$POBLACION_2020) ****Normalizar la base base_RAN<-scale(base_RAN) ****Análisis de Componentes Principales –ACP– RAN_acp <- prcomp(base_RAN, center = TRUE, scale = TRUE) summary(RAN_acp) str(RAN_acp) ****Gráficos ACP desv_acp=RAN_acp[[1]] plot(desv_acp) var_acp=desv_acp^2 str(var_acp) summary(var_acp, digits = 5) pve <- var_acp / sum(var_acp) plot(pve, xlab="componente principal", ylab="Proporción de la varianza explicada", ylim= c(0,1), type="b") plot(var_acp) abline(h=1, col="red") plot(cumsum(pve), xlab="Componente principal", ylab="Proporción acumulada de la varianza explicada", ylim= c(0,1), type="b") abline(h=1, col="red") ****Rotación ACP rot_loading <- principal(base_RAN, nfactors = 3, rotate = "varimax") rot_loading plot(rot_loading) ****Generar una base para el análisis de cluster Nota: de acuerdo con el análisis de ACP, las variables tráfico de datos por habitante y tráfico de voz por habitante, no se tienen en cuenta para realizar el análisis de cluster. base_RAN <- as.data.frame(base_RAN) base_RAN_2 <- base_RAN %>% select(-TRAF_POB_DATOS, -TRAF_POB_VOZ) base_RAN_2<-scale(base_RAN_2) ****Identificar el número óptimo de clusters **K–means método wss (within-cluster sum of square): fviz_nbclust(base_RAN_2, kmeans, method = "wss") método silhouette: fviz_nbclust(base_RAN_2, kmeans, method = "silhouette") método gap_stat: fviz_nbclust(base_RAN_2, kmeans, method = "gap_stat") Una vez se identifa el K-óptimo, se procede a correr el cluster: res.k_means <- eclust(base_RAN_2, "kmeans", k = 5, graph = FALSE) fviz_silhouette(res.k_means) **K–medoids método wss (within-cluster sum of square): fviz_nbclust(x = base_cluster_2, FUNcluster = pam, method = "wss", k.max = 15, diss = dist(base_RAN_2, method = "manhattan")) Cluster por k–medoids: pam_cl <- pam(base_RAN_2, k=9, metric="manhattan") fviz_silhouette(pam_cl) pam_cl Para mayor información de los métodos se recomienda al lector el uso de la siguiente documentación: 1. https://www.rdocumentation.org/packages/psych/versions/2.0.9/topics/principal 2. https://www.rdocumentation.org/packages/stats/versions/3.6.2/topics/prcomp