actulab-2014-solution-coope.../projet.R
François Pelletier 6c108afe25 solution originale
2014-06-02 19:49:28 -04:00

90 lines
No EOL
3.3 KiB
R

# TODO: Add comment
#
# Author: francois
###############################################################################
## Importer les données dans un data.frame
agents <- read.csv("agents.csv",sep=":")
assures <- read.csv("assures.csv",sep=":")
## Assurés plus uniformes: en prendre le 1/8, multiplier la fréquence par 8
assures8 <- assures[seq(from=1,to=32669,by=8),]
## Visualiser les agents
plot(agents$Longitude_Agent,agents$Latitude_Agent,pch=6,col="red")
## Visualiser les assurés
points(assures$Longitude_Assure,assures$Latitude_Assure,pch=20)
#fonction orage
sim_dommages_orage <- function(assures)
{
franchise <- 0
## Définir un orage
sim_centre <- cbind(runif(1,range_longitude[1],range_longitude[2]),runif(1,range_latitude[1],range_latitude[2]))
sim_taille <- cbind(rexp(1,.25),rexp(1,4))
sim_angle <- runif(1,0,2*pi)
sim_force <- sample(x=1:4,size=1,replace=TRUE,prob=c(.95,.03,.016,.004))
if(sim_force==1)
{
ellipse1 <- ellipse_param(seq(0,2*pi,by=0.1),sim_centre[1],sim_centre[2],sim_taille[1],sim_taille[2],sim_angle)
}
if(sim_force==2)
{
ellipse2 <- ellipse_param(seq(0,2*pi,by=0.1),sim_centre[1],sim_centre[2],sim_taille[1],sim_taille[2],sim_angle)
ellipse1 <- ellipse_param(seq(0,2*pi,by=0.1),sim_centre[1],sim_centre[2],2*sim_taille[1],2*sim_taille[2],sim_angle)
}
if(sim_force==3)
{
ellipse3 <- ellipse_param(seq(0,2*pi,by=0.1),sim_centre[1],sim_centre[2],sim_taille[1],sim_taille[2],sim_angle)
ellipse2 <- ellipse_param(seq(0,2*pi,by=0.1),sim_centre[1],sim_centre[2],2*sim_taille[1],2*sim_taille[2],sim_angle)
ellipse1 <- ellipse_param(seq(0,2*pi,by=0.1),sim_centre[1],sim_centre[2],3*sim_taille[1],3*sim_taille[2],sim_angle)
}
if(sim_force==4)
{
ellipse4 <- ellipse_param(seq(0,2*pi,by=0.1),sim_centre[1],sim_centre[2],sim_taille[1],sim_taille[2],sim_angle)
ellipse3 <- ellipse_param(seq(0,2*pi,by=0.1),sim_centre[1],sim_centre[2],2*sim_taille[1],2*sim_taille[2],sim_angle)
ellipse2 <- ellipse_param(seq(0,2*pi,by=0.1),sim_centre[1],sim_centre[2],3*sim_taille[1],3*sim_taille[2],sim_angle)
ellipse1 <- ellipse_param(seq(0,2*pi,by=0.1),sim_centre[1],sim_centre[2],4*sim_taille[1],4*sim_taille[2],sim_angle)
}
## Définir le nombre d'assurés touchés
touches1 <- FALSE
touches2 <- FALSE
touches3 <- FALSE
touches4 <- FALSE
touches1 <- dans_ellipse_param(assures$Longitude_Assure,assures$Latitude_Assure,ellipse1)
if(sim_force>1)
{
touches2 <- dans_ellipse_param(assures$Longitude_Assure,assures$Latitude_Assure,ellipse2)
if(sim_force>2)
{
touches3 <- dans_ellipse_param(assures$Longitude_Assure,assures$Latitude_Assure,ellipse3)
if(sim_force>3)
{
touches4 <- dans_ellipse_param(assures$Longitude_Assure,assures$Latitude_Assure,ellipse4)
}
}
}
sum(max(rpareto(sum(touches1*!touches2),2,50)-franchise,0)) +
sum(max(rpareto(sum(touches2*!touches3),2,1000)-franchise,0)) +
sum(max(rpareto(sum(touches3*!touches4),2,20000)-franchise,0)) +
sum(max(rpareto(sum(touches4),2,400000)-franchise,0))
}
set.seed(123)
dommages <- replicate(1000,sim_dommages_orage(assures),simplify=TRUE)
set.seed(123)
dommages8 <- replicate(1000,sim_dommages_orage(assures8),simplify=TRUE)
mean(dommages)
var(dommages)
quantile(dommages,c(.25,.5,.75,.9,.95,.99,.995))
mean(dommages8)
var(dommages8)
quantile(dommages8,c(.25,.5,.75,.9,.95,.99,.995))