21-03-2022

1 La tabla de mortalidad

¿Qué es una tabla de mortalidad?

También conocida como tabla de vida o tabla actuarial, la tabla de mortalidad muestra la tasa de muertes que ocurren en una población definida durante un intervalo de tiempo seleccionado, o las tasas de supervivencia desde el nacimiento hasta la muerte. Una tabla de mortalidad generalmente muestra la probabilidad general de muerte de una persona antes de su próximo cumpleaños, según su edad actual. Estas tablas se utilizan normalmente para informar la construcción de pólizas de seguro y otras formas de gestión de responsabilidad.

#La práctica

La siguiente tabla nos muestra un ejemplo de tabla de mortalidad:

Tabla de mortalidad Desde una aplicación del INE2 podemos obtener la información de la cantidad de muertes que se producen en cada año vivido. Tratamos el resultado obtenido para obtener una tabla original sobre la cual empezar a trabajar para un año específico el 2010:

def_comunas <- read_xlsx("Insumos/defunciones_comunas_2010.xlsx")
fila <- seq(1,nrow(def_comunas),1)
def_comunas <- cbind(def_comunas,fila)

f_area <- data.frame(filter(def_comunas,grepl("AREA #",...2)))$fila
vacio <- data.frame(filter(def_comunas,grepl("Tabla vacía",...2)))$fila
f_total <- data.frame(filter(def_comunas,grepl("Total",...2)))$fila
f_total <- c(f_total,vacio)
f_total <- sort(f_total)
lim <- length(f_total)-1

tabla_comunas <- data.frame()

for (i in 1:lim) {
  
  m_comunas <-  def_comunas[c(f_area[i]:f_total[i]),2:3]
  m_comunas$cod_com <- str_replace_all(paste0(m_comunas[1,1]),"AREA # ","")  
  m_comunas$comuna <- paste0(m_comunas[1,2])
  colnames(m_comunas) <- c("Edad","Casos","cod_com","comuna")
  m_comunas <- m_comunas[-c(1:3,nrow(m_comunas)),]
  tabla_comunas <- rbind(tabla_comunas,m_comunas)
  
}

tabla_comunas$Casos <- as.numeric(tabla_comunas$Casos)
tabla_comunas <- tabla_comunas[,c(3,4,1,2)]
tabla_comunas$fila <- seq(1,nrow(tabla_comunas))

tabla_comunas$año <- "2010"
head(tabla_comunas)
##    cod_com  comuna      Edad Casos fila  año
## 16   01101 IQUIQUE   1  hora     2    1 2010
## 17   01101 IQUIQUE  3  horas     2    2 2010
## 18   01101 IQUIQUE  4  horas     1    3 2010
## 19   01101 IQUIQUE  6  horas     1    4 2010
## 20   01101 IQUIQUE 13  horas     1    5 2010
## 21   01101 IQUIQUE    1  día     3    6 2010
tabla_comunas$cod_com <- as.numeric(tabla_comunas$cod_com)
head(tabla_comunas)
##    cod_com  comuna      Edad Casos fila  año
## 16    1101 IQUIQUE   1  hora     2    1 2010
## 17    1101 IQUIQUE  3  horas     2    2 2010
## 18    1101 IQUIQUE  4  horas     1    3 2010
## 19    1101 IQUIQUE  6  horas     1    4 2010
## 20    1101 IQUIQUE 13  horas     1    5 2010
## 21    1101 IQUIQUE    1  día     3    6 2010
unique(tabla_comunas$año)
## [1] "2010"

2 Comunas del 2018 al 2022

def_comunas2 <- read.csv2("Insumos/DEFUNCIONES_FUENTE_DEIS_2018_2022.csv")
names(def_comunas2)[1] <- "Año"
names(def_comunas2)[2] <- "Fecha de muerte"
names(def_comunas2)[3] <- "Sexo"
names(def_comunas2)[4] <- "Casos"
names(def_comunas2)[5] <- "Edad"
names(def_comunas2)[6] <- "cod_com"
def_comunas2 <- def_comunas2[,-c(3)]
head(def_comunas2)
##    Año Fecha de muerte Casos Edad cod_com
## 1 2022           44607     1   89   13111
## 2 2022           44562     1  102    5109
## 3 2022           44612     1   91    8101
## 4 2022           44568     1   90   13116
## 5 2022           44603     1   94    8202
## 6 2022           44566     1   98    4302
unique(def_comunas2$Edad)
##   [1]  89 102  91  90  94  98  81  96 104 103  95 100  86 111  88 101 107 105
##  [19]  84 109  78  83 106  97  92  87  99  93  82  85  80  79 121  75  77  76
##  [37]  74  68  73  72  67  64  71  66  70  63  69  62  65  58  57  61  56  59
##  [55]  52  60  51  55  53  50  49  54  47  48  45  46  43  44  42  41  40  25
##  [73]  36  37  39  38  33  32  35  34  31  29  30  28  27  26  24  17  23  22
##  [91]  21  19  20  18  16  15  14  13  12  11  10   9   8   7   6   5   4   3
## [109]   2   1 108 110 116 123 114 117 112 115 118 126

