Introdução

Este relatório analisa um conjunto de dados relacionados a contratos de clientes, com o objetivo de identificar características associadas à renovação de contratos (churn). As variáveis incluem informações sobre renovações, escolaridade, idade no final do contrato, e dados demográficos, como estado de origem e gênero.

Carregando os Dados

# Carregar pacotes necessários
library(ggplot2)
library(dplyr)
## 
## Anexando pacote: 'dplyr'
## Os seguintes objetos são mascarados por 'package:stats':
## 
##     filter, lag
## Os seguintes objetos são mascarados por 'package:base':
## 
##     intersect, setdiff, setequal, union
library(tidyr)

# Carregar os dados
database <- read.csv("C:/Users/Niciu/Downloads/dados.csv")

# Substituir valores de 120 por NA em idade_final_contrato
database$idade_final_contrato <- ifelse(database$idade_final_contrato == 120, NA, database$idade_final_contrato)

# Visualizar as primeiras linhas dos dados
head(database)
##   qt_renovacoes escolaridade_info idade_final_contrato filial estado_civil
## 1             5                 0                   NA      1            0
## 2             1                 0                   NA      1            0
## 3             0                 0                   34      0            0
## 4             4                 0                   NA      1            0
## 5             5                 0                   NA      1            0
## 6             1                 0                   NA      0            0
##   mes_final  ano pe ba outros_estados m f pj churn
## 1        10 2009  1  0              0 1 0  0     1
## 2        10 2014  0  0              1 1 0  0     1
## 3        10 2013  0  0              1 1 0  0     0
## 4        10 2010  0  0              1 0 0  1     0
## 5        10 2008  1  0              0 1 0  0     1
## 6        10 2013  0  0              1 0 0  1     1

Estrutura dos Dados

# Resumo estatístico das variáveis
summary(database)
##  qt_renovacoes    escolaridade_info idade_final_contrato     filial      
##  Min.   : 0.000   Min.   :0.0000    Min.   :18.00        Min.   :0.0000  
##  1st Qu.: 0.000   1st Qu.:0.0000    1st Qu.:33.00        1st Qu.:0.0000  
##  Median : 1.000   Median :0.0000    Median :40.00        Median :0.0000  
##  Mean   : 1.576   Mean   :0.4002    Mean   :39.16        Mean   :0.4494  
##  3rd Qu.: 2.000   3rd Qu.:1.0000    3rd Qu.:46.00        3rd Qu.:1.0000  
##  Max.   :16.000   Max.   :1.0000    Max.   :68.00        Max.   :1.0000  
##                                     NA's   :56704                        
##   estado_civil      mes_final           ano             pe        
##  Min.   :0.0000   Min.   : 1.000   Min.   :   0   Min.   :0.0000  
##  1st Qu.:0.0000   1st Qu.: 4.000   1st Qu.:2011   1st Qu.:0.0000  
##  Median :0.0000   Median : 7.000   Median :2015   Median :1.0000  
##  Mean   :0.3163   Mean   : 6.553   Mean   :1965   Mean   :0.5215  
##  3rd Qu.:1.0000   3rd Qu.: 9.000   3rd Qu.:2020   3rd Qu.:1.0000  
##  Max.   :1.0000   Max.   :12.000   Max.   :2211   Max.   :1.0000  
##                                                                   
##        ba         outros_estados        m                f         
##  Min.   :0.0000   Min.   :0.000   Min.   :0.0000   Min.   :0.0000  
##  1st Qu.:0.0000   1st Qu.:0.000   1st Qu.:0.0000   1st Qu.:0.0000  
##  Median :0.0000   Median :0.000   Median :1.0000   Median :0.0000  
##  Mean   :0.1805   Mean   :0.298   Mean   :0.5261   Mean   :0.2551  
##  3rd Qu.:0.0000   3rd Qu.:1.000   3rd Qu.:1.0000   3rd Qu.:1.0000  
##  Max.   :1.0000   Max.   :1.000   Max.   :1.0000   Max.   :1.0000  
##                                                                    
##        pj             churn       
##  Min.   :0.0000   Min.   :0.0000  
##  1st Qu.:0.0000   1st Qu.:0.0000  
##  Median :0.0000   Median :0.0000  
##  Mean   :0.2188   Mean   :0.4793  
##  3rd Qu.:0.0000   3rd Qu.:1.0000  
##  Max.   :1.0000   Max.   :1.0000  
## 
# Estrutura dos dados
str(database)
## 'data.frame':    110619 obs. of  14 variables:
##  $ qt_renovacoes       : int  5 1 0 4 5 1 1 4 0 4 ...
##  $ escolaridade_info   : int  0 0 0 0 0 0 0 0 0 0 ...
##  $ idade_final_contrato: num  NA NA 34 NA NA NA 22 NA NA NA ...
##  $ filial              : int  1 1 0 1 1 0 0 1 0 1 ...
##  $ estado_civil        : int  0 0 0 0 0 0 1 0 0 0 ...
##  $ mes_final           : int  10 10 10 10 10 10 10 10 10 10 ...
##  $ ano                 : int  2009 2014 2013 2010 2008 2013 2013 2011 2013 2002 ...
##  $ pe                  : int  1 0 0 0 1 0 0 0 1 0 ...
##  $ ba                  : int  0 0 0 0 0 0 0 0 0 1 ...
##  $ outros_estados      : int  0 1 1 1 0 1 1 1 0 0 ...
##  $ m                   : int  1 1 1 0 1 0 1 0 0 1 ...
##  $ f                   : int  0 0 0 0 0 0 0 0 0 0 ...
##  $ pj                  : int  0 0 0 1 0 1 0 1 1 0 ...
##  $ churn               : int  1 1 0 0 1 1 1 0 0 1 ...

