Introdução

Esta análise explanatória será feita utilizando dados sobre a turma de Fundamentos de Pesquisa de Ciência da Computação 2. Logo abaixo será respondido 6 perguntas tomando como base os dados fornecidos.

Antes de tudo, será importado as nossas bibliotecas que serão utilizadas para a plotagem dos gráficos para responder as perguntas.

Logo após, será importado a nossa base de dados.

dadosFPCC2 <- read.csv("/home/mattheusbr/git/fpcc2-lab1-MattheusB/data/dados-fpcc2.csv")

Antes de partir para as perguntas, é preciso entender o que cada coluna da nossa base de dados significa:

Questões

1 - 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.

Para responder a questão acima, teremos que calcular a média e o desvio padrão da idade e do nível de interesse. Após realizar isso, é necessário que ordene os resultados.

dadosAdicionais <-
  summarise(dadosFPCC2,
            desvio_padrao_interesse = sd(Nível.de.interesse.na.pós.gradução, na.rm = TRUE),
            desvio_padrao_idade = sd(Idade, na.rm = TRUE),
            media_interesse = mean(Nível.de.interesse.na.pós.gradução, na.rm = TRUE),
            media_idade = mean(Idade, na.rm = TRUE)) %>% 
  arrange(desc(desvio_padrao_interesse, media_interesse, desvio_padrao_idade, media_idade))

dadosAdicionais
##   desvio_padrao_interesse desvio_padrao_idade media_interesse media_idade
## 1               0.3563483            5.013606        2.857143    25.89286

Os resultados obtidos foram: desvio padrão interesse = 0.3844259, desvio padrão idade = 4.952484, média interesse = 2.827586, média idade = 25.7931.

Após isso, vamos salvar o data frame em um arquivo csv.

write.csv(dadosAdicionais, "dados_adicionais.csv")

2 - Qual o curso com maior valor médio de idade? Discutir os resultados com base nos dados disponíveis em termos de representatividade.

Para responder a questão acima, teremos que agrupar os dados por Curso no Programa de Pós Graduação em Ciência da Computação (PPGCC) e calcular a média de cada um.

cursoMaiorIdade <- dadosFPCC2 %>% 
  group_by(Curso.no.PPGCC...UFCG) %>% 
  summarise(media_idade = mean(Idade)) %>% 
  arrange(desc(media_idade))

cursoMaiorIdade
## # A tibble: 4 x 2
##   Curso.no.PPGCC...UFCG media_idade
##   <fct>                       <dbl>
## 1 "Aluno especial"             36.3
## 2 "Doutorado"                  30.2
## 3 "Mestrado"                   23.6
## 4 ""                           NA

Podemos afirmar que o curso com maior idade média é o de Alunos Especiais que é aproximadamente de 36 anos, seguido por doutorado que é aproximadamente 30 anos e por fim o curso de mestrado com média aproximadamente de 23 anos.É aceitável que a média de idade dos doutorandos seja maior do que a de mestrandos. No entando, a média de alunos especiais é maior que a dos outros cursos, isso acontece devido ao fato de que o número de alunos especiais é de apenas 3 pessoas, e analisando o total de alunos da turma que é 29 estudantes, isso não é significativamente representativo.

3 - 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.

cursoMaiorIdade %>% 
    plot_ly(x=~Curso.no.PPGCC...UFCG, y=~media_idade, type="bar", color=~Curso.no.PPGCC...UFCG) %>% 
    layout(title = "Média de idade por curso",
         xaxis = list(title="Curso do PPGCC"),
         yxaxis = list(title="Idade Média"))
## Warning: Ignoring 1 observations
## Warning: 'layout' objects don't have these attributes: 'yxaxis'
## Valid attributes include:
## 'font', 'title', 'titlefont', 'autosize', 'width', 'height', 'margin', 'paper_bgcolor', 'plot_bgcolor', 'separators', 'hidesources', 'showlegend', 'colorway', 'datarevision', 'template', 'dragmode', 'hovermode', 'hoverdistance', 'spikedistance', 'hoverlabel', 'selectdirection', 'grid', 'calendar', 'xaxis', 'yaxis', 'ternary', 'scene', 'geo', 'mapbox', 'polar', 'radialaxis', 'angularaxis', 'direction', 'orientation', 'editType', 'legend', 'annotations', 'shapes', 'images', 'updatemenus', 'sliders', 'barmode', 'bargap', 'mapType'

Após a plotagem do gráfico, fica evidente o que foi falado anteriormente. Ou seja, o número de alunos de cada curso é muito importante para tirar uma conclusão. Devido a isso, os alunos especiais tem uma média de idade maior que os outros dois cursos.

