# 04 - Proporciones

    library(enaho)

Se pueden calcular proporciones sobre cualquier variable de un objeto leído con `leer.inei()` o `leer.inei.web()`. Por ejemplo, para calcular las proporciones de la variable `"P7061"` del primer trimestre de 2011, primero cargamos la base:

    dir <- system.file("extdata", package = "enaho") # directorio con las bases
    leido <- leer.inei(modulo = 37,periodos = 2011,tipo = c("t1"),directorio = dir)
    #> Leyendo 1 archivo.
    #> Leyendo archivo 1 de 1.
    leido
    #> # A tibble: 4,625 × 24
    #>    AÑO   MES   CONGLOME VIVIENDA HOGAR UBIGEO DOMINIO ESTRATO CODINFOR  P702
    #>    <chr> <chr> <chr>    <chr>    <chr> <chr>    <dbl>   <dbl> <chr>    <dbl>
    #>  1 2011  01    0007     049      11    010101       4       4 01           3
    #>  2 2011  01    0007     075      11    010101       4       4 02           5
    #>  3 2011  01    0027     047      11    010504       4       7 02           2
    #>  4 2011  01    0027     047      11    010504       4       7 02           3
    #>  5 2011  01    0027     047      11    010504       4       7 02           5
    #>  6 2011  01    0027     047      11    010504       4       7 02           5
    #>  7 2011  01    0027     108      11    010504       4       7 02           3
    #>  8 2011  01    0027     108      11    010504       4       7 02           4
    #>  9 2011  01    0027     109      11    010504       4       7 01           4
    #> 10 2011  01    0027     110      11    010504       4       7 02           4
    #> # ℹ 4,615 more rows
    #> # ℹ 14 more variables: P703 <dbl+lbl>, P704 <dbl+lbl>, P705 <dbl+lbl>,
    #> #   P7061 <dbl+lbl>, P7062 <dbl+lbl>, P7063 <dbl+lbl>, P7064 <dbl+lbl>,
    #> #   P7065 <dbl+lbl>, P706A1 <dbl+lbl>, P706A2 <dbl+lbl>, P706A3 <dbl+lbl>,
    #> #   P706A4 <dbl+lbl>, TICUEST01 <dbl+lbl>, FACTRIM <dbl>

Una vez cargada, podemos calcular las proporciones de una variable usando `proporcion.inei()`, donde `x` será el nombre de la(s) variable(s), `base` será el objeto leído, y `pesos` será el nombre de la variable que contiene los pesos:

    proporcion.inei(x = "P7061", base = leido, pesos = "FACTRIM")
    #>   Período  Estrato   Nombre Variable      Pase Sí, pagó en dinero
    #> 1    2011 Nacional Nacional    P7061 0.5094712          0.4905288

Como vemos, se genera una tabla con todas las categorías de la variable.

## Cálculo por estratos

Podemos calcular proporciones tomando en cuenta diversos estratos o grupos. Estos pueden ser cualquier variable de `base`. Por ejemplo, usando la variable `DOMINIO`:

    proporcion.inei(x = "P7061",base = leido, pesos = "FACTRIM",
                     estratos = "DOMINIO")
    #>   Período  Estrato   Nombre Variable      Pase Sí, pagó en dinero
    #> 1    2011 Nacional Nacional    P7061 0.5094712          0.4905288
    #> 2    2011  DOMINIO        1    P7061 0.5725683          0.4274317
    #> 3    2011  DOMINIO        2    P7061 0.3087030          0.6912970
    #> 4    2011  DOMINIO        3    P7061 0.3826709          0.6173291
    #> 5    2011  DOMINIO        4    P7061 0.7411016          0.2588984
    #> 6    2011  DOMINIO        5    P7061 0.5203982          0.4796018
    #> 7    2011  DOMINIO        6    P7061 0.5443270          0.4556730
    #> 8    2011  DOMINIO        7    P7061 0.6511964          0.3488036
    #> 9    2011  DOMINIO        8    P7061 0.1808784          0.8191216

Vemos que en 2011 hay 8 dominios (no etiquetados) y los resultados se presentan por cada uno de ellos.

Además de usar cualquier variable, también es posible calcular resultados por región y por área geográfica.

### Cálculo por región (sólo en bases de la ENAHO)

