milse_data <- read.csv("C:/Users/Gabriel Willian/Downloads/Trabalhooseas/milse.csv", sep = ";", stringsAsFactors = FALSE)
head(milse_data)
##   Funcio estadocivil   Instrucao numerodefilhos salario idade   regiao
## 1      1    solteiro fundamental             NA       4    26 interior
## 2      2      casado fundamental              1    4,56    32  capital
## 3      3      casado fundamental              2    5,25    36  capital
## 4      4    solteiro       medio             NA    5,73    20    outro
## 5      5    solteiro fundamental             NA    6,26    40    outro
## 6      6      casado fundamental              0    6,66    28 interior
str(milse_data)
## 'data.frame':    36 obs. of  7 variables:
##  $ Funcio        : int  1 2 3 4 5 6 7 8 9 10 ...
##  $ estadocivil   : chr  "solteiro" "casado" "casado" "solteiro" ...
##  $ Instrucao     : chr  "fundamental" "fundamental" "fundamental" "medio" ...
##  $ numerodefilhos: int  NA 1 2 NA NA 0 NA NA 1 NA ...
##  $ salario       : chr  "4" "4,56" "5,25" "5,73" ...
##  $ idade         : int  26 32 36 20 40 28 41 43 34 23 ...
##  $ regiao        : chr  "interior" "capital" "capital" "outro" ...

1) Classificação das variáveis:

Qualitativas Nominais: estadocivil, regiao
Qualitativas Ordinais: Instrucao
Quantitativas Discretas: numerodefilhos, idade
Quantitativas Contínuas: salario

2) Agrupamento das variáveis qualitativas por: estado civil, grau de instrução e região.

qualitative_summary <- milse_data %>%
  group_by(estadocivil, Instrucao, regiao) %>%
  summarise(Contagem = n()) %>%
  ungroup()
## `summarise()` has grouped output by 'estadocivil', 'Instrucao'. You can
## override using the `.groups` argument.
qualitative_summary %>%
  kable("html", col.names = c("Estado Civil", "Grau de Instrução", "Região", "Número de Funcionários")) %>%
  kable_styling(bootstrap_options = c("striped", "hover", "condensed", "responsive"),
                full_width = F, position = "center", font_size = 15) %>%
  column_spec(1:3, bold = TRUE)
Estado Civil Grau de Instrução Região Número de Funcionários
casado fundamental capital 2
casado fundamental interior 1
casado fundamental outro 2
casado medio capital 4
casado medio interior 6
casado medio outro 2
casado superior capital 1
casado superior interior 1
casado superior outro 1
solteiro fundamental capital 2
solteiro fundamental interior 2
solteiro fundamental outro 3
solteiro medio capital 1
solteiro medio interior 1
solteiro medio outro 4
solteiro superior capital 1
solteiro superior interior 1
solteiro superior outro 1

2.1 - Análise do agrupamento das Variáveis Qualitativas

Estado Civil

Funcionários casados representam uma proporção significativa, especialmente nos níveis de instrução médio e superior, e estão distribuídos principalmente nas regiões interior e capital. Já os funcionários solteiros predominam nos níveis fundamental e médio, com maior presença na capital e em outras regiões, indicando possíveis diferenças de maturidade e experiência entre os grupos.

Grau de Instrução

A maioria dos funcionários possui nível médio, seguido pelo fundamental. O ensino superior é menos comum, mas tem uma boa representatividade entre os casados e nas regiões interior e capital, sugerindo que profissionais mais qualificados estão mais concentrados nessas áreas.

Região

A capital e o interior são as regiões com maior número de funcionários, sendo a capital mais associada a empregos que exigem nível médio ou fundamental, enquanto o interior apresenta uma distribuição mais equilibrada entre os níveis de instrução, com maior presença de profissionais qualificados. Outras regiões apresentam maior concentração de funcionários solteiros e com menor escolaridade, possivelmente em setores operacionais.

3) Agrupamento de váriáveis

