rm(list = ls(all = TRUE))
setwd("C:/Users/cubid/Desktop/QUARTO - MATERIAS UNAL/9 CÁLCULO ACTUARIAL/Corte 1 - Mortalidad/Tarea 1 - Tablas de Mortalidad")
Tarea 1 - Tablas de Mortalidad - CÁLCULO ACTUARIAL
Limpieza de entorno y directorio
Lectura y exploración de datos
<- read.delim("q_X - TablaMortAseg.txt")
qx colnames(qx)[colnames(qx) == "x"] <- "X"
<- read.delim("q_X_truncado - TablaMortAseg.txt") qx_truncado
Función CrearTablaConEsperanza
Calcula las siguientes columnas para un vector (q_x):
- \[p_x = 1 - q_x\]
- \[l_x\]: número de personas vivas a cada edad
- \[d_x = l_x \, q_x\]: defunciones
- \[e^0_x = \frac{\sum_{j=i+1}^n l_j}{l_i} + 0.5\]: esperanza de vida
<- function(qx_df, col_qx, l0 = 100000) {
TablaMortalidad <- qx_df$X
edades <- qx_df[[col_qx]]
qx <- length(qx)
n
<- 1 - qx
px <- dx <- numeric(n)
lx 1] <- l0
lx[
# l_x
for(i in seq_len(n - 1)) {
<- lx[i] * qx[i]
dx[i] +1] <- lx[i] - dx[i]
lx[i
}# última edad
<- lx[n] * qx[n]
dx[n]
# e^0_x = (sum_{j>i} l_j)/l_i + 1/2
<- numeric(n)
e0x for(i in seq_len(n)) {
if(i < n) {e0x[i] <- sum(lx[(i+1):n]) / lx[i] + 0.5
else {e0x[i] <- 0.5}
}
}data.frame(x = edades, qx = round(qx,6), px = round(px,6), lx = round(lx), dx = round(dx,1), e0x = round(e0x,1))
}
Generar tablas de mortalidad completas
<- TablaMortalidad(qx, col_qx = "qxH", l0 = 100000)
tabla_Rentistas_Hombres head(tabla_Rentistas_Hombres)
x qx px lx dx e0x
1 0 0.000485 0.999515 100000 48.5 79.3
2 1 0.000485 0.999515 99952 48.5 78.3
3 2 0.000485 0.999515 99903 48.5 77.4
4 3 0.000485 0.999515 99855 48.4 76.4
5 4 0.000485 0.999515 99806 48.4 75.4
6 5 0.000485 0.999515 99758 48.4 74.5
<- TablaMortalidad(qx, col_qx = "qxM", l0 = 100000)
tabla_Rentistas_Mujeres head(tabla_Rentistas_Mujeres)
x qx px lx dx e0x
1 0 0.000272 0.999728 100000 27.2 84.7
2 1 0.000272 0.999728 99973 27.2 83.7
3 2 0.000272 0.999728 99946 27.2 82.8
4 3 0.000272 0.999728 99918 27.2 81.8
5 4 0.000272 0.999728 99891 27.2 80.8
6 5 0.000272 0.999728 99864 27.2 79.8
<- TablaMortalidad(qx, col_qx = "qxiH", l0 = 100000)
tabla_invalidos_Hombres head(tabla_invalidos_Hombres)
x qx px lx dx e0x
1 0 0.014786 0.985214 100000 1478.6 43.8
2 1 0.014803 0.985197 98521 1458.5 43.5
3 2 0.014822 0.985178 97063 1438.7 43.1
4 3 0.014842 0.985158 95624 1419.2 42.8
5 4 0.014863 0.985137 94205 1400.2 42.4
6 5 0.014886 0.985114 92805 1381.5 42.0
<- TablaMortalidad(qx, col_qx = "qxiM", l0 = 100000)
tabla_invalidos_Mujeres head(tabla_invalidos_Mujeres)
x qx px lx dx e0x
1 0 0.009112 0.990888 100000 911.2 55.4
2 1 0.009120 0.990880 99089 903.7 54.9
3 2 0.009129 0.990871 98185 896.3 54.4
4 3 0.009138 0.990862 97289 889.0 53.9
5 4 0.009148 0.990852 96400 881.9 53.4
6 5 0.009159 0.990841 95518 874.8 52.9
<- TablaMortalidad(qx_truncado, col_qx = "qxH", l0 = 100000)
tabla_Hombres_Asegurados head(tabla_Hombres_Asegurados)
x qx px lx dx e0x
1 20 0.003560 0.996440 100000 356 54.3
2 21 0.003593 0.996407 99644 358 53.5
3 22 0.003636 0.996364 99286 361 52.7
4 23 0.003680 0.996320 98925 364 51.9
5 24 0.003713 0.996287 98561 366 51.1
6 25 0.003727 0.996273 98195 366 50.3
<- TablaMortalidad(qx_truncado, col_qx = "qxM", l0 = 100000)
tabla_Mujeres_aseguradas head(tabla_Mujeres_aseguradas)
x qx px lx dx e0x
1 20 0.001300 0.998700 100000 130 57.4
2 21 0.001342 0.998658 99870 134 56.5
3 22 0.001384 0.998616 99736 138 55.5
4 23 0.001416 0.998584 99598 141 54.6
5 24 0.001458 0.998542 99457 145 53.7
6 25 0.001490 0.998510 99312 148 52.8