Dupla: Tibério Gadelha e Matheus de Souza.

Introdução

É de conhecimento geral que 2020 foi um ano extremamente estressante. A pandemia fez com que o psicológico de muitas pessoas ficasse abalado, além de afertar seriamente a saúde de muitos, fazendo com que os planos de saúde ficassem sobrecarregados. Com este sobrecarregamento, provavelmente a insatisfação do cliente para com o plano de saúde deve ter aumentando bastante. Para avaliar essa insatisfação, iremos usar o Índice Geral de Reclamações (IGR). O IGR têm como base os dados de beneficiários e reclamações recebidos pela Agência Nacional de Saúde (ANS) e permitem comparar a atuação das empresas que atuam no setor de Saúde Suplementar.

“O IGR tem a finalidade apresentar um termômetro do comportamento das operadoras do setor no atendimento aos problemas apontados pelos beneficiários. Contempla o número de reclamações de beneficiários recebidas nos três meses anteriores e classificadas até a data de extração do dado para cada 10.000 beneficiários da média mensal de beneficiários do trimestre.” Disponível em ANS.

Módulos necessários:

library(tidyverse)
library(here)
theme_set(theme_bw())

Dados

Para realizar a pesquisa, foram retirados dados do GOV.BR. Após baixar o CSV bruto, filtragens foram feitas, deixando apenas as seguintes colunas:

  • Cobertura (odonto ou hospitalar)
  • porte (pequeno, medio ou grande)
  • classificacao_atual (valor do IGR no mês)
  • classificacao_anterior (valor do IGR no mês anterior)
  • mes (mês da classificação)

São mais de 8 mil linhas que contêm o IGR de empresas de plano de saúde/odontológico de diversas partes do Brasil ao longo dos doze meses de 2020. Nesta exploração iremos usar apenas as linhas cuja cobertura seja de hospitais.

reclamacoes = read_delim(here("data/NOVO_2020.csv"), delim = ';') %>%
  filter(cobertura == 'hospitalar')
reclamacoes
## # A tibble: 8,450 x 5
##    cobertura  porte   classificacao_atual classificacao_anterior   mes
##    <chr>      <chr>                 <dbl>                  <dbl> <dbl>
##  1 hospitalar pequeno                 210                    182     1
##  2 hospitalar pequeno                 210                     NA     1
##  3 hospitalar pequeno                 210                    182     1
##  4 hospitalar pequeno                 210                    132     1
##  5 hospitalar pequeno                 210                    182     1
##  6 hospitalar pequeno                 210                    182     1
##  7 hospitalar pequeno                 210                    178     1
##  8 hospitalar pequeno                 210                    111     1
##  9 hospitalar pequeno                 210                    182     1
## 10 hospitalar <NA>                      1                     NA     1
## # ... with 8,440 more rows

Relação entre porte e IGR

É muito provável que empresas de porte pequeno tenham sido as que mais sofreram com o aumento dos atendimento, visto que a grande maioria dessas não estavam prepradas para a alta demanda, consequentemente, as mesmas devem ser as que têm o IGR mais alto. Mas será que existe mesmo alguma relação entre o porte e o IGR? Para confirmar esta hipótese, selecionaremos as linhas que são referentes aos planos hospitalares. As linhas que não informam o porte da empresa serão desconsideradas (apenas 35 linhas deconsideradas).

reclamacoes_hospitalar = reclamacoes %>%
  filter(!is.na(porte) & cobertura == "hospitalar")
reclamacoes_hospitalar
## # A tibble: 8,422 x 5
##    cobertura  porte   classificacao_atual classificacao_anterior   mes
##    <chr>      <chr>                 <dbl>                  <dbl> <dbl>
##  1 hospitalar pequeno                 210                    182     1
##  2 hospitalar pequeno                 210                     NA     1
##  3 hospitalar pequeno                 210                    182     1
##  4 hospitalar pequeno                 210                    132     1
##  5 hospitalar pequeno                 210                    182     1
##  6 hospitalar pequeno                 210                    182     1
##  7 hospitalar pequeno                 210                    178     1
##  8 hospitalar pequeno                 210                    111     1
##  9 hospitalar pequeno                 210                    182     1
## 10 hospitalar pequeno                 210                    182     1
## # ... with 8,412 more rows

Para melhorar a visualização e ter uma ideia de como os valores estão distribuídos no gráfico, calculamos a média das classicações. Média do IGR em 2020 é de 124. Um valor consideravelmente ruim.

media_c = reclamacoes_hospitalar %>%
  summarize(media_classificacao_atual=mean(classificacao_atual))
