Documente Academic
Documente Profesional
Documente Cultură
David J. Santana
8 de marzo de 2019
Introducción
En el artículo A review of Panjer’s recursion formula and its applications de Dickson (1995), se hace un
análisis de cómo la fórmula de Panjer, establecida en los trabajos de Panjer (“Recursive evaluation of a family
of compound distributions”, 1981 y “Direct calculation of ruin probabilities”, 1986) se ha vuelto trascendental
en varias aplicaciones actuariales. Con la fórmula de Panjer puede calcularse de forma exacta la distribución
de la suma compuesta,
N
X
S= Yi , (1)
i=1
suponiendo que las severidades son variables aleatorias discretas no negativas y que la frecuencia N tiene
distribución binomial, Poisson o binomial negativa. Estas distribuciones pertenecen a la familia (a, b, 0) y sus
probabilidades cumplen con la siguiente ecuación recursiva:
b
pk = pk−1 a+ , (2)
k
N
X
S= Yi ,
i=1
donde N es de la familia (a, b, 0) y las variables aleatorias Y1 , Y2 , . . . son variables aleatorias discretas,
independientes e idénticamente distribuidas, independientes de N y con función de probabilidad dada por,
fi = P (Y = i),
g0 = p0 , (3)
r
X bi
gr = a+ fi gr−i , (4)
i=1
r
1
Table 1: Valores de a y b según la distribución de N .
Distribución valor de a valor de b
−p
Bin(n, p) 1−p (n + 1) 1−p
p
g0 = PN (f0 ), (5)
r
1
X bi
gr = a+ fi gr−i , (6)
1 − a f0 i=1 r
para cada valor de r = 1, 2, . . . Las fórmulas (3) y (4) se obtienen de las fórmulas (5) y (6) que son una
extensión de la fórmula original cuando f0 > 0. Esta extensión se logra haciendo el siguiente análisis:
• Sea r = 0, entonces:
P (S = 0) = PS (0) = PN (PY (0)) = PN (f0 ). (7)
La fórmula anterior, puede ser usada para encontrar el valor exacto de la función de distribución de S:
x
X
FS (x) = gr , (13)
r=0
donde x = 0, 1, 2, . . . En caso de que x < 0, entonces FS (x) = 0 y en caso de que x > 0 no entero, entonces
FS (x) tiene el mismo valor que FS (bxc), lo anterior debido a la definición de función de distribución.
Cuando los montos de los reclamos (severidades) Y se modelan con variables aleatorias continuas, entonces
se pueden obtener variable aleatorias discretas auxiliares a partir de la distribución de Y que podrán ser
usadas para acotar los valores de FS (x) superior e inferiormente y finalmente obtener con el punto medio una
aproximación. A continuación se describe el procedimiento:
2
1. Supóngase que el monto de las reclamaciones tiene una función de distribución continua F (x) y cumple
que F (0) = 0.
2. Sea fu (i) = F (i/β) − F ((i − 1)/β) para cada valor de i = 1, 2, . . . y sea fd (i) = fu (i + 1) para cada
valor de i = 0, 1, . . . y donde β es un número real positivo llamado parámetro de discretización. De esta
manera, se han definido las funciones de probabilidad que discretizan a Y .
PK PK
3. Sea D = j=1 Y dj y U = j=1 Y uj donde Y dj y Y uj tienen como funciones de probabilidad a fd y
fu respectivamente.
4. Usando la recursión de Panjer se calcula el valor exacto de las funciones de distribución FD (x) =
Pbxc Pbxc
i=0 fd (i) y FU (x) = i=1 fu (i).
P
K
5. Debido a que F U (uβ) y F D (uβ) son cotas superiores e inferiores para F S (u) = P Y
j=1 j > u , se
puede aproximar el valor de F S (u) como sigue:
F D (uβ) + F U (uβ)
F S (u) ≈ . (14)
2
Es decir:
F D (uβ) + F U (uβ)
FS (u) ≈ 1 − . (15)
2
3
a <- 0
b <- param
g0 <- exp(-param*(1-f(0)))
}
c(a,b,g0)
}
# Ejemplos:
abg0('bin',c(4,0.5))
#Ejemplo 1
###########################################################
#Severidades uniformes discretas con parámetro n = 10
#Frecuencia geométrica con parámetro p=1/4
f <- function(x){(1/10)*(x>=1 && x<=10)}
r <- 20
panjer(r,'binN',c(1,1/4))
## [1] 0.01557006
#Comprobación usando simulación
m <- 10000
i <- 0
4
uno_o_cero <- numeric(m)
set.seed(123)
N <- rgeom(m,1/4)
while(i<m){
i <- i + 1
if(N[i] == 0){
S <- 0
}else{
Y <- sample(1:10,N[i],replace = T)
S <- sum(Y)
}
uno_o_cero[i] <- 1*(S == r)
}
mean(uno_o_cero)
## [1] 0.0159
panjer(r,'binN',c(1,1/4))
## [1] 0.01557006
#Ejemplo 2
###########################################################
#Severidades Poisson con parámetro lambda = 7
#Frecuencia binomial con parámetros n= 10, p=1/3
f <- function(x){dpois(x,7)}
r <- 20
panjer(r,'bin',c(10,1/3))
## [1] 0.03408564
#Comprobación usando simulación
m <- 10000
i <- 0
uno_o_cero <- numeric(m)
set.seed(123)
N <- rbinom(m,10,1/3)
while(i<m){
i <- i + 1
if(N[i] == 0){
S <- 0
}else{
Y <- rpois(N[i],7)
S <- sum(Y)
}
uno_o_cero[i] <- 1*(S == r)
}
mean(uno_o_cero)
## [1] 0.034
panjer(r,'bin',c(10,1/3))
## [1] 0.03408564
#Ejemplo 3
###########################################################
5
#Severidades binomiales con parámetros n= 10, p=1/3
#Frecuencia Poisson con parámetro lambda = 7
f <- function(x){dbinom(x,10,1/3)}
r <- 20
panjer(r,'poi',7)
## [1] 0.04153745
#Comprobación usando simulación
m <- 10000
i <- 0
uno_o_cero <- numeric(m)
set.seed(123)
N <- rpois(m,7)
while(i<m){
i <- i + 1
if(N[i] == 0){
S <- 0
}else{
Y <- rbinom(N[i],10,1/3)
S <- sum(Y)
}
uno_o_cero[i] <- 1*(S == r)
}
mean(uno_o_cero)
## [1] 0.0404
panjer(r,'poi',7)
## [1] 0.04153745
Para calcular FS (x):
Panjer <- function(r,dist,param){
info <- abg0(dist,param)
a <- info[1]; b <- info[2]; g0 <- info[3]
g <- g0
C <- 1/(1-a*f(0))
FS <- 0
for(i in 1:r){
aux <- 0
for(j in 1:i){
aux <- aux + C*(a+(i-j+1)*b/i)*f(i-j+1)*g[j]
}
g[i+1] <- aux
FS <- FS + aux
}
FS
}
#Ejemplo 4
###########################################################
#Severidades binomiales con parámetros n= 10, p=1/3
#Frecuencia Poisson con parámetro lambda = 7
f <- function(x){dbinom(x,10,1/3)}
6
r <- 20
Panjer(r,'poi',7)
## [1] 0.4124582
#Comprobación usando simulación
m <- 10000
i <- 0
uno_o_cero <- numeric(m)
set.seed(123)
N <- rpois(m,7)
while(i<m){
i <- i + 1
if(N[i] == 0){
S <- 0
}else{
Y <- rbinom(N[i],10,1/3)
S <- sum(Y)
}
uno_o_cero[i] <- 1*(S <= r)
}
mean(uno_o_cero)
## [1] 0.4165
Panjer(r,'poi',7)
## [1] 0.4124582
Actividad para ganar un punto extra, para entregar el martes 19 de marzo.
## Ejemplo Weibull
Fe <- function(x){pgamma(sqrt(x),2,1)} # Distribución de Y
fu <- function(i,beta){Fe(i/beta)-Fe((i-1)/beta)}
####fu up discretization probabilities for 1,2,... type=1
fd <- function(i,beta){Fe((i+1)/beta)-Fe(i/beta)}
Fe(3)
## [1] 0.5166423
sum(fu(1:(3*100),100))
## [1] 0.5166423
# Realizar:
# 1 Cálculo de FU FD, donde U y D están en la pág. 3.
# 2 Acotar F_S(x) y después aproximarla para:
# 3 N con distribución BinNeg(2,1/2)
# 4 Y con distribución Gama(2,2)
# Para entrega el martes 19.