Tabla de vida en R / Life table in R

Julio C.

Introducción

La tabla de vida es una forma de mostrar el comportamiento de la mortalidad, supervidencia y fecundidad una cohorte. En esta página se muestra paso a paso la construcción de la tabla de vida en R con base en Preston et al (); los datos están disponibles en el siguiente repositorio de Github:Data , o bien, se pueden descargar con el siguiente código:

El primer paso para utilizar R es instalar los paquetes que es donde se encuentran las diferentes funciones que se ocupan para el análsis. Para esta sesión, se requieren los siguientes: data.table, foreign, questionr, base.

library(dplyr)
library(foreign)
library(RCurl)
library(foreign)

url <- "https://raw.githubusercontent.com/jcms2665/DemographyCourse/master/Data/tabla.csv"
tabla <- mutate(read.csv(textConnection(getURL(url))), n = c(diff(edad), 0))

  1. Explorar la base de datos

View(tabla)

x<-head(tabla,5)

  1. Calcular las tasas específicas de mortalidad \({_n}m_{x}\)

tabla <- mutate(tabla, nmx = D/N)

  1. Obtener el número promedio de años persona vividos en el intervalo por aquellos que murieron, es decir: \({_n}L_{x}\) Los vamos a tomar prestados de Keyfitz y Flieger (1971)

kfnax <- read.dta("http://data.princeton.edu/eco572/datasets/kfnax.dta")
names(kfnax)[1]<-"edad"

  1. Unimos los años persona vividos a la tabla que teníamos usando la edad como pivote

tabla <- inner_join(tabla, kfnax, by="edad")

  1. Checamos los años persona vividos para las edades de 0-1 y 1-4

cond <- rep(tabla[1,"nmx"] >= 0.107, 2) # Usamos una expresión como ayuda
tabla[1:2,"nax"] <- ifelse(cond, c(0.330, 1.352), tabla[1:2,"nax"] <- c(0.045, 1.651) + c(2.684, -2.816)* tabla[1,"nmx"])

last <- nrow(tabla) 
tabla[last,"nax"] <- 1/ tabla[last,"nmx"]

  1. Calculamos las \(q_{x}\) y \(p_{x}\)

tabla <- mutate(tabla, q = n * nmx/(1 + (n - nax) * nmx), p = 1 - q)

  1. Bajo el supuesto de tener una tabla cerrada, consideramos que todos mueren \(q=1\) y nadie sobrevive \(p=0\)

tabla[last, c("q","p")] = c(1, 0)

8.Elegimos un radix \(l_{0}\)

tabla <- mutate(tabla, lx = 100000 * cumprod( c(1, p[-last])))

  1. Calcular el número de personas que murieron entre las edades \(x\) y \(x+n\)

tabla <- mutate(tabla, d = c(-diff(lx), lx[last]))

  1. Calcular los sobrevivientes y Años Persona Vividos arriba de la edad \(x\), es decir: \({_n}T_{x}=\sum_{a=x}{_n}L_{a}\)

tabla <- mutate(tabla, L =  (lx - d) * n +  d * nax,T = sum(L) - cumsum(L) + L)

  1. Esperanza de vida \(e_{x}=\frac{{_n}T_{x}}{l_{x}}\)
tabla <- mutate(tabla, e = T/lx)