Análise Exploratória de Dados (EDA)

Correlação entre Variáveis

# Calcular a correlação entre variáveis numéricas
correlation_matrix <- cor(database %>% select_if(is.numeric))
correlation_matrix
##                      qt_renovacoes escolaridade_info idade_final_contrato
## qt_renovacoes          1.000000000       -0.15748387                   NA
## escolaridade_info     -0.157483868        1.00000000                   NA
## idade_final_contrato            NA                NA                    1
## filial                 0.268528064       -0.73805819                   NA
## estado_civil          -0.183295317        0.62295844                   NA
## mes_final             -0.005702877       -0.01017967                   NA
## ano                   -0.130695670       -0.00351010                   NA
## pe                     0.086879413       -0.16446159                   NA
## ba                    -0.043171064       -0.03973259                   NA
## outros_estados        -0.058587248        0.21303892                   NA
## m                      0.023258672        0.15486101                   NA
## f                     -0.075138280        0.20132763                   NA
## pj                     0.051129492       -0.39929221                   NA
## churn                  0.498515747       -0.11322144                   NA
##                            filial estado_civil    mes_final          ano
## qt_renovacoes         0.268528064 -0.183295317 -0.005702877 -0.130695670
## escolaridade_info    -0.738058193  0.622958436 -0.010179671 -0.003510100
## idade_final_contrato           NA           NA           NA           NA
## filial                1.000000000 -0.614573103  0.004847809 -0.013833297
## estado_civil         -0.614573103  1.000000000 -0.009827551  0.002646737
## mes_final             0.004847809 -0.009827551  1.000000000  0.051694586
## ano                  -0.013833297  0.002646737  0.051694586  1.000000000
## pe                    0.236314875 -0.166365539  0.012584641 -0.006444673
## ba                   -0.034448300 -0.010814337 -0.008534166  0.002577528
## outros_estados       -0.229137613  0.190800447 -0.006568529  0.004871450
## m                    -0.030611611  0.070383325  0.015080110  0.012780290
## f                    -0.217156832  0.167832288 -0.010372371  0.001479858
## pj                    0.265922360 -0.261951893 -0.007276834 -0.016995287
## churn                 0.215132191 -0.141069200  0.008708403 -0.122615579
##                                 pe           ba outros_estados             m
## qt_renovacoes         0.0868794127 -0.043171064   -0.058587248  0.0232586722
## escolaridade_info    -0.1644615933 -0.039732589    0.213038923  0.1548610087
## idade_final_contrato            NA           NA             NA            NA
## filial                0.2363148752 -0.034448300   -0.229137613 -0.0306116113
## estado_civil         -0.1663655390 -0.010814337    0.190800447  0.0703833248
## mes_final             0.0125846408 -0.008534166   -0.006568529  0.0150801105
## ano                  -0.0064446734  0.002577528    0.004871450  0.0127802896
## pe                    1.0000000000 -0.489989611   -0.680169045  0.0002889747
## ba                   -0.4899896113  1.000000000   -0.305749263  0.0014864575
## outros_estados       -0.6801690449 -0.305749263    1.000000000 -0.0015656162
## m                     0.0002889747  0.001486458   -0.001565616  1.0000000000
## f                    -0.0557018871 -0.021714649    0.079098590 -0.6165673870
## pj                    0.0583784133  0.021098883   -0.081504113 -0.5576657920
## churn                 0.0531645594 -0.045294806   -0.019977580  0.0336559104
##                                 f           pj        churn
## qt_renovacoes        -0.075138280  0.051129492  0.498515747
## escolaridade_info     0.201327627 -0.399292214 -0.113221440
## idade_final_contrato           NA           NA           NA
## filial               -0.217156832  0.265922360  0.215132191
## estado_civil          0.167832288 -0.261951893 -0.141069200
## mes_final            -0.010372371 -0.007276834  0.008708403
## ano                   0.001479858 -0.016995287 -0.122615579
## pe                   -0.055701887  0.058378413  0.053164559
## ba                   -0.021714649  0.021098883 -0.045294806
## outros_estados        0.079098590 -0.081504113 -0.019977580
## m                    -0.616567387 -0.557665792  0.033655910
## f                     1.000000000 -0.309673865 -0.056180229
## pj                   -0.309673865  1.000000000  0.018584725
## churn                -0.056180229  0.018584725  1.000000000
# Visualizar a matriz de correlação (opcional)
library(corrplot)
## corrplot 0.94 loaded
corrplot::corrplot(correlation_matrix, method = "circle")

