Analyse van het schadeproces

In de aangeleverde bestanden zitten gegevens over schades. Hierbij gaat het over de volgende bestanden: - Algemenene schadegegevens - Schadeagenda’s - Betalingen op schade - Reservering(mutaties) op schade - Archief documenten (meta record)

Het doel van deze exercitie is om tot een logfile te komen waar de gegevens van een event behorende bij een schade in geclusterd zijn. Deze events zijn nu verborgen in de verschillende bestanden. In het document “Analyse van schadegegevens” is beschreven hoe de verschillende events vanuit de bovenstaande bestanden bepaald kunnen worden.

Algemene schadegegevens

Hieronder wordt eerst het schadebestand ingelezen. Vervolgens worden er drie events uit gehaald: - Het ontstaan van de schade - Het melden van de schade - Het afleggen van de schade

URLfile <- "C:/Users/menno_000/Documents/R/Schadeproces/schades.csv"

Algschade <- read.csv(URLfile, sep = ";")

## Printen dimensies
cat("het aantal schaderegels :", dim(Algschade)[[1]], "\n")
## het aantal schaderegels : 149669
cat("het aantal variabelen   :", dim(Algschade)[[2]])
## het aantal variabelen   : 12
rm(URLfile)

Opschonen bestand

## Datumvelden omzetten
Algschade$schadedatum <- as.Date(Algschade$schadedatum, format = "%d-%m-%Y")
Algschade$datum.afgehandeld <- as.Date(Algschade$datum.afgehandeld, format = "%d-%m-%Y")

Sleutel maken

De eerste twee velden (bedrijfsnummer en schadenummer) zijn gezamenlijk de sleutel. Aangezien dit voor andere bestandenook geldt, wordt hiervoor een functie gebouwd.

Sleutelmaken <- function (sleutelbestand) {
        #sleutelbestand$sleutel <- paste(sleutelbestand$bedrijfsnummer, sleutelbestand$schadenummer, sep = ".")
        within(sleutelbestand, sleutel <- paste(bedrijfsnummer, schadenummer, sep='.'))
               
}

Algschade <- Sleutelmaken(Algschade)

## Printen dimensies
cat("het aantal schaderegels :", dim(Algschade)[[1]], "\n")
## het aantal schaderegels : 149669
cat("het aantal variabelen   :", dim(Algschade)[[2]])
## het aantal variabelen   : 13

Event Ontstaan schade

Hier wordt een logregel gemaakt voor het ontstaan van de schade waarbij als medewerker “Verzekeringsnemer” wordt ingevoerd.

## Aanmaken van logbestand
variabelen <- c("sleutel", "schadedatum")
log_ontstaan <- as.data.frame(Algschade[ , variabelen])
log_ontstaan$event <- "Ontstaan schade"
log_ontstaan$medewerker <- 1

colnames(log_ontstaan) <- c("sleutel", "eventdatum", "event", "medewerker")

## Printen dimensies
cat("het aantal logregels :", dim(log_ontstaan)[[1]], "\n")
## het aantal logregels : 149669
cat("het aantal variabelen:", dim(log_ontstaan)[[2]])
## het aantal variabelen: 4

Event melden van de schade

Later toe te voegen

Afsluiten van de schade

Hier wordt een logregel gemaakt voor het ontstaan van de schade waarbij als medewerker “Verzekeringsnemer” wordt ingevoerd.

## Aanmaken van logbestand
variabelen <- c("sleutel", "datum.afgehandeld")
log_afsluit <- as.data.frame(Algschade[ , variabelen])
log_afsluit <- log_afsluit[!is.na(Algschade$datum.afgehandeld), ]
log_afsluit$event <- "Gereedmelden schade"
log_afsluit$medewerker <- 0

colnames(log_afsluit) <- c("sleutel", "eventdatum", "event", "medewerker")

## Printen dimensies
cat("het aantal logregels               :", dim(log_afsluit)[[1]], "\n")
## het aantal logregels               : 138748
cat("het aantal variabelen              :", dim(log_afsluit)[[2]], "\n")
## het aantal variabelen              : 4
cat("het aantal niet openstaande schades:", dim(log_ontstaan)[[1]]-dim(log_afsluit)[[1]], "\n")
## het aantal niet openstaande schades: 10921
rm(Algschade, variabelen)

Verwerken agenda

Inlezen van de agenda’s

URLfile <- "C:/Users/menno_000/Documents/R/Schadeproces/schade_agenda.csv"

Agendaschade <- read.csv(URLfile, sep = ";")

## Printen dimensies
cat("het aantal agendaregels :", dim(Agendaschade)[[1]], "\n")
## het aantal agendaregels : 44075
cat("het aantal variabelen   :", dim(Agendaschade)[[2]])
## het aantal variabelen   : 15
rm(URLfile)

Sleutel toevoegen aan bestand

Agendaschade <- Sleutelmaken(Agendaschade)

Aanmaken logbestand

## Aanmaken van logbestand
variabelen <- c("sleutel", "afwerkdatum", "omschrijving.reden", "afgelegd.door", "medewerker")
log_agenda <- as.data.frame(Agendaschade[ , variabelen])

lengte <- dim(log_agenda)[[1]]
for (i in 1: lengte){
        if (!log_agenda[i, ]$afgelegd.door == 0){
                log_agenda[i, ]$medewerker <- log_agenda[i, ]$afgelegd.door
        }
}


