Objetivo

Realizar a Análise Exploratória de Dados para investigar a hipótese de que homens incorrem em mais sinistros do que as mulheres. Após esta etapa inicial, vamos estimar a Função Densidade de Probabilidade para as indenizações pagas com o objetivo final de calcular o valor esperado de indenizações para cada sexo, além do Cálculo de Probabilidades.

Metodologia

Para estimar a distribuição de probabilidade dos valores de indenizações, usaremos o método da verossimilhança.

\[L(\theta) = \prod_{i=1}^nf(x_i|\theta)\] Para calcular a esperença do valor de indenização pago, useremos o Cálculo. Daí vem:

\[E(X) = \int_{-\infty}^{+\infty}x \cdot f(x) \space dx\] Para o Cálculo de Probabilidade, também usaremos o Cálculo:

\[P(a \leq x \leq b) = \int_{a}^bf(x) \space dx\] e

\[\int_{-\infty}^{+\infty}f(x) \space dx = 1\] Para o caso particular da distribuição gamma, temos: \[E(X) = \alpha \sigma\]

Pacotes

library(tidyverse)
library(fitdistrplus)
library(janitor)
library(readxl)

Dados

Os dados simulam um amostra de uma carteira de seguros com as variavies: idade, sexo, ocorrencia de sinistro (sim ou) e valor pago de indenização.

dados <- read_excel("dados.xlsx", sheet = 1) %>% clean_names()
head(dados)
## # A tibble: 6 × 4
##   sexo_0_ou_1 idade sinistro_0_nao_ocorreu_1_ocorreu valor_da_indenizacao_paga…¹
##         <dbl> <dbl>                            <dbl>                       <dbl>
## 1           0    46                                0                           0
## 2           0    74                                0                           0
## 3           1    75                                0                           0
## 4           0    31                                0                           0
## 5           1    58                                0                           0
## 6           0    53                                0                           0
## # ℹ abbreviated name: ¹​valor_da_indenizacao_paga_em_100_r

Formatação dos Dados

#renomeando coluna sexo para mulher
dados <- dados %>%
  rename(mulher = sexo_0_ou_1)
#convertendo coluna mulher para variavel categorica
dados$mulher <- as.factor(dados$mulher)
#filtrando amostra de interesse (ocorreu sinistro)
sinistro <- dados %>% 
  filter(sinistro_0_nao_ocorreu_1_ocorreu == 1)

Análise Exploratória de Dados

Vamos iniciar a análise exploratória investigando a hipótese de que os homens incorrem em mais sinistros do que as mulheres.

#quantos sinistros ocorreram na base interia
dados %>% 
  filter(sinistro_0_nao_ocorreu_1_ocorreu == 1) %>% nrow()
## [1] 280
#numero de homens e mulheres que ocorreram em sisnistro
dados %>% 
  filter(sinistro_0_nao_ocorreu_1_ocorreu == 1) %>% 
  group_by(mulher) %>% 
  count()
## # A tibble: 2 × 2
## # Groups:   mulher [2]
##   mulher     n
##   <fct>  <int>
## 1 0        159
## 2 1        121

Divindo o número de sinistros ocorridos para indivíduos do sexo masculino pelo número total de sinistros, concluímos que os homens são responsáveis por aproximadamente 57% dos sinistros.

#valor total de sinistros
dados %>% 
  filter(sinistro_0_nao_ocorreu_1_ocorreu == 1) %>% 
  summarise(soma_valor_sinistros = sum(valor_da_indenizacao_paga_em_100_r))
## # A tibble: 1 × 1
##   soma_valor_sinistros
##                  <dbl>
## 1                8527.
#valor dos sinistros para homens e mulheres
dados %>% 
  filter(sinistro_0_nao_ocorreu_1_ocorreu == 1) %>% 
  group_by(mulher) %>% 
  summarise(soma_valor_sinistro = sum(valor_da_indenizacao_paga_em_100_r))
## # A tibble: 2 × 2
##   mulher soma_valor_sinistro
##   <fct>                <dbl>
## 1 0                    5504.
## 2 1                    3023.

De modo análogo, podemos concluir que os homens são responsáveis por aproximadamente 65% do valor de toda a indenização paga. Logo, confirmamos a hipótese inicial de que os homens incorrem em sinistros com maior frequência e maior severidade. No entanto, vale lembrar que essas conclusões são específicas para esta amostra, não podemos generalizar para a população sem antes realizarmos outros testes estatísticos para inferência.
A seguir, vamos observar esses dados através do plot de gráficos.

