Limpieza de Datos y Conglomerados [IDH Perú 2011]

Abro la data idhPeruSucio.xlsx

folder="data"
fileName="idhPeruSucio.xlsx"
fileToRead=file.path(folder,fileName)
library(openxlsx)
idhPeru2011=read.xlsx(fileToRead,sheet = 2,startRow = 3,skipEmptyRows = T,skipEmptyCols = T)

Parte 1

Limpio la data

  1. Elimino columnas innecesarias
names(idhPeru2011)
##  [1] "Ubigeo.2010"                            
##  [2] "DEPARTAMENTO"                           
##  [3] "X3"                                     
##  [4] "Población"                              
##  [5] "X5"                                     
##  [6] "Índice.de.Desarrollo.Humano"            
##  [7] "X7"                                     
##  [8] "Esperanza.de.vida.al.nacer"             
##  [9] "X9"                                     
## [10] "Población.con.Educ..secundaria.completa"
## [11] "X11"                                    
## [12] "Años.de.educación.(Poblac..25.y.más)"   
## [13] "X13"                                    
## [14] "Ingreso.familiar.per.cápita"            
## [15] "X15"

No me sirven las columnas 5, 7, 9, 11, 13, 15. Las elimino:

idhPeru2011=idhPeru2011[,-c(seq(5,15,2))]
head(idhPeru2011,10)
##    Ubigeo.2010 DEPARTAMENTO           X3  Población
## 1         <NA>         <NA>    Provincia       <NA>
## 2         <NA>         <NA>     Distrito habitantes
## 3       000000     PERÚ  a/         <NA>   29797694
## 4       010000     AMAZONAS         <NA>     415466
## 5       010100         <NA>  Chachapoyas      54593
## 6       010101            1 Chachapoyas       27356
## 7       010102            2 Asuncion            299
## 8       010103            3    Balsas          1575
## 9       010104            4      Cheto          614
## 10      010105            5   Chiliquin         818
##    Índice.de.Desarrollo.Humano Esperanza.de.vida.al.nacer
## 1                         <NA>                       <NA>
## 2                          IDH                       años
## 3          0.49062753133803527         73.988808324083294
## 4          0.36896834005484624         73.907425803499493
## 5          0.42011363353481007          73.84634829093244
## 6            0.529899551279151         73.260919434330404
## 7          0.16425289206540494         73.420319021536045
## 8          0.25822125854315414         72.104074626617859
## 9          0.32069629851358578         77.529765589236035
## 10         0.20788539805432515          76.07404483370739
##    Población.con.Educ..secundaria.completa
## 1                                     <NA>
## 2                                        %
## 3                       66.276242603783089
## 4                        50.63017450619418
## 5                       44.610828903139826
## 6                       62.719298245614027
## 7                      0.70865224442015928
## 8                       14.467610356075934
## 9                       44.560066430346239
## 10                      8.0030467121040392
##    Años.de.educación.(Poblac..25.y.más) Ingreso.familiar.per.cápita
## 1                                  <NA>                        <NA>
## 2                                  años                    N.S. mes
## 3                    8.7942999999999998          659.05109246810969
## 4                    6.4861000000000004          406.61596243617157
## 5                     7.773447107820453          553.26026548843981
## 6                    9.9674319279253609          794.19624767619837
## 7                    6.0860556122448983          327.67005595861554
## 8                    5.2594621468926555          322.95667949577552
## 9                    4.9548379939209735          330.13946067043514
## 10                   4.3790553971486759          250.78737787688144
  1. Elimino filas innecesarias

Primero veo la cola:

tail(idhPeru2011,10)
##                                                                                                                                                                                                             Ubigeo.2010
## 2055                                                                                                                                                                                                             250302
## 2056                                                                                                                                                                                                             250303
## 2057                                                                                                                                                                                                             250400
## 2058                                                                                                                                                                                                             250401
## 2059 a/ Incluye las cifras estimadas del distrito de Carmen Alto en la provincia de Huamanga, departamento de Ayacucho, donde. Autoridades locales no permitieron la ejecución del Censo de Población y Vivienda 2007. 
## 2060                                                                                                       1/ Cifras estimadas. Autoridades locales no permitieron la ejecución del Censo de Población y Vivienda 2007.
## 2061                                                                                                 2/ Incluye a la población ubicada en área temporal por límites de fronteras de los distritos de Pangoa y Mazamari.
## 2062                                                                                                                                                                                    3/ Provincias de Lima y Callao.
## 2063                                                                                                                                                      Fuente: INEI. Censo de Población y Vivienda 2007. ENAHO 2007.
## 2064                                                                                                                                                                                            Elaboración: PNUD-Perú.
##      DEPARTAMENTO         X3 Población Índice.de.Desarrollo.Humano
## 2055            2 Irazola        22100         0.33858718953972994
## 2056            3 Curimana        7316         0.31504415477294173
## 2057         <NA>      Purús      4174         0.29557075331958632
## 2058            1     Purus       4174         0.29557075331958632
## 2059         <NA>       <NA>      <NA>                        <NA>
## 2060         <NA>       <NA>      <NA>                        <NA>
## 2061         <NA>       <NA>      <NA>                        <NA>
## 2062         <NA>       <NA>      <NA>                        <NA>
## 2063         <NA>       <NA>      <NA>                        <NA>
## 2064         <NA>       <NA>      <NA>                        <NA>
##      Esperanza.de.vida.al.nacer Población.con.Educ..secundaria.completa
## 2055         80.034685972357039                      31.039033297329429
## 2056         79.821071852559385                      28.941430538389447
## 2057         69.315075488828612                      17.433316771461119
## 2058         69.315075488828612                      17.433316771461119
## 2059                       <NA>                                    <NA>
## 2060                       <NA>                                    <NA>
## 2061                       <NA>                                    <NA>
## 2062                       <NA>                                    <NA>
## 2063                       <NA>                                    <NA>
## 2064                       <NA>                                    <NA>
##      Años.de.educación.(Poblac..25.y.más) Ingreso.familiar.per.cápita
## 2055                   6.5836826840270666          357.59092491362168
## 2056                   6.7281386028205956          301.18136546933988
## 2057                   7.1980202797202804           369.7633933689242
## 2058                   7.1980202797202804           369.7633933689242
## 2059                                 <NA>                        <NA>
## 2060                                 <NA>                        <NA>
## 2061                                 <NA>                        <NA>
## 2062                                 <NA>                        <NA>
## 2063                                 <NA>                        <NA>
## 2064                                 <NA>                        <NA>

Veo que desde la fila 2059 hasta la 2064 no me sirven. Las elimino:

idhPeru2011=idhPeru2011[-c(2059:2064),]
tail(idhPeru2011,10)
##      Ubigeo.2010 DEPARTAMENTO            X3 Población
## 2049      250201            1    Raymondi       31815
## 2050      250202            2     Sepahua        7790
## 2051      250203            3    Tahuania        7798
## 2052      250204            4      Yurua         2080
## 2053      250300         <NA>    Padre Abad     55866
## 2054      250301            1 Padre Abad        26450
## 2055      250302            2    Irazola        22100
## 2056      250303            3    Curimana        7316
## 2057      250400         <NA>         Purús      4174
## 2058      250401            1        Purus       4174
##      Índice.de.Desarrollo.Humano Esperanza.de.vida.al.nacer
## 2049         0.27527367394521718          62.97038565324543
## 2050         0.30414280921844089         62.719626075287557
## 2051         0.20694106350028488          66.33663214694424
## 2052         0.18801099118931258         63.833467411715191
## 2053         0.37937172234231209         78.351364684196838
## 2054         0.42160822113432284         77.498869442241173
## 2055         0.33858718953972994         80.034685972357039
## 2056         0.31504415477294173         79.821071852559385
## 2057         0.29557075331958632         69.315075488828612
## 2058         0.29557075331958632         69.315075488828612
##      Población.con.Educ..secundaria.completa
## 2049                      20.894950859894408
## 2050                      26.773095285900432
## 2051                       11.40516950071687
## 2052                      13.182170132157122
## 2053                      38.742362438524466
## 2054                      44.322344322344321
## 2055                      31.039033297329429
## 2056                      28.941430538389447
## 2057                      17.433316771461119
## 2058                      17.433316771461119
##      Años.de.educación.(Poblac..25.y.más) Ingreso.familiar.per.cápita
## 2049                   6.3232612679628062          349.93060085267564
## 2050                   6.9830102978112674          387.88833176044221
## 2051                   5.4978470408163265          218.98903543145508
## 2052                   4.4132037520391521          197.50839473965382
## 2053                   7.1190996005991014          432.32836581365569
## 2054                   7.6037246146872173          531.04930715239925
## 2055                   6.5836826840270666          357.59092491362168
## 2056                   6.7281386028205956          301.18136546933988
## 2057                   7.1980202797202804           369.7633933689242
## 2058                   7.1980202797202804           369.7633933689242

