Proyecto Aplicativo

Comités Políticos Provinciales del Partido Morado

En este proyecto analizaremos la data de una primera evaluación de los 108 comités políticos provinciales existentes a la fecha del Partido Morado, nuevo partido político en proceso de inscripción. La evaluación realizada –de la cual resultó la data que aquí se trabajará– buscaba clasificar a cada Comité Político Provincial (en adelante, CPP) en una de cinco categorías según su nivel de avance en la construcción partidaria; específicamente, según el grado de presencia y/o consolidación del Partido en la provincia.

Las categorías en que se clasificaron a los 108 CPP fueron:

  • Comité INACTIVO [score de 0 a 6 puntos]

  • Comité NÚCLEO [score de 7 a 13 puntos]

  • Comité EN CONSTRUCCIÓN [score de 14 a 20 puntos]

  • Comité EN PROCESO DE CONSOLIDACIÓN [score de 21 a 27 puntos]

  • Comité CONSOLIDADO [score de 28 a 34 puntos]

Lo que se busca en el presente análisis es ver si con el uso de ciertas técnicas estadísticas aprendidas en el curso de Estadística para el Análisis Político 2 es posible una mejor clasificación de los 108 CPP.


Cargamos la data, la cual puede obtenerse de aquí

link="https://goo.gl/HE3Hm4"
partidomorado=read.csv(link,stringsAsFactors = F)

Para poder ver a qué se refiere cada variable, puede verse este documento modelo, el cual puede obtenerse de aquí

Veo estructura:

str(partidomorado)
## 'data.frame':    108 obs. of  12 variables:
##  $ region       : chr  "AMAZONAS" "ANCASH" "ANCASH" "ANCASH" ...
##  $ provincia    : chr  "UTCUBAMBA" "HUARAZ" "CARHUAZ" "HUAYLAS" ...
##  $ score        : int  6 17 5 6 19 17 6 0 13 5 ...
##  $ firmas       : int  0 3 0 0 1 2 0 NA 1 0 ...
##  $ militantes   : int  1 1 0 1 3 2 0 NA 1 0 ...
##  $ reuniones    : int  1 3 1 2 2 1 2 NA 2 1 ...
##  $ basico       : int  0 1 0 1 2 2 0 NA 1 0 ...
##  $ intermedio   : int  0 1 0 0 1 2 0 NA 1 0 ...
##  $ actividades  : int  1 1 0 0 2 1 0 NA 1 0 ...
##  $ comunica     : int  0 4 3 0 4 4 2 NA 4 3 ...
##  $ local        : int  3 3 1 2 4 3 2 NA 2 1 ...
##  $ clasificacion: chr  "INACTIVO" "EN CONSTRUCCION" "INACTIVO" "INACTIVO" ...

Formateo:

partidomorado$region=as.factor(partidomorado$region)
partidomorado[,c(3:11)]=lapply(partidomorado[,c(3:11)],as.numeric)
partidomorado$clasificacion=factor(partidomorado$clasificacion,ordered = T,levels = c("NO MEDIDO","INACTIVO","NUCLEO","EN CONSTRUCCION","EN PROCESO DE CONSOLIDACION","CONSOLIDADO"))
str(partidomorado)
## 'data.frame':    108 obs. of  12 variables:
##  $ region       : Factor w/ 26 levels "AMAZONAS","ANCASH",..: 1 2 2 2 2 2 2 2 2 2 ...
##  $ provincia    : chr  "UTCUBAMBA" "HUARAZ" "CARHUAZ" "HUAYLAS" ...
##  $ score        : num  6 17 5 6 19 17 6 0 13 5 ...
##  $ firmas       : num  0 3 0 0 1 2 0 NA 1 0 ...
##  $ militantes   : num  1 1 0 1 3 2 0 NA 1 0 ...
##  $ reuniones    : num  1 3 1 2 2 1 2 NA 2 1 ...
##  $ basico       : num  0 1 0 1 2 2 0 NA 1 0 ...
##  $ intermedio   : num  0 1 0 0 1 2 0 NA 1 0 ...
##  $ actividades  : num  1 1 0 0 2 1 0 NA 1 0 ...
##  $ comunica     : num  0 4 3 0 4 4 2 NA 4 3 ...
##  $ local        : num  3 3 1 2 4 3 2 NA 2 1 ...
##  $ clasificacion: Ord.factor w/ 6 levels "NO MEDIDO"<"INACTIVO"<..: 2 4 2 2 4 4 2 1 3 2 ...

Veo que hay provincias para los cuales no hay data. Es decir, están bajo la categoría NO MEDIDO. Son las siguientes:

partidomorado[partidomorado$clasificacion=="NO MEDIDO",]
##                 region          provincia score firmas militantes
## 8               ANCASH MARISCAL LUZURIAGA     0     NA         NA
## 11            APURIMAC            ABANCAY     0     NA         NA
## 12            APURIMAC        ANDAHUAYLAS     0     NA         NA
## 14            APURIMAC           AYMARAES     0     NA         NA
## 56               JUNIN            CHUPACA     0     NA         NA
## 65  LIMA METROPOLITANA               LIMA     0     NA         NA
## 75       MADRE DE DIOS          TAMBOPATA     0     NA         NA
## 78               PASCO           OXAPAMPA     0     NA         NA
## 98          SAN MARTIN         SAN MARTIN     0     NA         NA
## 99          SAN MARTIN          EL DORADO     0     NA         NA
## 100         SAN MARTIN   MARISCAL CACERES     0     NA         NA
## 101         SAN MARTIN         BELLAVISTA     0     NA         NA
## 102         SAN MARTIN              LAMAS     0     NA         NA
##     reuniones basico intermedio actividades comunica local clasificacion
## 8          NA     NA         NA          NA       NA    NA     NO MEDIDO
## 11         NA     NA         NA          NA       NA    NA     NO MEDIDO
## 12         NA     NA         NA          NA       NA    NA     NO MEDIDO
## 14         NA     NA         NA          NA       NA    NA     NO MEDIDO
## 56         NA     NA         NA          NA       NA    NA     NO MEDIDO
## 65         NA     NA         NA          NA       NA    NA     NO MEDIDO
## 75         NA     NA         NA          NA       NA    NA     NO MEDIDO
## 78         NA     NA         NA          NA       NA    NA     NO MEDIDO
## 98         NA     NA         NA          NA       NA    NA     NO MEDIDO
## 99         NA     NA         NA          NA       NA    NA     NO MEDIDO
## 100        NA     NA         NA          NA       NA    NA     NO MEDIDO
## 101        NA     NA         NA          NA       NA    NA     NO MEDIDO
## 102        NA     NA         NA          NA       NA    NA     NO MEDIDO

Dato que no hay data para estas 13 provincias, elimino estas filas. Debiera quedarme entonces con 95 CPP:

