Questões

Carregando pacotes

library(dplyr)
## Registered S3 methods overwritten by 'tibble':
##   method     from  
##   format.tbl pillar
##   print.tbl  pillar
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
library(readr)
library(here)
## here() starts at C:/Users/pbita/Desktop/MESTRADO_CC/Fundamentos de Pesquisa em Ciencia da Computacao_2/fpcc2-lab1-italobrito-master/fpcc2-lab1-italobrito-master
library(tidyverse)
## -- Attaching packages --------------------------------------- tidyverse 1.3.1 --
## v ggplot2 3.3.5     v purrr   0.3.4
## v tibble  3.0.3     v stringr 1.4.0
## v tidyr   1.2.0     v forcats 0.5.1
## -- Conflicts ------------------------------------------ tidyverse_conflicts() --
## x dplyr::filter() masks stats::filter()
## x dplyr::lag()    masks stats::lag()
library(tibble)
library(ggplot2)
library(scales)
## 
## Attaching package: 'scales'
## The following object is masked from 'package:purrr':
## 
##     discard
## The following object is masked from 'package:readr':
## 
##     col_factor

Importando base de dados

turma_fpcc2 <- read_csv(here("data/dados-fpcc2-22.1.csv"), show_col_types = FALSE)

Renomeando colunas

colnames <- c("tipo_curso", "matricula", "conf_sumarios", "conf_histo", 
  "ler_ingles", "prog_r", "linear", "logistica",
  "exp_pesq", "exp_dev", "exp_admin", 
  "exp_desc", "area", "outra",
  "idade", "irmaos", "altura", "uf")
colnames(turma_fpcc2) <- colnames

Visão geral dos dados

glimpse(turma_fpcc2)
## Rows: 24
## Columns: 18
## $ tipo_curso    <chr> "Mestrado", "Doutorado", "Mestrado", "Mestrado", "Mestra~
## $ matricula     <chr> "Regular", "Regular", "Regular", "Regular", "Regular", "~
## $ conf_sumarios <chr> "Bastante confiante", "Bastante confiante", "Um pouco", ~
## $ conf_histo    <chr> "Bastante confiante", "Bastante confiante", "Um pouco", ~
## $ ler_ingles    <chr> "Bastante confiante", "Médio", "Um pouco", "Totalmente c~
## $ prog_r        <chr> "Médio", "Médio", "Nenhuma confiança", "Médio", "Nenhuma~
## $ linear        <chr> "Um pouco", "Médio", "Um pouco", "Médio", "Médio", "Bast~
## $ logistica     <chr> "Um pouco", "Um pouco", "Um pouco", "Médio", "Nenhuma co~
## $ exp_pesq      <chr> "1 ano", "3 anos", "0 anos", "3 anos", "0 anos", "2 anos~
## $ exp_dev       <chr> "3 anos", "1 ano", "0 anos", "1 ano", "4+ anos", "1 ano"~
## $ exp_admin     <chr> "0 anos", "1 ano", "0 anos", "2 anos", "0 anos", "0 anos~
## $ exp_desc      <chr> NA, "Pesquisa: Mestrado e Projetos PIBIC e PIBITI. Desen~
## $ area          <chr> "IA, NLP", "Inteligência Artificial na Educação", "Siste~
## $ outra         <chr> NA, NA, NA, "Tenho bastante interesse nas áreas de lingu~
## $ idade         <chr> "29", "36", "26", "29", "25", "22", "24", "28", "27", "3~
## $ irmaos        <chr> "3", "1", "2", "2", "1", "1", "0", "1", "2", "1", "4", "~
## $ altura        <chr> "178", "152", "1,65", "170,5", "174", "167", "180", "176~
## $ uf            <chr> "PB", "Alagoas", "Opção 1", "PB", "PB", "PB", "Opção 1",~

Questão 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 devem ser apresentadas de forma ordenada, da maior idade para a menor. Além de apresentar no relatório, os resultados devem ser salvos em um arquivo csv, que deve ser adicionado ao repositório.

Analisando dados referente a idade.

turma_fpcc2$idade
##  [1] "29"       "36"       "26"       "29"       "25"       "22"      
##  [7] "24"       "28"       "27"       "35"       "38"       "34"      
## [13] "25"       "37"       "38"       "23"       "25 anos." "22"      
## [19] "26"       "30 anos"  "39 anos"  "39"       "25"       "30"

É sabido que para realizar operações matemáticas, nossos dados deveram estar no formado númerico. Dessa forma faremos o pré-processamento dos dados para que isto seja possível.

turma_fpcc2$idade[turma_fpcc2$idade == "30 anos"] <- "30"
turma_fpcc2$idade[turma_fpcc2$idade == "39 anos"] <- "39"
turma_fpcc2$idade[turma_fpcc2$idade == "25 anos."] <- "25"

Realizando a conversão para valor númerico.

turma_fpcc2 <- turma_fpcc2 %>% mutate_at(vars(idade), parse_number)

Analisando dados referente a idade após tratatamento

turma_fpcc2$idade
##  [1] 29 36 26 29 25 22 24 28 27 35 38 34 25 37 38 23 25 22 26 30 39 39 25 30

Ordenando do maior para o menor

idade_turma_ordenada <- sort(turma_fpcc2$idade, decreasing = TRUE)
idade_turma_ordenada
##  [1] 39 39 38 38 37 36 35 34 30 30 29 29 28 27 26 26 25 25 25 25 24 23 22 22

Calculando média

mean(idade_turma_ordenada)
## [1] 29.66667

Calculando desvio padrão

sd(idade_turma_ordenada)
## [1] 5.798551

Apresentando dados da questão 1 e exportando para idade_turma.csv

