R Markdown

This is an R Markdown document. Markdown is a simple formatting syntax for authoring HTML, PDF, and MS Word documents. For more details on using R Markdown see http://rmarkdown.rstudio.com.

When you click the Knit button a document will be generated that includes both content as well as the output of any embedded R code chunks within the document. You can embed an R code chunk like this:

Introdução

Este documento apresenta uma análise exploratória dos dados dos funcionários, incluindo frequências, correlações e estatísticas descritivas.

1.Importação e Verificação Inicial dos Dados

O código importa os dados de um arquivo chamado “Dados_Funcionarios.csv” utilizando a função read.table.

Ele explora as dimensões dos dados (dim), estrutura interna (str) e os seis primeiros registros (head).

# Importação dos dados
dados0 <- read.table("Dados_Funcionarios.csv", header = TRUE, sep = ";", dec = ",")
dim(dados0)
## [1] 36  9
str(dados0)
## 'data.frame':    36 obs. of  9 variables:
##  $ Funcionario: int  1 2 3 4 5 6 7 8 9 10 ...
##  $ Est.civil  : chr  "solteiro" "casado" "casado" "solteiro" ...
##  $ Inst       : chr  "1o Grau" "1o Grau" "1o Grau" "2o Grau" ...
##  $ Filhos     : int  NA 1 2 NA NA 0 NA NA 1 NA ...
##  $ Salario    : num  4 4.56 5.25 5.73 6.26 6.66 6.86 7.39 7.59 7.44 ...
##  $ Anos       : int  26 32 36 20 40 28 41 43 34 23 ...
##  $ Meses      : int  3 10 5 10 7 0 0 4 10 6 ...
##  $ Regiao     : chr  "interior" "capital" "capital" "outro" ...
##  $ Idade      : num  26.2 32.8 36.4 20.8 40.6 ...
head(dados0)
##   Funcionario Est.civil    Inst Filhos Salario Anos Meses   Regiao    Idade
## 1           1  solteiro 1o Grau     NA    4.00   26     3 interior 26.25000
## 2           2    casado 1o Grau      1    4.56   32    10  capital 32.83333
## 3           3    casado 1o Grau      2    5.25   36     5  capital 36.41667
## 4           4  solteiro 2o Grau     NA    5.73   20    10    outro 20.83333
## 5           5  solteiro 1o Grau     NA    6.26   40     7    outro 40.58333
## 6           6    casado 1o Grau      0    6.66   28     0 interior 28.00000

2. Estado Civil (“casado” ou “solteiro”)

Nesse caso, calculou-se a frequência absoluta e relativa do estado civil dos funcionários.

Um gráfico de barras e um gráfico de pizza ilustram a distribuição dos estados civis.

Os resultados nos fornecem uma visão clara da proporção de cada estado civil.

# Frequências e gráficos
freq_abs <- table(dados0$Est.civil)
freq_relativa <- prop.table(freq_abs)

barplot(freq_abs, 
        main = "Distribuição do Estado Civil",
        col = rainbow(length(freq_abs)), 
        ylim = c(0, max(freq_abs) + 7),
        xlab = "Estado Civil", ylab = "Frequência", 
        las = 1)

pie(freq_abs, 
    main = "Distribuição do Estado Civil", 
    col = rainbow(length(freq_abs)), 
    labels = paste(names(freq_abs), "", freq_abs),
    cex = 0.7)

3. Grau de instrução (escolaridade)

As frequências absoluta e relativa do grau de instrução de cada funcionário foram calculadas.

Os gráficos de barras e de pizza ilustram a distribuição dos 3 diferentes graus de instrução - a citar, o 1º grau, o 2º grau e o superior.

Os resultados evidenciam o nível educacional predominante, o 2º grau.

freq_abs <- table(dados0$Inst)
freq_rel <- prop.table(freq_abs)

barplot(freq_abs, 
        main = "Distribuição do Grau de Instrução",
        col = rainbow(length(freq_abs)),
        ylim = c(0, max(freq_abs) + 7),
        xlab = "Grau de Instrução", ylab = "Frequência",
        las=1)

pie(freq_abs,
    main = "Distribuição do Grau de Instrução",
    col = rainbow(length(freq_abs)),
    labels = paste(names(freq_abs), "\n", freq_abs),
    cex = 0.8)

4. Número de filhos

Aqui, as frequências absoluta, relativa, absoluta acumulada e a relativa acumulada regeram a análise do número de filhos dos funcionários.

Quatro gráficos mostram essas diferentes distribuições.

Por conseguinte, facilitam a compreensão entre a relação de filhos e a frequência.

