Clusters

Ricardo R. Palma
Agosto 2019

Cargar el set de datos

MDZ_C <- read.csv2("MDZ_Competitividad.csv")
head (MDZ_C,1)
  X    RH.Mgt        CR  RH.Mgt.1       NPD Actividad    id       IIP
1 1 0.4460343 0.5099713 0.4460343 0.2747196  petroleo 11587 0.3798227
   Proj.Mgt     NPD.1     IIP.1      CR.1      TIR Proj.Mgt.1     NPD.2
1 0.2286879 0.2747196 0.3798227 0.5099713 14.72783  0.2286879 0.2747196
   Know.Mgt   Fecha Actividad.1     NPD.3         Rubro       Rubro.1
1 0.1890331 Mayo_19    petroleo 0.2747196 Medioambiente Medioambiente
        Rubro.2 Strategy.Mgt       Lng Strategy.Mgt.1      CR.2 Proj.Mgt.2
1 Medioambiente    0.6213083 -68.10139      0.6213083 0.5099713  0.2286879
      NPD.4       Lat Proj.Mgt.3     NPD.5 Fecha.1       Rubro.3     RISK
1 0.2747196 -33.25545  0.2286879 0.2747196 Mayo_19 Medioambiente 8.103609
    RISK.1       Rubro.4     IIP.2 Strategy.Mgt.2  id.1      CR.3
1 8.103609 Medioambiente 0.3798227      0.6213083 11587 0.5099713
  Know.Mgt.1 Actividad.2     NPD.6     NPD.7   RISK.2    TIR.1  RH.Mgt.2
1  0.1890331    petroleo 0.2747196 0.2747196 8.103609 14.72783 0.4460343
  Proj.Mgt.4     NPD.8       Rubro.5 Know.Mgt.2
1  0.2286879 0.2747196 Medioambiente  0.1890331
  View(MDZ_C) 

Ploteo de puntos

plot(MDZ_C$Lng,MDZ_C$Lat)

plot of chunk unnamed-chunk-2

Impresión sobre mapa

library(leaflet)
library( magrittr )

subscr<-data.frame(lat=MDZ_C$Lat,lng=MDZ_C$Lng)
leaflet() %>% addTiles() %>% 
  addCircleMarkers(data = subscr,
                   lat = ~lat, lng = ~lng,
                   color = "blue")
TypeError: Attempting to change the setter of an unconfigurable property.
TypeError: Attempting to change the setter of an unconfigurable property.

plot of chunk unnamed-chunk-3

Localización (Método del Centro Geométrico)

Defino las coordenadas X y Y en función del promedio de latitud y longitud

X <- mean(MDZ_C$Lng)
Y <- mean(MDZ_C$Lat)
X
[1] -68.65396
Y
[1] -33.33595
plot(MDZ_C$Lng, MDZ_C$Lat)
points(X,Y,type="p",col="red",pch=23)

plot of chunk unnamed-chunk-5

Métodos de momento de 1er Orden

En este caso no tengo en cuenta la latitud y longitud solamente, sino que asumo como masa alguna otra variable. Pondremos por caso la rentabilidad (TIR)

summary(MDZ_C$TIR)
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
 -4.177   8.818  12.178  12.398  15.899  30.027 

Momento de primer orden respecto a X Longitud

\[ \sum_{1=1}^{n} Tir_i*Long_i = X * n * \widehat{Tir_m} \]

Esto implica que puedo calcular la longitud como :

\[ X = \frac{\sum_{1=1}^{n} Tir_i*Long_i } {n * \widehat{Tir_m}} \]

X_1 <- sum(MDZ_C$Lng * MDZ_C$TIR) / sum(MDZ_C$TIR)
X_1 
[1] -68.65231
X
[1] -68.65396

Momento de primer orden respecto a Y Latitud

\[ \sum_{1=1}^{n} Tir_i*Lat_i = Y * n * \widehat{Tir_m} \]

Esto implica que puedo calcular la longitud como :

\[ Y = \frac{\sum_{1=1}^{n} Tir_i*Lat_i } {n * \widehat{Tir_m}} \]

