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
Qual a quantidade de alunos de cada gênero? Existem mais alunos do gênero masculino ou feminino?
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.
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))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))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))
####
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")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.