Agrupamos por año la cantidad de muertes:

# aggregate(def_comunas["Casos"], by=def_comunas["Año"], sum)

agrupacion <- aggregate(cbind(Casos) ~ Edad  + cod_com + Año, def_comunas2,  FUN = sum, na.rm = TRUE)
head(agrupacion)
##   Edad cod_com  Año Casos
## 1    1    1101 2018     9
## 2    2    1101 2018    12
## 3    3    1101 2018    12
## 4    4    1101 2018     4
## 5    5    1101 2018     6
## 6    6    1101 2018     2

3 LA práctica:

Expliquemos la forma en la que se calcula la esperanza de vida en términos utilizando un año en Chile -2010-:

3.1 x: Edad

comunas <- unique(tabla_comunas$comuna)
tabla2 <- data.frame()
for (i in comunas[1:346]) {
  tabla <- filter(tabla_comunas, comuna == i)
  suma <- filter(tabla_comunas, comuna == i)
  if(nrow(filter(tabla, Edad == "1  año")) == 0){
    
 
  }else{
    
    tabla_1 <- filter(tabla, Edad == "1  año")
    tabla_1$Edad <- "1  años"
    tabla <- rbind(tabla_1,tabla) 
    tabla <- filter(tabla, Edad != "1  año")
    
  }
  
  tabla <- filter(tabla, grepl("año",Edad))
  anio_0 <- tabla[1,]
  anio_0$Edad <- "0  años" 
  anio_0$Casos <- sum(filter(suma,  !grepl("año",Edad))[4]) 
  tabla <- rbind(anio_0,tabla)
  tabla <- filter(tabla, !grepl("más",Edad))
  tabla2 <- rbind(tabla2,tabla)

}
 head(tabla2, 5)
##   cod_com  comuna    Edad Casos fila  año
## 1    1101 IQUIQUE 0  años    19   16 2010
## 2    1101 IQUIQUE 1  años     1   16 2010
## 3    1101 IQUIQUE 3  años     2   17 2010
## 4    1101 IQUIQUE 5  años     2   18 2010
## 5    1101 IQUIQUE 9  años     1   19 2010

Recordemos que agregamos el registro de “año 0” sumando las defunciones que ocurrieron antes de cumplir un año. También agregamos como registro un valor de 0 en las edades en los que no hubo decesos para cada comuna.

De ésta manera los registros pasan a ser de 18529 a 35595

3.2 m(x): Probabilidad de muerte

l.x. es sólo una columna vacía representante de un valor hipotético inicial de 10000 personas vivas decreciente en el tiempo que utilizaremos más adelante.

x son los años de vida y m.x. es la probabilidad de morir a esa edad, calculado con las personas muertas a la edad n dividido por la cantidad de personas vivas a esa misma edad.

Agregamos en la columna Edad, el registro “0 años”, que suma las defunciones que ocurrieron antes de cumplir un año. También agregamos como registro un valor de 0 en las edades en los que no hubo decesos para cada comuna.

tabla3 <- data.frame()

for (j in comunas) {
  filtro <- filter(tabla2, comuna == j)
  
  n_edades <- data.frame()
  for (i in 0:104) {
  seq_años <- paste(i," años")
  n_edades <- rbind(n_edades,seq_años)
  }
  
  names(n_edades)[1] <- "Edad"
  tablaf = merge(x = n_edades, y = filtro, by = "Edad", all.x = TRUE)
  tablaf <- mutate_all(tablaf, ~replace(., is.na(.), 0))
  tablaf$comuna <- j
  tabla3 <- rbind(tabla3,tablaf)
  
}
  tabla_f <- tabla3
# tabla3
 
for (i in 1:104) {
  tabla_f$tasa_m[i] <- (tabla_f$Casos[i]/sum(tabla_f$Casos))
} 

