Configurações básicas

# 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")

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

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:

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

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.

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

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:

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

Questão 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:

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

Questão 6

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.