freq_abs <- table(dados0$Filhos)
freq_abs
## 
## 0 1 2 3 5 
## 4 5 7 3 1
freq_rel <- prop.table(freq_abs)
freq_rel
## 
##    0    1    2    3    5 
## 0.20 0.25 0.35 0.15 0.05
freq_abs_acumulada = cumsum(freq_abs)
freq_abs_acumulada
##  0  1  2  3  5 
##  4  9 16 19 20
freq_rel_acumulada = cumsum(freq_rel)
freq_rel_acumulada
##    0    1    2    3    5 
## 0.20 0.45 0.80 0.95 1.00
barplot(freq_abs,
        main = "Distribuição de frequência absoluta",
        col = rainbow(length(freq_abs)),
        ylim = c(0, max(freq_abs) + 5),
        xlab = "Número de filhos", ylab = "Frequência absoluta",
        las=1)

barplot(freq_rel,
        main = "Distribuição de frequência relativa",
        col = rainbow(length(freq_rel)),
        ylim = c(0, max(freq_rel)+0.1),
        xlab = "Número de filhos", ylab = "Frequência relativa",
        las = 1,
        names.arg = names(freq_rel))

barplot(freq_abs_acumulada,
        main = "Distribuição de frequência absoluta acumulada",
        col = rainbow(length(freq_abs_acumulada)),
        ylim = c(0, max(freq_abs_acumulada)+8),
        xlab = "Número de filhos", ylab = "Frequência absoluta acumulada",
        las=1,
        names.arg = names(freq_abs_acumulada))

barplot(freq_rel_acumulada,
        main = "Distribuição de frequência relativa acumulada",
        col = rainbow(length(freq_rel_acumulada)),
        ylim = c(0, max(freq_rel_acumulada)+0.2),
        xlab = "Número de filhos", ylab = "Frequência relativa acumulada",
        las=1,
        names.arg = names(freq_rel_acumulada))

5. Salários

O código converte os salários em valores numéricos e calcula o maior, menor e o número de classes adequadas.

Um histograma mostra a distribuição dos salários.

Resultados: Detalham a dispersão salarial entre os funcionários.

dados0$Salario <- as.numeric(gsub("[^0-9,.]", "", dados0$Salario))
maiorSalario <- max(dados0$Salario)
menorSalario <- min(dados0$Salario)

observacoes <- length(dados0$Salario)
observacoes
## [1] 36
numAdequadoClasses <- round(1 + 3.3*log10(observacoes))

maiorSalario
## [1] 23.3
menorSalario
## [1] 4
numAdequadoClasses
## [1] 6
hist(dados0$Salario, 
     breaks = numAdequadoClasses, 
     col = "yellow", 
     main = "Distribuição dos salários", 
     xlab = "Salário", 
     ylab = "Frequência",
     border = "black")

6. Tabela de contingência

Foi criada uma tabela de contingência entre estado civil e grau de instrução.

Gráficos de barras sobrepostos e lado a lado ilustram essa relação.

Os resultados indicam interações entre o estado civil e o nível educacional.

tabelaContingencia <- table(dados0$Est.civil, dados0$Inst)
tabelaContingencia
##           
##            1o Grau 2o Grau Superior
##   casado         5      12        3
##   solteiro       7       6        3
# Gráfico de barras sobrepostas
barplot(tabelaContingencia, 
        col = rainbow(nrow(tabelaContingencia)), 
        main = "Distribuição do Grau de Instrução por Estado Civil",
        xlab = "Grau de Instrução", 
        ylab = "Frequência",
        legend.text = rownames(tabelaContingencia))

# Gráfico de barras lado a lado
barplot(tabelaContingencia, 
        col = rainbow(nrow(tabelaContingencia)), 
        main = "Distribuição do Grau de Instrução por Estado Civil",
        xlab = "Grau de Instrução", ylab = "Frequência",
        legend.text = rownames(tabelaContingencia),
        beside = TRUE)

7. Salários por grau de instrução

Nesta etapa, o objetivo é visualizar a distribuição de salários por grau de instrução dos funcionários

Boxplot: O código cria um gráfico de caixa (boxplot) que compara os salários entre diferentes graus de instrução. Este gráfico é útil para identificar:

Média e Desvio Padrão: A função tapply calcula a média e o desvio padrão dos salários, separados por grau de instrução. Isso ajuda a entender quais grupos têm salários mais altos ou baixos e quão dispersos os salários estão dentro de cada grupo.

Além disso, esses dados nos ajudam a perceber isto: em alguns casos, como no mostrado em “Dados_Funcionarios.csv”, à medida que uma pessoa aumenta seu grau de instrução aumentam-se as chances de que ela terá salários mais altos em comparação àqueles que não se qualificaram. No entanto, essa não é uma regra que se aplica em todos os casos na realidade.

boxplot(Salario ~ Inst, 
        data = dados0, 
        col = rainbow(length(unique(dados0$Inst))), 
        main = "Distribuição dos Salários por Grau de Instrução",
        xlab = "Grau de Instrução", ylab = "Salário",
        las = 1)