idade_turma_ordenada["media"] <- mean(idade_turma_ordenada)
idade_turma_ordenada["desvio_padrao"] <- sd(idade_turma_ordenada)

idade_turma_ordenada
##                                                                       
##     39.000000     39.000000     38.000000     38.000000     37.000000 
##                                                                       
##     36.000000     35.000000     34.000000     30.000000     30.000000 
##                                                                       
##     29.000000     29.000000     28.000000     27.000000     26.000000 
##                                                                       
##     26.000000     25.000000     25.000000     25.000000     25.000000 
##                                                                 media 
##     24.000000     23.000000     22.000000     22.000000     29.666667 
## desvio_padrao 
##      5.676462
write.table(idade_turma_ordenada, file = "idade_turma.csv", row.names = TRUE)

Questão 2

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

Verificando os tipos de cursos

unique(turma_fpcc2$tipo_curso)
## [1] "Mestrado"  "Doutorado"

Análise de idade para alunos do tipo_curso == ‘Doutorado’

list_doutorado <- turma_fpcc2 %>% filter(tipo_curso == "Doutorado") %>% select(tipo_curso, idade)
list_doutorado
## # A tibble: 3 x 2
##   tipo_curso idade
##   <chr>      <dbl>
## 1 Doutorado     36
## 2 Doutorado     34
## 3 Doutorado     37
mean(list_doutorado$idade)
## [1] 35.66667

Média de idade dos alunos do curso de doutorado

mean(list_doutorado$idade)
## [1] 35.66667

Análise de idade para alunos do tipo_curso == ‘Mestrado’

list_mestrado <- turma_fpcc2 %>% filter(tipo_curso == "Mestrado") %>% select(tipo_curso, idade)

Média de idade dos alunos do curso de mestrado

mean(list_mestrado$idade)
## [1] 28.80952

Questão 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, que deve ser adicionada ao repositório.

Gerando data frame com as médias de idade por tipo de curso

data_question_3 <- data.frame(
  tipo_curso = c("Mestrado","Doutorado"),
  media_idade = c(mean(list_mestrado$idade),mean(list_doutorado$idade))
)
data_question_3
##   tipo_curso media_idade
## 1   Mestrado    28.80952
## 2  Doutorado    35.66667

Gerando gráfico e salvando como question3.png

plot_question_3 <- ggplot(data_question_3, aes(media_idade, tipo_curso, fill = tipo_curso)) + geom_bar(stat = "identity") + xlab("Média de Idade") + ylab("Tipo de curso") + theme(legend.position = "None")

print(plot_question_3)

ggsave(filename = "./question3.png", plot=plot_question_3)
## Saving 7 x 5 in image

Questão 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, que deve ser adicionada ao repositório.

Analisando os tipos de estados cadastrados no data frame

unique(turma_fpcc2$uf)
## [1] "PB"                                                       
## [2] "Alagoas"                                                  
## [3] "Opção 1"                                                  
## [4] "Paraíba"                                                  
## [5] "Acre"                                                     
## [6] "Paraiba"                                                  
## [7] "PB (Campina Grande)"                                      
## [8] "Pernambuco, mas moro em Campina Grande há mais de 20 anos"
## [9] "RJ"

Realizando pré processamento dos dados

turma_fpcc2$uf[turma_fpcc2$uf == "PB (Campina Grande)"] <- "PB"
turma_fpcc2$uf[turma_fpcc2$uf == "Pernambuco, mas moro em Campina Grande há mais de 20 anos"] <- "PE"
turma_fpcc2$uf[turma_fpcc2$uf == "Opção 1"] <- "N/A"
turma_fpcc2$uf[turma_fpcc2$uf == "Paraiba"] <- "Paraíba"
turma_fpcc2$uf[turma_fpcc2$uf == "Paraíba"] <- "PB"
turma_fpcc2$uf[turma_fpcc2$uf == "Acre"] <- "AC"
turma_fpcc2$uf[turma_fpcc2$uf == "Alagoas"] <- "AL"

Calculando o total de alunos por UF e seus respectivos percentuais.

count_list_for_uf <- turma_fpcc2 %>% group_by(uf) %>% count()

total <- count_list_for_uf$n %>% sum()

row <- data.frame(uf="Total", n=total)

count_list_for_uf <- rbind(count_list_for_uf,row)

count_list_for_uf["Percentual"] <- (count_list_for_uf$n / total)*100

count_list_for_uf
## # A tibble: 7 x 3
## # Groups:   uf [7]
##   uf        n Percentual
##   <chr> <int>      <dbl>
## 1 AC        2       8.33
## 2 AL        1       4.17
## 3 N/A       5      20.8 
## 4 PB       14      58.3 
## 5 PE        1       4.17
## 6 RJ        1       4.17
## 7 Total    24     100

Gerando gráfico e salvando como question3.png

count_list_for_uf <- count_list_for_uf[0:(nrow(count_list_for_uf)-1),]

plot_question_4 <- ggplot(count_list_for_uf, aes(Percentual, uf, fill = uf)) + geom_bar(stat = "identity") + xlab("Média de Idade") + ylab("Tipo de curso") + theme(legend.position = "None")

print(plot_question_4)

ggsave(filename = "./question4.png", plot=plot_question_4)
## Saving 7 x 5 in image

Questão 5

* Compare a média de idade geral com a média de idade 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.

new_list_age <- sort(turma_fpcc2$idade, decreasing = TRUE)
data_question_5 <- data.frame(
  descricao = c("geral","top5","bottom5"),
  media = c(mean(turma_fpcc2$idade),mean(head(new_list_age, n = 5)),mean(tail(new_list_age, n = 5)))
)
data_question_5
##   descricao    media
## 1     geral 29.66667
## 2      top5 38.20000
## 3   bottom5 23.20000