Essa imagem é uma matriz de correlação visualizada como um gráfico de correlação, onde cada célula representa o coeficiente de correlação entre dois pares de variáveis no conjunto de dados. Aqui está uma interpretação do que cada parte da imagem demonstra:

1. Coeficiente de Correlação:

  • Intervalo de Valores: O coeficiente de correlação varia entre -1 e 1.
    • 1: Correlação perfeita positiva – conforme uma variável aumenta, a outra também aumenta.
    • -1: Correlação perfeita negativa – conforme uma variável aumenta, a outra diminui.
    • 0: Nenhuma correlação linear.
  • Cores:
    • Azul Escuro: Indica uma forte correlação positiva.
    • Vermelho Escuro: Indica uma forte correlação negativa.
    • Cores claras ou brancas: Indicam correlação fraca ou inexistente.
    • Pontos com “?”: Indicam correlações que não foram calculadas devido a valores ausentes ou não numéricos.

2. Interpretação das Relações entre Variáveis:

  • Diagonal Principal: As células na diagonal principal são sempre de cor sólida, pois representam a correlação de uma variável consigo mesma (correlação perfeita, 1).
  • Correlação com churn:
    • As variáveis próximas ao churn no eixo vertical ou horizontal indicam como outras variáveis estão correlacionadas com o churn.
    • Se churn tem uma correlação alta (azul escuro ou vermelho escuro) com outra variável, isso sugere uma forte relação positiva ou negativa.

3. Observações Específicas:

  • qt_renovacoes e churn: Há uma correlação negativa entre qt_renovacoes e churn, sugerindo que clientes que renovaram o contrato várias vezes no passado têm menor probabilidade de churn. Isso faz sentido, pois clientes fiéis geralmente continuam renovando.
  • filial e churn: A relação entre filial e churn é positiva, o que sugere que a maneira como o contrato foi vendido (pela empresa diretamente ou por distribuidores) pode ter uma influência no churn.
  • idade_final_contrato e churn: A correlação entre idade final do contrato e churn também parece fraca, o que indica que a idade do cliente no final do contrato pode não ser um fator determinante na decisão de renovar.
  • estado_civil e churn: A variável estado_civil tem uma correlação ligeiramente negativa com churn, sugerindo que clientes casados ou com outro estado civil diferente de solteiro têm uma ligeira tendência a renovar mais do que os solteiros.
  • pj e churn: Há uma correlação negativa entre ser Pessoa Jurídica (pj) e o churn, o que pode indicar que clientes empresariais (Pessoa Jurídica) têm maior propensão a renovar o contrato em comparação com clientes individuais (Pessoa Física).
  • m, f e churn: As correlações entre gênero (m para masculino, f para feminino) e churn são fracas, sugerindo que o gênero não é um fator significativo na decisão de churn.

