En el mundo de la teoria del riesgo, se utiliza el modelo individual para poder resolver preguntas, como la de arriba. El modelo indiviudal es el siguiente \(S = \sum_{j = 1}^n D_j * C_j\), donde S se le llama el monto total de reclamaciones, mientras que \(D_J\) se distribuye \(Ber(q_j)\) y \(C_j\) es una variable aleatoria que sea positiva.
En este ejercicio la \(C_j\) es una \(poisson (\lambda_j)\) o una \(U(0,M_J)\).
Las librerías usadas en este ejercicio son la siguientes:
readr esta librería para importar los datos hacia nuestro espacio de trabajo.
dplyr esta librería se usa para poder usar más fácilmente los data.frames en R.
ggplot2 esta librería especializada en graficar en capas.
Primero vamos a observar nuestros datos:
## Rows: 28 Columns: 5
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ","
## chr (1): Nombre
## dbl (4): id, q, lambda, constante
##
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
Procedemos a filtrar a los datos con triple NA.
#---- limpieza de datos ----
# primero limpiamos los datos para los que no metieron sus datos
datos = datos %>% mutate(na = is.na(q)) %>% filter(na != TRUE)
Ya con los datos filtrados, los usamos para la simulación.
Para la simulación debemos de usar la siguiente estrategia:
# ---- simulacion ----
# numero de simulaciones
m = 100000
# inicio de la simulacion
S = 0
for (j in 1:m) {
suma = 0
for (i in 1:length(datos$q)) {
D = rbinom(n = 1, size = 1, datos$q[i])
C = ifelse(test = is.na(datos$lambda[i]),
yes = runif(n = 1,
min = 0,
max = datos$constante[i]),
no = rpois(n = 1, lambda = datos$lambda[i]))
suma[i] = D*C
}
S[j] = sum(suma)
}
# ---- Histograma ----
ese = data.frame(S)
ese %>% ggplot(aes(x = S)) + geom_histogram( bins = 50,
aes(y = ..density..),
fill = "#E5CFF7",
color = "#713ABE") +
theme_bw() +
labs(title = "Histograma de densidad de S",
subtitle = paste(m,"simulaciones"),
y = "Densidad")
## Warning: The dot-dot notation (`..density..`) was deprecated in ggplot2 3.4.0.
## ℹ Please use `after_stat(density)` instead.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.
# ---- calculo de la proba ----
n = ese %>% filter(S >= 100000)
n = length(n$S)
total = length(S)
proba1000000 = n/total
proba1000000
## [1] 0.12607
Con 100,000 simulaciones tenemos que: \(P(S \geq 100,000) \approx 0.12\)