sinistro %>% 
  ggplot(aes(x = mulher, y = valor_da_indenizacao_paga_em_100_r, fill = mulher)) +
  geom_boxplot() +
  labs(x = "") +
  ggtitle("Indenizações Pagas Homem x Mulher") +
  theme_bw()

Corroborando com a conclusão anterior, temos que os valores extremos pagos em indenizações são maiores e mais frequentes para homens. também é possível notar, através do boxplot, que os quartis são maiores para homens. Outra informação de grande valia é que observando o boxplot, percebemos que a distribuição dos valores pagos tem skewness positivo. Ou seja, é assimetrica para direita. Isto nos dá uma dica de qual distribuição podemos usar para fazer a modelagem matemática nas etapas posteriores.

#grafico de barras media de indenizacoes pagas
sinistro %>% 
  group_by(mulher) %>% 
  summarise(media_de_indenizacao = mean(valor_da_indenizacao_paga_em_100_r)) %>% 
  ggplot(aes(x = mulher, y = media_de_indenizacao, fill = mulher)) +
  geom_bar(stat = "identity") +
  ggtitle("Valor Medio de Indenizacao Homem X Mulher") +
  labs(x = "") +
  theme_bw()

Observe que a média de indenizações pagas é consideravelmente maior para os homens.
Vamos observar a distribuição dos valores de indenizações para homens e mulheres.

par(mfrow = c(1,2))
hist(sinistro$valor_da_indenizacao_paga_em_100_r[which(sinistro$mulher == 1)], col = "pink", xlab = "Valor", main = "Distr. Indenizacao Mulheres") 
hist(sinistro$valor_da_indenizacao_paga_em_100_r[which(sinistro$mulher == 0)], col = "lightblue", xlab = "Valor", main = "Distr. Indenizacao Homens")

As distribuções são semelhantes para ambos sexos. Logo, vamos modelar as duas distribuições da mesma forma.

Modelagem

Como mencionado anteriormente, na avaliação do boxplot, vamos modelar nossos dados com uma distribuição que tem skewness positivo. Usaremos a distribuição gamma. Escolhemos ela, porque seu formato, com skewness positivo, é semelhante com o formato da nossa distribuição de indenizações pagas.

#separando homens e mulheres da base de dados de sinsitrados
sinistro_mulheres <- sinistro %>% 
  filter(mulher == 1)

sinistro_homens <- sinistro %>% 
  filter(mulher == 0)
#modelangem da funcao densidade de probabilidade (fdp) para o caso das mulheres
set.seed(2023)
fdp_m <- fitdist(sinistro_mulheres$valor_da_indenizacao_paga_em_100_r, distr = "gamma")
fdp_m
## Fitting of the distribution ' gamma ' by maximum likelihood 
## Parameters:
##         estimate  Std. Error
## shape 1.35700568 0.157526134
## rate  0.05430144 0.007591772

Uma vez que fizemos a modelagem e econtramos os parâmetros da distribuição, vamos verificar, visualmente, se o modelo que estimamos esta bem ajustado.

hist(sinistro_mulheres$valor_da_indenizacao_paga_em_100_r, col = "grey", xlab = "Valor", main = "Distr. Indenizacoes Mulheres", probability = TRUE)
curve(dgamma(x, shape = 1.35700568, rate = 0.05430144), col = "red", lwd = 2, add = TRUE)

Observe que o modelo que ajustamos (linha vermelha) está bem aderente aos dados. Concluímos que foi uma boa escolha a distribuição gamma. Agora, vamos ajustar uma função para o caso dos homens. Faremos de mesma forma.

#funcao densidade de probabilidade (fdp) para o caso dos homens
set.seed(2023)
fdp_h <- fitdist(sinistro_homens$valor_da_indenizacao_paga_em_100_r, distr = "gamma")
fdp_h
## Fitting of the distribution ' gamma ' by maximum likelihood 
## Parameters:
##         estimate  Std. Error
## shape 1.07528438 0.106738494
## rate  0.03106036 0.003886443

Uma vez que fizemos a modelagem e econtramos os parâmetros da distribuição, vamos verificar, visualmente, se o modelo que estimamos esta bem ajustado.

hist(sinistro_homens$valor_da_indenizacao_paga_em_100_r, xlab = "Valor", main = "Distr. Indenizacao Homens", probability = TRUE)
curve(dgamma(x, shape = 1.07528438, rate = 0.03106036), col = "blue", lwd = 2, add = TRUE)

Esperança Matemática