Para hacerlo por región, usamos `"region"`:

    proporcion.inei(x = "P7061",base = leido, pesos = "FACTRIM",
                     estratos = "region")
    #>    Período  Estrato        Nombre Variable      Pase Sí, pagó en dinero
    #> 1     2011 Nacional      Nacional    P7061 0.5094712          0.4905288
    #> 2     2011   Región      AMAZONAS    P7061 0.6906379          0.3093621
    #> 3     2011   Región        ANCASH    P7061 0.6339238          0.3660762
    #> 4     2011   Región      APURIMAC    P7061 0.6688937          0.3311063
    #> 5     2011   Región      AREQUIPA    P7061 0.5644237          0.4355763
    #> 6     2011   Región      AYACUCHO    P7061 0.4338506          0.5661494
    #> 7     2011   Región     CAJAMARCA    P7061 0.7852436          0.2147564
    #> 8     2011   Región        CALLAO    P7061 0.3471748          0.6528252
    #> 9     2011   Región         CUSCO    P7061 0.3812129          0.6187871
    #> 10    2011   Región  HUANCAVELICA    P7061 0.5087897          0.4912103
    #> 11    2011   Región       HUANUCO    P7061 0.4069921          0.5930079
    #> 12    2011   Región           ICA    P7061 0.3542673          0.6457327
    #> 13    2011   Región         JUNIN    P7061 0.7626412          0.2373588
    #> 14    2011   Región   LA LIBERTAD    P7061 0.6267056          0.3732944
    #> 15    2011   Región    LAMBAYEQUE    P7061 0.8547198          0.1452802
    #> 16    2011   Región          LIMA    P7061 0.1826197          0.8173803
    #> 17    2011   Región        LORETO    P7061 0.5830936          0.4169064
    #> 18    2011   Región MADRE DE DIOS    P7061 0.5220190          0.4779810
    #> 19    2011   Región      MOQUEGUA    P7061 0.4549213          0.5450787
    #> 20    2011   Región         PASCO    P7061 0.5467217          0.4532783
    #> 21    2011   Región         PIURA    P7061 0.4296127          0.5703873
    #> 22    2011   Región          PUNO    P7061 0.5672177          0.4327823
    #> 23    2011   Región    SAN MARTIN    P7061 0.6783964          0.3216036
    #> 24    2011   Región         TACNA    P7061 0.3415172          0.6584828
    #> 25    2011   Región        TUMBES    P7061 0.7895966          0.2104034
    #> 26    2011   Región       UCAYALI    P7061 0.6395970          0.3604030

### Cálculo por área geográfica (sólo en bases de la ENAHO)

Para hacerlo por área geográfica, usamos `"area"`:

    proporcion.inei(x = "P7061",base = leido, pesos = "FACTRIM",
                     estratos = "area")
    #>   Período  Estrato   Nombre Variable      Pase Sí, pagó en dinero
    #> 1    2011 Nacional Nacional    P7061 0.5094712          0.4905288
    #> 2    2011     Área   Urbana    P7061 0.4040843          0.5959157
    #> 3    2011     Área    Rural    P7061 0.6029572          0.3970428

En el caso del área geográfica, ésta se determina usando la variable `"ESTRATO"` de `base`. Esta variable suele contener 8 categorías, y las categorías 6, 7 y 8 suelen ser consideras rurales. Sin embargo, podemos cambiar esta definición con el argumento `ruralidad` cuyo valor por defecto es `6:8`:

    proporcion.inei(x = "P7061",base = leido, pesos = "FACTRIM",
                     estratos = "area",
                     ruralidad = 7:8)
    #>   Período  Estrato   Nombre Variable      Pase Sí, pagó en dinero
    #> 1    2011 Nacional Nacional    P7061 0.5094712          0.4905288
    #> 2    2011     Área   Urbana    P7061 0.4556884          0.5443116
    #> 3    2011     Área    Rural    P7061 0.5759101          0.4240899

### Combinación de estratos

Si utilizamos más de un estrato, por defecto no serán halladas las proporciones de la combinación de ellos:

    proporcion.inei(x = "P7061",base = leido, pesos = "FACTRIM",
                     estratos = c("area","DOMINIO"))
    #>    Período  Estrato   Nombre Variable      Pase Sí, pagó en dinero
    #> 1     2011 Nacional Nacional    P7061 0.5094712          0.4905288
    #> 2     2011     Área   Urbana    P7061 0.4040843          0.5959157
    #> 3     2011     Área    Rural    P7061 0.6029572          0.3970428
    #> 4     2011  DOMINIO        1    P7061 0.5725683          0.4274317
    #> 5     2011  DOMINIO        2    P7061 0.3087030          0.6912970
    #> 6     2011  DOMINIO        3    P7061 0.3826709          0.6173291
    #> 7     2011  DOMINIO        4    P7061 0.7411016          0.2588984
    #> 8     2011  DOMINIO        5    P7061 0.5203982          0.4796018
    #> 9     2011  DOMINIO        6    P7061 0.5443270          0.4556730
    #> 10    2011  DOMINIO        7    P7061 0.6511964          0.3488036
    #> 11    2011  DOMINIO        8    P7061 0.1808784          0.8191216