4. Relevância Prática:

  • Identificação de Padrões: Esse gráfico ajuda a identificar variáveis que podem ser preditores importantes do churn ou que se movem em conjunto, permitindo insights que podem ser usados para modelagem preditiva ou estratégias de retenção de clientes.
  • Fatores Críticos: Variáveis com alta correlação com churn podem ser cruciais para intervenções, enquanto variáveis sem correlação significativa podem ser menos relevantes.

Esse gráfico é essencial para entender as relações entre variáveis no seu dataset e ajuda a guiar a análise subsequente, como quais variáveis incluir em modelos de regressão ou outros métodos analíticos.

Análise Baseada em Correlações

Análise de qt_renovacoes e churn

Nesta seção, vamos explorar como o número de renovações anteriores está relacionado ao churn. Se houver uma correlação negativa significativa, isso pode indicar que clientes que renovaram menos vezes têm maior probabilidade de churn.

# Gráfico de dispersão para qt_renovacoes e churn
ggplot(database, aes(x = qt_renovacoes, y = churn)) +
  geom_point() +
  geom_smooth(method = "lm", col = "red") +
  labs(title = "Relação entre Número de Renovações e Churn", x = "Número de Renovações", y = "Churn (0 = Não, 1 = Sim)")
## `geom_smooth()` using formula = 'y ~ x'

Análise da Relação entre Número de Renovações e Churn

Este gráfico de dispersão mostra a relação entre o número de renovações anteriores (qt_renovacoes) e o churn, onde churn = 1 indica que o cliente renovou o contrato. A linha vermelha representa a linha de tendência obtida por um modelo de regressão linear.

Observações:

  1. Linha de Tendência:
    • A linha de tendência vermelha é ascendente, sugerindo uma correlação positiva entre o número de renovações anteriores e a probabilidade de renovação futura. Isso significa que quanto mais vezes um cliente renovou o contrato no passado, maior a probabilidade de que ele continue renovando.
  2. Interpretação Geral:
    • Clientes com um histórico maior de renovações anteriores são mais propensos a continuar renovando seus contratos. Isso pode indicar um alto nível de satisfação e confiança nos serviços oferecidos, reforçando a importância da fidelização dos clientes.
    • A análise sugere que manter clientes ao longo de várias renovações anteriores é uma estratégia eficaz para garantir renovações futuras, destacando a importância de um bom relacionamento de longo prazo com o cliente.

Análise de escolaridade_info e churn

Vamos explorar se clientes com maior escolaridade apresentam taxas de churn diferentes.

# Gráfico de barras para escolaridade_info e churn
ggplot(database, aes(x = factor(escolaridade_info), fill = factor(churn))) + 
  geom_bar(position = "dodge", color = "black") + 
  labs(title = "Comparação de Churn por Escolaridade", x = "Escolaridade Superior (0 = Não, 1 = Sim)", y = "Quantidade", fill = "Churn (0 = Não, 1 = Sim)")

Análise da Comparação de Churn por Escolaridade

Este gráfico de barras compara a quantidade de churn entre clientes com diferentes níveis de escolaridade. A variável escolaridade_info indica se o cliente possui escolaridade superior ao ensino médio (0 = Não, 1 = Sim). A cor dos blocos indica se o cliente fez churn (1 = Sim) ou não (0 = Não).

Observações:

  1. Distribuição de Churn por Escolaridade:
    • Clientes sem escolaridade superior (escolaridade_info = 0) têm uma maior quantidade total de churn (representado pela barra azul) comparado aos clientes com escolaridade superior (escolaridade_info = 1).
    • No entanto, a quantidade de clientes que não fazem churn (representada pela barra vermelha) é também maior entre aqueles sem escolaridade superior.
  2. Interpretação Geral:
    • A análise sugere que clientes com escolaridade superior têm menor probabilidade de churn comparado aos que não possuem escolaridade superior.
    • A diferença na proporção de churn entre os grupos indica que a escolaridade pode ser um fator relevante a ser considerado em estratégias de retenção de clientes.