Agrupamento por Estado Civil e Grau de Instrução:

estado_instrucao_group <- milse_data %>%
  group_by(estadocivil, Instrucao) %>%
  summarise(Contagem = n()) %>%
  ungroup()
## `summarise()` has grouped output by 'estadocivil'. You can override using the
## `.groups` argument.
estado_instrucao_group %>%
  kable("html", col.names = c("Estado Civil", "Grau de Instrução", "Número de Funcionários")) %>%
  kable_styling(bootstrap_options = c("striped", "hover", "condensed", "responsive"),
                full_width = F, position = "center", font_size = 15) %>%
  column_spec(1:2, bold = TRUE)
Estado Civil Grau de Instrução Número de Funcionários
casado fundamental 5
casado medio 12
casado superior 3
solteiro fundamental 7
solteiro medio 6
solteiro superior 3

Agrupamento por Estado Civil e região:

estado_regiao_group <- milse_data %>%
  group_by(estadocivil, regiao) %>%
  summarise(Contagem = n()) %>%
  ungroup()
## `summarise()` has grouped output by 'estadocivil'. You can override using the
## `.groups` argument.
estado_regiao_group %>%
  kable("html", col.names = c("Estado Civil", "Região", "Número de Funcionários")) %>%
  kable_styling(bootstrap_options = c("striped", "hover", "condensed", "responsive"),
                full_width = F, position = "center", font_size = 15) %>%
  column_spec(1:2, bold = TRUE)
Estado Civil Região Número de Funcionários
casado capital 7
casado interior 8
casado outro 5
solteiro capital 4
solteiro interior 4
solteiro outro 8

3.1 - Análise dos Resultados

A análise dos dados agrupados por estado civil e grau de instrução revela que os casados predominam nos níveis médio e superior, indicando que possuem uma maior estabilidade profissional. Os solteiros, por outro lado, são mais frequentes entre os funcionários com nível fundamental, sugerindo que muitos estão no início de suas carreiras.
Quando agrupamos por estado civil e região, observamos que os funcionários casados são mais comuns no interior, enquanto os solteiros estão mais concentrados na capital. Isso pode refletir as oportunidades de emprego e as dinâmicas sociais diferentes nas regiões, onde a capital pode oferecer mais vagas e atrair profissionais jovens e solteiros em busca de crescimento.

4) Medidas de tendência central,separatrizes, variabilidade, assimetria e curtose das variáveis (salário e idade).

salario_df <- as.data.frame(t(salario_stats))
idade_df <- as.data.frame(t(idade_stats))

salario_df %>%
  kable("html", col.names = c("Medidas descritivas da variável Salário"), format.args = list(big.mark = ".", decimal.mark = ","), align = 'c') %>%
  kable_styling(bootstrap_options = c("striped", "hover", "condensed", "responsive"),
                full_width = F, position = "center", font_size = 15) %>%
  row_spec(0, align = "c")  # Centraliza os títulos