partidomorado=partidomorado[!partidomorado$clasificacion=="NO MEDIDO",]
dim(partidomorado)
## [1] 95 12

¡Conforme!


Mejorando la clasificación - Clusters

Apliquemos la técnica de clusters para ver si es posible tener una mejor clasificación de los datos.

Hago un subconjunto con las variables que necesito:

partidomorado_sub=partidomorado[c(4:11)]
head(partidomorado_sub)
##   firmas militantes reuniones basico intermedio actividades comunica local
## 1      0          1         1      0          0           1        0     3
## 2      3          1         3      1          1           1        4     3
## 3      0          0         1      0          0           0        3     1
## 4      0          1         2      1          0           0        0     2
## 5      1          3         2      2          1           2        4     4
## 6      2          2         1      2          2           1        4     3

Hago que los nombres de mis filas en este subconjunto sean los nombres de cada provincia de mi data original:

row.names(partidomorado_sub)=partidomorado$provincia
head(partidomorado_sub,10)
##            firmas militantes reuniones basico intermedio actividades
## UTCUBAMBA       0          1         1      0          0           1
## HUARAZ          3          1         3      1          1           1
## CARHUAZ         0          0         1      0          0           0
## HUAYLAS         0          1         2      1          0           0
## RECUAY          1          3         2      2          1           2
## SANTA           2          2         1      2          2           1
## PALLASCA        0          0         2      0          0           0
## YUNGAY          1          1         2      1          1           1
## CASMA           0          0         1      0          0           0
## CHINCHEROS      2          1         2      0          0           0
##            comunica local
## UTCUBAMBA         0     3
## HUARAZ            4     3
## CARHUAZ           3     1
## HUAYLAS           0     2
## RECUAY            4     4
## SANTA             4     3
## PALLASCA          2     2
## YUNGAY            4     2
## CASMA             3     1
## CHINCHEROS        3     3

Uso NbClust para que nos diga cuál es el número óptimo de clusters. Uso method=“complete”

library(NbClust)
nb <- NbClust(partidomorado_sub,method="complete")

## *** : The Hubert index is a graphical method of determining the number of clusters.
##                 In the plot of Hubert index, we seek a significant knee that corresponds to a 
##                 significant increase of the value of the measure i.e the significant peak in Hubert
##                 index second differences plot. 
## 

## *** : The D index is a graphical method of determining the number of clusters. 
##                 In the plot of D index, we seek a significant knee (the significant peak in Dindex
##                 second differences plot) that corresponds to a significant increase of the value of
##                 the measure. 
##  
## ******************************************************************* 
## * Among all indices:                                                
## * 10 proposed 2 as the best number of clusters 
## * 2 proposed 3 as the best number of clusters 
## * 6 proposed 4 as the best number of clusters 
## * 1 proposed 6 as the best number of clusters 
## * 1 proposed 12 as the best number of clusters 
## * 4 proposed 15 as the best number of clusters 
## 
##                    ***** Conclusion *****                            
##  
## * According to the majority rule, the best number of clusters is  2 
##  
##  
## *******************************************************************

Usando method=“complete”, se nos sugiere que el mejor número de clusters es 2.

Aplicamos el algoritmo de método jerárquico y veo el dendograma:

library(factoextra)
## Loading required package: ggplot2
## Warning: package 'ggplot2' was built under R version 3.4.4
## Welcome! Related Books: `Practical Guide To Cluster Analysis in R` at https://goo.gl/13EFCZ
algoritmo="hclust"
cuantosCluster=2
solucionJerarquica1 <- eclust(partidomorado_sub,
                              FUNcluster = algoritmo,
                              k = cuantosCluster,
                              method = "complete",
                              graph = FALSE)

fviz_dend(solucionJerarquica1, rect = TRUE, show_labels = T)
## Warning in data.frame(xmin = unlist(xleft), ymin = unlist(ybottom), xmax =
## unlist(xright), : row names were found from a short variable and have been
## discarded

Guardamos los resultados de la aglomeración en un data frame:

comitesHC = as.data.frame(solucionJerarquica1$cluster)
colnames(comitesHC)=c("jerarquico")

Hacemos merge:

partidomorado=merge(partidomorado,comitesHC,
                by.x="provincia",
                by.y=0)
head(partidomorado)
##   provincia          region score firmas militantes reuniones basico
## 1  ANGARAES    HUANCAVELICA    12      0          4         1      1
## 2  AREQUIPA        AREQUIPA    22      4          4         2      1
## 3    ASCOPE     LA LIBERTAD     4      1          2         0      0
## 4   ATALAYA         UCAYALI    10      0          1         2      0
## 5  AZANGARO            PUNO    13      0          2         3      0
## 6  BARRANCA LIMA PROVINCIAS     9      4          0         1      1
##   intermedio actividades comunica local               clasificacion
## 1          1           0        3     2                      NUCLEO
## 2          2           2        3     4 EN PROCESO DE CONSOLIDACION
## 3          0           0        0     1                    INACTIVO
## 4          0           1        2     4                      NUCLEO
## 5          0           1        4     3                      NUCLEO
## 6          1           1        0     1                      NUCLEO
##   jerarquico
## 1          1
## 2          2
## 3          1
## 4          1
## 5          1
## 6          2

Ahora veamos cuántas provincias están en cada cluster:

table(partidomorado$jerarquico)
## 
##  1  2 
## 66 29

Parece ser que en el cluster 2 están los CPPs que están mejor. Comprobemos si es así:

partidomorado[partidomorado$jerarquico=="2",]
##                 provincia          region score firmas militantes
## 2                AREQUIPA        AREQUIPA    22      4          4
## 6                BARRANCA LIMA PROVINCIAS     9      4          0
## 8                  CALLAO          CALLAO    20      3          4
## 10                CANCHIS           CUSCO    18      4          3
## 22                CHINCHA             ICA    12      4          4
## 26                 COLLAO            PUNO    15      4          1
## 27             CONCEPCION           JUNIN    14      4          1
## 29                  CUSCO           CUSCO    28      4          4
## 30 DANIEL ALCIDES CARRION           PASCO    15      4          1
## 34               HUAMANGA        AYACUCHO    28      4          4
## 41                 HUARAL LIMA PROVINCIAS    13      3          0
## 42                 HUARAZ          ANCASH    17      3          1
## 43             HUAROCHIRI LIMA PROVINCIAS    13      2          2
## 46                   ICA              ICA    23      4          4
## 49          LA CONVENCION           CUSCO    21      4          4
## 53          LEONCIO PRADO         HUANUCO    12      3          1
## 54                 LORETO          LORETO    15      4          2
## 57                 MAYNAS          LORETO    18      3          3
## 59                   MOHO            PUNO    15      3          1
## 61                 NAZCA              ICA    12      4          4
## 63                   OYON LIMA PROVINCIAS    13      3          1
## 66                  PAITA           PIURA    14      4          1
## 68                  PASCO           PASCO    17      4          1
## 69                  PISCO             ICA    14      4          4
## 71                   PUNO            PUNO    23      4          4
## 72           QUISPICANCHI           CUSCO    17      4          2
## 76              SAN ROMAN            PUNO    22      4          4
## 83                  TACNA           TACNA    23      4          4
## 92             YAROWILLCA         HUANUCO    11      4          1
##    reuniones basico intermedio actividades comunica local
## 2          2      1          2           2        3     4
## 6          1      1          1           1        0     1
## 8          2      1          2           1        4     3
## 10         2      1          1           1        3     3
## 22         0      0          0           0        3     1
## 26         2      0          0           1        4     3
## 27         3      0          0           0        4     2
## 29         2      2          4           4        4     4
## 30         2      1          1           0        3     3
## 34         4      2          2           4        4     4
## 41         2      1          1           1        4     1
## 42         3      1          1           1        4     3
## 43         1      1          1           1        4     1
## 46         2      2          3           1        4     3
## 49         2      1          1           2        4     3
## 53         3      0          0           1        2     2
## 54         2      0          0           0        3     4
## 57         3      1          0           1        3     4
## 59         3      0          0           1        4     3
## 61         0      0          0           0        3     1
## 63         1      1          1           1        4     1
## 66         2      1          1           0        3     2
## 68         3      1          2           0        3     3
## 69         0      1          1           0        3     1
## 71         3      1          1           2        4     4
## 72         2      1          1           1        3     3
## 76         3      1          1           1        4     4
## 83         3      2          2           1        4     3
## 92         2      0          0           1        2     1
##                  clasificacion jerarquico
## 2  EN PROCESO DE CONSOLIDACION          2
## 6                       NUCLEO          2
## 8              EN CONSTRUCCION          2
## 10             EN CONSTRUCCION          2
## 22                      NUCLEO          2
## 26             EN CONSTRUCCION          2
## 27             EN CONSTRUCCION          2
## 29                 CONSOLIDADO          2
## 30             EN CONSTRUCCION          2
## 34                 CONSOLIDADO          2
## 41                      NUCLEO          2
## 42             EN CONSTRUCCION          2
## 43                      NUCLEO          2
## 46 EN PROCESO DE CONSOLIDACION          2
## 49 EN PROCESO DE CONSOLIDACION          2
## 53                      NUCLEO          2
## 54             EN CONSTRUCCION          2
## 57             EN CONSTRUCCION          2
## 59             EN CONSTRUCCION          2
## 61                      NUCLEO          2
## 63                      NUCLEO          2
## 66             EN CONSTRUCCION          2
## 68             EN CONSTRUCCION          2
## 69             EN CONSTRUCCION          2
## 71 EN PROCESO DE CONSOLIDACION          2
## 72             EN CONSTRUCCION          2
## 76 EN PROCESO DE CONSOLIDACION          2
## 83 EN PROCESO DE CONSOLIDACION          2
## 92                      NUCLEO          2

En efecto: en este cluster se encuentran las dos provincias clasificadas con la categoría más alta (CONSOLIDADO) y las siete provincias clasificadas con la segunda categoría más alta (EN PROCESO DE CONSOLIDACION).

Veamos qué tan buena ha sido esta aglomeración usando método jerárquico. Calculemos las siluetas:

fviz_silhouette(solucionJerarquica1)
##   cluster size ave.sil.width
## 1       1   66          0.34
## 2       2   29          0.23

Accedamos a la info de las siluetas:

siluetas <- solucionJerarquica1$silinfo$widths

Veamos las provincias que están mal agrupadas:

siluetas[siluetas$sil_width<0,]
##            cluster neighbor   sil_width
## PIURA            1        2 -0.04464900
## HUANCAYO         1        2 -0.06170747
## SANTA            1        2 -0.06981466
## HUAROCHIRI       2        1 -0.03129100

En el caso de Piura, Huancayo y Santa, se trata de provincias clasificadas inicialmente en la categoría EN CONSTRUCCIÓN. En el caso de Huarochirí, se trata de una provincia clasificada inicialmente en la categoría NUCLEO.

Guardemos la información de las provincias mal agrupadas en un data frame llamado malAgrupadasHC:

malAgrupadasHC=as.data.frame(siluetas[siluetas$sil_width<0,])
malAgrupadasHC
##            cluster neighbor   sil_width
## PIURA            1        2 -0.04464900
## HUANCAYO         1        2 -0.06170747
## SANTA            1        2 -0.06981466
## HUAROCHIRI       2        1 -0.03129100

Usando method=“complete” se nos sugirió clasificar en 2 clusters, con lo cual hay muy pocas provincias en uno de ellos (29, las que están mejor) y bastantes provincias en el otro (66). Esto no nos es tan útil para el trabajo político.

¿Qué tal si usamos method=“kmeans”? ¿Nos sugerirá dividir en 5 clusters, tal y como se hizo originalmente con la data? Probemos:

library(NbClust)
nb2 <- NbClust(partidomorado_sub,method="kmeans")

## *** : The Hubert index is a graphical method of determining the number of clusters.
##                 In the plot of Hubert index, we seek a significant knee that corresponds to a 
##                 significant increase of the value of the measure i.e the significant peak in Hubert
##                 index second differences plot. 
## 

## *** : The D index is a graphical method of determining the number of clusters. 
##                 In the plot of D index, we seek a significant knee (the significant peak in Dindex
##                 second differences plot) that corresponds to a significant increase of the value of
##                 the measure. 
##  
## ******************************************************************* 
## * Among all indices:                                                
## * 10 proposed 2 as the best number of clusters 
## * 1 proposed 3 as the best number of clusters 
## * 4 proposed 4 as the best number of clusters 
## * 2 proposed 5 as the best number of clusters 
## * 1 proposed 6 as the best number of clusters 
## * 1 proposed 7 as the best number of clusters 
## * 1 proposed 8 as the best number of clusters 
## * 4 proposed 15 as the best number of clusters 
## 
##                    ***** Conclusion *****                            
##  
## * According to the majority rule, the best number of clusters is  2 
##  
##  
## *******************************************************************

Usando method=“kmeans” también se nos sugiere que solo debiéramos trabajar con 2 clusters.

Dado que ya mencionábamos que la idea original del Partido es clasificar a los CPP en 5 grupos, pues eso permitirá organizar mejor el trabajo político [aplicar diferentes planes de acción para las provincias en cada uno de los 5 grupos] apliquemos el método k-medias dividiendo en 5 clusters:

algoritmo="kmeans"
cuantosClusters=5
solucionKmeans1 <- eclust(partidomorado_sub,
                          FUNcluster = algoritmo,
                          k = cuantosClusters,
                          graph = F)

Saquemos el mapa de provincias:

fviz_cluster(solucionKmeans1, geom="point", ellipse = F)

Ahora, guardemos los clusters:

comitesK = as.data.frame(solucionKmeans1$cluster)
colnames(comitesK)=c("kmedias")

Hacemos merge:

partidomorado=merge(partidomorado,comitesK,
                by.x="provincia",
                by.y=0)
head(partidomorado)
##   provincia          region score firmas militantes reuniones basico
## 1  ANGARAES    HUANCAVELICA    12      0          4         1      1
## 2  AREQUIPA        AREQUIPA    22      4          4         2      1
## 3    ASCOPE     LA LIBERTAD     4      1          2         0      0
## 4   ATALAYA         UCAYALI    10      0          1         2      0
## 5  AZANGARO            PUNO    13      0          2         3      0
## 6  BARRANCA LIMA PROVINCIAS     9      4          0         1      1
##   intermedio actividades comunica local               clasificacion
## 1          1           0        3     2                      NUCLEO
## 2          2           2        3     4 EN PROCESO DE CONSOLIDACION
## 3          0           0        0     1                    INACTIVO
## 4          0           1        2     4                      NUCLEO
## 5          0           1        4     3                      NUCLEO
## 6          1           1        0     1                      NUCLEO
##   jerarquico kmedias
## 1          1       4
## 2          2       2
## 3          1       1
## 4          1       1
## 5          1       5
## 6          2       3

Veamos cuántas provincias hay por cluster usando el método K-medias:

table(partidomorado$kmedias)
## 
##  1  2  3  4  5 
## 31 14 23  8 19

Veamos qué provincias están en cada cluster. Empecemos con el cluster 1:

partidomorado[partidomorado$kmedias=="1",]
##           provincia       region score firmas militantes reuniones basico
## 3            ASCOPE  LA LIBERTAD     4      1          2         0      0
## 4           ATALAYA      UCAYALI    10      0          1         2      0
## 12         CANGALLO     AYACUCHO     9      0          3         1      0
## 14          CARHUAZ       ANCASH     5      0          0         1      0
## 15            CASMA       ANCASH     5      0          0         1      0
## 16         CASTILLA     AREQUIPA     9      0          2         1      0
## 17         CAYLLOMA     AREQUIPA     9      0          1         1      0
## 18        CELENDIN     CAJAMARCA     6      0          1         1      0
## 20          CHEPEN   LA LIBERTAD     7      0          2         1      0
## 24            CHOTA    CAJAMARCA     9      0          2         1      1
## 31          ESPINAR        CUSCO     6      0          1         1      0
## 33        HUALGAYOC    CAJAMARCA     9      0          2         1      1
## 35   HUANCA SANCOS      AYACUCHO     7      0          1         1      0
## 37     HUANCAVELICA HUANCAVELICA     8      2          1         0      1
## 39           HUANTA     AYACUCHO     9      0          2         1      0
## 45          HUAYLAS       ANCASH     6      0          1         2      1
## 50           LA MAR     AYACUCHO     8      0          2         0      0
## 55         LUCANAS      AYACUCHO     7      0          1         1      0
## 56  MARISCAL NIETO      MOQUEGUA     7      0          3         2      0
## 62           OTUZCO  LA LIBERTAD     5      0          1         0      0
## 64         PACHITEA      HUANUCO     7      0          1         3      0
## 65       PADRE ABAD      UCAYALI     6      0          1         2      0
## 67         PALLASCA       ANCASH     6      0          0         2      0
## 77 SANCHEZ CARRION   LA LIBERTAD     8      0          3         1      0
## 80           SATIPO        JUNIN     9      0          1         3      0
## 81           SUCRE      AYACUCHO     7      0          1         1      0
## 86         TAYACAJA HUANCAVELICA     7      0          1         2      0
## 88           TUMBES       TUMBES     7      0          2         3      0
## 89        UTCUBAMBA     AMAZONAS     6      0          1         1      0
## 90  VICTOR FAJARDO      AYACUCHO     7      0          1         1      0
## 91     VILCASHUAMAN     AYACUCHO     7      0          1         1      0
##    intermedio actividades comunica local clasificacion jerarquico kmedias
## 3           0           0        0     1      INACTIVO          1       1
## 4           0           1        2     4        NUCLEO          1       1
## 12          0           0        2     3        NUCLEO          1       1
## 14          0           0        3     1      INACTIVO          1       1
## 15          0           0        3     1      INACTIVO          1       1
## 16          0           0        3     3        NUCLEO          1       1
## 17          0           1        3     3        NUCLEO          1       1
## 18          0           0        2     2      INACTIVO          1       1
## 20          0           1        2     1        NUCLEO          1       1
## 24          0           0        3     2        NUCLEO          1       1
## 31          0           0        1     3      INACTIVO          1       1
## 33          0           0        3     2        NUCLEO          1       1
## 35          0           0        2     3        NUCLEO          1       1
## 37          1           0        2     1        NUCLEO          1       1
## 39          0           1        2     3        NUCLEO          1       1
## 45          0           0        0     2      INACTIVO          1       1
## 50          0           1        2     3        NUCLEO          1       1
## 55          0           0        2     3        NUCLEO          1       1
## 56          0           0        0     2        NUCLEO          1       1
## 62          0           1        2     1      INACTIVO          1       1
## 64          0           0        1     2        NUCLEO          1       1
## 65          0           0        1     2      INACTIVO          1       1
## 67          0           0        2     2      INACTIVO          1       1
## 77          0           1        2     1        NUCLEO          1       1
## 80          0           0        2     3        NUCLEO          1       1
## 81          0           0        2     3        NUCLEO          1       1
## 86          0           0        2     2        NUCLEO          1       1
## 88          0           0        0     2        NUCLEO          1       1
## 89          0           1        0     3      INACTIVO          1       1
## 90          0           0        2     3        NUCLEO          1       1
## 91          0           0        2     3        NUCLEO          1       1

Guardo esto en un data frame y ordeno decrecientemente por la variable score:

clusterK1=partidomorado[partidomorado$kmedias=="1",]
clusterK1[order(-clusterK1$score),]
##           provincia       region score firmas militantes reuniones basico
## 4           ATALAYA      UCAYALI    10      0          1         2      0
## 12         CANGALLO     AYACUCHO     9      0          3         1      0
## 16         CASTILLA     AREQUIPA     9      0          2         1      0
## 17         CAYLLOMA     AREQUIPA     9      0          1         1      0
## 24            CHOTA    CAJAMARCA     9      0          2         1      1
## 33        HUALGAYOC    CAJAMARCA     9      0          2         1      1
## 39           HUANTA     AYACUCHO     9      0          2         1      0
## 80           SATIPO        JUNIN     9      0          1         3      0
## 37     HUANCAVELICA HUANCAVELICA     8      2          1         0      1
## 50           LA MAR     AYACUCHO     8      0          2         0      0
## 77 SANCHEZ CARRION   LA LIBERTAD     8      0          3         1      0
## 20          CHEPEN   LA LIBERTAD     7      0          2         1      0
## 35   HUANCA SANCOS      AYACUCHO     7      0          1         1      0
## 55         LUCANAS      AYACUCHO     7      0          1         1      0
## 56  MARISCAL NIETO      MOQUEGUA     7      0          3         2      0
## 64         PACHITEA      HUANUCO     7      0          1         3      0
## 81           SUCRE      AYACUCHO     7      0          1         1      0
## 86         TAYACAJA HUANCAVELICA     7      0          1         2      0
## 88           TUMBES       TUMBES     7      0          2         3      0
## 90  VICTOR FAJARDO      AYACUCHO     7      0          1         1      0
## 91     VILCASHUAMAN     AYACUCHO     7      0          1         1      0
## 18        CELENDIN     CAJAMARCA     6      0          1         1      0
## 31          ESPINAR        CUSCO     6      0          1         1      0
## 45          HUAYLAS       ANCASH     6      0          1         2      1
## 65       PADRE ABAD      UCAYALI     6      0          1         2      0
## 67         PALLASCA       ANCASH     6      0          0         2      0
## 89        UTCUBAMBA     AMAZONAS     6      0          1         1      0
## 14          CARHUAZ       ANCASH     5      0          0         1      0
## 15            CASMA       ANCASH     5      0          0         1      0
## 62           OTUZCO  LA LIBERTAD     5      0          1         0      0
## 3            ASCOPE  LA LIBERTAD     4      1          2         0      0
##    intermedio actividades comunica local clasificacion jerarquico kmedias
## 4           0           1        2     4        NUCLEO          1       1
## 12          0           0        2     3        NUCLEO          1       1
## 16          0           0        3     3        NUCLEO          1       1
## 17          0           1        3     3        NUCLEO          1       1
## 24          0           0        3     2        NUCLEO          1       1
## 33          0           0        3     2        NUCLEO          1       1
## 39          0           1        2     3        NUCLEO          1       1
## 80          0           0        2     3        NUCLEO          1       1
## 37          1           0        2     1        NUCLEO          1       1
## 50          0           1        2     3        NUCLEO          1       1
## 77          0           1        2     1        NUCLEO          1       1
## 20          0           1        2     1        NUCLEO          1       1
## 35          0           0        2     3        NUCLEO          1       1
## 55          0           0        2     3        NUCLEO          1       1
## 56          0           0        0     2        NUCLEO          1       1
## 64          0           0        1     2        NUCLEO          1       1
## 81          0           0        2     3        NUCLEO          1       1
## 86          0           0        2     2        NUCLEO          1       1
## 88          0           0        0     2        NUCLEO          1       1
## 90          0           0        2     3        NUCLEO          1       1
## 91          0           0        2     3        NUCLEO          1       1
## 18          0           0        2     2      INACTIVO          1       1
## 31          0           0        1     3      INACTIVO          1       1
## 45          0           0        0     2      INACTIVO          1       1
## 65          0           0        1     2      INACTIVO          1       1
## 67          0           0        2     2      INACTIVO          1       1
## 89          0           1        0     3      INACTIVO          1       1
## 14          0           0        3     1      INACTIVO          1       1
## 15          0           0        3     1      INACTIVO          1       1
## 62          0           1        2     1      INACTIVO          1       1
## 3           0           0        0     1      INACTIVO          1       1

Vemos que en el cluster 1 se encuentran todas las provincias que inicialmente fueron ubicadas en la categoría INACTIVO, así como algunas provincias catalogadas como NUCLEO, pero con puntaje bajo (solo Atalaya tiene un score de 10).

Ahora veamos el cluster 2. Guardaré directamente las provincias de este cluster en un data frame, y ordeno decrecientemente por la variable score:

clusterK2=partidomorado[partidomorado$kmedias=="2",]
clusterK2[order(-clusterK2$score),]
##        provincia   region score firmas militantes reuniones basico
## 29         CUSCO    CUSCO    28      4          4         2      2
## 34      HUAMANGA AYACUCHO    28      4          4         4      2
## 46          ICA       ICA    23      4          4         2      2
## 71          PUNO     PUNO    23      4          4         3      1
## 83         TACNA    TACNA    23      4          4         3      2
## 2       AREQUIPA AREQUIPA    22      4          4         2      1
## 76     SAN ROMAN     PUNO    22      4          4         3      1
## 49 LA CONVENCION    CUSCO    21      4          4         2      1
## 8         CALLAO   CALLAO    20      3          4         2      1
## 10       CANCHIS    CUSCO    18      4          3         2      1
## 57        MAYNAS   LORETO    18      3          3         3      1
## 69         PISCO      ICA    14      4          4         0      1
## 22       CHINCHA      ICA    12      4          4         0      0
## 61        NAZCA       ICA    12      4          4         0      0
##    intermedio actividades comunica local               clasificacion
## 29          4           4        4     4                 CONSOLIDADO
## 34          2           4        4     4                 CONSOLIDADO
## 46          3           1        4     3 EN PROCESO DE CONSOLIDACION
## 71          1           2        4     4 EN PROCESO DE CONSOLIDACION
## 83          2           1        4     3 EN PROCESO DE CONSOLIDACION
## 2           2           2        3     4 EN PROCESO DE CONSOLIDACION
## 76          1           1        4     4 EN PROCESO DE CONSOLIDACION
## 49          1           2        4     3 EN PROCESO DE CONSOLIDACION
## 8           2           1        4     3             EN CONSTRUCCION
## 10          1           1        3     3             EN CONSTRUCCION
## 57          0           1        3     4             EN CONSTRUCCION
## 69          1           0        3     1             EN CONSTRUCCION
## 22          0           0        3     1                      NUCLEO
## 61          0           0        3     1                      NUCLEO
##    jerarquico kmedias
## 29          2       2
## 34          2       2
## 46          2       2
## 71          2       2
## 83          2       2
## 2           2       2
## 76          2       2
## 49          2       2
## 8           2       2
## 10          2       2
## 57          2       2
## 69          2       2
## 22          2       2
## 61          2       2

Vemos que en el cluster 2 se encuentran las nueve provincias con mayor score: las dos únicas provincias catalogadas como CONSOLIDADO (Huamanga y Cusco), las seis provincias catalogadas como EN PROCESO DE CONSOLIDACIÓN (Ica, Puno, Tacna, Arequipa, San Román y La Convención) y la provincia catalogada EN CONSTRUCCIÓN con el score más alto (Callao). Con un score menor, terminan de componer este cluster las provincias de Canchis, Maynas, Pisco (catalogadas como EN CONSTRUCCIÓN); y las provincias de Chincha y Nazca (catalogadas inicialmente como NUCLEO).

