Tarefa - Candidados ao estágio

Author

Adriano Pires

Carregando os pacotes e importando a base

library(tidyverse)
library(readxl)
library(formattable)
library(ggplot2)
library(dplyr)
library(lubridate)
library(scales)
library(readr)
library(gt)
library(extrafont)
library(ggstats)
library(hrbrthemes)
dados=read.csv2("dados.csv",sep = ",",dec = ".")
dados=dados %>% rename(id=X)
col_names <- sapply(dados, function(col) length(unique(col)) < 8)
dados <- dados %>%
  mutate(across(names(col_names)[col_names], as.factor))

Além de carregarmos a base, acima também renomeamos a variável para id para maior entendimento e transformamos algumas variáveis em fator para melhor entendimento, nosso banco de dados em uma breve visualização está assim:

id salario sexo cor casado idade anos_escolaridade
1 3439.524 Feminino Preto Sim 30 19
2 3769.823 Feminino Preto Sim 42 8
3 5558.708 Feminino Branco Não 25 10
4 4070.508 Masculino Preto Não 31 19
5 4129.288 Feminino Branco Sim 38 11
6 5715.065 Feminino Indígena Não 46 8

Agora vamos responder nossas perguntas de algumas formas breves, seja utilizando comando simples e objetivos para chegarmos na resposta ou através de belos gráficos para uma visualização melhor do resultado.

Questão 1: Qual é o salário médio dos individuos no banco de dados? (arredonde o valor para um casa decimal)

resultado <- dados %>% summarise(média_salário = round(mean(salario),1))
resultado %>% gt()
média_salário
4090.4

Através de simples comando do pacote de manipulação de dados dplyr, filtramos a média salarial e arrendondamos para uma casa decimal.

Questão 2: Quantos candidatos do sexo feminino estão no banco de dados?

num=dados %>% group_by(sexo) %>% summarise(número_Candidatos=n())
num %>% gt()
sexo número_Candidatos
Feminino 49
Masculino 51

Novamente usamos manipulações de dados e o pacote gt para visualizarmos.

Questão 3: Qual é a idade média dos candidatos casados? (arredonde para zero casas decimais)

casados=dados %>% group_by(casado) %>% summarise(média_Idade=round(mean(idade)))
casados %>% gt()
casado média_Idade
Não 34
Sim 38

Valre ressaltar que candidatos que são casados são relativamente mais velhos

Questão 4: Qual é a cor mais comum entre os individuos?

cores <- c("#D3D3D3","#F5F5DC","#A0AAB2","#ECECEC","#483C32")
corcomum=dados %>% group_by(cor) %>% count() %>%  arrange(desc(n))
ggplot(corcomum, aes(x = reorder(cor, n), y = n,fill=cor)) +
  geom_bar(stat = "identity", width = 0.5) + # Reduz a largura das barras
  geom_text(
    aes(label = n),
    hjust = -0.2, # Ajusta a posição do texto
    vjust = 0.4,
    color = "black", # Letras mais escuras
    size = 7, # Tamanho maior para o texto
    family = "Arial"
  ) +
  scale_fill_manual(values = cores)+
  labs(title = "Número de candidatos pela cor", y = "Quantidade de Candidatos", x = "Cor do candidato") +
  coord_flip() +
  theme_minimal() +
  theme(
    panel.grid.major.y = element_blank(),
    panel.grid.minor.y = element_blank(),
    legend.position = "none",
    plot.title = element_text(hjust = 0.5, size = 20, color = "black",family = "Tahoma", face = "bold"), # Título mais escuro
    axis.text = element_text(size = 14, color = "black",family = "Tahoma", face = "bold"), # Letras mais e8scuras
    axis.title = element_text(size = 16, color = "black",family = "Tahoma", face = "bold"), # Letras mais escuras
    axis.line = element_line(color = "black"), # Linha do eixo mais escura
    panel.background = element_rect(fill = "white"), # Fundo branco
    plot.margin = margin(0.2, 0.2, 0.2, 0.2, "cm") # Reduz o tamanho do gráfico
  )

Através do gráfico, verificamos que a maioria dos candidatos são indígenas, seguido por preto e brancos. usamos o pacote ggplot2 para uma ótima visualização de dados, além de utilizar outros pacotes para aprimorar o gráfico.

Questão 5: Qual é o nível de escolaridade (anos de escolaridade) média, mínima e máximo e mediana dos candidatos?

estatisticasne=dados %>% summarise(média=sprintf("%.2f",mean(anos_escolaridade)),mínimo=min(anos_escolaridade),máximo=max(anos_escolaridade),mediana=median(anos_escolaridade))
estatisticasne %>%gt() %>%
  tab_header(title = "Estatística nível de escolaridade (em anos) dos candidatos")
Estatística nível de escolaridade (em anos) dos candidatos
média mínimo máximo mediana
13.98 8 20 14

Novamente, através da manipulação de dados conseguimos todas as estatísticas da nossa base.

Questão 6: Qual é a diferença salarial média entre homens e mulheres no banco de dados?

Sexo=c("Masculino","Feminino","Diferença Salarial")
SF=dados %>% filter(sexo=="Feminino") %>% pull(salario) %>% mean()
SM=dados %>% filter(sexo=="Masculino") %>% pull(salario) %>% mean()
Média=c(SM,SF,SF-SM)
DataSalario=data.frame(Sexo,Média)
DataSalario %>% gt() %>% tab_header(title = md("Salários por Sexo e **Diferença Salárial**"))
Salários por Sexo e Diferença Salárial
Sexo Média
Masculino 3952.0090
Feminino 4234.4516
Diferença Salarial 282.4426