Análise Geográfica de pe, ba, outros_estados com churn

Aqui examinamos se a localização geográfica do cliente (Pernambuco, Bahia, Outros Estados) influencia as taxas de churn.

# Gráfico de barras para localizações e churn
database %>%
  pivot_longer(cols = c(pe, ba, outros_estados), names_to = "localizacao", values_to = "presente") %>%
  filter(presente == 1) %>%
  ggplot(aes(x = localizacao, fill = factor(churn))) + 
  geom_bar(position = "dodge", color = "black") + 
  labs(title = "Comparação de Churn por Localização Geográfica", x = "Localização", y = "Quantidade", fill = "Churn (0 = Não, 1 = Sim)")

Análise da Comparação de Churn por Localização Geográfica

Este gráfico de barras compara a quantidade de churn entre clientes de diferentes localizações geográficas. As localizações são categorizadas como pe (Pernambuco), ba (Bahia), e outros_estados (outras regiões). A cor dos blocos indica se o cliente fez churn (1 = Sim) ou não (0 = Não).

Observações:

  1. Distribuição de Churn por Localização:
    • Pernambuco (pe): Os clientes de Pernambuco apresentam a maior quantidade total de churn (representado pela barra azul) em comparação com outras localizações. Isso também se reflete na maior quantidade de clientes em geral nesta região.
    • Bahia (ba): A Bahia tem uma menor quantidade total de churn comparado a Pernambuco e aos outros estados, com uma diferença notável entre aqueles que fizeram churn e aqueles que não fizeram.
    • Outros Estados (outros_estados): Clientes de outras regiões têm um comportamento de churn mais equilibrado em comparação com Pernambuco, mas ainda assim, uma quantidade considerável de churn.
  2. Interpretação Geral:
    • Pernambuco (pe) tem o maior número de clientes que fazem churn, mas também tem a maior quantidade de clientes que não fazem churn. Isso pode sugerir que, apesar de uma grande base de clientes, há um desafio particular em manter a fidelidade dos clientes nesta região.
    • Bahia (ba), com um menor número total de clientes, mostra um comportamento de churn menos expressivo, o que pode indicar uma menor estabilidade.
    • Outros Estados (outros_estados) têm uma distribuição mais equilibrada, o que sugere que a localização pode influenciar as taxas de churn, mas que outros fatores também podem estar em jogo.

Considerações:

  • A localização geográfica parece influenciar significativamente o churn, especialmente em Pernambuco. Isso pode ser devido a fatores regionais específicos que afetam a satisfação ou as necessidades dos clientes. Investigar esses fatores regionais pode ajudar a desenvolver estratégias mais eficazes de retenção de clientes.

Outras Análise de Churn

Idade Final do Contrato

A distribuição da idade final dos clientes pode indicar faixas etárias mais propensas à renovação de contratos.

# Criar faixas etárias finais
database <- database %>%
  filter(!is.na(idade_final_contrato)) %>%
  mutate(faixa_etaria = cut(idade_final_contrato, 
                            breaks = c(18, 30, 40, 50, 60, 70, 80, 90, 100), 
                            labels = c("18-30", "31-40", "41-50", "51-60", "61-70", "71-80", "81-90", "91-100"),
                            include.lowest = TRUE))

# Calcular a quantidade de churn em cada faixa etária
churn_by_age <- database %>%
  group_by(faixa_etaria) %>%
  summarize(churn_count = sum(churn))

# Visualizar o resultado
churn_by_age
## # A tibble: 5 × 2
##   faixa_etaria churn_count
##   <fct>              <int>
## 1 18-30               2882
## 2 31-40               6937
## 3 41-50               8766
## 4 51-60               2583
## 5 61-70                  1
# Gráfico da quantidade de churn por faixa etária final
ggplot(churn_by_age, aes(x = faixa_etaria, y = churn_count, fill = faixa_etaria)) + 
  geom_bar(stat = "identity", color = "black") + 
  labs(title = "Quantidade de Churn por Faixa Etária Final", x = "Faixa Etária Final", y = "Quantidade de Churn") + 
  theme_minimal() + 
  scale_fill_brewer(palette = "Blues") + 
  geom_text(aes(label = churn_count), vjust = -0.5)

Faixa etárias finais