Y_1 <- sum(MDZ_C$Lat * MDZ_C$TIR) / sum(MDZ_C$TIR)
Y_1 
[1] -33.32873
Y
[1] -33.33595

Vista en mapa

plot(MDZ_C$Lng, MDZ_C$Lat)
points(X,Y,type="p",col="red",pch=23)
points(X_1,Y_1,type="p",col="blue",pch=23)

plot of chunk unnamed-chunk-9

Mapeo

center <-data.frame(lat=X_1,lng=Y_1)


leaflet() %>% addTiles() %>% 
  addCircleMarkers(data = center,
                   lat = ~lat, lng = ~lng,
                   color = "red")
TypeError: Attempting to change the setter of an unconfigurable property.
TypeError: Attempting to change the setter of an unconfigurable property.

plot of chunk unnamed-chunk-10

Momento de Segundo Orden (Inercia) X

\[ \sum_{1=1}^{n} Tir_i*(Long_i)^2 = X^2 * n * \widehat{Tir_m} \]

Esto implica que puedo calcular la longitud como :

\[ X = \sqrt { \frac{\sum_{1=1}^{n} Tir_i*(Long_i)^2 } {n * \widehat{Tir_m}} } \]

X_2 <- sqrt(  sum(MDZ_C$Lng ^2 * MDZ_C$TIR) / sum(MDZ_C$TIR))
X_2
[1] 68.65339
X_1 
[1] -68.65231
X
[1] -68.65396

Momento de Segundo Orden (Inercia) Y

\[ \sum_{1=1}^{n} Tir_i*(Lat_i)^2 = Y^2 * n * \widehat{Tir_m} \]

Esto implica que puedo calcular la longitud como :

\[ Y = \sqrt { \frac{\sum_{1=1}^{n} Tir_i*(Lat_i)^2 } {n * \widehat{Tir_m}} } \]

Y_2 <- sqrt(  sum(MDZ_C$Lat ^2 * MDZ_C$TIR) / sum(MDZ_C$TIR))
Y_2
[1] 33.33695
Y_1 
[1] -33.32873
Y
[1] -33.33595

Ejercicio: Ploterar XY & Mapa

Pausa para un café

Análisis Exploratorio

library("PerformanceAnalytics")
my_data <- data.frame(MDZ_C[ ,8:16])
chart.Correlation(my_data, histogram=TRUE, pch=19)

plot of chunk unnamed-chunk-13

Determinación óptima del número de cluster

my_data <-MDZ_C[ , c(8:16)]
library("cluster")
library(factoextra)
fviz_nbclust(my_data, kmeans, method = "gap_stat")

plot of chunk unnamed-chunk-14

cluster kmeans

my_data <-MDZ_C[ , 8:16]

#cluster kmeans
km.res <- kmeans(my_data, 7, nstart = 25)
fviz_cluster(km.res, data = my_data, frame.type = "convex")

plot of chunk unnamed-chunk-15

Clusters PAM

pam.res <- pam(MDZ_C, 7)
fviz_cluster(pam.res)

plot of chunk unnamed-chunk-16

Cluster Jerarquico

clarax <- clara(my_data, 5)
# Cluster plot
fviz_cluster(clarax, stand = T, geom = "point" , ellipse = TRUE, ellipse.type = "convex",  ellipse.level = 0.95, ellipse.alpha = 0.2, shape = NULL,
             pointsize = 1)

plot of chunk unnamed-chunk-17

For more details on authoring R presentations please visit https://support.rstudio.com/hc/en-us/articles/200486468.

  • Bullet 1
  • Bullet 2
  • Bullet 3

Slide With Code

summary(cars)
     speed           dist       
 Min.   : 4.0   Min.   :  2.00  
 1st Qu.:12.0   1st Qu.: 26.00  
 Median :15.0   Median : 36.00  
 Mean   :15.4   Mean   : 42.98  
 3rd Qu.:19.0   3rd Qu.: 56.00  
 Max.   :25.0   Max.   :120.00  

Slide With Plot

plot of chunk unnamed-chunk-19