Medidas descritivas da variável Salário
Media 11,122222
Mediana 10,165000
Primeiro_Quartil 7,552500
Segundo_Quartil 10,165000
Terceiro_Quartil 14,060000
Minimo 4,000000
Maximo 23,300000
Variancia 21,044766
Desvio_Padrao 4,587458
Coeficiente_Variacao 41,245872
Assimetria 0,625682
Curtose 2,825675
  • Média (11,12): A média salarial indica que, em geral, os salários estão em torno de R$ 11,12. Esse valor é influenciado tanto pelos salários mais altos quanto pelos mais baixos.

  • Mediana (10,17): A mediana, sendo menor que a média, sugere que a distribuição dos salários é assimétrica, com uma parte significativa dos salários abaixo da média. Isso pode indicar a presença de alguns salários muito altos que puxam a média para cima.

  • O primeiro quartil (7,55) indica que 25% dos salários estão abaixo deste valor.

  • O segundo quartil (mediana, 10,17) divide a amostra ao meio, com 50% dos salários abaixo deste valor.

  • O terceiro quartil (14,06) mostra que 75% dos salários estão abaixo deste ponto, indicando que há uma dispersão significativa nos salários, especialmente na faixa superior.

  • Mínimo (4,00) e Máximo (23,30): Os valores mínimo e máximo revelam a variação salarial. A diferença de R$ 19,30 entre o salário mínimo e o máximo é bastante significativa, sugerindo uma grande disparidade salarial.

  • Variância (21,04) e Desvio Padrão (4,59): Esses valores indicam que os salários estão relativamente dispersos em torno da média. O desvio padrão, sendo mais de 41% da média, reflete uma alta variabilidade nos salários.

  • Coeficiente de Variação (41,25%): Este valor, que é elevado, confirma a alta dispersão dos salários em relação à média, sugerindo que a variabilidade salarial é uma questão relevante a ser considerada.

  • Assimetria (0,63): A assimetria positiva sugere que a distribuição dos salários tem uma cauda mais longa para a direita, indicando que há salários mais altos que são menos comuns.

  • Curtose (2,83): O valor de curtose próximo a 3 sugere que a distribuição dos salários é semelhante a uma distribuição normal, mas levemente mais achatada, indicando que não há muitos salários extremos (muito altos ou muito baixos) em comparação com uma distribuição normal.

Esses resultados indicam uma distribuição salarial que é assimétrica, com uma quantidade significativa de indivíduos recebendo salários mais baixos e uma quantidade menor recebendo salários significativamente mais altos.
idade_df %>%
  kable("html", col.names = c("Medidas descritivas da variável Idade"), format.args = list(big.mark = ".", decimal.mark = ","), align = 'c') %>%
  kable_styling(bootstrap_options = c("striped", "hover", "condensed", "responsive"),
                full_width = F, position = "center", font_size = 15) %>%
  row_spec(0, align = "c")
Medidas descritivas da variável Idade
Media 34,5833333
Mediana 34,5000000
Primeiro_Quartil 30,0000000
Segundo_Quartil 34,5000000
Terceiro_Quartil 40,0000000
Minimo 20,0000000
Maximo 48,0000000
Variancia 45,3928571
Desvio_Padrao 6,7374221
Coeficiente_Variacao 19,4817026
Assimetria -0,0642823
Curtose 2,3677827
  • Média (34,58): A média de idade sugere que, em geral, a amostra está composta por indivíduos com cerca de 34,6 anos. Este valor oferece uma visão geral da faixa etária predominante na amostra.

  • Mediana (34,50): A mediana, que está muito próxima da média, indica que a distribuição das idades é bastante simétrica, com 50% dos indivíduos abaixo e 50% acima deste valor.

  • O primeiro quartil (30,00) revela que 25% dos indivíduos têm idade inferior a este valor.

  • O segundo quartil (34,50), que é a mediana, divide a amostra ao meio.

  • O terceiro quartil (40,00) indica que 75% dos indivíduos têm idade abaixo deste ponto, sugerindo que a maioria dos indivíduos está concentrada em torno da faixa etária média.

  • Mínimo (20,00) e Máximo (48,00): A diferença de 28 anos entre a idade mínima e a máxima sugere uma diversidade etária considerável na amostra.

  • Variância (45,39) e Desvio Padrão (6,74): O desvio padrão indica uma variação moderada em torno da média de idade. O desvio padrão, sendo cerca de 19% da média, sugere que as idades estão razoavelmente próximas da média.

  • Coeficiente de Variação (19,48%): Este valor sugere que a variabilidade das idades em relação à média é relativamente baixa, indicando uma distribuição mais uniforme das idades.

  • Assimetria (-0,06): A assimetria próxima de zero sugere que a distribuição das idades é simétrica, indicando que não há uma tendência significativa para idades mais altas ou mais baixas.

  • Curtose (2,37): O valor de curtose inferior a 3 indica que a distribuição das idades é levemente achatada em comparação com uma distribuição normal, o que sugere que não há muitos valores extremos na faixa etária.