Agora que as duas distribuições, para homens e mulheres, estão bem ajustadas vamos calcular o valor esperado de indenizações para ambos os sexos. Lembrando que \(E(X) = \int_{-\infty}^{+\infty} x \cdot f(x) \space dx\)

#valor esperado de indenizacoes para mulheres
integrate(function(x){x*dgamma(x, shape = 1.35700568, rate = 0.05430144)}, lower = 0, upper = 200)
## 24.97882 with absolute error < 0.00055
#valor esperado de indenizacoes pra homens
integrate(function(x){x*dgamma(x, shape = 1.07528438, rate = 0.03106036)}, lower = 0, upper = 300)
## 34.5822 with absolute error < 0.004

O leitor pode se perguntar: como saber se esta esperança está correta? Simples, podemos observar o gráfico de barras plotado anteriormente com título de Indenizacao Media Homens x Mulheres assim, é possivel perceber que o valor médio de indenizações para homens é de aproximadamente 35 e para as mulheres, aproximadamente 25. Para ser mais preciso temos outros dois métodos: o primeiro sendo simplesmente cálcular a média com a função nativa do r mean(sinistro_mulheres$valor_da_indenizacao_paga_em_100_r) e mean(sinistro_homens$valor_da_indenizacao_paga_em_100_r) de tal modo que:

mean(sinistro_mulheres$valor_da_indenizacao_paga_em_100_r)
## [1] 24.98669
mean(sinistro_homens$valor_da_indenizacao_paga_em_100_r)
## [1] 34.61428

Também podemos usar o cálculo de esperança matemática no caso particular da distribuição gamma. Lembrando que este caso particular é dado por: \(E(X) = \alpha \sigma\)

#calculo da esperanca de indenizacoes pagas pelo caso particular da gamma para mulheres
#alpha = shape
#sigma = 1/rate
1.35700568 * (1/0.05430144)
## [1] 24.99023
#calculo da esperanca de indenizacoes pagas pelo caso particular da gamma para homens
#alpha = shape
#sigma = 1/rate
1.07528438 * (1/0.03106036)
## [1] 34.61919

Naturalmente há uma pequena diferança nos valores devido aos diferentes métodos de cálculo. Todavia, o leitor pode se perguntar: se bastava usar a função mean ou usar o método particular da gamma, por que ter todo o trabalho de estimar a Função Densidade de Probabilidade? Precisamos lembrar que para chegar na Esperança Matemática pelo caso particular da gamma, precisamos primeiro definir a f.d.p. É válido lembrar que neste caso particular, nós temos todos os dados disponíveis então, facilmente podemos calcular a média através de uma função nativa de um software qualquer. Mas, imagine que não tenhamos os dados, apenas a f.d.p. Isso é comum para modelos mais complexos ou na estruturação de novos produtos de seguros que não possuem históricos de sinistros. Nesses casos, supomos uma distribuição de probabilidade para fazermos os cálculos.

Probabilidades

Vamos calcular algumas probabilidades integrando a função densidade de probabilidade (f.d.p). Lembrando que \(P(a \leq x \leq b) = \int_{a}^b f(x) \space dx\) Olhando para a distribuição de indenizações pagas para o caso feminino, é possível notar que quase todos os valores estão no intervalo de 0 a 100. Se fizermos a integração nesse intervalo, esperamos obter aproximadamente 1.

integrate(function(x){dgamma(x, shape = 1.35700568, rate = 0.03106036)}, lower = 0, upper = 100)
## 0.9172166 with absolute error < 1.5e-08

Para o caso dos homens, quase todos os valores de indenizações pagas estão concentrados no intervalo de 0 a 150. De modo análogo, esperamos obter um valor próximo de 1 quando integrar a f.d.p neste invervalo.

integrate(function(x){dgamma(x, shape = 1.07528438, rate = 0.03106036)}, lower = 0, upper = 150)
## 0.9887854 with absolute error < 9.9e-08

Conclusão

Neste script vimos como estimar a Função Densidade de Probabilidade (f.d.p) e como aplicar o Cálculo para encontrar as probabilidade associadas à função. Outro fator importante é que para escolhermos como estimar a f.d.p precisamos conhecer o formato de algumas distribuições básicas, como a gamma. Uma vez escolhida uma distribuição que conhecemos que tenha um formato parecido com a distribuição dos dados que estamos trabalhando, podemos, atrevés do método da verossimilhança, estimar os parâmetros da distrubuição para definir a f.d.p dos nossos dados. Neste link o leitor pode ver como é a distribuição gamma com diferentes parâmetros.