Veamos el cluster 3. Guardaré directamente las provincias de este cluster en un data frame, y ordeno decrecientemente por la variable score:

clusterK3=partidomorado[partidomorado$kmedias=="3",]
clusterK3[order(-clusterK3$score),]
##                 provincia          region score firmas militantes
## 38               HUANCAYO           JUNIN    18      2          2
## 42                 HUARAZ          ANCASH    17      3          1
## 68                  PASCO           PASCO    17      4          1
## 72           QUISPICANCHI           CUSCO    17      4          2
## 79                  SANTA          ANCASH    17      2          2
## 19            CHANCHAMAYO           JUNIN    15      2          2
## 26                 COLLAO            PUNO    15      4          1
## 30 DANIEL ALCIDES CARRION           PASCO    15      4          1
## 54                 LORETO          LORETO    15      4          2
## 59                   MOHO            PUNO    15      3          1
## 27             CONCEPCION           JUNIN    14      4          1
## 66                  PAITA           PIURA    14      4          1
## 41                 HUARAL LIMA PROVINCIAS    13      3          0
## 43             HUAROCHIRI LIMA PROVINCIAS    13      2          2
## 47                  ISLAY        AREQUIPA    13      2          0
## 63                   OYON LIMA PROVINCIAS    13      3          1
## 74                  RIOJA      SAN MARTIN    13      2          2
## 40                HUANUCO         HUANUCO    12      2          1
## 53          LEONCIO PRADO         HUANUCO    12      3          1
## 85                  TARMA           JUNIN    12      2          1
## 23             CHINCHEROS        APURIMAC    11      2          1
## 92             YAROWILLCA         HUANUCO    11      4          1
## 6                BARRANCA LIMA PROVINCIAS     9      4          0
##    reuniones basico intermedio actividades comunica local   clasificacion
## 38         3      1          1           2        4     3 EN CONSTRUCCION
## 42         3      1          1           1        4     3 EN CONSTRUCCION
## 68         3      1          2           0        3     3 EN CONSTRUCCION
## 72         2      1          1           1        3     3 EN CONSTRUCCION
## 79         1      2          2           1        4     3 EN CONSTRUCCION
## 19         2      1          1           1        3     3 EN CONSTRUCCION
## 26         2      0          0           1        4     3 EN CONSTRUCCION
## 30         2      1          1           0        3     3 EN CONSTRUCCION
## 54         2      0          0           0        3     4 EN CONSTRUCCION
## 59         3      0          0           1        4     3 EN CONSTRUCCION
## 27         3      0          0           0        4     2 EN CONSTRUCCION
## 66         2      1          1           0        3     2 EN CONSTRUCCION
## 41         2      1          1           1        4     1          NUCLEO
## 43         1      1          1           1        4     1          NUCLEO
## 47         2      1          1           1        3     3          NUCLEO
## 63         1      1          1           1        4     1          NUCLEO
## 74         3      0          0           1        2     3          NUCLEO
## 40         3      0          0           0        3     3          NUCLEO
## 53         3      0          0           1        2     2          NUCLEO
## 85         2      0          0           0        3     4          NUCLEO
## 23         2      0          0           0        3     3          NUCLEO
## 92         2      0          0           1        2     1          NUCLEO
## 6          1      1          1           1        0     1          NUCLEO
##    jerarquico kmedias
## 38          1       3
## 42          2       3
## 68          2       3
## 72          2       3
## 79          1       3
## 19          1       3
## 26          2       3
## 30          2       3
## 54          2       3
## 59          2       3
## 27          2       3
## 66          2       3
## 41          2       3
## 43          2       3
## 47          1       3
## 63          2       3
## 74          1       3
## 40          1       3
## 53          2       3
## 85          1       3
## 23          1       3
## 92          2       3
## 6           2       3

Veamos el cluster 4. Guardaré directamente las provincias de este cluster en un data frame, y ordeno decrecientemente por la variable score:

clusterK4=partidomorado[partidomorado$kmedias=="4",]
clusterK4[order(-clusterK4$score),]
##            provincia       region score firmas militantes reuniones basico
## 28 CORONEL PORTILLO       UCAYALI    20      0          4         4      1
## 73            RECUAY       ANCASH    19      1          3         2      2
## 70             PIURA        PIURA    17      2          3         3      1
## 7          CAJAMARCA    CAJAMARCA    16      0          4         2      1
## 87          TRUJILLO  LA LIBERTAD    16      0          4         2      0
## 51        LAMBAYEQUE   LAMBAYEQUE    13      1          4         3      0
## 1           ANGARAES HUANCAVELICA    12      0          4         1      1
## 48             JAEN     CAJAMARCA    12      0          3         1      1
##    intermedio actividades comunica local   clasificacion jerarquico
## 28          1           2        4     4 EN CONSTRUCCION          1
## 73          1           2        4     4 EN CONSTRUCCION          1
## 70          1           1        3     3 EN CONSTRUCCION          1
## 7           0           1        4     4 EN CONSTRUCCION          1
## 87          0           2        4     4 EN CONSTRUCCION          1
## 51          0           2        0     3          NUCLEO          1
## 1           1           0        3     2          NUCLEO          1
## 48          0           0        3     4          NUCLEO          1
##    kmedias
## 28       4
## 73       4
## 70       4
## 7        4
## 87       4
## 51       4
## 1        4
## 48       4

Veamos el cluster 5. Guardaré directamente las provincias de este cluster en un data frame, y ordeno decrecientemente por la variable score:

clusterK5=partidomorado[partidomorado$kmedias=="5",]
clusterK5[order(-clusterK5$score),]
##                provincia          region score firmas militantes reuniones
## 52                 LAMPA            PUNO    14      0          2         3
## 5               AZANGARO            PUNO    13      0          2         3
## 13              CARABAYA            PUNO    13      0          2         3
## 21              CHICLAYO      LAMBAYEQUE    13      0          1         3
## 58                MELGAR            PUNO    13      0          2         2
## 78                SANDIA            PUNO    13      0          2         3
## 94                YUNGAY          ANCASH    13      1          1         2
## 95               YUNGUYO            PUNO    13      0          2         3
## 60             MORROPON            PIURA    12      1          1         3
## 75 SAN ANTONIO DE PUTINA            PUNO    12      0          1         3
## 82               SULLANA           PIURA    12      1          1         3
## 36              HUANCANE            PUNO    11      1          1         2
## 84                TALARA           PIURA    11      1          1         2
## 32             FERRENAFE      LAMBAYEQUE    10      1          1         3
## 11                CANETE LIMA PROVINCIAS     9      1          0         1
## 25              CHUCUITO            PUNO     9      0          1         2
## 93                YAUYOS LIMA PROVINCIAS     9      0          1         1
## 9                CAMANA         AREQUIPA     8      1          0         2
## 44                HUAURA LIMA PROVINCIAS     8      0          0         1
##    basico intermedio actividades comunica local   clasificacion jerarquico
## 52      1          0           1        4     3 EN CONSTRUCCION          1
## 5       0          0           1        4     3          NUCLEO          1
## 13      0          0           1        4     3          NUCLEO          1
## 21      1          1           1        3     3          NUCLEO          1
## 58      0          0           2        4     3          NUCLEO          1
## 78      0          0           1        4     3          NUCLEO          1
## 94      1          1           1        4     2          NUCLEO          1
## 95      0          0           1        4     3          NUCLEO          1
## 60      1          1           0        3     2          NUCLEO          1
## 75      0          0           1        4     3          NUCLEO          1
## 82      1          1           0        3     2          NUCLEO          1
## 36      0          0           1        3     3          NUCLEO          1
## 84      1          1           0        3     2          NUCLEO          1
## 32      0          0           0        3     2          NUCLEO          1
## 11      1          1           0        4     1          NUCLEO          1
## 25      0          0           0        3     3          NUCLEO          1
## 93      1          1           0        4     1          NUCLEO          1
## 9       0          0           0        3     2          NUCLEO          1
## 44      1          1           0        4     1          NUCLEO          1
##    kmedias
## 52       5
## 5        5
## 13       5
## 21       5
## 58       5
## 78       5
## 94       5
## 95       5
## 60       5
## 75       5
## 82       5
## 36       5
## 84       5
## 32       5
## 11       5
## 25       5
## 93       5
## 9        5
## 44       5

Veamos ahora, a través de las siluetas, qué provincias quedaron mal agrupadas tras hacer K-medias:

fviz_silhouette(solucionKmeans1)
##   cluster size ave.sil.width
## 1       1   31          0.22
## 2       2   14          0.22
## 3       3   23          0.16
## 4       4    8          0.12
## 5       5   19          0.26

siluetasKmeans <- solucionKmeans1$silinfo$widths
siluetasKmeans[siluetasKmeans$sil_width<0,]
##            cluster neighbor    sil_width
## SATIPO           1        5 -0.015418922
## MAYNAS           2        3 -0.063540008
## CHINCHEROS       3        5 -0.007069707
## HUANCAYO         3        5 -0.015271522
## HUAROCHIRI       3        5 -0.021804114
## HUANUCO          3        5 -0.032945980
## PIURA            4        3 -0.029639487

Guardemos la información de las provincias mal agrupadas en un data frame llamado malAgrupadasK:

malAgrupadasK=as.data.frame(siluetasKmeans[siluetasKmeans$sil_width<0,])
malAgrupadasK
##            cluster neighbor    sil_width
## SATIPO           1        5 -0.015418922
## MAYNAS           2        3 -0.063540008
## CHINCHEROS       3        5 -0.007069707
## HUANCAYO         3        5 -0.015271522
## HUAROCHIRI       3        5 -0.021804114
## HUANUCO          3        5 -0.032945980
## PIURA            4        3 -0.029639487

Viendo similitudes entre provincias

Saco distancias:

partidomorado_d=dist(partidomorado_sub)

Genero los puntos para el mapa de similitudes:

partidomorado_r=cmdscale(partidomorado_d,eig = T,k=2)
partidomorado_r$GOF
## [1] 0.622547 0.622547

Ploteo el mapa:

titulo="Mapa de Similitudes entre Comités Políticos Provinciales"
x <- partidomorado_r$points[,1]
y <- partidomorado_r$points[,2]
plot(x, y, main=titulo)

Pongo los nombres de las provincias:

plot(x, y, xlab="Dimension 1", ylab="Dimension 2", main=titulo, type="n")
columnForLabels=dimnames(partidomorado_r[[1]])[[1]]
text(x, y,labels = columnForLabels , cex = 0.6)


Componentes Principales

¿Podré reducir las variables de la medición original en uno o dos índices? Veamos.

summary(partidomorado_sub)
##      firmas        militantes      reuniones         basico      
##  Min.   :0.000   Min.   :0.000   Min.   :0.000   Min.   :0.0000  
##  1st Qu.:0.000   1st Qu.:1.000   1st Qu.:1.000   1st Qu.:0.0000  
##  Median :1.000   Median :1.000   Median :2.000   Median :0.0000  
##  Mean   :1.453   Mean   :1.832   Mean   :1.895   Mean   :0.5263  
##  3rd Qu.:3.000   3rd Qu.:3.000   3rd Qu.:3.000   3rd Qu.:1.0000  
##  Max.   :4.000   Max.   :4.000   Max.   :4.000   Max.   :2.0000  
##    intermedio      actividades        comunica         local      
##  Min.   :0.0000   Min.   :0.0000   Min.   :0.000   Min.   :1.000  
##  1st Qu.:0.0000   1st Qu.:0.0000   1st Qu.:2.000   1st Qu.:2.000  
##  Median :0.0000   Median :1.0000   Median :3.000   Median :3.000  
##  Mean   :0.5053   Mean   :0.6842   Mean   :2.842   Mean   :2.558  
##  3rd Qu.:1.0000   3rd Qu.:1.0000   3rd Qu.:4.000   3rd Qu.:3.000  
##  Max.   :4.0000   Max.   :4.0000   Max.   :4.000   Max.   :4.000

Saco matriz de correlación:

cor(partidomorado_sub)
##                 firmas militantes  reuniones    basico intermedio
## firmas      1.00000000 0.29421005 0.16332220 0.4349210  0.5420308
## militantes  0.29421005 1.00000000 0.09819305 0.3482715  0.3358323
## reuniones   0.16332220 0.09819305 1.00000000 0.1466701  0.1453900
## basico      0.43492098 0.34827149 0.14667005 1.0000000  0.8388517
## intermedio  0.54203082 0.33583230 0.14539003 0.8388517  1.0000000
## actividades 0.29052215 0.48589483 0.35993046 0.3977820  0.4684746
## comunica    0.29697011 0.20873345 0.26993522 0.4332780  0.3980562
## local       0.06723605 0.38446168 0.48282996 0.1451092  0.1345141
##             actividades  comunica      local
## firmas        0.2905221 0.2969701 0.06723605
## militantes    0.4858948 0.2087335 0.38446168
## reuniones     0.3599305 0.2699352 0.48282996
## basico        0.3977820 0.4332780 0.14510919
## intermedio    0.4684746 0.3980562 0.13451408
## actividades   1.0000000 0.3428221 0.44276288
## comunica      0.3428221 1.0000000 0.24302180
## local         0.4427629 0.2430218 1.00000000