tabla_de_muerte <- data.frame( 
  x = seq(0,104,1),
  "l(x)" = round(0,0),
  "m(x)" = tabla_f$tasa_m
)   
head(tabla_de_muerte)
##   x l.x.         m.x.
## 1 0    0 1.787344e-04
## 2 1    0 9.407072e-06
## 3 2    0 0.000000e+00
## 4 3    0 2.822122e-05
## 5 4    0 0.000000e+00
## 6 5    0 3.762829e-05

3.3 l(x)

Paso siguiente es la construcción de la función de supervivencia, que es la gente que va quedando viva con el transcurso de los años. Empezamos con l(0) = 100000 siguiendo la convención.

tabla_de_muerte$l.x.[1] <- 100000
mx <- tabla_de_muerte$m.x.
for (j in 2:length(mx)) {
  tabla_de_muerte$l.x.[j] <- ceiling(tabla_de_muerte$l.x.[j-1]*exp(-tabla_de_muerte$m.x.[j-1]))
}  
head(tabla_de_muerte,5)
##   x   l.x.         m.x.
## 1 0 100000 1.787344e-04
## 2 1  99983 9.407072e-06
## 3 2  99983 0.000000e+00
## 4 3  99983 2.822122e-05
## 5 4  99981 0.000000e+00

3.4 d(x)

Añadimos el numero de muertes en la columna d(x).

tabla_de_muerte$d.x. <- 0
for (j in 1:105) {
  tabla_de_muerte$d.x.[j] <-  tabla_de_muerte$l.x.[j]-tabla_de_muerte$l.x.[j+1] 
}
tabla_de_muerte <- tabla_de_muerte[,c(1,2,4,3)]  
head(tabla_de_muerte,5)
##   x   l.x. d.x.         m.x.
## 1 0 100000   17 1.787344e-04
## 2 1  99983    0 9.407072e-06
## 3 2  99983    0 0.000000e+00
## 4 3  99983    2 2.822122e-05
## 5 4  99981    0 0.000000e+00

3.5 L(x)

Este es el número de años-persona vividos entre la edad x y (x+1)

Agregamos el número de persona vivas entre las edades exactas x y x + 1. Se toma el valor medio pues una persona puede morir a mitad de de su cumpleaños:

tabla_de_muerte$L.x. <- 0
for (j in 1:105) {
  tabla_de_muerte$L.x.[j] <-  (tabla_de_muerte$l.x.[j+1])+(0.5*tabla_de_muerte$d.x.[j] )
}  
head(tabla_de_muerte,5)
##   x   l.x. d.x.         m.x.    L.x.
## 1 0 100000   17 1.787344e-04 99991.5
## 2 1  99983    0 9.407072e-06 99983.0
## 3 2  99983    0 0.000000e+00 99983.0
## 4 3  99983    2 2.822122e-05 99982.0
## 5 4  99981    0 0.000000e+00 99981.0

3.6 T(x)

Este es el número de años-persona vividos desde la edad x hasta la edad más avanzada.

tabla_de_muerte$T.x. <- 0
tabla_de_muerte <- tabla_de_muerte[1:104,]
for (j in 1:104) {
  tabla_de_muerte$T.x.[j] <-  sum( tabla_de_muerte$L.x.[j:104] )
}   
head(tabla_de_muerte,5)
##   x   l.x. d.x.         m.x.    L.x.     T.x.
## 1 0 100000   17 1.787344e-04 99991.5 10372836
## 2 1  99983    0 9.407072e-06 99983.0 10272845
## 3 2  99983    0 0.000000e+00 99983.0 10172862
## 4 3  99983    2 2.822122e-05 99982.0 10072879
## 5 4  99981    0 0.000000e+00 99981.0  9972897

3.7 e(x)

Calculamos el número medio de años de vida que quedan a la edad exacta x.

tabla_de_muerte$e.x. <- 0 
for (j in 1:104) {
  tabla_de_muerte$e.x.[j] <-  tabla_de_muerte$T.x.[j]/tabla_de_muerte$l.x.[j] 
}
head(tabla_de_muerte,5)
##   x   l.x. d.x.         m.x.    L.x.     T.x.      e.x.
## 1 0 100000   17 1.787344e-04 99991.5 10372836 103.72836
## 2 1  99983    0 9.407072e-06 99983.0 10272845 102.74591
## 3 2  99983    0 0.000000e+00 99983.0 10172862 101.74591
## 4 3  99983    2 2.822122e-05 99982.0 10072879 100.74591
## 5 4  99981    0 0.000000e+00 99981.0  9972897  99.74792