## Omzetten logbestand naar definitieve logbestand
log_agenda <- log_agenda[ , c(1,2,3,5)]
colnames(log_agenda) <- c("sleutel", "eventdatum", "event", "medewerker")
log_agenda$eventdatum <- as.Date(log_agenda$eventdatum, format = "%d-%m-%Y")
log_agenda$event <- as.character(log_agenda$event)
log_agenda$medewerker <- as.numeric(log_agenda$medewerker)

## Verwijderen nog niet uitgevoerde agenda's
log_agenda <- log_agenda[!is.na(log_agenda$eventdatum), ]

## Printen dimensies
cat("het aantal logregels               :", dim(log_agenda)[[1]], "\n")
## het aantal logregels               : 40340
cat("het aantal variabelen              :", dim(log_agenda)[[2]], "\n")
## het aantal variabelen              : 4
rm(Agendaschade, variabelen, i, lengte)

Verwerken schadeuitkeringen

Inlezen van de uitkeringen

URLfile <- "C:/Users/menno_000/Documents/R/Schadeproces/schade_uitk.csv"

Uitkeringen <- read.csv(URLfile, sep = ";")

## Printen dimensies
cat("het aantal uitkeringsregels :", dim(Uitkeringen)[[1]], "\n")
## het aantal uitkeringsregels : 167758
cat("het aantal variabelen       :", dim(Uitkeringen)[[2]])
## het aantal variabelen       : 6
rm(URLfile)

Sleutel toevoegen aan bestand

Uitkeringen <- Sleutelmaken(Uitkeringen)

Aanmaken logbestand

## Aanmaken van logbestand
variabelen <- c("sleutel", "boekdatum")
log_uitkering <- as.data.frame(Uitkeringen[ , variabelen])
log_uitkering$event <- "Uitkering aanmaken"
log_uitkering$medewerker <- 0

colnames(log_uitkering) <- c("sleutel", "eventdatum", "event", "medewerker")

log_uitkering$eventdatum <- as.Date(log_uitkering$eventdatum, format = "%d-%m-%Y")

## Printen dimensies
cat("het aantal logregels               :", dim(log_uitkering)[[1]], "\n")
## het aantal logregels               : 167758
cat("het aantal variabelen              :", dim(log_uitkering)[[2]], "\n")
## het aantal variabelen              : 4
rm(Uitkeringen, variabelen)

Samenvoegen van bestanden

Invoegen van ontstaan

log_totaal <- log_ontstaan


## Printen dimensies
cat("het aantal logregels               :", dim(log_totaal)[[1]], "\n")
## het aantal logregels               : 149669
cat("het aantal variabelen              :", dim(log_totaal)[[2]], "\n")
## het aantal variabelen              : 4

Invoegen van melding

Invoegen van afsluiten van schade

log_totaal <- bind_rows(log_totaal, log_afsluit)

## Printen dimensies
cat("het aantal logregels               :", dim(log_totaal)[[1]], "\n")
## het aantal logregels               : 288417
cat("het aantal variabelen              :", dim(log_totaal)[[2]], "\n")
## het aantal variabelen              : 4

invoegen aanmaken uitkeringen

log_totaal <- bind_rows(log_totaal, log_uitkering)

## Printen dimensies
cat("het aantal logregels               :", dim(log_totaal)[[1]], "\n")
## het aantal logregels               : 456175
cat("het aantal variabelen              :", dim(log_totaal)[[2]], "\n")
## het aantal variabelen              : 4

Invoegen log agenda

Indien agenda nog niet in de log staat, moet deze worden toegevoegd. Indien de medewerker in het record dat in de log staat nog niet gevuld is, moet de medewerker uit de agenda worden overgenomen.

lengte <- dim(log_agenda)[[1]]

for (i in 1: lengte){
        sleutelwaarde <- log_agenda$sleutel[i]
        event_datum <- log_agenda$eventdatum[i]
        regels <- filter(log_totaal, log_totaal$sleutel == sleutelwaarde & log_totaal$eventdatum == event_datum)

        if(dim(regels)[[1]] == 0){
                log_totaal[nrow(log_totaal) + 1,] <- log_agenda[i,]
        }else{
                lengte2 <- dim(regels)[[1]] 
                for (i2 in 1 : lengte2) {
                        if (regels$medewerker[i2] == 0){
                                log_totaal <- mutate(log_totaal,
                                                     medewerker=ifelse(sleutel == sleutelwaarde & eventdatum == event_datum, log_agenda$medewerker[i], log_totaal$medewerker))
                        } 
                }
        }
        
        
}

## Printen dimensies
cat("het aantal logregels               :", dim(log_totaal)[[1]], "\n")
## het aantal logregels               : 475872
cat("het aantal variabelen              :", dim(log_totaal)[[2]], "\n")
## het aantal variabelen              : 4

Frequentie per casus

barplot(table(log_totaal$sleutel), main = "Frequentie per bedrijf-schadenummer")

## Frequentie casussen per aantal activiteiten

Freqtabel <- head(table(table(log_totaal$sleutel)), 20)
barplot(Freqtabel, main = "Frequency activities of cases (max = 20)", xlab= "activities in a case")

Schrijven log totaal

## Schrijven CSV bestand
URLfile <- "C:/Users/menno_000/Documents/R/Schadeproces/logtotaal.csv"
write.csv(log_totaal, URLfile)

## Schrijven snelle variant (RDS)
URLfile <- "C:/Users/menno_000/Documents/R/Schadeproces/logtotaal.rds"
save(log_totaal, ascii=FALSE, file = URLfile)