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:
Este documento apresenta uma análise exploratória dos dados dos funcionários, incluindo frequências, correlações e estatísticas descritivas.
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
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)
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)
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))
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")
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)
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:
O salário mínimo e máximo em cada grupo.
A mediana, que representa o valor central.
Possíveis outliers nos dados.
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
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
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
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