3.7.1 A nivel nacional

comunas <- unique(tabla_comunas$cod_com)
tabla2 <- data.frame()
for (i in comunas[1:lim]) {
  tabla <- filter(tabla_comunas, cod_com == i)
  suma <- filter(tabla_comunas, cod_com == i)
  if(nrow(filter(tabla, Edad == "1  año")) == 0){

  }else{
    
    tabla_1 <- filter(tabla, Edad == "1  año")
    tabla_1$Edad <- "1  años"
    tabla <- rbind(tabla_1,tabla) 
    tabla <- filter(tabla, Edad != "1  año")
    
  }
  
  tabla <- filter(tabla, grepl("año",Edad))
  anio_0 <- tabla[1,]
  anio_0$Edad <- "0  años" 
  anio_0$Casos <- sum(filter(suma,  !grepl("año",Edad))[4]) 
  tabla <- rbind(anio_0,tabla)
  tabla <- filter(tabla, !grepl("más",Edad))
  tabla2 <- rbind(tabla2,tabla)

}

tabla3 <- data.frame()

for (j in comunas) {
  filtro <- filter(tabla2, cod_com == j)

  n_edades <- data.frame()
  for (i in 0:104) {
  seq_años <- paste(i," años")
  n_edades <- rbind(n_edades,seq_años)
  }

  names(n_edades)[1] <- "Edad"
  tablaf = merge(x = n_edades, y = filtro, by = "Edad", all.x = TRUE)
  tablaf <- mutate_all(tablaf, ~replace(., is.na(.), 0))
  tablaf$cod_com <- j
  tabla3 <- rbind(tabla3,tablaf)
} 
head(tabla3)
##        Edad cod_com  comuna Casos fila  año
## 1   0  años    1101 IQUIQUE    19   16 2010
## 2   1  años    1101 IQUIQUE     1   16 2010
## 3  10  años    1101       0     0    0    0
## 4 100  años    1101 IQUIQUE     3  102 2010
## 5 101  años    1101       0     0    0    0
## 6 102  años    1101 IQUIQUE     4  103 2010

4 Automatización para todas las comunas de Chile del 2010 al 2017.