Pero es posible combinar estratos usando el argumento `combinarestratos = TRUE`:

    proporcion.inei(x = "P7061",base = leido, pesos = "FACTRIM",
                     estratos = c("area","DOMINIO"),
                     combinarestratos = TRUE)
    #>    Período      Estrato   Nombre Variable      Pase Sí, pagó en dinero
    #> 1     2011     Nacional Nacional    P7061 0.5094712          0.4905288
    #> 2     2011         Área   Urbana    P7061 0.4040843          0.5959157
    #> 3     2011         Área    Rural    P7061 0.6029572          0.3970428
    #> 4     2011      DOMINIO        1    P7061 0.5725683          0.4274317
    #> 5     2011      DOMINIO        2    P7061 0.3087030          0.6912970
    #> 6     2011      DOMINIO        3    P7061 0.3826709          0.6173291
    #> 7     2011      DOMINIO        4    P7061 0.7411016          0.2588984
    #> 8     2011      DOMINIO        5    P7061 0.5203982          0.4796018
    #> 9     2011      DOMINIO        6    P7061 0.5443270          0.4556730
    #> 10    2011      DOMINIO        7    P7061 0.6511964          0.3488036
    #> 11    2011      DOMINIO        8    P7061 0.1808784          0.8191216
    #> 12    2011 Área_DOMINIO Urbana_1    P7061 0.5032507          0.4967493
    #> 13    2011 Área_DOMINIO Urbana_2    P7061 0.2694531          0.7305469
    #> 14    2011 Área_DOMINIO Urbana_3    P7061 0.3665883          0.6334117
    #> 15    2011 Área_DOMINIO Urbana_4    P7061 0.7785809          0.2214191
    #> 16    2011 Área_DOMINIO Urbana_5    P7061 0.5077609          0.4922391
    #> 17    2011 Área_DOMINIO Urbana_6    P7061 0.5682125          0.4317875
    #> 18    2011 Área_DOMINIO Urbana_7    P7061 0.6139821          0.3860179
    #> 19    2011 Área_DOMINIO Urbana_8    P7061 0.1808784          0.8191216
    #> 20    2011 Área_DOMINIO  Rural_1    P7061 0.7545385          0.2454615
    #> 21    2011 Área_DOMINIO  Rural_2    P7061 0.3994594          0.6005406
    #> 22    2011 Área_DOMINIO  Rural_3    P7061 0.5993993          0.4006007
    #> 23    2011 Área_DOMINIO  Rural_4    P7061 0.7362002          0.2637998
    #> 24    2011 Área_DOMINIO  Rural_5    P7061 0.5236780          0.4763220
    #> 25    2011 Área_DOMINIO  Rural_6    P7061 0.5303208          0.4696792
    #> 26    2011 Área_DOMINIO  Rural_7    P7061 0.6769487          0.3230513
    #> 27    2011 Área_DOMINIO  Rural_8    P7061       NaN                NaN

## Cálculo de más de un período

Si más de un período es leído por `leer.inei()` o `leer.inei.web()` se genera una lista. Si bien esta lista se puede combinar, no siempre es posible:

    leido2 <- leer.inei(modulo = 37,periodos = c(2011,2024),tipo = c("t1"),directorio = dir,
                       combinar = TRUE)
    #> Leyendo 2 archivos.
    #> Leyendo archivo 1 de 2.
    #> Leyendo archivo 2 de 2.
    #> Warning in combinar.inei(out, combinarsolocomunes = combinarsolocomunes):
    #> No se pudo combinar la lista porque al menos una variable con el mismo nombre no tiene las mismas etiquetas.
    class(leido2)
    #> [1] "list"

Sin embargo, sí es posible calcular proporciones sobre esta lista:

    proporcion.inei(x = "P7061", base = leido2, pesos = NULL)
    #>   Período  Estrato   Nombre Variable      PASE SI,PAGOENDINERO SI,CONDINERO
    #> 1 2011_t1 Nacional Nacional    P7061 0.5643243       0.4356757           NA
    #> 2 2024_t1 Nacional Nacional    P7061 0.6181161              NA    0.3818839

Es importante notar que las etiquetas de las categorías han cambiado. Esto se debe a que 2011 y 2024 no comparten exactamente las mismas etiquetas. Para resolver este problema se remueven los espacios en blanco y se convierten a mayúsculas. Pero como se ve en el ejemplo, seguimos teniendo etiquetas que no coinciden.

Sin embargo, si creemos que las etiquetas tienen el mismo orden podemos forzarlas a que sean las mismas. Para ello, la función utilizará las etiquetas con mayor número de categorías del período más reciente:

    proporcion.inei(x = "P7061", base = leido2, pesos = NULL,
                     forzaretiquetas = TRUE)
    #>   Período  Estrato   Nombre Variable      PASE SI,CONDINERO
    #> 1 2011_t1 Nacional Nacional    P7061 0.5643243    0.4356757
    #> 2 2024_t1 Nacional Nacional    P7061 0.6181161    0.3818839