media_c
## # A tibble: 1 x 1
##   media_classificacao_atual
##                       <dbl>
## 1                      124.
visualizacao_igr_porte = reclamacoes_hospitalar %>%
  ggplot(aes(x = mes, y = classificacao_atual )) +
  facet_wrap(~ porte) +
  geom_point(size=7, alpha=0.05, color = "Green")  +
  geom_hline(yintercept = media_c$media_classificacao_atual, color = "yellow") +
  labs(
    title = "                          IGR ao longo de 2020",
    x = "Mês",
    y = "IGR"
  )
visualizacao_igr_porte

Com a média das classificações no mês, foi feita uma interceptação no eixo Y do gráfico, permitindo visualizar os valores que estão acima/abaixo da mesma. Logo, é possível notar que os extremos (pontos mínimos e máximos) do IGR não variaram muito ao longo do ano, nos três tipos de empresa. Apenas as empresas de pequeno porte tiveram uma variação um pouco maior, mas mesmo assim não foi muito significante. Além disso, em todos os meses de 2020, as empresas de grande porte obtiveram IGR bem abaixo da média ao longo do ano, o que é um ótimo indicativo, enquanto as de pequeno/médio ficaram acima da média em todos os meses, em diversos casos.

Após analisar o gráfico anterior, não há dúvidas que o desempenho das empresas de médio/pequeno porte é muito inferior ao das grandes empresas. Mas para confirar, iremos separar a média do IGR por porte de empresa.

media_igr_porte = reclamacoes_hospitalar %>%
  group_by(porte) %>%
  summarize(media_classificacao_atual=mean(classificacao_atual))
media_igr_porte
## # A tibble: 3 x 2
##   porte   media_classificacao_atual
##   <chr>                       <dbl>
## 1 grande                       38.9
## 2 medio                       118. 
## 3 pequeno                     145.
visualizacao_media_igr_porte = media_igr_porte %>%
  ggplot(aes(x = porte, y = (media_classificacao_atual) )) +
  geom_bar(stat="identity", fill="steelblue", position = position_dodge(width = 0.8), width=0.5) + 
  labs(
      title = "      Média do IGR de acordo com o porte da empresa, em 2020",
      x = "Porte",
      y = "Média IGR"
      
    )
visualizacao_media_igr_porte

Observando a média do IGR por porte de empresa e os gráficos acima, foi possível confirmar a discrepância entre empresas de grande porte para as de médio/pequeno. Enquanto as empresas de médio/pequeno porte tiverem média acima dos 110 de IGR, as empresas grandes ficaram com IGR de aproximadamente 39, em 2020. Isso mostra que as organizações de grande porte tendem a resolverem as reclamações dos clientes, deixando-os mais satisfeitos. Logo, pode-se dizer que há uma considerável relação entre o porte da empresa e o seu IGR, na grande maioria dos casos.

RELAÇÃO ENTRE O IGR NO MÊS ANTERIOR E ATUAL

Outro ponto interessante a se observar é a da influência do IGR do mês anterior no mês atual. Como será que o IGR do mês atual se comporta, com base no mês anterior? Para responder esta pergunta, iremos desconsiderar as linhas do mês de janeiro, já que não há um mês anterior a janeiro em 2020. Para melhorar a avaliação de como o IGR variou de um mês para outro, iremos adicionar uma nova coluna chamada diff_classificacao, que será a diferença entre a classificação (IGR) no mês atual e a classificação no mês anterior. Se esta diferença for negativa, quer dizer que a empresa melhorou de um mês para outro. Logo, quanto mais negativa, melhor é.

reclamacoes_hospitalar_nova = reclamacoes_hospitalar  %>% 
  filter(!is.na(classificacao_anterior) & !is.na(classificacao_atual) & mes != 1) %>%
  mutate(diff_classificacao = classificacao_atual - classificacao_anterior)
reclamacoes_hospitalar_nova
## # A tibble: 7,580 x 6
##    cobertura  porte  classificacao_at~ classificacao_ant~   mes diff_classifica~
##    <chr>      <chr>              <dbl>              <dbl> <dbl>            <dbl>
##  1 hospitalar peque~               204                182     2               22
##  2 hospitalar peque~               204                182     2               22
##  3 hospitalar peque~               204                182     2               22
##  4 hospitalar peque~               204                182     2               22
##  5 hospitalar peque~               204                 89     2              115
##  6 hospitalar peque~               204                111     2               93
##  7 hospitalar peque~               204                182     2               22
##  8 hospitalar peque~               204                182     2               22
##  9 hospitalar peque~               204                182     2               22
## 10 hospitalar peque~               204                182     2               22
## # ... with 7,570 more rows

