# Construindo o dataframe para trabalhar nas questões
# Comando
dados <- read.csv("~/fpcc2-lab1-nisston.git/trunk/data/dados-fpcc2.csv", encoding="UTF-8")
# Alterando o título das colunas do dataframe para melhor operar
# Comando
colnames(dados) <- c("data", "idade", "sexo", "curso", "area", "interesse",
"progr", "origem", "uf", "irmaos", "altura")
Calcule média e desvio padrão da idade e nível de interesse. As métricas contendos as métricas calculadas para idade e nível de interesse devem ser apresentadas de forma ordenada. Além de apresentar no relatório, os resultados devem ser salvos em um arquivo csv:
# Separando os valores (idade e Nível de interesse...) do dataframa
# Criando duas variáveis do tipo vetor com os dados
# Comandos
vl_idade <- dados$idade
vl_nivel <- dados$interesse
# Calculando a Média da Idade e do Nível de interesse...
# colocando em duas variáveis do tipo vetor
# Comandos
md_idade <- mean(vl_idade)
md_nivel <- mean(vl_nivel)
# Calculando o Desvio Padrão da Idade e Nível de interesse...
# colocando em duas variáveis do tipo vetor
# Comandos
dp_idade <- sd(vl_idade)
dp_nivel <- sd(vl_nivel)
# Criando um dataframe com os resultados ordenados
# Comando
dfresultado <- data.frame(Med_idade = md_idade, DesvP_idade = dp_idade, Med_nivel = md_nivel, Desvp_nivel = dp_nivel)
# Exibindo o resultado no relatório
# Comando
dfresultado
## Med_idade DesvP_idade Med_nivel Desvp_nivel
## 1 25.7931 4.952484 2.827586 0.3844259
# Criando o arquivo com os resultados
# Comando
write.csv(dfresultado, "arquivo1.csv", row.names = FALSE)
CONCLUSÃO: Foram necessário criar duas variáveis para agrupar as idade e o nível de interesse (vl_idade e vl_nivel), em seguida utilizou as funções: mean e sd para encontrar a média e o desvio padrão das idades e nível de interesse. Foi criado em seguida um outro dataframe (dfresultado) para armazenar os resultados ordenados. Por fim foi criado o arquivo no formato csv com os resultados, clique aqui.
Qual o curso com maior valor médio de idade? Discutir os resultados com base nos dados disponíveis em termos de representatividade:
# Encontrando o número de registros por curso
# Comando
dados %>% group_by(curso) %>% summarise(Soma=n())
## # A tibble: 3 x 2
## curso Soma
## <fct> <int>
## 1 Aluno especial 3
## 2 Doutorado 4
## 3 Mestrado 22
# Encontrando a média de idade por curso
# Comando
dados %>% group_by(curso) %>% summarise(Media=mean(idade))
## # A tibble: 3 x 2
## curso Media
## <fct> <dbl>
## 1 Aluno especial 36.3
## 2 Doutorado 30.2
## 3 Mestrado 23.5
# Encontrando a representatividade em % de cada curso
# Comando
dados %>% group_by(curso) %>% summarise(Valor=(n()/29)*100)
## # A tibble: 3 x 2
## curso Valor
## <fct> <dbl>
## 1 Aluno especial 10.3
## 2 Doutorado 13.8
## 3 Mestrado 75.9
CONCLUSÃO: O curso com maior valor médio de idade é o de “Aluno especial”, onde apresenta uma média de 36 anos de idade, porém o curso apresenta apenas 10% de representatividade, já o de Mestrado temos 75% de representatividade.
Crie um gráfico que mostra a idade média para cada curso. Apresente o gráfico e discuta os resultados no relatório. O gráfico também deve ser salvo em uma imagem no formato png.
# Encontrando a idade média por curso
# Comando
dados %>% group_by(curso) %>% summarise(Media=mean(idade)) %>% ggplot(aes(x=curso, y=Media, fill = curso)) + geom_bar(stat = "identity") + ggtitle("Gráfico Idade Média por Curso") + geom_text(aes(label=round(Media, digits = 2)), position = position_stack(vjust = 0.5), size=5)
# Gerando o arquivo png
ggsave("figura3.png")
## Saving 7 x 5 in image
# Exibindo os dados agrupados
dados %>% group_by(curso) %>% summarise(Media=mean(idade))
## # A tibble: 3 x 2
## curso Media
## <fct> <dbl>
## 1 Aluno especial 36.3
## 2 Doutorado 30.2
## 3 Mestrado 23.5
CONCLUSÃO: Como podemos verificar o curso de Aluno especial é o que apresenta a maior média de idade, 36 anos, já o de Mestrado é o que apresenta a menor média de idade, 23 anos. Se comparado podemos verificar que a idade do curso de aluno especial chega a 56% em relação ao de mestrado.Clique aqui para visualizar a figura.
Crie um gráfico que mostra o percentual de alunos para cada estado de origem. Apresente o gráfico e discuta os resultados no relatório. O gráfico também deve ser salvo em uma imagem no formato png:
# Encontrando o % de alunos por UF e construindo o gráfico
# Comando
dados %>% group_by(uf) %>% summarise(Percentual=(n()/29)) %>% ggplot(aes(uf, Percentual, fill = uf)) + geom_bar(stat = "identity") + ggtitle("Gráfico % de alunos por UF") + geom_text(aes(label=round(Percentual, digits = 3)), position = position_stack(vjust = 0.5), size = 3)
# Gerando o arquivo png
# Comando
ggsave("figura4.png")
## Saving 7 x 5 in image
# Exibindo os dados agrupados por UF
# Comando
dados %>% group_by(uf) %>% summarise(Percentual=(n()/29))
## # A tibble: 11 x 2
## uf Percentual
## <fct> <dbl>
## 1 "AL" 0.0345
## 2 "BA" 0.0690
## 3 "Ceará " 0.0345
## 4 "DF" 0.0345
## 5 "Paraíba" 0.0345
## 6 "PB" 0.586
## 7 "PB " 0.0345
## 8 "PE" 0.0345
## 9 "Santa Catarina" 0.0345
## 10 "SE" 0.0345
## 11 "SP" 0.0690
CONCLUSÃO: Podemos verificar que 58% dos registros são do estado da PB, seguido por 6,9% em SP e BA. Clique aqui para visualizar a figura.
Compare a média de idade geral com a média dos top-5 e dos bottom-5. Além de apresentar e discutir os resultados no relatório, salvar em uma tabela (dataframe) com as médias em questão:
# Já possuimos a Média geral da idade, pela variável md_idade
# Comando
md_idade
## [1] 25.7931
# Vamos agora criar um dataframe com os valores ordenados
# ele irá ordenar de forma crescente, do menor para o maior
# com isso o nosso Top são os de menor valor e os Bottom os
# de maior valor.
# Comando
idadeorder <- sort(vl_idade)
# Vamos agora calcular a média dos top 5
# os de menor idade, os mais novos
# comando
mdtop5_idade <- mean(idadeorder[1:5])
# Vamos agora calcular a média dos bottom 5
# os de maior idade, os mais velhos
# Comando
mdbot5_idade <- mean(idadeorder[25:29])
# Criando o dataframe com as médias
# Comando
dfq5 <- data.frame(Media_Geral=md_idade,Media_Top5=mdtop5_idade, Media_Bot5=mdbot5_idade)
# Exibindo o dataframe
# Comando
dfq5
## Media_Geral Media_Top5 Media_Bot5
## 1 25.7931 21.8 35.2
CONCLUSÃO: Podemos verificar que na média geral das idades, 25 anos, fica mais aproxima das idades dos mais novos, que apresentam uma média de 21 anos.
Você acredita que existe uma relação entre idade e nível de interesse? Discuta.
# Vamos criar um dataframe com os valores de idade e nível de interesse..
# lembrando que já temos as variáveis vl_idade e vl_nivel.
# Comando
dfq6 <- data.frame(vl_idade,vl_nivel)
# Vamos agora aplicar a função lm() que serve
# para calcular a regressão linear simples
# Comando
regressao<-lm(vl_idade ~ vl_nivel,data = dfq6)
regressao
##
## Call:
## lm(formula = vl_idade ~ vl_nivel, data = dfq6)
##
## Coefficients:
## (Intercept) vl_nivel
## 20.350 1.925
# Exibindo os valores da regressao
# Comando
summary(regressao)
##
## Call:
## lm(formula = vl_idade ~ vl_nivel, data = dfq6)
##
## Residuals:
## Min 1Q Median 3Q Max
## -5.125 -3.125 -2.125 1.875 11.875
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 20.350 6.993 2.910 0.00716 **
## vl_nivel 1.925 2.451 0.785 0.43915
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 4.987 on 27 degrees of freedom
## Multiple R-squared: 0.02233, Adjusted R-squared: -0.01388
## F-statistic: 0.6166 on 1 and 27 DF, p-value: 0.4391
# Exibindo o valor do coeficiente de regressão
# Comando
regressao$coefficients
## (Intercept) vl_nivel
## 20.350 1.925
CONCLUSÃO: Podemos concluir que existe uma correlação entre idade e nível de interesse do tipo POSITIVA MUITO FORTE, devido ao seu valor 1,925.