Ahora vuelvo a ver las primeras filas, para ver qué puedo eliminar:

head(idhPeru2011,7)
##   Ubigeo.2010 DEPARTAMENTO           X3  Población
## 1        <NA>         <NA>    Provincia       <NA>
## 2        <NA>         <NA>     Distrito habitantes
## 3      000000     PERÚ  a/         <NA>   29797694
## 4      010000     AMAZONAS         <NA>     415466
## 5      010100         <NA>  Chachapoyas      54593
## 6      010101            1 Chachapoyas       27356
## 7      010102            2 Asuncion            299
##   Índice.de.Desarrollo.Humano Esperanza.de.vida.al.nacer
## 1                        <NA>                       <NA>
## 2                         IDH                       años
## 3         0.49062753133803527         73.988808324083294
## 4         0.36896834005484624         73.907425803499493
## 5         0.42011363353481007          73.84634829093244
## 6           0.529899551279151         73.260919434330404
## 7         0.16425289206540494         73.420319021536045
##   Población.con.Educ..secundaria.completa
## 1                                    <NA>
## 2                                       %
## 3                      66.276242603783089
## 4                       50.63017450619418
## 5                      44.610828903139826
## 6                      62.719298245614027
## 7                     0.70865224442015928
##   Años.de.educación.(Poblac..25.y.más) Ingreso.familiar.per.cápita
## 1                                 <NA>                        <NA>
## 2                                 años                    N.S. mes
## 3                   8.7942999999999998          659.05109246810969
## 4                   6.4861000000000004          406.61596243617157
## 5                    7.773447107820453          553.26026548843981
## 6                   9.9674319279253609          794.19624767619837
## 7                   6.0860556122448983          327.67005595861554

Puedo eliminar las 3 primeras filas:

idhPeru2011=idhPeru2011[-c(1:3),]
head(idhPeru2011,10)
##    Ubigeo.2010 DEPARTAMENTO            X3 Población
## 4       010000     AMAZONAS          <NA>    415466
## 5       010100         <NA>   Chachapoyas     54593
## 6       010101            1  Chachapoyas      27356
## 7       010102            2  Asuncion           299
## 8       010103            3     Balsas         1575
## 9       010104            4       Cheto         614
## 10      010105            5    Chiliquin        818
## 11      010106            6 Chuquibamba        2169
## 12      010107            7   Granada           425
## 13      010108            8     Huancas        1063
##    Índice.de.Desarrollo.Humano Esperanza.de.vida.al.nacer
## 4          0.36896834005484624         73.907425803499493
## 5          0.42011363353481007          73.84634829093244
## 6            0.529899551279151         73.260919434330404
## 7          0.16425289206540494         73.420319021536045
## 8          0.25822125854315414         72.104074626617859
## 9          0.32069629851358578         77.529765589236035
## 10         0.20788539805432515          76.07404483370739
## 11         0.22967741105657452          71.01416809294841
## 12          0.3193413898976552         71.451028386422664
## 13         0.29016006459717669         74.854283689206738
##    Población.con.Educ..secundaria.completa
## 4                        50.63017450619418
## 5                       44.610828903139826
## 6                       62.719298245614027
## 7                      0.70865224442015928
## 8                       14.467610356075934
## 9                       44.560066430346239
## 10                      8.0030467121040392
## 11                      10.329915263482068
## 12                      40.099621352168377
## 13                      25.692343606211754
##    Años.de.educación.(Poblac..25.y.más) Ingreso.familiar.per.cápita
## 4                    6.4861000000000004          406.61596243617157
## 5                     7.773447107820453          553.26026548843981
## 6                    9.9674319279253609          794.19624767619837
## 7                    6.0860556122448983          327.67005595861554
## 8                    5.2594621468926555          322.95667949577552
## 9                    4.9548379939209735          330.13946067043514
## 10                   4.3790553971486759          250.78737787688144
## 11                   6.1334918791312552          254.33515749209994
## 12                   5.2516654166666665          367.12239793785773
## 13                   5.7250897314375999          306.95442378275027
  1. Aislamos información de regiones
regiones=idhPeru2011[is.na(idhPeru2011$X3),]
head(regiones,10)
##      Ubigeo.2010 DEPARTAMENTO   X3 Población Índice.de.Desarrollo.Humano
## 4         010000     AMAZONAS <NA>    415466         0.36896834005484624
## 96        020000       ANCASH <NA>   1122792         0.42959257406010565
## 283       030000     APURÍMAC <NA>    449365         0.31842005652673688
## 371       040000     AREQUIPA <NA>   1231553         0.55285064046258203
## 489       050000     AYACUCHO <NA>    658400         0.33375939508499963
## 612       060000    CAJAMARCA <NA>   1507486         0.36333847456618212
## 760       080000        CUSCO <NA>   1283540         0.41421298645216836
## 882       090000 HUANCAVELICA <NA>    479641         0.29623369563585827
## 984       100000      HUÁNUCO <NA>    834054         0.34837421894933834
## 1072      110000          ICA <NA>    755508         0.52442942447067897
##      Esperanza.de.vida.al.nacer Población.con.Educ..secundaria.completa
## 4            73.907425803499493                       50.63017450619418
## 96           73.925380678277818                      55.308382183476127
## 283          73.198031315525952                      53.795811518324612
## 371          75.513738285296242                      85.211296303842872
## 489          70.854303562630946                      43.591237225688303
## 612          73.667074781816197                      52.220490845344756
## 760          70.791544837757428                      66.513131671021725
## 882          66.457123074625244                      43.728522336769757
## 984          72.476775781094119                      43.299169693824595
## 1072         78.859924092389278                      77.481117161426312
##      Años.de.educación.(Poblac..25.y.más) Ingreso.familiar.per.cápita
## 4                      6.4861000000000004          406.61596243617157
## 96                     7.6707000000000001          536.19647485214102
## 283                                5.5644          297.33858877935432
## 371                    9.6656999999999993          755.12686385316226
## 489                    6.3372999999999999          356.31751380718043
## 612                    6.3766000000000007          390.31972375624298
## 760                    7.8243000000000009          467.10688849851977
## 882                    5.7095000000000002          302.28435902262481
## 984                    6.5889000000000006          379.67634917561963
## 1072                   9.8956999999999997          630.91267349233624

Elimino columnas innecesarias:

regiones=regiones[,-c(3:9)]
head(regiones,10)
##      Ubigeo.2010 DEPARTAMENTO
## 4         010000     AMAZONAS
## 96        020000       ANCASH
## 283       030000     APURÍMAC
## 371       040000     AREQUIPA
## 489       050000     AYACUCHO
## 612       060000    CAJAMARCA
## 760       080000        CUSCO
## 882       090000 HUANCAVELICA
## 984       100000      HUÁNUCO
## 1072      110000          ICA

Reseteo el índice y pongo nombres adecuados a las columnas:

row.names(regiones)=NULL
colnames(regiones)=c("UbigeoReg","nombreReg")
head(regiones,10)
##    UbigeoReg    nombreReg
## 1     010000     AMAZONAS
## 2     020000       ANCASH
## 3     030000     APURÍMAC
## 4     040000     AREQUIPA
## 5     050000     AYACUCHO
## 6     060000    CAJAMARCA
## 7     080000        CUSCO
## 8     090000 HUANCAVELICA
## 9     100000      HUÁNUCO
## 10    110000          ICA

¿Hay 26 regiones? ¡No! Las filas 15 y 16 no me sirven. Las elimino:

regiones=regiones[-c(15:16),]
head(regiones,17)
##    UbigeoReg     nombreReg
## 1     010000      AMAZONAS
## 2     020000        ANCASH
## 3     030000      APURÍMAC
## 4     040000      AREQUIPA
## 5     050000      AYACUCHO
## 6     060000     CAJAMARCA
## 7     080000         CUSCO
## 8     090000  HUANCAVELICA
## 9     100000       HUÁNUCO
## 10    110000           ICA
## 11    120000         JUNÍN
## 12    130000   LA LIBERTAD
## 13    140000    LAMBAYEQUE
## 14    150000          LIMA
## 17    160000        LORETO
## 18    170000 MADRE DE DIOS
## 19    180000      MOQUEGUA

Reseteo el índice:

row.names(regiones)=NULL
head(regiones,10)
##    UbigeoReg    nombreReg
## 1     010000     AMAZONAS
## 2     020000       ANCASH
## 3     030000     APURÍMAC
## 4     040000     AREQUIPA
## 5     050000     AYACUCHO
## 6     060000    CAJAMARCA
## 7     080000        CUSCO
## 8     090000 HUANCAVELICA
## 9     100000      HUÁNUCO
## 10    110000          ICA
  1. Aislamos información de provincias
provincias=idhPeru2011[is.na(idhPeru2011$DEPARTAMENTO),]
head(provincias,10)
##     Ubigeo.2010 DEPARTAMENTO                   X3 Población
## 5        010100         <NA>          Chachapoyas     54593
## 27       010200         <NA>                Bagua     77537
## 34       010300         <NA>              Bongará     31769
## 47       010400         <NA>         Condorcanqui     50742
## 51       010500         <NA>                 Luya     52248
## 75       010600         <NA> Rodríguez de Mendoza     29895
## 88       010700         <NA>            Utcubamba    118682
## 97       020100         <NA>               Huaraz    159125
## 110      020200         <NA>                 Aija      8035
## 116      020300         <NA>     Antonio Raymondi     17037
##     Índice.de.Desarrollo.Humano Esperanza.de.vida.al.nacer
## 5           0.42011363353481007          73.84634829093244
## 27          0.37343768713646164         75.997188952780888
## 34           0.3398606137238962         73.377739752880586
## 47          0.18637212001373762         70.876309315094176
## 51          0.29966383180357997         73.680096605176288
## 75          0.32530559190841485         74.321242463194878
## 88          0.35565746705017715         74.548586724769805
## 97          0.47036346793724154         73.038094392838872
## 110         0.28260885353573695         63.907637533084682
## 116         0.23117981916261915         70.325114987149846
##     Población.con.Educ..secundaria.completa
## 5                        44.610828903139826
## 27                       39.679425816384068
## 34                         28.9085382507023
## 47                       7.9761812715874587
## 51                       33.566047926778161
## 75                       26.226471873881358
## 88                       33.219380716608491
## 97                       67.602667602667594
## 110                      34.708551658025222
## 116                       26.42125049108115
##     Años.de.educación.(Poblac..25.y.más) Ingreso.familiar.per.cápita
## 5                      7.773447107820453          553.26026548843981
## 27                    6.9325837858497765          433.81347975257353
## 34                    6.4425909579534633          425.36961604071962
## 47                    5.5571315826064973          178.66169951681553
## 51                    5.4700235066437877          312.57437606377721
## 75                    6.0595644423453221          403.04455076254555
## 88                      6.14634391331247          456.13279066424855
## 97                    9.1446711290937017          576.82524025596388
## 110                    7.112578840054371          273.10243389621434
## 116                   5.7856697156398109          183.04571883747874

Eliminamos columnas innecesarias. Como en este caso necesito trabajar con información a nivel del PROVINCIAS,la única columna innecesaria sería la segunda:

provincias=provincias[,-c(2)]
head(provincias,10)
##     Ubigeo.2010                   X3 Población Índice.de.Desarrollo.Humano
## 5        010100          Chachapoyas     54593         0.42011363353481007
## 27       010200                Bagua     77537         0.37343768713646164
## 34       010300              Bongará     31769          0.3398606137238962
## 47       010400         Condorcanqui     50742         0.18637212001373762
## 51       010500                 Luya     52248         0.29966383180357997
## 75       010600 Rodríguez de Mendoza     29895         0.32530559190841485
## 88       010700            Utcubamba    118682         0.35565746705017715
## 97       020100               Huaraz    159125         0.47036346793724154
## 110      020200                 Aija      8035         0.28260885353573695
## 116      020300     Antonio Raymondi     17037         0.23117981916261915
##     Esperanza.de.vida.al.nacer Población.con.Educ..secundaria.completa
## 5            73.84634829093244                      44.610828903139826
## 27          75.997188952780888                      39.679425816384068
## 34          73.377739752880586                        28.9085382507023
## 47          70.876309315094176                      7.9761812715874587
## 51          73.680096605176288                      33.566047926778161
## 75          74.321242463194878                      26.226471873881358
## 88          74.548586724769805                      33.219380716608491
## 97          73.038094392838872                      67.602667602667594
## 110         63.907637533084682                      34.708551658025222
## 116         70.325114987149846                       26.42125049108115
##     Años.de.educación.(Poblac..25.y.más) Ingreso.familiar.per.cápita
## 5                      7.773447107820453          553.26026548843981
## 27                    6.9325837858497765          433.81347975257353
## 34                    6.4425909579534633          425.36961604071962
## 47                    5.5571315826064973          178.66169951681553
## 51                    5.4700235066437877          312.57437606377721
## 75                    6.0595644423453221          403.04455076254555
## 88                      6.14634391331247          456.13279066424855
## 97                    9.1446711290937017          576.82524025596388
## 110                    7.112578840054371          273.10243389621434
## 116                   5.7856697156398109          183.04571883747874

Reseteo mi índice:

row.names(provincias)=NULL
head(provincias,10)
##    Ubigeo.2010                   X3 Población Índice.de.Desarrollo.Humano
## 1       010100          Chachapoyas     54593         0.42011363353481007
## 2       010200                Bagua     77537         0.37343768713646164
## 3       010300              Bongará     31769          0.3398606137238962
## 4       010400         Condorcanqui     50742         0.18637212001373762
## 5       010500                 Luya     52248         0.29966383180357997
## 6       010600 Rodríguez de Mendoza     29895         0.32530559190841485
## 7       010700            Utcubamba    118682         0.35565746705017715
## 8       020100               Huaraz    159125         0.47036346793724154
## 9       020200                 Aija      8035         0.28260885353573695
## 10      020300     Antonio Raymondi     17037         0.23117981916261915
##    Esperanza.de.vida.al.nacer Población.con.Educ..secundaria.completa
## 1           73.84634829093244                      44.610828903139826
## 2          75.997188952780888                      39.679425816384068
## 3          73.377739752880586                        28.9085382507023
## 4          70.876309315094176                      7.9761812715874587
## 5          73.680096605176288                      33.566047926778161
## 6          74.321242463194878                      26.226471873881358
## 7          74.548586724769805                      33.219380716608491
## 8          73.038094392838872                      67.602667602667594
## 9          63.907637533084682                      34.708551658025222
## 10         70.325114987149846                       26.42125049108115
##    Años.de.educación.(Poblac..25.y.más) Ingreso.familiar.per.cápita
## 1                     7.773447107820453          553.26026548843981
## 2                    6.9325837858497765          433.81347975257353
## 3                    6.4425909579534633          425.36961604071962
## 4                    5.5571315826064973          178.66169951681553
## 5                    5.4700235066437877          312.57437606377721
## 6                    6.0595644423453221          403.04455076254555
## 7                      6.14634391331247          456.13279066424855
## 8                    9.1446711290937017          576.82524025596388
## 9                     7.112578840054371          273.10243389621434
## 10                   5.7856697156398109          183.04571883747874

Notamos que la fila 129 es innecesaria. La eliminamos:

provincias=provincias[-c(129),]
head(provincias)
##   Ubigeo.2010                   X3 Población Índice.de.Desarrollo.Humano
## 1      010100          Chachapoyas     54593         0.42011363353481007
## 2      010200                Bagua     77537         0.37343768713646164
## 3      010300              Bongará     31769          0.3398606137238962
## 4      010400         Condorcanqui     50742         0.18637212001373762
## 5      010500                 Luya     52248         0.29966383180357997
## 6      010600 Rodríguez de Mendoza     29895         0.32530559190841485
##   Esperanza.de.vida.al.nacer Población.con.Educ..secundaria.completa
## 1          73.84634829093244                      44.610828903139826
## 2         75.997188952780888                      39.679425816384068
## 3         73.377739752880586                        28.9085382507023
## 4         70.876309315094176                      7.9761812715874587
## 5         73.680096605176288                      33.566047926778161
## 6         74.321242463194878                      26.226471873881358
##   Años.de.educación.(Poblac..25.y.más) Ingreso.familiar.per.cápita
## 1                    7.773447107820453          553.26026548843981
## 2                   6.9325837858497765          433.81347975257353
## 3                   6.4425909579534633          425.36961604071962
## 4                   5.5571315826064973          178.66169951681553
## 5                   5.4700235066437877          312.57437606377721
## 6                   6.0595644423453221          403.04455076254555

Vuelvo a resetear el índice y cambio el nombre de mis variables:

row.names(provincias)=NULL
colnames(provincias)=c("UbigeoProv","nombreProv","habitantes","IDH","esperanza","secundaria","educa","percapitaf")
head(provincias)
##   UbigeoProv           nombreProv habitantes                 IDH
## 1     010100          Chachapoyas      54593 0.42011363353481007
## 2     010200                Bagua      77537 0.37343768713646164
## 3     010300              Bongará      31769  0.3398606137238962
## 4     010400         Condorcanqui      50742 0.18637212001373762
## 5     010500                 Luya      52248 0.29966383180357997
## 6     010600 Rodríguez de Mendoza      29895 0.32530559190841485
##            esperanza         secundaria              educa
## 1  73.84634829093244 44.610828903139826  7.773447107820453
## 2 75.997188952780888 39.679425816384068 6.9325837858497765
## 3 73.377739752880586   28.9085382507023 6.4425909579534633
## 4 70.876309315094176 7.9761812715874587 5.5571315826064973
## 5 73.680096605176288 33.566047926778161 5.4700235066437877
## 6 74.321242463194878 26.226471873881358 6.0595644423453221
##           percapitaf
## 1 553.26026548843981
## 2 433.81347975257353
## 3 425.36961604071962
## 4 178.66169951681553
## 5 312.57437606377721
## 6 403.04455076254555
  1. Creo ubigeo de regiones en provincias [para poder hacer merge]
provincias$UbigeoReg=provincias$UbigeoProv
str(provincias$UbigeoReg)
##  chr [1:195] "010100" "010200" "010300" "010400" "010500" "010600" ...
substr(provincias$UbigeoReg,3,6)='0000'
head(provincias,10)
##    UbigeoProv           nombreProv habitantes                 IDH
## 1      010100          Chachapoyas      54593 0.42011363353481007
## 2      010200                Bagua      77537 0.37343768713646164
## 3      010300              Bongará      31769  0.3398606137238962
## 4      010400         Condorcanqui      50742 0.18637212001373762
## 5      010500                 Luya      52248 0.29966383180357997
## 6      010600 Rodríguez de Mendoza      29895 0.32530559190841485
## 7      010700            Utcubamba     118682 0.35565746705017715
## 8      020100               Huaraz     159125 0.47036346793724154
## 9      020200                 Aija       8035 0.28260885353573695
## 10     020300     Antonio Raymondi      17037 0.23117981916261915
##             esperanza         secundaria              educa
## 1   73.84634829093244 44.610828903139826  7.773447107820453
## 2  75.997188952780888 39.679425816384068 6.9325837858497765
## 3  73.377739752880586   28.9085382507023 6.4425909579534633
## 4  70.876309315094176 7.9761812715874587 5.5571315826064973
## 5  73.680096605176288 33.566047926778161 5.4700235066437877
## 6  74.321242463194878 26.226471873881358 6.0595644423453221
## 7  74.548586724769805 33.219380716608491   6.14634391331247
## 8  73.038094392838872 67.602667602667594 9.1446711290937017
## 9  63.907637533084682 34.708551658025222  7.112578840054371
## 10 70.325114987149846  26.42125049108115 5.7856697156398109
##            percapitaf UbigeoReg
## 1  553.26026548843981    010000
## 2  433.81347975257353    010000
## 3  425.36961604071962    010000
## 4  178.66169951681553    010000
## 5  312.57437606377721    010000
## 6  403.04455076254555    010000
## 7  456.13279066424855    010000
## 8  576.82524025596388    020000
## 9  273.10243389621434    020000
## 10 183.04571883747874    020000

Ordeno mis columnas:

provincias=provincias[,c(9,1:8)]
head(provincias,10)
##    UbigeoReg UbigeoProv           nombreProv habitantes
## 1     010000     010100          Chachapoyas      54593
## 2     010000     010200                Bagua      77537
## 3     010000     010300              Bongará      31769
## 4     010000     010400         Condorcanqui      50742
## 5     010000     010500                 Luya      52248
## 6     010000     010600 Rodríguez de Mendoza      29895
## 7     010000     010700            Utcubamba     118682
## 8     020000     020100               Huaraz     159125
## 9     020000     020200                 Aija       8035
## 10    020000     020300     Antonio Raymondi      17037
##                    IDH          esperanza         secundaria
## 1  0.42011363353481007  73.84634829093244 44.610828903139826
## 2  0.37343768713646164 75.997188952780888 39.679425816384068
## 3   0.3398606137238962 73.377739752880586   28.9085382507023
## 4  0.18637212001373762 70.876309315094176 7.9761812715874587
## 5  0.29966383180357997 73.680096605176288 33.566047926778161
## 6  0.32530559190841485 74.321242463194878 26.226471873881358
## 7  0.35565746705017715 74.548586724769805 33.219380716608491
## 8  0.47036346793724154 73.038094392838872 67.602667602667594
## 9  0.28260885353573695 63.907637533084682 34.708551658025222
## 10 0.23117981916261915 70.325114987149846  26.42125049108115
##                 educa         percapitaf
## 1   7.773447107820453 553.26026548843981
## 2  6.9325837858497765 433.81347975257353
## 3  6.4425909579534633 425.36961604071962
## 4  5.5571315826064973 178.66169951681553
## 5  5.4700235066437877 312.57437606377721
## 6  6.0595644423453221 403.04455076254555
## 7    6.14634391331247 456.13279066424855
## 8  9.1446711290937017 576.82524025596388
## 9   7.112578840054371 273.10243389621434
## 10 5.7856697156398109 183.04571883747874
  1. Hago merge creando un nuevo objeto, idhPeru2011_provincial
idhPeru2011_provincial=merge(regiones,provincias,
                             by.x = "UbigeoReg",
                             by.y = "UbigeoReg")
head(idhPeru2011_provincial,10)
##    UbigeoReg nombreReg UbigeoProv           nombreProv habitantes
## 1     010000  AMAZONAS     010200                Bagua      77537
## 2     010000  AMAZONAS     010300              Bongará      31769
## 3     010000  AMAZONAS     010400         Condorcanqui      50742
## 4     010000  AMAZONAS     010500                 Luya      52248
## 5     010000  AMAZONAS     010600 Rodríguez de Mendoza      29895
## 6     010000  AMAZONAS     010700            Utcubamba     118682
## 7     010000  AMAZONAS     010100          Chachapoyas      54593
## 8     020000    ANCASH     020100               Huaraz     159125
## 9     020000    ANCASH     020200                 Aija       8035
## 10    020000    ANCASH     020400             Asunción       9085
##                    IDH          esperanza         secundaria
## 1  0.37343768713646164 75.997188952780888 39.679425816384068
## 2   0.3398606137238962 73.377739752880586   28.9085382507023
## 3  0.18637212001373762 70.876309315094176 7.9761812715874587
## 4  0.29966383180357997 73.680096605176288 33.566047926778161
## 5  0.32530559190841485 74.321242463194878 26.226471873881358
## 6  0.35565746705017715 74.548586724769805 33.219380716608491
## 7  0.42011363353481007  73.84634829093244 44.610828903139826
## 8  0.47036346793724154 73.038094392838872 67.602667602667594
## 9  0.28260885353573695 63.907637533084682 34.708551658025222
## 10  0.2724575615070095 70.096318029350954 33.674407974869055
##                 educa         percapitaf
## 1  6.9325837858497765 433.81347975257353
## 2  6.4425909579534633 425.36961604071962
## 3  5.5571315826064973 178.66169951681553
## 4  5.4700235066437877 312.57437606377721
## 5  6.0595644423453221 403.04455076254555
## 6    6.14634391331247 456.13279066424855
## 7   7.773447107820453 553.26026548843981
## 8  9.1446711290937017 576.82524025596388
## 9   7.112578840054371 273.10243389621434
## 10 5.2430156275805126 267.13914266221013

Ordeno las columnas y pongo en mayúsculas el nombre de las provincias