# Criar faixas etárias finais
database <- database %>%
  filter(!is.na(idade_final_contrato)) %>%
  mutate(faixa_etaria = cut(idade_final_contrato, 
                            breaks = c(18, 30, 40, 50, 60, 70, 80, 90, 100), 
                            labels = c("18-30", "31-40", "41-50", "51-60", "61-70", "71-80", "81-90", "91-100"),
                            include.lowest = TRUE))

# Calcular a taxa de renovação (churn = 1) em cada faixa etária
renovacao_by_age <- database %>%
  group_by(faixa_etaria) %>%
  summarize(total = n(),
            renovacao_count = sum(churn == 1),
            renovacao_rate = (renovacao_count / total) * 100)

# Visualizar o resultado
renovacao_by_age
## # A tibble: 5 × 4
##   faixa_etaria total renovacao_count renovacao_rate
##   <fct>        <int>           <int>          <dbl>
## 1 18-30         9254            2882           31.1
## 2 31-40        18981            6937           36.5
## 3 41-50        21067            8766           41.6
## 4 51-60         4612            2583           56.0
## 5 61-70            1               1          100
# Gráfico de taxa de renovação por faixa etária final
ggplot(renovacao_by_age, aes(x = faixa_etaria, y = renovacao_rate, fill = faixa_etaria)) + 
  geom_bar(stat = "identity", color = "black") + 
  labs(title = "Taxa de Renovação por Faixa Etária Final", x = "Faixa Etária Final", y = "Percentual de Renovação") + 
  theme_minimal() + 
  scale_fill_brewer(palette = "Blues") + 
  geom_text(aes(label = round(renovacao_rate, 1)), vjust = -0.5)

Análise da Quantidade de Churn por Faixa Etária Final

Este gráfico de barras ilustra a quantidade de churn (renovação de contrato, onde churn = 1) em diferentes faixas etárias finais dos clientes.

Observações:

  1. Distribuição de Churn por Faixa Etária:
    • A faixa etária de 41-50 anos apresenta a maior quantidade de churn, com 8766 clientes renovando o contrato nesta faixa etária.
    • A faixa etária de 31-40 anos também possui uma quantidade significativa de churn, com 6937 clientes renovando seus contratos.
    • Faixas etárias mais jovens, como 18-30 anos, e faixas mais velhas, como 51-60 anos, apresentam quantidades menores de churn, com 2882 e 2583 renovações, respectivamente.
    • Quase não há renovação de contratos na faixa etária de 61-70 anos, com apenas 1 cliente renovando.
  2. Interpretação Geral:
    • A maior concentração de churn nas faixas etárias de 31-50 anos sugere que essa faixa etária pode estar mais engajada ou ter mais necessidades que justificam a renovação dos contratos.
    • A baixa quantidade de churn em faixas etárias superiores a 60 anos pode indicar que clientes mais velhos são menos propensos a renovar contratos, possivelmente devido a mudanças nas necessidades ou preferências.
    • As faixas etárias mais jovens (18-30 anos) também mostram um número menor de renovações, o que pode sugerir que clientes mais jovens são menos fiéis ou têm menos contratos a longo prazo.

Considerações:

  • As estratégias de retenção podem ser mais eficazes se focadas nas faixas etárias de 31-50 anos, onde a probabilidade de renovação é mais alta.
  • Para as faixas etárias mais jovens e mais velhas, pode ser necessário investigar as razões pelas quais há menos renovações e ajustar as estratégias de retenção ou oferta de serviços para atender melhor a essas faixas.

Estado Civil

Analisamos a distribuição do estado civil dos clientes para verificar se há algum grupo mais propenso ao churn.

# Calcular a quantidade de churn por estado civil
churn_by_estado_civil <- database %>%
  group_by(estado_civil, churn) %>%
  summarize(count = n()) %>%
  ungroup()
## `summarise()` has grouped output by 'estado_civil'. You can override using the
## `.groups` argument.
# Gráfico de barras para comparar churn por estado civil
ggplot(churn_by_estado_civil, aes(x = factor(estado_civil), y = count, fill = factor(churn))) + 
  geom_bar(stat = "identity", position = "dodge", color = "black") + 
  labs(title = "Comparação de Churn por Estado Civil", x = "Estado Civil (0 = Solteiro, 1 = Casado)", y = "Quantidade", fill = "Churn (0 = Não, 1 = Sim)") + 
  theme_minimal() + 
  scale_fill_manual(values = c("0" = "lightblue", "1" = "red")) + 
  geom_text(aes(label = count), position = position_dodge(width = 0.9), vjust = -0.5)