esp_d_vida_def <- tibble("n"=339)
esperanza <- tibble()
for (a in seq(2010,2017,1)) {

direccion <- paste0("Insumos/defunciones_comunas_",a,".xlsx")
def_comunas <- read_xlsx(direccion)

fila <- seq(1,nrow(def_comunas),1)
def_comunas <- cbind(def_comunas,fila)

f_area <- data.frame(filter(def_comunas,grepl("AREA #",...2)))$fila
vacio <- data.frame(filter(def_comunas,grepl("Tabla vacía",...2)))$fila
f_total <- data.frame(filter(def_comunas,grepl("Total",...2)))$fila
f_total <- c(f_total,vacio)
f_total <- sort(f_total)
lim <- length(f_total)-1

tabla_comunas <- data.frame()
for (i in 1:lim) {#length(f_area)
  
  m_comunas <-  def_comunas[c(f_area[i]:f_total[i]),2:3]
  m_comunas$cod_com <- str_replace_all(paste0(m_comunas[1,1]),"AREA # ","")  
  m_comunas$comuna <- paste0(m_comunas[1,2])
  colnames(m_comunas) <- c("Edad","Casos","cod_com","comuna")
  m_comunas <- m_comunas[-c(1:3,nrow(m_comunas)),]
  tabla_comunas <- rbind(tabla_comunas,m_comunas)
  
}
tabla_comunas$Casos <- as.numeric(tabla_comunas$Casos)
tabla_comunas <- tabla_comunas[,c(3,4,1,2)]
tabla_comunas$fila <- seq(1,nrow(tabla_comunas))

##################################################################################################################################################

comunas <- unique(tabla_comunas$cod_com)
tabla2 <- data.frame()
for (i in comunas[1:lim]) {
  tabla <- filter(tabla_comunas, cod_com == i)
  suma <- filter(tabla_comunas, cod_com == i)
  if(nrow(filter(tabla, Edad == "1  año")) == 0){
    
 
  }else{
    
    tabla_1 <- filter(tabla, Edad == "1  año")
    tabla_1$Edad <- "1  años"
    tabla <- rbind(tabla_1,tabla) 
    tabla <- filter(tabla, Edad != "1  año")
    
  }
  
  tabla <- filter(tabla, grepl("año",Edad))
  anio_0 <- tabla[1,]
  anio_0$Edad <- "0  años" 
  anio_0$Casos <- sum(filter(suma,  !grepl("año",Edad))[4]) 
  tabla <- rbind(anio_0,tabla)
  tabla <- filter(tabla, !grepl("más",Edad))
  tabla2 <- rbind(tabla2,tabla)

}


tabla3 <- data.frame()

for (j in comunas) {
  filtro <- filter(tabla2, cod_com == j)

  n_edades <- data.frame()
  for (i in 0:104) {
  seq_años <- paste(i," años")
  n_edades <- rbind(n_edades,seq_años)
  }

  names(n_edades)[1] <- "Edad"
  tablaf = merge(x = n_edades, y = filtro, by = "Edad", all.x = TRUE)
  tablaf <- mutate_all(tablaf, ~replace(., is.na(.), 0))
  tablaf$cod_com <- j
  tabla3 <- rbind(tabla3,tablaf)

} 

#############################################################################################################################################

comunas <- unique(tabla3$cod_com)
esp_d_vid <- data.frame()
fn_esperanza <- function(i){

  mortalidad <- filter(tabla3, cod_com == comunas[i])
  
for (j in 1:105) {
  mortalidad$tasa_m[j] <- (mortalidad$Casos[j]/sum(mortalidad$Casos))
}
  
tabla_de_muerte <- data.frame(
  cod_com = comunas[i],
  x = seq(0,104,1),
  "l(x)" = round(0,0),
  "m(x)" = mortalidad$tasa_m
)  
 
tabla_de_muerte$l.x.[1] <- 100000
tabla_de_muerte$l.x.[2] <- ceiling(tabla_de_muerte$l.x.[1]*exp(-tabla_de_muerte$m.x.[1]))
mx <- tabla_de_muerte$m.x.
for (j in 3:length(mx)) {
  tabla_de_muerte$l.x.[j] <- ceiling(tabla_de_muerte$l.x.[j-1]*exp(-tabla_de_muerte$m.x.[j-1])) 
}

tabla_de_muerte$d.x. <- 0
for (j in 1:105) {
  tabla_de_muerte$d.x.[j] <-  tabla_de_muerte$l.x.[j]-tabla_de_muerte$l.x.[j+1]
}
tabla_de_muerte <- tabla_de_muerte[,c(1,2,3,5,4)]

tabla_de_muerte$q.x. <- 0
for (j in 1:105) {
  # tabla_de_muerte$q.x.[j] <-  (tabla_de_muerte$d.x.[j]/tabla_de_muerte$l.x.[j])
  tabla_de_muerte$q.x.[j] <-  1- exp(-tabla_de_muerte$m.x.[j])
}
tabla_de_muerte <- tabla_de_muerte[,c(1,2,3,4,6,5)] 

tabla_de_muerte$L.x. <- 0
for (j in 1:105) {
  tabla_de_muerte$L.x.[j] <-  tabla_de_muerte$l.x.[j+1]+(0.5*tabla_de_muerte$d.x.[j] )
}

tabla_de_muerte$T.x. <- 0
tabla_de_muerte <- tabla_de_muerte[1:104,]
for (j in 1:104) {
  tabla_de_muerte$T.x.[j] <-  sum( tabla_de_muerte$L.x.[j:104] )

}

tabla_de_muerte$e.x. <- 0
for (j in 1:104) {
  tabla_de_muerte$e.x.[j] <-  tabla_de_muerte$T.x.[j]/tabla_de_muerte$l.x.[j]

}
  
tabla_de_muerte2 <<- tabla_de_muerte
}
 


for (i in 1:339) {

  fn_esperanza(i)
  
esp_d_vid <- rbind(esp_d_vid,tabla_de_muerte2)

}


esp_d_vida <- filter(esp_d_vid, x == 0) 
esp_d_vida <- esp_d_vida[!is.na(esp_d_vida[,c("e.x.")]),]
esp_d_vida <- filter(esp_d_vida, x == 0  )

maximo_ex <- max(esp_d_vid$e.x.)
minimo_ex <- min(esp_d_vid$e.x.)

esp_d_vida$año <- a
esperanza <- rbind(esperanza,esp_d_vida)

esp_d_vida$LEI <- (esp_d_vida$e.x. - minimo_ex)/(maximo_ex-minimo_ex)
esp_d_vida <- esp_d_vida[,c("cod_com","LEI")]
colnames(esp_d_vida) <- c("cod_com",paste0("LEI_",a))
esp_d_vida_def <- cbind(esp_d_vida_def,esp_d_vida) 


}
esp_d_vida_def <- esp_d_vida_def[,c(2,3,5,7,9,11,13,15,17)]
esperanza2<- esperanza[,c(1,9,10)]
write_xlsx(esperanza2,"Productos/esperanza_de_vida.xlsx")
head(esperanza2)
##   cod_com     e.x.  año
## 1   01101 80.24305 2010
## 2   01107 75.21345 2010
## 3   01401 74.06982 2010
## 4   01402 82.63309 2010
## 5   01403 88.08749 2010
## 6   01404 78.36736 2010
cod_com <- readxl::read_xlsx("codigos_comunales.xlsx")
names(cod_com)[6] <- "cod_com"
unique(esperanza2$año)
## [1] 2010 2011 2012 2013 2014 2015 2016 2017
length(unique(esperanza2))
## [1] 3