idhPeru2011_provincial=idhPeru2011_provincial[,c(1,3,2,4,5:10)]
head(idhPeru2011_provincial,10)
##    UbigeoReg UbigeoProv nombreReg           nombreProv habitantes
## 1     010000     010200  AMAZONAS                Bagua      77537
## 2     010000     010300  AMAZONAS              Bongará      31769
## 3     010000     010400  AMAZONAS         Condorcanqui      50742
## 4     010000     010500  AMAZONAS                 Luya      52248
## 5     010000     010600  AMAZONAS Rodríguez de Mendoza      29895
## 6     010000     010700  AMAZONAS            Utcubamba     118682
## 7     010000     010100  AMAZONAS          Chachapoyas      54593
## 8     020000     020100    ANCASH               Huaraz     159125
## 9     020000     020200    ANCASH                 Aija       8035
## 10    020000     020400    ANCASH             Asunción       9085
##                    IDH          esperanza         secundaria
## 1  0.37343768713646164 75.997188952780888 39.679425816384068
## 2   0.3398606137238962 73.377739752880586   28.9085382507023
## 3  0.18637212001373762 70.876309315094176 7.9761812715874587
## 4  0.29966383180357997 73.680096605176288 33.566047926778161
## 5  0.32530559190841485 74.321242463194878 26.226471873881358
## 6  0.35565746705017715 74.548586724769805 33.219380716608491
## 7  0.42011363353481007  73.84634829093244 44.610828903139826
## 8  0.47036346793724154 73.038094392838872 67.602667602667594
## 9  0.28260885353573695 63.907637533084682 34.708551658025222
## 10  0.2724575615070095 70.096318029350954 33.674407974869055
##                 educa         percapitaf
## 1  6.9325837858497765 433.81347975257353
## 2  6.4425909579534633 425.36961604071962
## 3  5.5571315826064973 178.66169951681553
## 4  5.4700235066437877 312.57437606377721
## 5  6.0595644423453221 403.04455076254555
## 6    6.14634391331247 456.13279066424855
## 7   7.773447107820453 553.26026548843981
## 8  9.1446711290937017 576.82524025596388
## 9   7.112578840054371 273.10243389621434
## 10 5.2430156275805126 267.13914266221013
idhPeru2011_provincial$nombreProv=toupper(idhPeru2011_provincial$nombreProv)
head(idhPeru2011_provincial)
##   UbigeoReg UbigeoProv nombreReg           nombreProv habitantes
## 1    010000     010200  AMAZONAS                BAGUA      77537
## 2    010000     010300  AMAZONAS              BONGARÁ      31769
## 3    010000     010400  AMAZONAS         CONDORCANQUI      50742
## 4    010000     010500  AMAZONAS                 LUYA      52248
## 5    010000     010600  AMAZONAS RODRÍGUEZ DE MENDOZA      29895
## 6    010000     010700  AMAZONAS            UTCUBAMBA     118682
##                   IDH          esperanza         secundaria
## 1 0.37343768713646164 75.997188952780888 39.679425816384068
## 2  0.3398606137238962 73.377739752880586   28.9085382507023
## 3 0.18637212001373762 70.876309315094176 7.9761812715874587
## 4 0.29966383180357997 73.680096605176288 33.566047926778161
## 5 0.32530559190841485 74.321242463194878 26.226471873881358
## 6 0.35565746705017715 74.548586724769805 33.219380716608491
##                educa         percapitaf
## 1 6.9325837858497765 433.81347975257353
## 2 6.4425909579534633 425.36961604071962
## 3 5.5571315826064973 178.66169951681553
## 4 5.4700235066437877 312.57437606377721
## 5 6.0595644423453221 403.04455076254555
## 6   6.14634391331247 456.13279066424855

Parte 2

Hacemos clusters a partir de las variables componentes del IDH.

  1. Creo un subconjunto de mi data con las columnas de interés [y formateo las variables si es necesario]
data=idhPeru2011_provincial[,c(7:10)]
row.names(data)=idhPeru2011_provincial$nombreProv #uso como nombre de las filas el nombre de las provincias
head(data)
##                               esperanza         secundaria
## BAGUA                75.997188952780888 39.679425816384068
## BONGARÁ              73.377739752880586   28.9085382507023
## CONDORCANQUI         70.876309315094176 7.9761812715874587
## LUYA                 73.680096605176288 33.566047926778161
## RODRÍGUEZ DE MENDOZA 74.321242463194878 26.226471873881358
## UTCUBAMBA            74.548586724769805 33.219380716608491
##                                   educa         percapitaf
## BAGUA                6.9325837858497765 433.81347975257353
## BONGARÁ              6.4425909579534633 425.36961604071962
## CONDORCANQUI         5.5571315826064973 178.66169951681553
## LUYA                 5.4700235066437877 312.57437606377721
## RODRÍGUEZ DE MENDOZA 6.0595644423453221 403.04455076254555
## UTCUBAMBA              6.14634391331247 456.13279066424855

Saco estructura para ver si mis variables están como numéricas:

str(data)
## 'data.frame':    194 obs. of  4 variables:
##  $ esperanza : chr  "75.997188952780888" "73.377739752880586" "70.876309315094176" "73.680096605176288" ...
##  $ secundaria: chr  "39.679425816384068" "28.9085382507023" "7.9761812715874587" "33.566047926778161" ...
##  $ educa     : chr  "6.9325837858497765" "6.4425909579534633" "5.5571315826064973" "5.4700235066437877" ...
##  $ percapitaf: chr  "433.81347975257353" "425.36961604071962" "178.66169951681553" "312.57437606377721" ...

Mis cuatro variables están como caracter. Las cambio a numéricas:

data$esperanza=as.numeric(data$esperanza)
data$secundaria=as.numeric(data$secundaria)
data$educa=as.numeric(data$educa)
data$percapitaf=as.numeric(data$percapitaf)
str(data)
## 'data.frame':    194 obs. of  4 variables:
##  $ esperanza : num  76 73.4 70.9 73.7 74.3 ...
##  $ secundaria: num  39.68 28.91 7.98 33.57 26.23 ...
##  $ educa     : num  6.93 6.44 5.56 5.47 6.06 ...
##  $ percapitaf: num  434 425 179 313 403 ...
  1. Estandarizo con scale:
data.scaled = scale(data)
head(data.scaled)
##                       esperanza secundaria       educa  percapitaf
## BAGUA                 0.8243359 -0.4263872 -0.06577274  0.13319525
## BONGARÁ               0.1963300 -1.0232688 -0.33931849  0.09056390
## CONDORCANQUI         -0.4033812 -2.1832604 -0.83363930 -1.15501428
## LUYA                  0.2688192 -0.7651674 -0.88226867 -0.47891637
## RODRÍGUEZ DE MENDOZA  0.4225323 -1.1718987 -0.55314871 -0.02215082
## UTCUBAMBA             0.4770374 -0.7843783 -0.50470279  0.24588092
  1. Uso NbClust para saber cuántos grupos se van a formar:
library(NbClust)
nb = NbClust(data.scaled, 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 
## * 7 proposed 3 as the best number of clusters 
## * 3 proposed 4 as the best number of clusters 
## * 1 proposed 10 as the best number of clusters 
## * 1 proposed 12 as the best number of clusters 
## * 1 proposed 13 as the best number of clusters 
## * 1 proposed 15 as the best number of clusters 
## 
##                    ***** Conclusion *****                            
##  
## * According to the majority rule, the best number of clusters is  2 
##  
##  
## *******************************************************************

Podemos responder la pregunta a:

¿Cuántos grupos se han formado? Se van a formar 2 (DOS) grupos.

  1. Aplicamos el algoritmo de método jerárquico (ya sé son 2 grupos los que debo perdir) y veo el dendograma respectivo:
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"
cuantosClusters=2
solucionJerarquica1=eclust(data.scaled,
                           FUNcluster = algoritmo,
                           k = cuantosClusters,
                           method = "complete",
                           graph=F)

fviz_dend(solucionJerarquica1, rect = T, show_labels = T)

  1. Guardo lo obtenido en un data frame:
jerarquico=as.data.frame(solucionJerarquica1$cluster)
colnames(jerarquico)=c("jerarquico")

Añado la columna que contiene el grupo al que pertenece cada provincia a la data idhPeru2011_provincial. Para ello hago un merge:

idhPeru2011_provincial=merge(idhPeru2011_provincial,jerarquico,
                             by.x = "nombreProv",
                             by.y = 0)
head(idhPeru2011_provincial)
##      nombreProv UbigeoReg UbigeoProv    nombreReg habitantes
## 1       ABANCAY    030000     030100     APURÍMAC     105467
## 2      ACOBAMBA    090000     090200 HUANCAVELICA      71482
## 3       ACOMAYO    080000     080200        CUSCO      28515
## 4          AIJA    020000     020200       ANCASH       8035
## 5 ALTO AMAZONAS    160000     160200       LORETO     116035
## 6          AMBO    100000     100200      HUÁNUCO      58158
##                   IDH          esperanza         secundaria
## 1 0.42891892514189878 74.044518871903563 66.568627450980387
## 2 0.24523583740134028 71.498709896982803 36.569304903524184
## 3 0.23681524238380927 61.847484834271491 43.516134591742009
## 4 0.28260885353573695 63.907637533084682 34.708551658025222
## 5 0.30689077730473791 71.327870440291377 30.764524572906609
## 6 0.29167654803661758 73.952159658787579 35.747743238010635
##                educa         percapitaf jerarquico
## 1 8.1705794922031192 470.43488911408252          2
## 2 5.0814079655360302 196.37445309742031          1
## 3 4.9998651438117374 205.23249312109007          1
## 4  7.112578840054371 273.10243389621434          1
## 5 6.8611987598249664 313.65684772837517          2
## 6 5.0695556927785885 296.32222025112804          1
  1. ¿Cuál es la media por grupo de cada una de las variables componentes del IDH? [Pregunta b]

Para ello uso aggregate. Pero primero me aseguro que mis variables de interés son numéricas:

str(idhPeru2011_provincial)
## 'data.frame':    194 obs. of  11 variables:
##  $ nombreProv: chr  "ABANCAY" "ACOBAMBA" "ACOMAYO" "AIJA" ...
##  $ UbigeoReg : chr  "030000" "090000" "080000" "020000" ...
##  $ UbigeoProv: chr  "030100" "090200" "080200" "020200" ...
##  $ nombreReg : chr  "APURÍMAC" "HUANCAVELICA" "CUSCO" "ANCASH" ...
##  $ habitantes: chr  "105467" "71482" "28515" "8035" ...
##  $ IDH       : chr  "0.42891892514189878" "0.24523583740134028" "0.23681524238380927" "0.28260885353573695" ...
##  $ esperanza : chr  "74.044518871903563" "71.498709896982803" "61.847484834271491" "63.907637533084682" ...
##  $ secundaria: chr  "66.568627450980387" "36.569304903524184" "43.516134591742009" "34.708551658025222" ...
##  $ educa     : chr  "8.1705794922031192" "5.0814079655360302" "4.9998651438117374" "7.112578840054371" ...
##  $ percapitaf: chr  "470.43488911408252" "196.37445309742031" "205.23249312109007" "273.10243389621434" ...
##  $ jerarquico: int  2 1 1 1 2 1 1 1 1 1 ...

Doy formato numérico:

idhPeru2011_provincial$esperanza=as.numeric(idhPeru2011_provincial$esperanza)
idhPeru2011_provincial$secundaria=as.numeric(idhPeru2011_provincial$secundaria)
idhPeru2011_provincial$educa=as.numeric(idhPeru2011_provincial$educa)
idhPeru2011_provincial$percapitaf=as.numeric(idhPeru2011_provincial$percapitaf)
str(idhPeru2011_provincial)
## 'data.frame':    194 obs. of  11 variables:
##  $ nombreProv: chr  "ABANCAY" "ACOBAMBA" "ACOMAYO" "AIJA" ...
##  $ UbigeoReg : chr  "030000" "090000" "080000" "020000" ...
##  $ UbigeoProv: chr  "030100" "090200" "080200" "020200" ...
##  $ nombreReg : chr  "APURÍMAC" "HUANCAVELICA" "CUSCO" "ANCASH" ...
##  $ habitantes: chr  "105467" "71482" "28515" "8035" ...
##  $ IDH       : chr  "0.42891892514189878" "0.24523583740134028" "0.23681524238380927" "0.28260885353573695" ...
##  $ esperanza : num  74 71.5 61.8 63.9 71.3 ...
##  $ secundaria: num  66.6 36.6 43.5 34.7 30.8 ...
##  $ educa     : num  8.17 5.08 5 7.11 6.86 ...
##  $ percapitaf: num  470 196 205 273 314 ...
##  $ jerarquico: int  2 1 1 1 2 1 1 1 1 1 ...

Saco las medias por grupo:

aggregate(cbind(esperanza, secundaria, educa, percapitaf) ~ jerarquico, data=idhPeru2011_provincial,FUN=mean)
##   jerarquico esperanza secundaria    educa percapitaf
## 1          1  71.35437   33.16268 5.561857   273.1416
## 2          2  73.62298   59.92906 8.365521   526.0767
  1. ¿Hay diferencias significativas entre los grupos? [Pregunta c]

Para eso tengo que sacar t test de cada variable.

Veamos la variable esperanza:

t.test(idhPeru2011_provincial$esperanza~idhPeru2011_provincial$jerarquico,var.equal=T)
## 
##  Two Sample t-test
## 
## data:  idhPeru2011_provincial$esperanza by idhPeru2011_provincial$jerarquico
## t = -3.9186, df = 192, p-value = 0.0001238
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
##  -3.410491 -1.126717
## sample estimates:
## mean in group 1 mean in group 2 
##        71.35437        73.62298

¡Hay diferencias significativas en ESPERANZA DE VIDA! El grupo 2 tiene mayor esperanza de vida que el grupo 1.

Veamos la variable secundaria:

t.test(idhPeru2011_provincial$secundaria~idhPeru2011_provincial$jerarquico,var.equal=T)
## 
##  Two Sample t-test
## 
## data:  idhPeru2011_provincial$secundaria by idhPeru2011_provincial$jerarquico
## t = -15.343, df = 192, p-value < 2.2e-16
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
##  -30.20735 -23.32542
## sample estimates:
## mean in group 1 mean in group 2 
##        33.16268        59.92906

¡Hay diferencias significativas en POBLACIÓN CON SECUNDARIA COMPLETA! El grupo 2 tiene un mayor porcentaje de población con secundaria completa que el grupo 1.

Veamos la variable educa:

t.test(idhPeru2011_provincial$educa~idhPeru2011_provincial$jerarquico,var.equal=T)
## 
##  Two Sample t-test
## 
## data:  idhPeru2011_provincial$educa by idhPeru2011_provincial$jerarquico
## t = -17.449, df = 192, p-value < 2.2e-16
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
##  -3.120583 -2.486746
## sample estimates:
## mean in group 1 mean in group 2 
##        5.561857        8.365521

¡Hay diferencias significativas en AÑOS DE EDUCACIÓN! El grupo 2 tiene más años de educación que el grupo 1.

Finalmente, veamos la variable percapitaf:

t.test(idhPeru2011_provincial$percapitaf~idhPeru2011_provincial$jerarquico,var.equal=T)
## 
##  Two Sample t-test
## 
## data:  idhPeru2011_provincial$percapitaf by idhPeru2011_provincial$jerarquico
## t = -11.509, df = 192, p-value < 2.2e-16
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
##  -296.2831 -209.5870
## sample estimates:
## mean in group 1 mean in group 2 
##        273.1416        526.0767

¡Hay diferencias significativas en INGRESO FAMILIAR PER CÁPITA1 El grupo 2 tiene mayor ingreso familiar per cápita que el grupo 1.

  1. ¿Qué grupo tiene la mayor cantidad de habitantes? [pregunta d]

Creo dos data frame distintas con las provincias de cada grupo.

Grupo 1:

grupo1=idhPeru2011_provincial[idhPeru2011_provincial$jerarquico=='1',]
head(grupo1)
##    nombreProv UbigeoReg UbigeoProv    nombreReg habitantes
## 2    ACOBAMBA    090000     090200 HUANCAVELICA      71482
## 3     ACOMAYO    080000     080200        CUSCO      28515
## 4        AIJA    020000     020200       ANCASH       8035
## 6        AMBO    100000     100200      HUÁNUCO      58158
## 7 ANDAHUAYLAS    030000     030200     APURÍMAC     162135
## 8    ANGARAES    090000     090300 HUANCAVELICA      59990
##                   IDH esperanza secundaria    educa percapitaf jerarquico
## 2 0.24523583740134028  71.49871   36.56930 5.081408   196.3745          1
## 3 0.23681524238380927  61.84748   43.51613 4.999865   205.2325          1
## 4 0.28260885353573695  63.90764   34.70855 7.112579   273.1024          1
## 6 0.29167654803661758  73.95216   35.74774 5.069556   296.3222          1
## 7 0.31968387380156454  77.22772   47.20669 5.679913   292.6088          1
## 8 0.25753331250031852  68.74694   41.15813 4.982539   225.1298          1

Grupo 2:

grupo2=idhPeru2011_provincial[idhPeru2011_provincial$jerarquico=='2',]
head(grupo2)
##       nombreProv UbigeoReg UbigeoProv   nombreReg habitantes
## 1        ABANCAY    030000     030100    APURÍMAC     105467
## 5  ALTO AMAZONAS    160000     160200      LORETO     116035
## 12      AREQUIPA    040000     040100    AREQUIPA     925667
## 13        ASCOPE    130000     130200 LA LIBERTAD     121019
## 20      BARRANCA    150000     150200        LIMA     142229
## 23     BOLOGNESI    020000     020500      ANCASH      32304
##                    IDH esperanza secundaria     educa percapitaf
## 1  0.42891892514189878  74.04452   66.56863  8.170579   470.4349
## 5  0.30689077730473791  71.32787   30.76452  6.861199   313.6568
## 12 0.58398330439380264  75.58928   84.96452 11.382314   803.9554
## 13 0.47214547761850828  75.41891   68.74410  9.072429   555.3421
## 20 0.50114937918547575  79.49366   66.69178  8.853555   628.5096
## 23 0.36572139096659384  69.95024   50.43712  7.581382   390.1735
##    jerarquico
## 1           2
## 5           2
## 12          2
## 13          2
## 20          2
## 23          2

Reviso estructura:

str(grupo1$habitantes)
##  chr [1:91] "71482" "28515" "8035" "58158" "162135" "59990" "57555" ...
str(grupo2$habitantes)
##  chr [1:103] "105467" "116035" "925667" "121019" "142229" "32304" ...

Formateo:

grupo1$habitantes=as.numeric(grupo1$habitantes)
grupo2$habitantes=as.numeric(grupo2$habitantes)

Hallo el total de habitantes de cada grupo con sum.

Total de habitantes del grupo 1:

sum(grupo1$habitantes)
## [1] 5617539

Total de habitantes del grupo 2:

sum(grupo2$habitantes)
## [1] 23224770

Concluimos que el grupo 2 es el que tiene la mayor cantidad de habitantes [cerca de 23,2 millones frente al grupo 1 con cerca de 5,6 millones]

  1. ¿Cuántas provincias tienen dificultades para ser clasificadas? [pregunta e]

Para eso debo ver las siluetas:

fviz_silhouette(solucionJerarquica1)
##   cluster size ave.sil.width
## 1       1   91          0.43
## 2       2  103          0.24

Pidamos la información de la silueta, específicamente de las provincias que han sido mal agrupadas:

siluetas <- solucionJerarquica1$silinfo$widths
siluetas[siluetas$sil_width<0,]
##                         cluster neighbor    sil_width
## SAN ANTONIO DE PUTINA         1        2 -0.028515511
## OCROS                         1        2 -0.077831983
## FERREÑAFE                     2        1 -0.002975315
## LUCANAS                       2        1 -0.016497451
## YUNGUYO                       2        1 -0.092744955
## MELGAR                        2        1 -0.103043821
## ESPINAR                       2        1 -0.152167698
## SANDIA                        2        1 -0.170770356
## HUANCANÉ                      2        1 -0.172307600
## CAJATAMBO                     2        1 -0.194030039
## OXAPAMPA                      2        1 -0.202971436
## UCAYALI                       2        1 -0.203295462
## CONTUMAZÁ                     2        1 -0.225312281
## MORROPÓN                      2        1 -0.226600483
## LAURICOCHA                    2        1 -0.250708605
## HUAYTARÁ                      2        1 -0.254387160
## SUCRE                         2        1 -0.311103825
## SATIPO 2/                     2        1 -0.327220429
## REQUENA                       2        1 -0.349068628
## PURÚS                         2        1 -0.365706667
## ALTO AMAZONAS                 2        1 -0.414252086
## LORETO                        2        1 -0.427442946
## MARISCAL RAMÓN CASTILLA       2        1 -0.445627954

Se observa que hay 23 (VEINTITRÉS) provincias que tienen dificultades para ser clasificadas.


Parte 3

Saquemos la matriz de correlación usando solamente los componentes del idh:

matrizCor=cor(idhPeru2011_provincial[,c(7:10)],use="complete.obs")
round(matrizCor,2)
##            esperanza secundaria educa percapitaf
## esperanza       1.00       0.29  0.42       0.45
## secundaria      0.29       1.00  0.85       0.69
## educa           0.42       0.85  1.00       0.88
## percapitaf      0.45       0.69  0.88       1.00

El indicaror que se correlaciona mucho con los otros indicadores es educa. Excluimos esa variable y hacemos nuevos clusters.

  1. Creo un subconjunto de mi data con las columnas de interés [y formateo las variables si es necesario]
data2=idhPeru2011_provincial[,c(7,8,10)]
row.names(data2)=idhPeru2011_provincial$nombreProv #uso como nombre de las filas el nombre de las provincias
head(data2)
##               esperanza secundaria percapitaf
## ABANCAY        74.04452   66.56863   470.4349
## ACOBAMBA       71.49871   36.56930   196.3745
## ACOMAYO        61.84748   43.51613   205.2325
## AIJA           63.90764   34.70855   273.1024
## ALTO AMAZONAS  71.32787   30.76452   313.6568
## AMBO           73.95216   35.74774   296.3222
  1. Estandarizo con scale:
data2.scaled = scale(data2)
head(data2.scaled)
##                esperanza secundaria percapitaf
## ABANCAY        0.3561885  1.0637100  0.3180893
## ACOBAMBA      -0.2541624 -0.5987383 -1.0655862
## ACOMAYO       -2.5680177 -0.2137714 -1.0208637
## AIJA          -2.0741016 -0.7018542 -0.6782022
## ALTO AMAZONAS -0.2951207 -0.9204171 -0.4734512
## AMBO           0.3340456 -0.6442661 -0.5609702
  1. Uso NbClust para saber cuántos grupos se van a formar:
library(NbClust)
nb2 = NbClust(data2.scaled, 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:                                                
## * 9 proposed 2 as the best number of clusters 
## * 3 proposed 3 as the best number of clusters 
## * 5 proposed 4 as the best number of clusters 
## * 1 proposed 6 as the best number of clusters 
## * 3 proposed 10 as the best number of clusters 
## * 2 proposed 15 as the best number of clusters 
## 
##                    ***** Conclusion *****                            
##  
## * According to the majority rule, the best number of clusters is  2 
##  
##  
## *******************************************************************

Podemos responder la pregunta a:

¿Cuántos grupos se han formado? Se van a formar 2 (DOS) grupos.

  1. Aplicamos el algoritmo de método jerárquico (ya sé son 2 grupos los que debo perdir) y veo el dendograma respectivo:
library(factoextra)
algoritmo="hclust"
cuantosClusters=2
solucionJerarquica2=eclust(data2.scaled,
                           FUNcluster = algoritmo,
                           k = cuantosClusters,
                           method = "complete",
                           graph=F)

fviz_dend(solucionJerarquica2, rect = T, show_labels = T)

  1. Guardo lo obtenido en un data frame:
jerarquicoSinEduca=as.data.frame(solucionJerarquica2$cluster)
colnames(jerarquicoSinEduca)=c("jerarquicoSinEduca")

Añado la columna que contiene el grupo al que pertenece cada provincia a la data idhPeru2011_provincial. Para ello hago un merge:

idhPeru2011_provincial=merge(idhPeru2011_provincial,jerarquicoSinEduca,
                             by.x = "nombreProv",
                             by.y = 0)
head(idhPeru2011_provincial)
##      nombreProv UbigeoReg UbigeoProv    nombreReg habitantes
## 1       ABANCAY    030000     030100     APURÍMAC     105467
## 2      ACOBAMBA    090000     090200 HUANCAVELICA      71482
## 3       ACOMAYO    080000     080200        CUSCO      28515
## 4          AIJA    020000     020200       ANCASH       8035
## 5 ALTO AMAZONAS    160000     160200       LORETO     116035
## 6          AMBO    100000     100200      HUÁNUCO      58158
##                   IDH esperanza secundaria    educa percapitaf jerarquico
## 1 0.42891892514189878  74.04452   66.56863 8.170579   470.4349          2
## 2 0.24523583740134028  71.49871   36.56930 5.081408   196.3745          1
## 3 0.23681524238380927  61.84748   43.51613 4.999865   205.2325          1
## 4 0.28260885353573695  63.90764   34.70855 7.112579   273.1024          1
## 5 0.30689077730473791  71.32787   30.76452 6.861199   313.6568          2
## 6 0.29167654803661758  73.95216   35.74774 5.069556   296.3222          1
##   jerarquicoSinEduca
## 1                  1
## 2                  1
## 3                  1
## 4                  1
## 5                  1
## 6                  1
  1. ¿Cuál es la media por grupo de cada una de las variables usadas en esta última agrupación? [Pregunta b]

Saco las medias por grupo:

aggregate(cbind(esperanza, secundaria, percapitaf) ~ jerarquicoSinEduca, data=idhPeru2011_provincial,FUN=mean)
##   jerarquicoSinEduca esperanza secundaria percapitaf
## 1                  1  71.37555   41.85989   333.3181
## 2                  2  76.97452   67.94960   684.0027
  1. ¿Hay diferencias significativas entre los grupos? [Pregunta c]

Para eso tengo que sacar t test de cada variable.

Veamos la variable esperanza:

t.test(idhPeru2011_provincial$esperanza~idhPeru2011_provincial$jerarquicoSinEduca,var.equal=T)
## 
##  Two Sample t-test
## 
## data:  idhPeru2011_provincial$esperanza by idhPeru2011_provincial$jerarquicoSinEduca
## t = -9.1119, df = 192, p-value < 2.2e-16
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
##  -6.810955 -4.386996
## sample estimates:
## mean in group 1 mean in group 2 
##        71.37555        76.97452

¡Hay diferencias significativas en ESPERANZA DE VIDA! El grupo 2 tiene mayor esperanza de vida que el grupo 1.

Veamos la variable secundaria:

t.test(idhPeru2011_provincial$secundaria~idhPeru2011_provincial$jerarquicoSinEduca,var.equal=T)
## 
##  Two Sample t-test
## 
## data:  idhPeru2011_provincial$secundaria by idhPeru2011_provincial$jerarquicoSinEduca
## t = -10.173, df = 192, p-value < 2.2e-16
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
##  -31.14837 -21.03105
## sample estimates:
## mean in group 1 mean in group 2 
##        41.85989        67.94960

¡Hay diferencias significativas en POBLACIÓN CON SECUNDARIA COMPLETA! El grupo 2 tiene un mayor porcentaje de población con secundaria completa que el grupo 1.

Finalmente, veamos la variable percapitaf:

t.test(idhPeru2011_provincial$percapitaf~idhPeru2011_provincial$jerarquicoSinEduca,var.equal=T)
## 
##  Two Sample t-test
## 
## data:  idhPeru2011_provincial$percapitaf by idhPeru2011_provincial$jerarquicoSinEduca
## t = -14.573, df = 192, p-value < 2.2e-16
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
##  -398.1473 -303.2219
## sample estimates:
## mean in group 1 mean in group 2 
##        333.3181        684.0027

¡Hay diferencias significativas en INGRESO FAMILIAR PER CÁPITA1 El grupo 2 tiene mayor ingreso familiar per cápita que el grupo 1.

  1. ¿Qué grupo tiene la mayor cantidad de habitantes? [pregunta d]

Creo dos data frame distintas con las provincias de cada grupo.

Grupo 1:

nuevogrupo1=idhPeru2011_provincial[idhPeru2011_provincial$jerarquicoSinEduca=='1',]
head(nuevogrupo1)
##      nombreProv UbigeoReg UbigeoProv    nombreReg habitantes
## 1       ABANCAY    030000     030100     APURÍMAC     105467
## 2      ACOBAMBA    090000     090200 HUANCAVELICA      71482
## 3       ACOMAYO    080000     080200        CUSCO      28515
## 4          AIJA    020000     020200       ANCASH       8035
## 5 ALTO AMAZONAS    160000     160200       LORETO     116035
## 6          AMBO    100000     100200      HUÁNUCO      58158
##                   IDH esperanza secundaria    educa percapitaf jerarquico
## 1 0.42891892514189878  74.04452   66.56863 8.170579   470.4349          2
## 2 0.24523583740134028  71.49871   36.56930 5.081408   196.3745          1
## 3 0.23681524238380927  61.84748   43.51613 4.999865   205.2325          1
## 4 0.28260885353573695  63.90764   34.70855 7.112579   273.1024          1
## 5 0.30689077730473791  71.32787   30.76452 6.861199   313.6568          2
## 6 0.29167654803661758  73.95216   35.74774 5.069556   296.3222          1
##   jerarquicoSinEduca
## 1                  1
## 2                  1
## 3                  1
## 4                  1
## 5                  1
## 6                  1

Grupo 2:

nuevogrupo2=idhPeru2011_provincial[idhPeru2011_provincial$jerarquicoSinEduca=='2',]
head(nuevogrupo2)
##    nombreProv UbigeoReg UbigeoProv   nombreReg habitantes
## 12   AREQUIPA    040000     040100    AREQUIPA     925667
## 13     ASCOPE    130000     130200 LA LIBERTAD     121019
## 20   BARRANCA    150000     150200        LIMA     142229
## 29     CAMANÁ    040000     040200    AREQUIPA      56605
## 35     CAÑETE    150000     150500        LIMA     219564
## 37   CARAVELÍ    040000     040300    AREQUIPA      38797
##                    IDH esperanza secundaria     educa percapitaf
## 12 0.58398330439380264  75.58928   84.96452 11.382314   803.9554
## 13 0.47214547761850828  75.41891   68.74410  9.072429   555.3421
## 20 0.50114937918547575  79.49366   66.69178  8.853555   628.5096
## 29 0.53020906240390198  78.89086   75.20115  9.685251   668.0217
## 35  0.4931048948281832  78.86537   46.91434  9.594776   683.7330
## 37 0.50307422437445604  79.49127   55.79383  9.235363   674.3482
##    jerarquico jerarquicoSinEduca
## 12          2                  2
## 13          2                  2
## 20          2                  2
## 29          2                  2
## 35          2                  2
## 37          2                  2

Formateo habitantes a numérica en ambos data frames:

nuevogrupo1$habitantes=as.numeric(nuevogrupo1$habitantes)
nuevogrupo2$habitantes=as.numeric(nuevogrupo2$habitantes)

Hallo el total de habitantes de cada grupo con sum.

Total de habitantes en el grupo 1:

sum(nuevogrupo1$habitantes)
## [1] 13466595

Total de habitantes en el grupo 2:

sum(nuevogrupo2$habitantes)
## [1] 15375714

Concluimos que el grupo 2 es el que tiene la mayor cantidad de habitantes [cerca de 15,4 millones frente al grupo 1 con cerca de 13,5 millones]

  1. ¿Cuántas provincias tienen dificultades para ser clasificadas? [pregunta e]

Para eso debo ver las siluetas:

fviz_silhouette(solucionJerarquica2)
##   cluster size ave.sil.width
## 1       1  153          0.35
## 2       2   41          0.53

Pidamos la información de la silueta, específicamente de las provincias que han sido mal agrupadas:

siluetas2 <- solucionJerarquica2$silinfo$widths
siluetas2[siluetas2$sil_width<0,]
##                  cluster neighbor    sil_width
## TOCACHE                1        2 -0.002252425
## TARMA                  1        2 -0.013366670
## HUÁNUCO                1        2 -0.021094887
## JAÉN                   1        2 -0.022339370
## CAJAMARCA              1        2 -0.082755823
## CHUPACA                1        2 -0.118102494
## SAN ROMÁN              1        2 -0.150898018
## HUAROCHIRÍ             1        2 -0.202462789
## ABANCAY                1        2 -0.250600991
## CORONEL PORTILLO       1        2 -0.337640315
## HUARAZ                 1        2 -0.360021902
## CASTILLA               1        2 -0.362876260
## PASCO                  1        2 -0.363450636
## HUANCAYO               1        2 -0.419900861
## TALARA                 1        2 -0.438572630
## PIURA                  1        2 -0.475042821
## SAN MARTÍN             1        2 -0.479536110

Se observa que hay 17 (DIECISIETE) provincias que tienen dificultades para ser clasificadas.

  1. ¿Cuáles son las principales diferencias que observa con respecto a los resultados del ejercicio anterior? [pregunta f]

Las principales diferencias están:

  • El número de provincias en cada cluster en cada una de las agrupaciones.

Para el caso de la primera agrupación [considerando TODOS los componentes del IDH]:

table(idhPeru2011_provincial$jerarquico)
## 
##   1   2 
##  91 103

Para el caso de la segunda agrupación [SIN CONSIDERAR educa]:

table(idhPeru2011_provincial$jerarquicoSinEduca)
## 
##   1   2 
## 153  41
  • El número de habitantes en cada cluster no es tan diferenciado en la segunda agrupación.

Habitantes por cluster en la primera agrupación:

sum(grupo1$habitantes)
## [1] 5617539
sum(grupo2$habitantes)
## [1] 23224770

Habitantes por cluster en la segunda agrupación:

sum(nuevogrupo1$habitantes)
## [1] 13466595
sum(nuevogrupo2$habitantes)
## [1] 15375714
  • Hay menos provincias con dificultades para ser clasificadas en la segunda agrupación (17) que en la primera agrupación (23).