# Calcular média e desvio padrão dos salários por grau de instrução
mediaSalario <- tapply(dados0$Salario, dados0$Inst, mean, na.rm = TRUE)
desvioPadraoSalario <- tapply(dados0$Salario, dados0$Inst, sd, na.rm = TRUE)

mediaSalario
##   1o Grau   2o Grau  Superior 
##  7.836667 11.528333 16.475000
desvioPadraoSalario
##  1o Grau  2o Grau Superior 
## 2.956464 3.715144 4.502438

8. Cálculo da idade

Neste segmento, o foco é adquirir o valor das idades e pô-los em uma nova coluna no banco de dados mediante os dados já existentes das colunas “Ano” e “Meses”, somando a quantidade de anos pela quantidade de meses (esta sendo divida por 12). Após isso, pode-se verificar se essa implementação foi feita corretamente imprimindo uma parte dos novos dados na tela, o que gera uma nova base de dados.

dados0$Idade <- dados0$Anos + dados0$Meses/12
head(dados0)
##   Funcionario Est.civil    Inst Filhos Salario Anos Meses   Regiao    Idade
## 1           1  solteiro 1o Grau     NA    4.00   26     3 interior 26.25000
## 2           2    casado 1o Grau      1    4.56   32    10  capital 32.83333
## 3           3    casado 1o Grau      2    5.25   36     5  capital 36.41667
## 4           4  solteiro 2o Grau     NA    5.73   20    10    outro 20.83333
## 5           5  solteiro 1o Grau     NA    6.26   40     7    outro 40.58333
## 6           6    casado 1o Grau      0    6.66   28     0 interior 28.00000
write.csv2(dados0, file = "Dados_Funcionarios.csv", row.names = FALSE)
dados1 <- edit(dados0)
head(dados1)
##   Funcionario Est.civil    Inst Filhos Salario Anos Meses   Regiao    Idade
## 1           1  solteiro 1o Grau     NA    4.00   26     3 interior 26.25000
## 2           2    casado 1o Grau      1    4.56   32    10  capital 32.83333
## 3           3    casado 1o Grau      2    5.25   36     5  capital 36.41667
## 4           4  solteiro 2o Grau     NA    5.73   20    10    outro 20.83333
## 5           5  solteiro 1o Grau     NA    6.26   40     7    outro 40.58333
## 6           6    casado 1o Grau      0    6.66   28     0 interior 28.00000

9. Correlação entre salário e idade

Nesta etapa, o objetivo é analisar se existe uma relação entre salário e idade dos funcionários.

Gráfico de Dispersão: O gráfico (plot) é utilizado para visualizar a relação entre as duas variáveis. Cada ponto representa um funcionário, com idade no eixo X e salário no eixo Y.

Correlação: A função cor calcula o coeficiente de correlação, que mede a força e direção da relação entre salário e idade:

Valores próximos de 1 indicam uma forte correlação positiva (quanto maior a idade, maior o salário).

Valores próximos de -1 indicam uma forte correlação negativa (quanto maior a idade, menor o salário).

Valores próximos de 0 indicam nenhuma correlação.

plot(dados1$Salario, dados1$Idade)

cor(dados1$Salario, dados1$Idade)
## [1] 0.3651397

10. Experimentando as funções mean(), var(), sd(), median(), quantile()

Média (mean()): Representa o valor médio das variáveis.

Variância e Desvio Padrão (var() e sd()): Medem a dispersão dos valores em torno da média.

Mediana (median()): O valor central quando os dados são ordenados.

Quartis (quantile()): Dividem os dados em quatro partes iguais, mostrando os limites do primeiro (25%), segundo (50%, que é a mediana) e terceiro quartil (75%).

Resultados: obtém-se uma análise detalhada da distribuição de salários e idades. Essas métricas ajudam a identificar padrões e variações significativas nos dados.

mean(dados1$Salario)   # Média das Idades
## [1] 11.12222
var(dados1$Salario)    # Variância das Idades
## [1] 21.04477
sd(dados1$Salario)     # Desvio padrão das Idades
## [1] 4.587458
median(dados1$Salario) # Mediana das Idades
## [1] 10.165
quantile(dados1$Salario) # Quartis das Idades
##      0%     25%     50%     75%    100% 
##  4.0000  7.5525 10.1650 14.0600 23.3000
mean(dados1$Idade)   # Média das Idades
## [1] 35.05093
var(dados1$Idade)    # Variância das Idades
## [1] 44.95924
sd(dados1$Idade)     # Desvio padrão das Idades
## [1] 6.705165
median(dados1$Idade) # Mediana das Idades
## [1] 34.91667
quantile(dados1$Idade) # Quartis das Idades
##       0%      25%      50%      75%     100% 
## 20.83333 30.66667 34.91667 40.52083 48.91667