Cuando introducimos los pesos, es posible que exista un error porque no necesariamente todos los períodos tienen el mismo nombre para los pesos:

    proporcion.inei(x = "P7061", base = leido2, pesos = "FACTRIM",
                     forzaretiquetas = TRUE)
    #> Error in `basek[, pesok]`:
    #> ! Can't subset columns that don't exist.
    #> ✖ Column `FACTRIM` doesn't exist.

Esto lo podemos resolver haciendo un vector con los nombres para cada período:

    proporcion.inei(x = "P7061", base = leido2, pesos = c("FACTRIM","FACTOR"),
                     forzaretiquetas = TRUE)
    #>   Período  Estrato   Nombre Variable      PASE SI,CONDINERO
    #> 1 2011_t1 Nacional Nacional    P7061 0.5094712    0.4905288
    #> 2 2024_t1 Nacional Nacional    P7061 0.5826425    0.4173575

## Múltiples variables

También podemos calcular múltiples variables a la vez, con las mismas opciones mostradas, el resultado será siempre en formato largo:

    proporcion.inei(x = c("P7061","P7062"), base = leido2, pesos = c("FACTRIM","FACTOR"),
                     estratos = "area", forzaretiquetas = TRUE)
    #>    Período  Estrato   Nombre Variable                Categoría Proporción
    #> 1  2011_t1 Nacional Nacional    P7061                     PASE 0.50947121
    #> 2  2011_t1     Área   Urbana    P7061                     PASE 0.40408430
    #> 3  2011_t1     Área    Rural    P7061                     PASE 0.60295723
    #> 4  2024_t1 Nacional Nacional    P7061                     PASE 0.58264251
    #> 5  2024_t1     Área   Urbana    P7061                     PASE 0.53082728
    #> 6  2024_t1     Área    Rural    P7061                     PASE 0.65384025
    #> 7  2011_t1 Nacional Nacional    P7061             SI,CONDINERO 0.49052879
    #> 8  2011_t1     Área   Urbana    P7061             SI,CONDINERO 0.59591570
    #> 9  2011_t1     Área    Rural    P7061             SI,CONDINERO 0.39704277
    #> 10 2024_t1 Nacional Nacional    P7061             SI,CONDINERO 0.41735749
    #> 11 2024_t1     Área   Urbana    P7061             SI,CONDINERO 0.46917272
    #> 12 2024_t1     Área    Rural    P7061             SI,CONDINERO 0.34615975
    #> 13 2011_t1 Nacional Nacional    P7062                     PASE 0.90364984
    #> 14 2011_t1     Área   Urbana    P7062                     PASE 0.96857138
    #> 15 2011_t1     Área    Rural    P7062                     PASE 0.84605961
    #> 16 2024_t1 Nacional Nacional    P7062                     PASE 0.85959122
    #> 17 2024_t1     Área   Urbana    P7062                     PASE 0.93960228
    #> 18 2024_t1     Área    Rural    P7062                     PASE 0.74965044
    #> 19 2011_t1 Nacional Nacional    P7062 SI,REALIZANDOALGUNALABOR 0.09635016
    #> 20 2011_t1     Área   Urbana    P7062 SI,REALIZANDOALGUNALABOR 0.03142862
    #> 21 2011_t1     Área    Rural    P7062 SI,REALIZANDOALGUNALABOR 0.15394039
    #> 22 2024_t1 Nacional Nacional    P7062 SI,REALIZANDOALGUNALABOR 0.14040878
    #> 23 2024_t1     Área   Urbana    P7062 SI,REALIZANDOALGUNALABOR 0.06039772
    #> 24 2024_t1     Área    Rural    P7062 SI,REALIZANDOALGUNALABOR 0.25034956

## Opciones adicionales

Podemos imprimir los resultados de una variable en formato largo:

    proporcion.inei(x = "P7061", base = leido, pesos = "FACTRIM",
                     formatolargo = TRUE)
    #>   Período  Estrato   Nombre Variable          Categoría Proporción
    #> 1    2011 Nacional Nacional    P7061               Pase  0.5094712
    #> 2    2011 Nacional Nacional    P7061 Sí, pagó en dinero  0.4905288

Podemos imprimir los resultados como porcentaje:

    proporcion.inei(x = "P7061", base = leido, pesos = "FACTRIM",
                     porcentaje = TRUE)
    #>   Período  Estrato   Nombre Variable     Pase Sí, pagó en dinero
    #> 1    2011 Nacional Nacional    P7061 50.94712           49.05288

Podemos imprimir los resultados con un número específico de decimales:

    proporcion.inei(x = "P7061", base = leido, pesos = "FACTRIM",
                     decimales = 3)
    #>   Período  Estrato   Nombre Variable  Pase Sí, pagó en dinero
    #> 1    2011 Nacional Nacional    P7061 0.509              0.491