Após adicionar a coluna com a diferença entre as classificações, iremos calcular a média desta diferença, separando por porte e mês.

media_mes_diff = reclamacoes_hospitalar_nova %>%
  group_by(mes, porte) %>%
  summarise(media = mean(diff_classificacao))
media_mes_diff
## # A tibble: 33 x 3
## # Groups:   mes [11]
##      mes porte   media
##    <dbl> <chr>   <dbl>
##  1     2 grande  -2.10
##  2     2 medio    7.65
##  3     2 pequeno 15.5 
##  4     3 grande  -2.19
##  5     3 medio    8.21
##  6     3 pequeno 15.0 
##  7     4 grande  -2.01
##  8     4 medio    6.74
##  9     4 pequeno  5.84
## 10     5 grande  -2.21
## # ... with 23 more rows
plot_media_mes_diff = media_mes_diff %>%
  ggplot(aes(x = mes, y = media)) +
  facet_wrap(~ porte) +
  geom_line(color="green") +
  labs(
    title="Média da diferença entre a classificação e a classificação no mês anterior por mês",
    y = "Diferença",
    x = "Mês"
  )
plot_media_mes_diff

Enquanto as empresas de grande porte tiveram pouca variação, se mantendo boa parte do ano com diferença negativa, o que é bom, pois significa que houve melhora no IGR ao longo do ano, as de pequeno porte variaram bastante. No começo do ano, as de pequeno porte começaram a ter uma melhora, entretanto pioraram no meio do ano, justamente no pico da pandemia, só conseguindo melhorar o IGR em novembro e dezembro, meses que tiveram uma melhora brusca na classificação. Já as empresas de médio porte conseguiram se manter quase que estáveis até o meio do ano, quando após julho houve uma melhora significativa no IGR.

reclamacoes_hospitalar_nova %>% 
  summarise(correlacao = cor(classificacao_atual, classificacao_anterior, method = "pearson"))
## # A tibble: 1 x 1
##   correlacao
##        <dbl>
## 1      0.816

Usando o método de Pearson para calcular a correlação, o valor foi de aproximadamente 0.816, indicando uma forte correlação. Por ser bem próxima de 1, é uma correlação forte e positiva. Esta correlação poderia ter ficado ainda mais alta, se não fosse pela brusca fuga de padrão que houve nas empresas de pequeno porte, principalmente após o mês de outubro.

Sendo assim, o IGR do mês anterior tem forte influência no mês posterior. Isso ficou evidente com a alta correlação, e com os gráficos das empresas de grande/médio porte.

Existiram mais reclamações na pandemia do covid-19?

A pandemia do covid19 acabou por testar e até desafiar os hospitais, equipes de saúde e população, com cada vez mais casos aparecendo em todo o mundo em quantidade expoente, a população ficou necessitada de um assistencialismo mais eficaz dos planos de saúde e das políticas públicas na área da saúde, diante dessa demanda inflacionada pelo vírus surgiu a dúvida: existiram mais reclamações na pandemia do covid-19?

resultados = reclamacoes %>%
    group_by(mes) %>% 
        summarise(quantidade = n())




resultados %>%
    ggplot(aes(y = quantidade, x = mes, width = 0.7)) +
    geom_bar(stat="identity", fill="steelblue", position = position_dodge(width = 0.8), width=0.5) + 
    xlim("Janeiro", "Fevereiro", "Marco", "Abril", "Maio", "Junho", "Julho", "Agosto", "Setembro", "Outubro", "Novembro", "Dezembro") +
    theme(axis.text.x=element_text(angle=45,hjust=1,vjust=0.5)) 

Como podemos observar no gráfico, não existiu um aumento significativo de reclamações na pandemia. os valores mensais continuaram semelhantes aos meses antes da pandemia (janeiro, fevereiro e março).

resultados = reclamacoes %>%
    group_by(mes) %>% 
        summarise(quantidade = n())

resultados
## # A tibble: 12 x 2
##      mes quantidade
##    <dbl>      <int>
##  1     1        714
##  2     2        714
##  3     3        714
##  4     4        709
##  5     5        707
##  6     6        703
##  7     7        701
##  8     8        700
##  9     9        699
## 10    10        697
## 11    11        695
## 12    12        697

Aqui podemos destacar a quantidade de reclamações entre os meses 1 até 12. Podemos observar que eles não possuem muita variação e não se distanciam muito da média geral.

resultados_media = mean(x = resultados$quantidade)

resultados_media
## [1] 704.1667

Possui uma média de: 951 reclamações mensais.

Concluímos então que mesmo diante da pandemia o número de reclamações registradas continuou sendo praticamente o mesmo, mantendo-se perto da média geral entre os meses.