Esses resultados indicam uma distribuição etária que é relativamente simétrica, com a maioria dos indivíduos concentrando-se em torno da faixa etária média, e com uma diversidade de idades que abrange desde 20 até 48 anos.

5) Todas as tabelas de frequências dos itens anteriores

OBS: Não consegui reproduzir o esquema de cores gradiente do python, por esse motivo deixei acompanhando o percentual para cada número das variáveis.
kable(estado_civil_freq, caption = "Tabela de Frequência - Estado Civil") %>%
  kable_styling(full_width = F, position = "center")
Tabela de Frequência - Estado Civil
estadocivil Frequência Percentual
casado 20 55.55556
solteiro 16 44.44444
kable(instrucao_freq, caption = "Tabela de Frequência - Grau de Instrução") %>%
  kable_styling(full_width = F, position = "center")
Tabela de Frequência - Grau de Instrução
Instrucao Frequência Percentual
fundamental 12 33.33333
medio 18 50.00000
superior 6 16.66667
kable(regiao_freq, caption = "Tabela de Frequência - Região") %>%
  kable_styling(full_width = F, position = "center")
Tabela de Frequência - Região
regiao Frequência Percentual
capital 11 30.55556
interior 12 33.33333
outro 13 36.11111
kable(estado_instrucao_freq, caption = "Tabela de Frequência - Estado Civil e Grau de Instrução") %>%
  kable_styling(full_width = F, position = "center")
Tabela de Frequência - Estado Civil e Grau de Instrução
estadocivil Instrucao Frequência Percentual
casado fundamental 5 13.888889
casado medio 12 33.333333
casado superior 3 8.333333
solteiro fundamental 7 19.444444
solteiro medio 6 16.666667
solteiro superior 3 8.333333
kable(estado_regiao_freq, caption = "Tabela de Frequência - Estado Civil e Região") %>%
  kable_styling(full_width = F, position = "center")
Tabela de Frequência - Estado Civil e Região
estadocivil regiao Frequência Percentual
casado capital 7 19.44444
casado interior 8 22.22222
casado outro 5 13.88889
solteiro capital 4 11.11111
solteiro interior 4 11.11111
solteiro outro 8 22.22222

6) Gráficos para as variáveis estado civil, grau de instrução, número de filhos e região.

estado_civil_freq <- milse_data %>%
  count(estadocivil)

ggplot(estado_civil_freq, aes(x = estadocivil, y = n, fill = estadocivil)) +
  geom_bar(stat = "identity") +
  geom_text(aes(label = n), vjust = -0.5, size = 5) +
  labs(title = "Distribuição do Estado Civil", x = "Estado Civil", y = "Frequência") +
  theme_minimal()

instrucao_freq <- milse_data %>%
  count(Instrucao)

ggplot(instrucao_freq, aes(x = "", y = n, fill = Instrucao)) +
  geom_col() +
  coord_polar(theta = "y") +
  labs(title = "Distribuição do Grau de Instrução", fill = "Grau de Instrução") +
  theme_void()

filhos_freq <- milse_data %>%
  count(numerodefilhos)

ggplot(filhos_freq, aes(x = factor(numerodefilhos), y = n, fill = factor(numerodefilhos))) +
  geom_bar(stat = "identity") +
  geom_text(aes(label = n), vjust = -0.5, size = 5) +
  labs(title = "Distribuição do Número de Filhos", x = "Número de Filhos", y = "Frequência") +
  theme_minimal()

regiao_freq <- milse_data %>%
  count(regiao)

ggplot(regiao_freq, aes(x = "", y = n, fill = regiao)) +
  geom_col() +
  coord_polar(theta = "y") +
  labs(title = "Distribuição da Região", fill = "Região") +
  theme_void()

7) Referências

Estatística Básica (Bussab e Morettin, 2017).