Análise da Comparação de Churn por Estado Civil

Este gráfico de barras compara a quantidade de churn (renovação de contrato, onde churn = 1) entre clientes solteiros (estado_civil = 0) e clientes casados ou em outros estados civis (estado_civil = 1).

Observações:

  1. Distribuição de Churn por Estado Civil:
    • Clientes Casados (estado_civil = 1):
      • Apresentam uma quantidade significativa de churn, com 12.423 clientes renovando seus contratos.
      • No entanto, a quantidade de clientes casados que não renovaram o contrato (churn = 0) é ainda maior, totalizando 20.240.
    • Clientes Solteiros (estado_civil = 0):
      • A quantidade de churn entre clientes solteiros é 8.746, menor do que a observada entre os casados.
      • A quantidade de clientes solteiros que não renovaram o contrato é de 12.506, também menor em comparação com os casados.
  2. Interpretação Geral:
    • Clientes casados ou em outros estados civis (estado_civil = 1) têm uma maior propensão a não renovar seus contratos (maior quantidade de churn = 0) em comparação com os clientes solteiros. No entanto, entre aqueles que renovam (churn = 1), a proporção de casados que renovam é maior do que a dos solteiros.
    • Isso pode indicar que, embora a base de clientes casados seja maior, a decisão de renovação é mais distribuída entre renovação e não renovação. Por outro lado, a base de clientes solteiros é menor, e eles parecem menos propensos a renovar.

Considerações:

  • A análise sugere que as estratégias de retenção podem precisar ser ajustadas para clientes casados, focando em entender por que muitos optam por não renovar, apesar de serem o maior grupo.
  • Para os clientes solteiros, a menor taxa de renovação pode indicar a necessidade de explorar mais as razões para a não renovação e ajustar as ofertas ou o atendimento de acordo.

Gênero e Churn

Aqui verificamos se há diferenças significativas no churn entre homens e mulheres.

Homens

# Filtrar homens e calcular churn
homens_churn <- database %>% filter(m == 1)
total_homens_churn <- sum(homens_churn$churn)

# Gráfico de churn para homens
ggplot(homens_churn, aes(x = factor(churn))) + 
  geom_bar(fill = "lightblue", color = "black") + 
  labs(title = "Churn entre Homens", x = "Churn (1 = Sim, 0 = Não)", y = "Frequência") + 
  scale_x_discrete(labels = c("0" = "Não", "1" = "Sim"))

Mulheres

# Filtrar mulheres e calcular churn
mulheres_churn <- database %>% filter(f == 1)
total_mulheres_churn <- sum(mulheres_churn$churn)

# Gráfico de churn para mulheres
ggplot(mulheres_churn, aes(x = factor(churn))) + 
  geom_bar(fill = "lightpink", color = "black") + 
  labs(title = "Churn entre Mulheres", x = "Churn (1 = Sim, 0 = Não)", y = "Frequência") + 
  scale_x_discrete(labels = c("0" = "Não", "1" = "Sim"))

Homens x Mulheres

# Contagem total de homens e mulheres no dataset
total_homens <- nrow(homens_churn)
total_mulheres <- nrow(mulheres_churn)

# Calcular porcentagens de churn
percentual_churn_homens <- (total_homens_churn / total_homens) * 100
percentual_churn_mulheres <- (total_mulheres_churn / total_mulheres) * 100

# Criar dataframe para visualização
churn_comparison <- data.frame(
  Genero = c("Homens", "Mulheres"),
  Percentual_Churn = c(percentual_churn_homens, percentual_churn_mulheres)
)

# Gráfico comparativo de churn entre homens e mulheres
ggplot(churn_comparison, aes(x = Genero, y = Percentual_Churn, fill = Genero)) + 
  geom_bar(stat = "identity", color = "black") + 
  labs(title = "Comparação do Churn entre Homens e Mulheres", x = "Gênero", y = "Percentual de Churn") +
  scale_fill_manual(values = c("Homens" = "lightblue", "Mulheres" = "lightpink"))