LEI

# esp_d_vida_def
# demografia <- read_xls("C:/Users/chris/Desktop/GitHub/ds_IDH/Insumos/IDH_la_esperanza_de_vida_al_nacer/codigos_comunales.xls")
names(cod_com)[6] <- "cod_com"
esp_d_vida_def <- merge(esp_d_vida_def,cod_com,by="cod_com", )
head(esp_d_vida_def)
##   cod_com  LEI_2010  LEI_2011  LEI_2012  LEI_2013  LEI_2014  LEI_2015  LEI_2016
## 1   01101 0.7994470 0.7963122 0.7730945 0.7978304 0.7661035 0.7999674 0.8035349
## 2   01107 0.7487250 0.7525055 0.7192448 0.7352667 0.7088602 0.7625116 0.7451099
## 3   01401 0.7371918 0.7129457 0.7034099 0.7086529 0.7548170 0.7371852 0.7685620
## 4   01402 0.8235498 0.8264383 0.8648978 0.8348666 0.8053658 0.8362848 0.7944870
## 5   01403 0.8785556 0.9803521 0.8996743 0.9485513 0.7315273 0.7544867 0.7752094
## 6   01404 0.7805312 0.8197431 0.7385400 0.7663773 0.8780702 0.8234916 0.7293193
##    LEI_2017 Código Región Nombre Región Abreviatura Región Código Provincia
## 1 0.7994470            01      Tarapacá               TPCA              011
## 2 0.7487250            01      Tarapacá               TPCA              011
## 3 0.7371918            01      Tarapacá               TPCA              014
## 4 0.8235498            01      Tarapacá               TPCA              014
## 5 0.8785556            01      Tarapacá               TPCA              014
## 6 0.7805312            01      Tarapacá               TPCA              014
##   Nombre Provincia        comuna
## 1          Iquique       Iquique
## 2          Iquique Alto Hospicio
## 3        Tamarugal  Pozo Almonte
## 4        Tamarugal        Camiña
## 5        Tamarugal      Colchane
## 6        Tamarugal         Huara
esp_d_vida_def2 <-  esp_d_vida_def[c(1,10,2,3,4,5,6,7,8,9)]
head(esp_d_vida_def2)
##   cod_com Código Región  LEI_2010  LEI_2011  LEI_2012  LEI_2013  LEI_2014
## 1   01101            01 0.7994470 0.7963122 0.7730945 0.7978304 0.7661035
## 2   01107            01 0.7487250 0.7525055 0.7192448 0.7352667 0.7088602
## 3   01401            01 0.7371918 0.7129457 0.7034099 0.7086529 0.7548170
## 4   01402            01 0.8235498 0.8264383 0.8648978 0.8348666 0.8053658
## 5   01403            01 0.8785556 0.9803521 0.8996743 0.9485513 0.7315273
## 6   01404            01 0.7805312 0.8197431 0.7385400 0.7663773 0.8780702
##    LEI_2015  LEI_2016  LEI_2017
## 1 0.7999674 0.8035349 0.7994470
## 2 0.7625116 0.7451099 0.7487250
## 3 0.7371852 0.7685620 0.7371918
## 4 0.8362848 0.7944870 0.8235498
## 5 0.7544867 0.7752094 0.8785556
## 6 0.8234916 0.7293193 0.7805312
write_xlsx(esp_d_vida_def2,"Productos/LEI.xlsx")

http://www.scielo.org.mx/scielo.php?script=sci_arttext&pid=S1405-74252009000300004

https://www.ons.gov.uk/peoplepopulationandcommunity/healthandsocialcare/healthandlifeexpectancies/methodologies/guidetocalculatingnationallifetables