El archivo trabajofinal.r es un desarrollo en lenguaje de programacion de \(r\) que permite al usuario el calculo de primas en seguros no vida a traves de la funcion pricing por medio de cuatro (4) principios establecidos para medir la exposicion de los riesgos globales de una compania. La prima es una medida de riesgo que permite evaluar a una compania de seguros la posibilidad de cubrir los siniestros asegurados.
La aplicacion solicita al usuario (inputs) informacion respecto al modelo deseado para la i) Frecuencia y la ii) Severidad del proceso de riesgo, con el fin de determinar el valor final de la prima.
El output de la funcion corresponde al valor de la prima a cobrar por parte de la compania de seguros respecto al tipo de riesgo que se enfrenta.
La funcion se encuentra en la capacidad de calcular primas utilizando los siguientes principios:
Principio de Equivalencia
Principio del Valor Esperado
Principio de la Varianza
Principio de la Desviacion Tipica
Ademas, considera los siguientes modelos de Frecuencia y Severidad:
Modelo de Poisson
Modelo Binomial Negativa
Modelo Exponencial
Modelo Gamma
Modelo Normal
Modelo Log-Normal
Los principios para el calculo de primas se encuentran relacionados con las medidas de riesgo, ya que deben reflejar el comportamiento del asegurador respecto al riesgo que soporta como entidad.
El calculo de las primas dependen por tanto del comportamiento agregado del riesgo al que se expone la compania de seguros. Para modelar este comportamiento, la teoria del riesgo colectivo establece un modelo para la variable coste total (S) en funcion de dos variables aleatorias: El numero de siniestros por periodo (N) y el coste por siniestro (X).
Los principios desarrollados son:
El pricipio de equivalencia establece que el valor de la prima es equivalente a la prima pura de riesgo. Es decir, a la esperanza de la variable coste total.
\[Prima(S)=E[S]\]
Este criterio se justifica en la ley de los grandes numeros. Sin embargo, en la teoria de la ruina se demuestra que una prima que no exceda a la prima pura de riesgo (bajo las condiciones utilizadas en dicha teoria) conlleva a la ruina tecnica en el largo plazo (con probabilidad 1). Es decir, en este caso, la reuina tecnica es segura.
Ejemplo:
El numero de siniestros sigue una distribucion Poisson de parametro \(lambda\) y el coste por siniestro se distribuye segun una Exponencial de parametro \(b\). El valor esperado de la variable coste total es igual a
\[E[S]=E[N]E[X]\]
por lo que para este caso sera igual a
\[E[S]=lambda*(1/b)\]
La prima sera equivalente a la prima pura:
\[Prima=lambda*(1/b)\]
El pricipio del valor esperado establece una prima equivalente al valor esperado del coste total mas un recargo de seguridad explicito, proporcional a la prima pura de riesgo.
\[Prima=(1+alpha)E[S]\]
Segun este criterio, se cobra una mayor prima a aquel riesgo que tenga una mayor esperanza, aunque se cobra la misma prima a dos riesgos con igual esperanza.
Ejemplo:
Siguiendo los modelos de frecuencia y severidad del ejemplo anterior y asumiendo un recargo de seguridad igual a \(alpha\), el valor de la prima sera igual a:
\[Prima=(1+alpha)(lambda*(1/b))\]
Al igual que en el principio del valor esperado, el principio de la varianza establece la prima igual a la esperanza mas un recargo de seguridad, esta vez, proporcional a la varianza del coste total de los siniestros.
\[Prima=E[S]+alpha*V[S]\]
Sin embargo, este principio presenta un problema de definicion ya que se suman dos magnitudes de distintas dimensiones.
En este principio, a dos riesgos con la misma esperanza asigna mas prima a aquel con mayor varianza y permite distinguir entre dos riesgos de igual esperanza. Sin embargo, no esta muy claro desde el punto de vista asegurador, que una mayor varianza implique un peor riesgo por asegurar, ya que la dispersion puede ser positiva o negativa.
Ejemplo:
Para el calculo de la prima por el principio de la varianza necesitamos calcular la varianza de la variable coste total. Dados los supuestos del ejemplo que hemos venido trabajando,
\[V(S)=E[N]V[X]+V[N](E[X])^2\]
y para este caso sera igual a
\[V(S)=lambda*(1/b^2)+lambda*(1/b)^2\]
Por tanto, la prima sera igual a
\[Prima=lambda*(1/b)+alpha*((lambda*(1/b^2)+lambda*(1/b)^2)\]
En este caso, el recargo de seguridad se aplica de manera proporcional a la desviacion tipica del coste total.
\[Prima=E[S]+alpha*D[S]\]
Este criterio tiene el mismo sentido que el de la varianza, y por lo tanto, sus mismos problemas conceptuales en cuanto a la medicion del riesgo, pero soluciona el problema de dimensionalidad (escalas), ya que la esperanza y la desviacion tipica si se encuentran expresadas en unidades similares.
Ejemplo:
Para el calculo de la prima por el principio de la desviacion tipica necesitamos de igual forma calcular en primera medida la varianza de la variable coste total para luego determinar su desviacion por medio de su raiz cuadrada. Siguiendo el ejemplo,
\[D(S)=sqrt(V[S])\]
\[D(S)=sqrt(lambda*(1/b^2)+lambda*(1/b)^2)\]
De este modo, podemos calcular el valor de la prima como
\[Prima=lambda*(1/b)+alpha*sqrt((lambda*(1/b^2)+lambda*(1/b)^2))\]
Una entidad de seguros de automoviles ha estimado de acuerdo a informacion historica que el numero de siniestros de su cartera sigue una distribucion Poisson de parametro 3. Ademas, que el coste por siniestro sigue una distribucion Normal con media igual a 350 y desviacion 250.
Por otro lado, la empresa aseguradora considera que un recargo de seguridad de 1.3 veces la desviacion es necesario para cubrir con el riesgo de manera integral.
En la primera imagen, se pregunta al usuario el principio con el que desea calcular el valor de la prima. Para este caso, dado que la aseguradora considera un recargo de seguridad proporcional a la desviacion tipica, se selecciona el principio numero 4.
La siguiente informacion que se solicita al usuario, es acerca del recargo de seguridad (el cual se especifica debe ser mayor que cero). De la misma manera, se solicita especificar el modelo de frecuencia requerido para el calculo y el parametro asociado.
Por ultimo, el usuario es preguntado por el modelo de severidad que desea estimar. En este caso, la aseguradora estima que el coste por siniestro sigue una distribucion normal de parametros 350 (mu) y 250 (sigma).
El valor de la prima que cobrara la aseguradora sera de 2.018,47.
Una entidad de seguros contra incendios ha estimado de acuerdo a informacion historica que el numero de siniestros de su cartera sigue una distribucion Binomial Negativa de parametros 5 (a) y 1.5 (b). Ademas, que el coste por siniestro sigue una distribucion Gamma de parametros 150 (a) y 3 (b).
Por otro lado, la empresa aseguradora considera que un recargo de seguridad de 0.5 veces la esperanza es necesario para cubrir con el riesgo de manera integral.
En este caso, el usuario debe seleccionar el modelo del Valor Esperado ya que el recargo es proporcional a la esperanza de la variable coste total.
Del mismo modo, se selecciona el modelo Binomial Negativo para la frecuencia de los siniestros donde se deben especificar los valores de los dos parametros con los que cuenta dicha distribucion.
Por ultimo, de acuerdo a lo estimado por la aseguradora, se selecciona un modelo gamma para el coste por siniestro y se solicita al usuario el valor de los dos parametros requeridos en esta distribucion.
El valor de la prima para este caso es de 562.5.
A continuacion se presenta el codigo desarrollado en trabajofinal.r:
pricing=function(){
#Calcular el valor de la prima
print("Seleccione el principio que desea aplicar:")
print("1. Principio de Equivalencia")
print("2. Principio del Valor Esperado")
print("3. Principio de la Varianza")
print("4. Principio de la Desviacion Tipica")
opc=scan()
if (opc==1){
print("Seleccione el modelo de frecuencia (N):")
print("1. Modelo Poisson")
print("2. Modelo Binomial Negativa")
mN=scan()
if (mN==1){
print("El valor del parametro lambda (Distr. Poisson) es de:")
lambda=scan()
print("Seleccione el modelo de Severidad (X):")
print("1. Modelo Exponencial")
print("2. Modelo Gamma")
print("3. Modelo Normal")
print("4. Modelo Log-Normal")
mX=scan()
if (mX==1){
print("El valor del parametro p (Distr. Exponencial) es de:")
p=scan()
prima=lambda*(1/p)
cat("El valor de la prima es de", prima)
}
if (mX==2){
print("El valor del parametro a (Distr. Gamma) es de:")
a=scan()
print("El valor del parametro b (Distr. Gamma) es de:")
b=scan()
prima=lambda*(a/b)
cat("El valor de la prima es de", prima)
}
if (mX==3){
print("El valor del parametro mu (Distr. Normal) es de:")
mu=scan()
print("El valor del parametro sigma (Distr. Normal) es de:")
sigma=scan()
prima=lambda*mu
cat("El valor de la prima es de", prima)
}
if (mX==4){
print("El valor del parametro mu (Distr. Log-Normal) es de:")
mu=scan()
print("El valor del parametro sigma (Distr. Log-Normal) es de:")
sigma=scan()
prima=lambda*exp(mu+0.5*(sigma^2))
cat("El valor de la prima es de", prima)
}
}
if (mN==2){
print("El valor del parametro a (Distr. Binomial Negativa) es de:")
a=scan()
print("El valor del parametro b (Distr. Binomial Negativa) es de:")
b=scan()
print("Seleccione el modelo de Severidad (X):")
print("1. Modelo Exponencial")
print("2. Modelo Gamma")
print("3. Modelo Normal")
print("4. Modelo Log-Normal")
mX=scan()
if (mX==1){
print("El valor del parametro p (Distr. Exponencial) es de:")
p=scan()
prima=(a*b)*(1/p)
cat("El valor de la prima es de", prima)
}
if (mX==2){
print("El valor del parametro a (Distr. Gamma) es de:")
a1=scan()
print("El valor del parametro b (Distr. Gamma) es de:")
b1=scan()
prima=(a*b)*(a1/b1)
cat("El valor de la prima es de", prima)
}
if (mX==3){
print("El valor del parametro mu (Distr. Normal) es de:")
mu=scan()
print("El valor del parametro sigma (Distr. Normal) es de:")
sigma=scan()
prima=(a*b)*mu
cat("El valor de la prima es de", prima)
}
if (mX==4){
print("El valor del parametro mu (Distr. Log-Normal) es de:")
mu=scan()
print("El valor del parametro sigma (Distr. Log-Normal) es de:")
sigma=scan()
prima=(a*b)*exp(mu+0.5*(sigma^2))
cat("El valor de la prima es de", prima)
}
}
}
if (opc==2){
print("Indique el recargo de seguridad a aplicar (>0):")
alpha=scan()
print("Seleccione el modelo de frecuencia (N):")
print("1. Modelo Poisson")
print("2. Modelo Binomial Negativa")
mN=scan()
if (mN==1){
print("El valor del parametro lambda (Distr. Poisson) es de:")
lambda=scan()
print("Seleccione el modelo de Severidad (X):")
print("1. Modelo Exponencial")
print("2. Modelo Gamma")
print("3. Modelo Normal")
print("4. Modelo Log-Normal")
mX=scan()
if (mX==1){
print("El valor del parametro p (Distr. Exponencial) es de:")
p=scan()
E=lambda*(1/p)
prima=(1+alpha)*E
cat("El valor de la prima es de", prima)
}
if (mX==2){
print("El valor del parametro a (Distr. Gamma) es de:")
a=scan()
print("El valor del parametro b (Distr. Gamma) es de:")
b=scan()
E=lambda*(a/b)
prima=(1+alpha)*E
cat("El valor de la prima es de", prima)
}
if (mX==3){
print("El valor del parametro mu (Distr. Normal) es de:")
mu=scan()
print("El valor del parametro sigma (Distr. Normal) es de:")
sigma=scan()
E=lambda*mu
prima=(1+alpha)*E
cat("El valor de la prima es de", prima)
}
if (mX==4){
print("El valor del parametro mu (Distr. Log-Normal) es de:")
mu=scan()
print("El valor del parametro sigma (Distr. Log-Normal) es de:")
sigma=scan()
E=lambda*exp(mu+0.5*(sigma^2))
prima=(1+alpha)*E
cat("El valor de la prima es de", prima)
}
}
if (mN==2){
print("El valor del parametro a (Distr. Binomial Negativa) es de:")
a=scan()
print("El valor del parametro b (Distr. Binomial Negativa) es de:")
b=scan()
print("Seleccione el modelo de Severidad (X):")
print("1. Modelo Exponencial")
print("2. Modelo Gamma")
print("3. Modelo Normal")
print("4. Modelo Log-Normal")
mX=scan()
if (mX==1){
print("El valor del parametro p (Distr. Exponencial) es de:")
p=scan()
E=(a*b)*(1/p)
prima=(1+alpha)*E
cat("El valor de la prima es de", prima)
}
if (mX==2){
print("El valor del parametro a (Distr. Gamma) es de:")
a1=scan()
print("El valor del parametro b (Distr. Gamma) es de:")
b1=scan()
E=(a*b)*(a1/b1)
prima=(1+alpha)*E
cat("El valor de la prima es de", prima)
}
if (mX==3){
print("El valor del parametro mu (Distr. Normal) es de:")
mu=scan()
print("El valor del parametro sigma (Distr. Normal) es de:")
sigma=scan()
E=(a*b)*mu
prima=(1+alpha)*E
cat("El valor de la prima es de", prima)
}
if (mX==4){
print("El valor del parametro mu (Distr. Log-Normal) es de:")
mu=scan()
print("El valor del parametro sigma (Distr. Log-Normal) es de:")
sigma=scan()
E=(a*b)*exp(mu+0.5*(sigma^2))
prima=(1+alpha)*E
cat("El valor de la prima es de", prima)
}
}
}
if (opc==3){
print("Indique el recargo de seguridad a aplicar (>0):")
alpha=scan()
print("Seleccione el modelo de frecuencia (N):")
print("1. Modelo Poisson")
print("2. Modelo Binomial Negativa")
mN=scan()
if (mN==1){
print("El valor del parametro lambda (Distr. Poisson) es de:")
lambda=scan()
print("Seleccione el modelo de Severidad (X):")
print("1. Modelo Exponencial")
print("2. Modelo Gamma")
print("3. Modelo Normal")
print("4. Modelo Log-Normal")
mX=scan()
if (mX==1){
print("El valor del parametro p (Distr. Exponencial) es de:")
p=scan()
E=lambda*(1/p)
V=(lambda*(1/(p^2)))+(lambda*((1/p)^2))
prima=E+(alpha*V)
cat("El valor de la prima es de", prima)
}
if (mX==2){
print("El valor del parametro a (Distr. Gamma) es de:")
a=scan()
print("El valor del parametro b (Distr. Gamma) es de:")
b=scan()
E=lambda*(a/b)
V=(lambda*(a/(b^2)))+(lambda*((a/b)^2))
prima=E+(alpha*V)
cat("El valor de la prima es de", prima)
}
if (mX==3){
print("El valor del parametro mu (Distr. Normal) es de:")
mu=scan()
print("El valor del parametro sigma (Distr. Normal) es de:")
sigma=scan()
E=lambda*mu
V=(lambda*(sigma^2))+(lambda*(mu^2))
prima=E+(alpha*V)
cat("El valor de la prima es de", prima)
}
if (mX==4){
print("El valor del parametro mu (Distr. Log-Normal) es de:")
mu=scan()
print("El valor del parametro sigma (Distr. Log-Normal) es de:")
sigma=scan()
E=lambda*exp(mu+0.5*(sigma^2))
V=(lambda*(exp(2*mu+sigma^2))*(exp(sigma^2)-1))+(lambda*(exp(mu+0.5*sigma^2)^2))
prima=E+(alpha*V)
cat("El valor de la prima es de", prima)
}
}
if (mN==2){
print("El valor del parametro a (Distr. Binomial Negativa) es de:")
a=scan()
print("El valor del parametro b (Distr. Binomial Negativa) es de:")
b=scan()
print("Seleccione el modelo de Severidad (X):")
print("1. Modelo Exponencial")
print("2. Modelo Gamma")
print("3. Modelo Normal")
print("4. Modelo Log-Normal")
mX=scan()
if (mX==1){
print("El valor del parametro p (Distr. Exponencial) es de:")
p=scan()
E=(a*b)*(1/p)
V=((a*b)*(1/(p^2)))+((a*b*(1+b))*((1/p)^2))
prima=E+(alpha*V)
cat("El valor de la prima es de", prima)
}
if (mX==2){
print("El valor del parametro a (Distr. Gamma) es de:")
a1=scan()
print("El valor del parametro b (Distr. Gamma) es de:")
b1=scan()
E=(a*b)*(a1/b1)
V=(a*b*(a1/(b1^2)))+((a*b*(1+b))*((a1/b1)^2))
prima=E+(alpha*V)
cat("El valor de la prima es de", prima)
}
if (mX==3){
print("El valor del parametro mu (Distr. Normal) es de:")
mu=scan()
print("El valor del parametro sigma (Distr. Normal) es de:")
sigma=scan()
E=(a*b)*mu
V=((a*b)*(sigma^2))+((a*b*(1+b))*(mu^2))
prima=E+(alpha*V)
cat("El valor de la prima es de", prima)
}
if (mX==4){
print("El valor del parametro mu (Distr. Log-Normal) es de:")
mu=scan()
print("El valor del parametro sigma (Distr. Log-Normal) es de:")
sigma=scan()
E=(a*b)*exp(mu+0.5*(sigma^2))
V=((a*b)*(exp(2*mu+sigma^2))*(exp(sigma^2)-1))+((a*b*(1+b))*(exp(mu+0.5*sigma^2)^2))
prima=E+(alpha*V)
cat("El valor de la prima es de", prima)
}
}
}
if (opc==4){
print("Indique el recargo de seguridad a aplicar (>0):")
alpha=scan()
print("Seleccione el modelo de frecuencia (N):")
print("1. Modelo Poisson")
print("2. Modelo Binomial Negativa")
mN=scan()
if (mN==1){
print("El valor del parametro lambda (Distr. Poisson) es de:")
lambda=scan()
print("Seleccione el modelo de Severidad (X):")
print("1. Modelo Exponencial")
print("2. Modelo Gamma")
print("3. Modelo Normal")
print("4. Modelo Log-Normal")
mX=scan()
if (mX==1){
print("El valor del parametro p (Distr. Exponencial) es de:")
p=scan()
E=lambda*(1/p)
V=(lambda*(1/(p^2)))+(lambda*((1/p)^2))
prima=E+(alpha*sqrt(V))
cat("El valor de la prima es de", prima)
}
if (mX==2){
print("El valor del parametro a (Distr. Gamma) es de:")
a=scan()
print("El valor del parametro b (Distr. Gamma) es de:")
b=scan()
E=lambda*(a/b)
V=(lambda*(a/(b^2)))+(lambda*((a/b)^2))
prima=E+(alpha*sqrt(V))
cat("El valor de la prima es de", prima)
}
if (mX==3){
print("El valor del parametro mu (Distr. Normal) es de:")
mu=scan()
print("El valor del parametro sigma (Distr. Normal) es de:")
sigma=scan()
E=lambda*mu
V=(lambda*(sigma^2))+(lambda*(mu^2))
prima=E+(alpha*sqrt(V))
cat("El valor de la prima es de", prima)
}
if (mX==4){
print("El valor del parametro mu (Distr. Log-Normal) es de:")
mu=scan()
print("El valor del parametro sigma (Distr. Log-Normal) es de:")
sigma=scan()
E=lambda*exp(mu+0.5*(sigma^2))
V=(lambda*(exp(2*mu+sigma^2))*(exp(sigma^2)-1))+(lambda*(exp(mu+0.5*sigma^2)^2))
prima=E+(alpha*sqrt(V))
cat("El valor de la prima es de", prima)
}
}
if (mN==2){
print("El valor del parametro a (Distr. Binomial Negativa) es de:")
a=scan()
print("El valor del parametro b (Distr. Binomial Negativa) es de:")
b=scan()
print("Seleccione el modelo de Severidad (X):")
print("1. Modelo Exponencial")
print("2. Modelo Gamma")
print("3. Modelo Normal")
print("4. Modelo Log-Normal")
mX=scan()
if (mX==1){
print("El valor del parametro p (Distr. Exponencial) es de:")
p=scan()
E=(a*b)*(1/p)
V=((a*b)*(1/(p^2)))+((a*b*(1+b))*((1/p)^2))
prima=E+(alpha*sqrt(V))
cat("El valor de la prima es de", prima)
}
if (mX==2){
print("El valor del parametro a (Distr. Gamma) es de:")
a1=scan()
print("El valor del parametro b (Distr. Gamma) es de:")
b1=scan()
E=(a*b)*(a1/b1)
V=(a*b*(a1/(b1^2)))+((a*b*(1+b))*((a1/b1)^2))
prima=E+(alpha*sqrt(V))
cat("El valor de la prima es de", prima)
}
if (mX==3){
print("El valor del parametro mu (Distr. Normal) es de:")
mu=scan()
print("El valor del parametro sigma (Distr. Normal) es de:")
sigma=scan()
E=(a*b)*mu
V=((a*b)*(sigma^2))+((a*b*(1+b))*(mu^2))
prima=E+(alpha*sqrt(V))
cat("El valor de la prima es de", prima)
}
if (mX==4){
print("El valor del parametro mu (Distr. Log-Normal) es de:")
mu=scan()
print("El valor del parametro sigma (Distr. Log-Normal) es de:")
sigma=scan()
E=(a*b)*exp(mu+0.5*(sigma^2))
V=((a*b)*(exp(2*mu+sigma^2))*(exp(sigma^2)-1))+((a*b*(1+b))*(exp(mu+0.5*sigma^2)^2))
prima=E+(alpha*sqrt(V))
cat("El valor de la prima es de", prima)
}
}
}
}