Comparação da Renovação de Contrato entre Homens e Mulheres

Este gráfico de barras compara o percentual de churn (renovação de contrato, onde churn = 1) entre homens e mulheres.

Observações:

  1. Percentual de Renovação por Gênero:
    • O percentual de homens que renovaram o contrato é ligeiramente superior ao percentual de mulheres.
    • A diferença não é extremamente significativa, mas indica que, em média, os homens têm uma maior tendência a renovar o contrato em comparação às mulheres.
  2. Interpretação Geral:
    • Homens: Com um percentual de renovação de aproximadamente 40%, os homens apresentam uma maior probabilidade de renovação de contrato. Isso pode estar relacionado a fatores como maior lealdade ou diferentes necessidades e prioridades em relação aos serviços oferecidos.
    • Mulheres: Embora o percentual de renovação entre as mulheres seja ligeiramente inferior, ainda está em um patamar elevado. Isso sugere que as mulheres também mantêm uma alta taxa de renovação, mas podem ser influenciadas por diferentes fatores em suas decisões de renovação em comparação aos homens.

Considerações:

  • As estratégias de retenção podem ser levemente ajustadas para abordar as diferenças nas taxas de renovação entre homens e mulheres. Entender as motivações específicas de cada gênero pode ajudar a otimizar as campanhas de fidelização e a comunicação com os clientes.

Mês Final do Contrato e Churn

Analisamos qual mês final de contrato é o mais propenso a churn.

# Calcular a frequência de churn por mês
churn_by_month <- database %>%
  filter(churn == 1) %>%
  count(mes_final) %>%
  arrange(desc(n))

# Identificar o mês com maior churn
mes_mais_churn <- churn_by_month$mes_final[1]

# Gráfico de churn por mês com destaque no mês com maior churn
ggplot(churn_by_month, aes(x = factor(mes_final), y = n, fill = mes_final == mes_mais_churn)) + 
  geom_bar(stat = "identity", color = "black") + 
  scale_fill_manual(values = c("FALSE" = "lightblue", "TRUE" = "red")) + 
  labs(title = "Churn por Mês Final do Contrato", x = "Mês Final", y = "Frequência de Churn", fill = "Maior Churn") + 
  theme(legend.position = "none") + 
  geom_text(aes(label = n), vjust = -0.5)

Análise do Churn por Mês Final do Contrato

Este gráfico de barras ilustra a frequência de churn (renovação de contrato, onde churn = 1) ao longo dos diferentes meses em que os contratos terminam.

Observações:

  1. Distribuição de Churn por Mês Final:
    • O mês de outubro (10) apresenta o maior número de renovações de contrato, com 2033 ocorrências. Esse destaque pode indicar um período específico onde os clientes estão mais propensos a renovar seus contratos.
    • Os meses de janeiro (1) e março (3) também apresentam altas taxas de renovação, com 1956 e 1866 renovações, respectivamente, sugerindo que o início do ano é um período ativo para renovação de contratos.
    • Os meses de fevereiro (2) e junho (6) têm as menores frequências de renovação, com 1577 e 1609 renovações, respectivamente. Isso pode indicar que, nesses meses, os clientes são menos propensos a renovar, o que pode ser devido a fatores sazonais ou outras condições.
  2. Interpretação Geral:
    • A análise sugere que outubro é um mês-chave para a renovação de contratos, o que pode ser explorado em estratégias de retenção e marketing. Ofertas especiais ou comunicações focadas em renovação durante este mês podem aumentar ainda mais as taxas de retenção.
    • Meses com menor frequência de renovação, como fevereiro e junho, podem exigir atenção adicional para entender os motivos de menor engajamento e desenvolver estratégias para incentivar a renovação.

Considerações:

  • Estratégia de Retenção: Com base nos dados, campanhas específicas para incentivar a renovação podem ser mais eficazes se lançadas nos meses com menor frequência de renovação.
  • Investigar Picos de Renovação: A alta frequência de renovação em outubro sugere a necessidade de investigar o que torna este mês mais atrativo para a renovação de contratos, a fim de aplicar essas práticas aos outros meses.

Conclusão

Nesta análise, exploramos a distribuição das variáveis, analisamos a correlação entre elas, e investigamos os fatores que podem influenciar o churn.