Agora além de usarmos a manipulação de dados do pacote dplyr, também usamos a subtração e depois criamos um data.frame com as informalões necessárias.

Questão 7: Qual é a proporção de candidatos casados entre os candidatos de diferentes cor?

ggplot(dados) +
  aes(x = cor , fill = casado , by = cor) +
  geom_bar(position = "fill") +
  geom_text(stat = "prop", position = position_fill(.5))+
  labs(title = "Proporção de candidatos casados entre os candidatos de diferentes cor", y = "Porcentagem", x = "Cor do Candidato")+
  theme_minimal()+
  theme(
    panel.grid.major.y = element_blank(),
    panel.grid.minor.y = element_blank(),
    plot.title = element_text(hjust = 0.5, size = 20, color = "black",family = "Tahoma", face = "bold"), # Título mais escuro
    axis.text = element_text(size = 14, color = "black",family = "Tahoma", face = "bold"), # Letras mais escuras
    axis.title = element_text(size = 16, color = "black",family = "Tahoma", face = "bold"), # Letras mais escuras
    axis.line = element_line(color = "black") # Linha do eixo mais escura
  )

Agora vale ressaltar que criamos um gráfico para melhor visualização dos resultados solicitados, onde cada barra representa uma cor e a porcentagem de casados dentre cada cor.

Questão 8: Qual é a relação entre anos de escolaridade e salário?

ggplot(dados, aes(x=anos_escolaridade, y=salario)) + 
  geom_point( color="black") +
  labs(title = "Relação entre anos de escolaridade e salário", y = "Salário", x = "Anos de escolaridade")+
  geom_smooth(method=lm , color="red", se=FALSE)+
  theme_ipsum()+
  theme(
    plot.title = element_text(hjust = 0.5, size = 20, color = "black",family = "Tahoma", face = "bold"),
    axis.title.y = element_text(size = 16, color = "black", hjust = 0.5,family = "Tahoma", face = "bold"), # Centraliza o texto dos eixos X e Y
    axis.title.x = element_text(size = 16, color = "black", hjust = 0.5,family = "Tahoma", face = "bold"), # Centraliza o título dos eixos X e Y
 
  )

Vale destacar agora que nosso gráfico de relação entre anos de escolaridade e salário foi o de dispersão, onde melhor mostrar se há alguma tendência e também podemos traçar uma linha para melhor visualizar, nesse caso visualizamos que não há uma correlação entre as variáveis, indicando que mesmo com muitos anos de escolaridade, o salário não aumenta.

Questão 9: Qual é a média de idade dos candidatos que têm um salário acima da média? (arredonde o valor para zero casas decimais) Primeiro vamos achar o salário médio

salariom=mean(dados$salario)
dadosSAM=dados %>% filter(salario>salariom)
dadosSSAM=dados %>% filter(salario<=salariom)
Candidatos <- c("Todos os candidatos","Salário acima da média","Salário abaixo da média")
Idade_Média <- c(mean(dados$idade),mean(dadosSAM$idade),mean(dadosSSAM$idade))
Idade_Média=round(Idade_Média)
dataa=data.frame(Candidatos,Idade_Média)
dataa %>% gt() %>%  tab_header(title = md("SIdade média dos Candidatos por faixa de **salário**"))
SIdade média dos Candidatos por faixa de salário
Candidatos Idade_Média
Todos os candidatos 36
Salário acima da média 37
Salário abaixo da média 35

Para essa questão, criamos variáveis que separamos nossa base em salários acima e abaixo que a média, após isso, criamos nosso data.frame e nossa tabela, com todas as informações que precisamos, indicando que a média de idade é maior para salários maiores que a média

Questão 10: Qual é a idade média dos individuos de cada cor?

dados %>% group_by(cor) %>% summarise(Idade_Média=round(mean(idade),2)) %>% gt() %>%  tab_header(title = md("Idade Média dos indivíduos de cada **Cor**"))
Idade Média dos indivíduos de cada Cor
cor Idade_Média
Amarelo 32.86
Branco 37.70
Indígena 35.58
Pardo 39.71
Preto 33.39

Para essa questão, uma simples manipulação de dados também foi capaz de identificar as idades médias, verificando que os Pardos são os mais velhos e os Amarelos mais novos

Questão 11: Crie um boxplot para visualizar a distribuição dos salários dos individuos em relação ao estado civil (casado ou não). Interprete os resultados.

ggplot(dados, aes(x = NULL , y = salario)) +
  geom_boxplot(fill = "#4e79a7", colour = "gold",
               alpha = 0.8) +
  scale_y_continuous(name = "Distribuição dos Salários",
                     breaks = seq(0, 7000, 1000),
                     limits=c(1000, 7000)) +
  scale_x_discrete(name = "Estado Civil do Candidato") +
  ggtitle("Boxplot visualização distribuição de Salário em relação\n ao estado civil (Se o candidato é casado ou não)") +
  theme_bw() +
  theme(plot.title = element_text(hjust = 0.5,size = 14, family = "Tahoma", face = "bold"),
        text = element_text(size = 12, family = "Tahoma"),
        axis.title = element_text(face="bold"),
        axis.text.x=element_text(size = 11)) +
  facet_grid(. ~ casado)

Para esse último gráfico, vale resaltar que para uma melhor visualização, separamos em duas imagens que compartilham o eixo X, para uma análise estatística, verificamos que a mediana dos candidatos casados é levemente maior e também possui uma maior variação, indicando que os candidatos casados possuem rendas mais próximas entre si, porém mesmo os candidatos não casados tendo uma mediana maior, indica uma maior dispersão pelo tamanho do Boxplot, indicando que os salários vão de valores baixos até valores muito altos (algo que é mais comum em relação aos candidatos casados).