Hago KMO:

library(psych)
## Warning: package 'psych' was built under R version 3.4.4
## 
## Attaching package: 'psych'
## The following objects are masked from 'package:ggplot2':
## 
##     %+%, alpha
KMO(cor(partidomorado_sub))
## Kaiser-Meyer-Olkin factor adequacy
## Call: KMO(r = cor(partidomorado_sub))
## Overall MSA =  0.72
## MSA for each item = 
##      firmas  militantes   reuniones      basico  intermedio actividades 
##        0.79        0.71        0.63        0.68        0.66        0.81 
##    comunica       local 
##        0.90        0.67

Ahoga hago la prueba de esfericidad de Bartlett:

cortest.bartlett(cor(partidomorado_sub),n=nrow(partidomorado_sub))
## $chisq
## [1] 280.4077
## 
## $p.value
## [1] 1.843992e-43
## 
## $df
## [1] 28

Veo en cuántas dimensiones me sugieren reducir con los eigenvalues:

eigenf= eigen(cor(partidomorado_sub))
eigenf$values
## [1] 3.3770192 1.4426814 0.9126513 0.6781722 0.6022383 0.4713939 0.3754659
## [8] 0.1403778

Sugiere reducir en dos dimensiones. No obstante, lo que se busca es tener una mejor clasificación a la que ya se tiene. Así que nos quedamos con una sola dimensión.

resultadoPr=principal(cor(partidomorado_sub),1,rotate="varimax", scores=T) 
print(resultadoPr,digits=3, cut=0.40)
## Principal Components Analysis
## Call: principal(r = cor(partidomorado_sub), nfactors = 1, rotate = "varimax", 
##     scores = T)
## Standardized loadings (pattern matrix) based upon correlation matrix
##               PC1    h2    u2 com
## firmas      0.614 0.376 0.624   1
## militantes  0.608 0.370 0.630   1
## reuniones   0.448 0.201 0.799   1
## basico      0.779 0.608 0.392   1
## intermedio  0.805 0.648 0.352   1
## actividades 0.738 0.545 0.455   1
## comunica    0.615 0.379 0.621   1
## local       0.500 0.250 0.750   1
## 
##                  PC1
## SS loadings    3.377
## Proportion Var 0.422
## 
## Mean item complexity =  1
## Test of the hypothesis that 1 component is sufficient.
## 
## The root mean square of the residuals (RMSR) is  0.15 
## 
## Fit based upon off diagonal values = 0.832

Este nuevo índice explica el 42,2% de la varianza de las variables originales.

Guardo los scores de este nueva dimensión:

regresFactors=factor.scores(partidomorado_sub,resultadoPr)$scores

Hago merge:

partidomorado=merge(partidomorado,regresFactors,
                 by.x = "provincia",
                 by.y=0)
head(partidomorado)
##   provincia          region score firmas militantes reuniones basico
## 1  ANGARAES    HUANCAVELICA    12      0          4         1      1
## 2  AREQUIPA        AREQUIPA    22      4          4         2      1
## 3    ASCOPE     LA LIBERTAD     4      1          2         0      0
## 4   ATALAYA         UCAYALI    10      0          1         2      0
## 5  AZANGARO            PUNO    13      0          2         3      0
## 6  BARRANCA LIMA PROVINCIAS     9      4          0         1      1
##   intermedio actividades comunica local               clasificacion
## 1          1           0        3     2                      NUCLEO
## 2          2           2        3     4 EN PROCESO DE CONSOLIDACION
## 3          0           0        0     1                    INACTIVO
## 4          0           1        2     4                      NUCLEO
## 5          0           1        4     3                      NUCLEO
## 6          1           1        0     1                      NUCLEO
##   jerarquico kmedias          PC1
## 1          1       4  0.116548568
## 2          2       2  1.854028337
## 3          1       1 -1.513387390
## 4          1       1 -0.448792214
## 5          1       5 -0.006575008
## 6          2       3 -0.373031886

Creo un data frame con las provincias ordenadas decrecientemente de acuerdo al nuevo índice:

provinciasOrdenado=partidomorado[order(-partidomorado$PC1),]
row.names(provinciasOrdenado)=NULL

Se desea que el nuevo ordenamiento de las provincias esté hecho de acuerdo al nuevo índice. Pero como de todos modos lo que se desea es tener grupos de provincias similares, se tratará de combinar el ordenamiento que brinda el nuevo índice con lo previamente hecho usando k-medias.

K-medias había puesto el siguiente número de provincias en cada cluster:

table(partidomorado$kmedias)
## 
##  1  2  3  4  5 
## 31 14 23  8 19

Si ordenamos los clusters decrecientemente de acuerdo al nuevo índice (PC1), vemos que el orden de los clusters es: 2, 4, 3, 5, 1

Así, finalmente se opta por una clasificación de las provincias de las siguiente manera:

  • Grupo A: Cusco, Huamanga, Ica, Tacna, Arequipa, Puno, Recuay, San Roman, La Convención, Coronel Portillo y Callao

  • Grupo B: Santa, Huancayo, Canchis, Piura, Huaraz, Pasco, Maynas, Quispicanchi, Cajamarca, Chanchamayo, Trujillo

  • Grupo C: Daniel Alcides Carrión, Chiclayo, Lampa, Yungay, Huarochiri, Islay, Oyon, Huaral, Pisco, Paita, Moho, Collao, Melgar, Angaraes, Morropon, Sullana, Loreto, Lambayeque, Azangaro, Carabaya, Sandia, Yunguyo, Jaen, Talara

  • Grupo D: Rioja, Concepcion, San Antonio de Putina, Leoncio Prado, Yauyos, Huancane, Tarma, Cañete, Huanuco, Barranca, Chincha, Nazca, Atalaya, Huaura, Yarowillca, Chota, Hualgayoc, Chincheros, Huancavelica, Caylloma, Huanta, Ferreñafe, Castilla, Chucuito

  • Grupo E: Cangallo, La Mar, Satipo, Sanchez Carrion, Camana, Chepen, Huaylas, Huanca Sancos, Lucanas, Sucre, Victor Fajardo, Vilcashuaman, Tayacaja, Pachitea, Mariscal Nieto, Utcubamba, Tumbes, Celendin, Espinar, Pallasca, Padre Abad, Otuzco, Carhuaz, Casma, Ascope


De este modo, se soluciona el mal agrupamiento de las provincias cuando se clasificó tanto por jerárquico como por k-medias (Piura, Huancayo, el Santa y Maynas van al Grupo B; Huarochiri va al Grupo C; Chincheros y Huanuco van al Grupo D; y Satipo va al Grupo E) y se mejora la clasificación que antes nos brindaba la variable original score.