Introdução

Tem como objetivo responder algumas perguntas através da análise de dados, aprofundando o conhecimento em frequência e medidas. Os dados que deverão ser utilizado nesse script foram baixados do kaggle e podem ser acessados através do link:

https://www.kaggle.com/spscientist/students-performance-in-exams

Este conjunto de dados consiste nas notas obtidas pelos alunos em várias disciplinas e suas informações pessoais.

Variáveis:

gender - gênero do aluno race/ethnicity - raça/etnia dos alunos parental level of education - grau de escolaridade dos pais lunch - tipo de almoço test preparation course - indica se fez curso preparatório math score - nota na prova de matematica reading score - nota na prova de leitura writing score - nota na prova de escrita

Os dados são arquivos em .csv

Análise exploratória dos dados

Questao 01

Qual a quantidade de alunos de cada gênero? Existem mais alunos do gênero masculino ou feminino?

ggplot(dados, aes(x = gender)) + geom_bar()

Questao 02

Qual a nota média de matemática dos alunos segundo o grau de escolaridade dos pais? Faça a mesma análise para as notas de leitura e escrita.

matemática
df_grouped_math <- aggregate(`math score` ~ `parental level of education`, dados, mean)

kable(df_grouped_math)
parental level of education math score
associate’s degree 67.88288
bachelor’s degree 69.38983
high school 62.13776
master’s degree 69.74576
some college 67.12832
some high school 63.49721
ggplot(df_grouped_math, aes(x = `parental level of education`, y = `math score`)) +
  geom_col() +
  labs(x = "Nível de Educação dos Pais", y = "Média da Nota de Matemática") +
  theme(axis.text.x = element_text(angle = 45, hjust = 1))

leitura
df_grouped_reading <- aggregate(`reading score` ~ `parental level of education`, dados, mean)

kable(df_grouped_reading)
parental level of education reading score
associate’s degree 70.92793
bachelor’s degree 73.00000
high school 64.70408
master’s degree 75.37288
some college 69.46018
some high school 66.93855
ggplot(df_grouped_reading, aes(x = `parental level of education`, y = `reading score`)) +
  geom_col() +
  labs(x = "Nível de Educação dos Pais", y = "Média da Nota de Matemática") +
  theme(axis.text.x = element_text(angle = 45, hjust = 1))

escrita
df_grouped_writing <- aggregate(`writing score` ~ `parental level of education`, dados, mean)

kable(df_grouped_writing)
parental level of education writing score
associate’s degree 69.89640
bachelor’s degree 73.38136
high school 62.44898
master’s degree 75.67797
some college 68.84071
some high school 64.88827
ggplot(df_grouped_writing, aes(x = `parental level of education`, y = `writing score`)) +
  geom_col() +
  labs(x = "Nível de Educação dos Pais", y = "Média da Nota de Matemática") +
  theme(axis.text.x = element_text(angle = 45, hjust = 1))

####

Questao 03

Como o gênero é distribuído em outras categorias?

A distribuição de género nas categorias individuais das outras características é bastante uniforme. A diferença está dentro de 1% para todas as características categóricas, exceto os grupos raciais B e D, que têm variação de até 2%.

ggplot(dados, aes(x = `race/ethnicity`, fill = gender)) +
  geom_bar(position = "dodge") +
  labs(x = "Raca/Etnia", y = "Contagem", fill = "Genero")

ggplot(dados, aes(x = `parental level of education`, fill = gender)) +
  geom_bar(position = "dodge") +
  labs(x = "Nivel de Educacao dos Pais", y = "Contagem", fill = "Genero")

df_genderAvg <- aggregate(cbind(`math score`, `reading score`, `writing score`) ~ gender, dados, mean)

kable(df_genderAvg)
gender math score reading score writing score
female 63.63320 72.60811 72.46718
male 68.72822 65.47303 63.31120
ggplot(dados, aes(x = `math score`)) +
  geom_histogram(binwidth = 5, fill = "blue", color = "black") +
  labs(x = "Math Score", y = "Frequency")

ggplot(dados, aes(x = `reading score`)) +
  geom_histogram(binwidth = 5, fill = "green", color = "black") +
  labs(x = "Reading Score", y = "Frequency")

ggplot(dados, aes(x = `writing score`)) +
  geom_histogram(binwidth = 5, fill = "red", color = "black") +
  labs(x = "Writing Score", y = "Frequency")

Questao 04

Almoço grátis versus almoço padrão: os alunos que recebem o pacote de almoço padrão tiveram melhor desempenho.

# Calcula a média das notas para cada grupo de almoço
almoco_medio <- aggregate(cbind(`math score`, `reading score`, `writing score`) ~ lunch, dados, mean)

# Imprime os resultados
print(almoco_medio)
         lunch math score reading score writing score
1 free/reduced   58.92113      64.65352      63.02254
2     standard   70.03411      71.65426      70.82326
ggplot(dados, aes(x = lunch, y = `math score`)) +
  geom_boxplot() +
  labs(x = "Tipo de Almoço", y = "Nota de Matemática")

ggplot(dados, aes(x = lunch, y = `reading score`)) +
  geom_boxplot() +
  labs(x = "Tipo de Almoço", y = "Nota de Leitura")

ggplot(dados, aes(x = lunch, y = `writing score`)) +
  geom_boxplot() +
  labs(x = "Tipo de Almoço", y = "Nota de Escrita")

Observações

Os estudantes do sexo feminino tiveram melhor desempenho do que os estudantes do sexo masculino. Almoço grátis versus almoço padrão: os alunos que recebem o pacote de almoço padrão tiveram melhor desempenho.

Os alunos cujos pais têm mestrado tiveram melhor desempenho. No entanto, os alunos cujos pais possuem “algum nível de ensino médio” obtiveram a média mais baixa. Curiosamente, porém, para os alunos do grupo A, ter pais com mestrado não ajudou muito.