-
Notifications
You must be signed in to change notification settings - Fork 0
/
simulacion riesgo aseguradora.Rmd
194 lines (139 loc) · 4.95 KB
/
simulacion riesgo aseguradora.Rmd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
---
title: "Ejemplo:Simulación del Riesgo de una Compañia Aseguradora"
author: "Magdiel Ablan"
date: "23/03/2015"
output: html_document
---
Ejercicio propuesto en: Jones Owen, Robert Maillardet, and Andrew Robinson. 2009. *Introduction to Scientific Programming and Simulation Using R*. Chapman and Hall/CRC
## Simulación del Riesgo de una compañía aseguradora
Esta es una versión simplificada de dos problemas que enfrentan las compañías aseguradoras:
Calcular la probabilidad de quebrar y estimar cuanto dinero pueden hacer.
Suponga que una compañía de seguros tiene un capital de 1,000,000 Bs. La compañía tiene 1000 clientes, cada uno de los cuales paga una póliza anual de 5500 Bs al comienzo del año. Basado en su experiencia previa se estima que la probabilidad de que un cliente realice una solicitud de reclamo es p = 0.1 por año, independientemente de los reclamos previos y de otros clientes. El tamaño X de los reclamos varia y tiene la siguiente densidad con alfa = 3 y beta = 100,000:
![pareto distrib.png](f.png)
A X se le denomina distribución de Pareto y tiene varios usos importantes en economía.
Consideraremos las ganancias de la compañía sobre un período de cinco años. Sea Z(t) el balance de la compañía al final del año t. Así:
![pareto ganacias.png](ganancias-pareto.png)
Note que si Z(t) cae a 0 o por debajo permanecerá allí. Es decir, una vez en quiebra la compañía no se recupera.
```{r previos, echo=FALSE, results="hide"}
```
#### 1. Simulación de X:
a) Investigue o derive F(X).
Se calcula de la manera usual, mediante integración de f(x) y se obtiene la siguiente expresión:
![fdA-Pareto.png](fda-pareto.png)
b) Escriba una función para simular X
Lo más sencillo es por el método de transformación inversa:
![inversa-pareto.png](inversa-pareto.png)
La función sería:
```{r}
rpareto<-function(n,alfa,beta) {
u<-runif(n)
x<-beta*((1/u^(1/alfa))-1)
return(x)
}
```
y para propósitos de comparación:
```{r}
dpareto<-function(x,alfa,beta) {
t<-(alfa*beta^alfa)/(x+beta)^(alfa+1)
return(t)
}
```
c) Evalúe su rutina utilizando algún método gráfico o de otra índole.
El siguiente código ejecuta las funciones anteriores y produce un gráfico de comparación:
```{r}
set.seed(123)
beta<-100000
alfa<-3
n<-1000
muestra<-rpareto(n,alfa,beta)
hist(muestra,prob=T,breaks="Scott",xlab="Monto reclamo",main="Densidad de Pareto (3,100000)")
curve(dpareto(x,alfa,beta),add=T,col="red")
```
-----------------------
#### 2. Simulación de Z: Escriba una función para estimar Z para un período de 5 años. Utilice esta función para:
a) Graficar varias realizaciones de Z vs. tiempo
La siguiente función calcula el balance para el período considerado:
```{r}
balance<-function(inicio=1000000, p=0.1,nclientes=1000,precio_poliza=5500,years=5) {
polizas<-precio_poliza*nclientes
z<-numeric(years)
zini<-1000000
for (i in 1:years) {
u<-runif(nclientes)
reclamos<-u<=p
nreclamos<- sum(reclamos)
montos<-rpareto(nreclamos,alfa,beta)
total.reclamos<-sum(montos)
if (i==1) z[i]<-zini + polizas -total.reclamos
else z[i]<-z[i-1] + polizas -total.reclamos
if (z[i] < 0 ) {
z[i]<-0
break()
}
}
return(z)
}
```
Algunas llamadas a la función:
```{r}
balance()
balance()
balance()
```
y el gráfico con varias realizaciones:
```{r}
nrealiza<-10
varias<-matrix(0,nrow=nrealiza,ncol=6)
for (j in 1:nrealiza) {
varias[j,2:6]<-balance()
varias[j,1]<-1000000
}
maximo<-max(varias)
minimo<-min(varias)
plot(0:5,varias[1,],type="n",xlim=c(0,5),ylim=c(minimo,maximo),xlab="Tiempo",ylab="Ganancias")
for (j in 1:nrealiza) lines(0:5, varias[j,],col=j,lty=j,lwd=2)
```
b) Estimar la probabilidad de que la compañía quiebre
Para estimar la probabilidad de quiebra y las ganancias esperadas corremos el algoritmo de balance muchas veces:
```{r}
m<-1000
historia<-numeric(m)
quiebra<-0
for (i in 1:m) {
cincoY<-balance()
if (any (cincoY==0)) quiebra<-quiebra + 1
historia[i] <- mean(cincoY)
}
```
La probabilidad de quiebra es entonces:
```{r}
pquiebra<-quiebra/m
print(pquiebra)
#Error estandar de la probabilidad de quiebra:
sqrt((1-pquiebra)*pquiebra/m)
```
c) Estimar las ganancias esperadas al finalizar el período de 5 años.
```{r}
gananciaE<-mean(historia)
print(gananciaE)
```
d) Calcule un intervalo de confianza del 95% para las ganancias esperadas.
El intervalo de confianza para las ganancias es mejor calcularlo usando una prueba no?parmetrica ya que la distribución dista bastante de una normal:
```{r}
par(mfrow=c(1,2))
hist(historia)
qqnorm(historia)
qqline(historia)
```
y el intervalo sería:
```{r}
ic.wil<-wilcox.test(historia,conf.int=T)
ic.wil
```
Las ganancias promedio al termino de los cinco años se encuentran entre `r ic.wil$conf.int[1]` y `r ic.wil$conf.int[2]`
Si lo hacemos con la normal obtenemos:
```{r}
ic.t<-t.test(historia,conf.int=T)
ic.t
```
En este caso se predicen menores ganancias con limites dados por `r ic.t$conf.int[1]` y `r ic.t$conf.int[2]`