4 - 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.

Para responder a questão acima, é necessário agrupar os dados por Estado de nascimento e fazer a contagem de cada um. Após isso, será plotado um gráfico de pizza para analisar melhor os dados.

percentualAlunos <- dadosFPCC2 %>% 
  mutate(Estado.de.nascimento..abreviado. = ifelse(Estado.de.nascimento..abreviado. == "Paraíba", "PB",
                                                   ifelse(Estado.de.nascimento..abreviado. == "Ceará", "CE",
                                                          ifelse(Estado.de.nascimento..abreviado. == "Santa Catarina", "SC",
                                                                 Estado.de.nascimento..abreviado.)))) %>% 
  group_by(Estado.de.nascimento..abreviado.) %>% 
  summarise(totalAlunos = n())

percentualAlunos %>% 
  plot_ly(labels= ~Estado.de.nascimento..abreviado., values= ~totalAlunos, type="pie") %>% 
  layout(title = "Percentual de alunos por estado de origem",
          xaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE),
         yaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE), showlegend = FALSE)

Após observar o gráfico, vemos o estado da Paraíba com predominância sob os outros estados, com aproximadamente 62% dos alunos, o que impressionou foi os estados de Bahia e São Paulo atingir aproximadamente 7% cada, devido ao fato de que são estados distantes da Paraíba, principalmente São Paulo.

5 - 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.

Para responder a pergunta acima, temos que ordenar por maior e menor idade, e calcular as três médias solicitadas.

idade_top <- top_n(dadosFPCC2, 5, Idade)
idade_bottom <- top_n(dadosFPCC2, -5, Idade)

media_idade_top <- summarise(idade_top, mean(Idade))
media_idade_bottom <- summarise(idade_bottom, mean(Idade))

dadosMedias <- dadosFPCC2 %>% 
  summarise(media_total = mean(dadosFPCC2$Idade, na.rm = TRUE),
            media_top = media_idade_top$`mean(Idade)`,
            media_bottom = media_idade_bottom$`mean(Idade)`)

dadosMedias
##   media_total media_top media_bottom
## 1    25.89286      35.2       21.875

Observando o resultado, vimos que a diferença é média, tendo uma média dos 5 mais velhos como aproximadamente 35 anos e a média dos 5 mais novos como 22 anos aproximadamente. Além disso, a média total da idade dos alunos é aproximadamente 26 anos. Isso significa que não há muitos dados que se afastem muito da média.

Após isso, vamos salvar o data frame em um arquivo csv.

write.csv(dadosMedias, "dados_medias.csv")

6 - Você acredita que existe uma relação entre idade e nível de interesse? Discuta.

Para responder a pergunta acima, temos que agrupar os dados por nível interesse e idade e fazer a soma.

group_idade <- dadosFPCC2 %>% 
  group_by(Nível.de.interesse.na.pós.gradução, Idade) %>% 
  summarise(quantidade = n())

group_idade
## # A tibble: 15 x 3
## # Groups:   Nível.de.interesse.na.pós.gradução [3]
##    Nível.de.interesse.na.pós.gradução Idade quantidade
##                                 <int> <int>      <int>
##  1                                  2    22          1
##  2                                  2    24          1
##  3                                  2    26          2
##  4                                  3    21          1
##  5                                  3    22          6
##  6                                  3    23          6
##  7                                  3    24          2
##  8                                  3    26          1
##  9                                  3    28          1
## 10                                  3    29          2
## 11                                  3    32          1
## 12                                  3    33          1
## 13                                  3    35          1
## 14                                  3    38          2
## 15                                 NA    NA          1

Após isso, os dados estão complicados de entender. Então vamos plotar um gráfico de pontos para facilitar o entendimento.

group_idade %>% 

  plot_ly(x= ~Idade, y= ~Nível.de.interesse.na.pós.gradução,size = ~quantidade, type= "scatter", mode= "markers") %>%
  layout(title="Relação Nível Interesse/Idade", 
         xaxis=list(title="Idade"), 
         yaxis=list(title="Nível Interesse"), barmode="stack")
## Warning: Ignoring 1 observations
## Warning: `line.width` does not currently support multiple values.

Após observar o gráfico, pode-se afirmar que a maioria das pessoas com menor idade tem um interesse grande pelo programa (visualizando que os pontos estão maiores quando estão no nível 3 de interesse), assim como as pessoas que tem maior idade também tem um nível grande de interesse. Por isso, dá para concluir que não existe uma relação entre idade e nível de interesse. Além disso, os dados são poucos e não dá pra tomar uma conclusão com maior confiança.