Carregando packages

Exploração de dados tabela enrollments

Importar dados de um arquivo CSV com o separador correto

enrollments <- read.csv("~/Mestrado UFCG/Semestre 2023.1/FPCC 2/fpcc2-reproducao-Diego-Kazadi/dados/enrollments.csv", sep = ";")

head(enrollments)
##    registro codigoDisciplina periodo IdTurma credito nota status_enrollments
## 1 100110001          1108089  2000.2       0       4    -           Trancado
## 2 100110001          1108089  2001.1       0       4  7,6           Aprovado
## 3 100110001          1108090  2001.2       0       4  8,3           Aprovado
## 4 100110001          1109035  2000.1       0       4  7,5           Aprovado
## 5 100110001          1109101  2001.1       0       4  5,7           Aprovado
## 6 100110001          1109103  2000.1       0       4  8,5           Aprovado
glimpse(enrollments)
## Rows: 132,084
## Columns: 7
## $ registro           <int> 100110001, 100110001, 100110001, 100110001, 1001100…
## $ codigoDisciplina   <int> 1108089, 1108089, 1108090, 1109035, 1109101, 110910…
## $ periodo            <dbl> 2000.2, 2001.1, 2001.2, 2000.1, 2001.1, 2000.1, 200…
## $ IdTurma            <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 3, 4, 0, 1, 1, …
## $ credito            <int> 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 2, 4, 4, 2, …
## $ nota               <chr> "-", "7,6", "8,3", "7,5", "5,7", "8,5", "7,9", "5,8…
## $ status_enrollments <chr> "Trancado", "Aprovado", "Aprovado", "Aprovado", "Ap…

Visualizar colunas da tabela enrollments

# Usando a função names()
colunas <- names(enrollments)
print(colunas)
## [1] "registro"           "codigoDisciplina"   "periodo"           
## [4] "IdTurma"            "credito"            "nota"              
## [7] "status_enrollments"

Explorar resumos estatísticos da tabela enrollments

# Resumo estatístico usando a função summary
summary(enrollments)
##     registro         codigoDisciplina     periodo        IdTurma      
##  Min.   :100110001   Min.   :1105149   Min.   :1991   Min.   : 0.000  
##  1st Qu.:109110805   1st Qu.:1305218   1st Qu.:2009   1st Qu.: 1.000  
##  Median :114110484   Median :1411176   Median :2014   Median : 1.000  
##  Mean   :117737415   Mean   :1337008   Mean   :2013   Mean   : 1.264  
##  3rd Qu.:117211061   3rd Qu.:1411195   3rd Qu.:2018   3rd Qu.: 1.000  
##  Max.   :199210279   Max.   :1503121   Max.   :2023   Max.   :14.000  
##     credito           nota           status_enrollments
##  Min.   : 0.000   Length:132084      Length:132084     
##  1st Qu.: 4.000   Class :character   Class :character  
##  Median : 4.000   Mode  :character   Mode  :character  
##  Mean   : 3.881                                        
##  3rd Qu.: 4.000                                        
##  Max.   :22.000

O resultado apresenta um conjunto de estatísticas descritivas, como mínimo, máximo, média, mediana, quartis e contagens para as variáveis numéricas na tabela “enrollments”. Isso nos ajuda a entender a distribuição e as características das variáveis.

Numeros das matriculas por periodo

# Filtrar o período de 2006.1 a 2019.2
enrollments_filtered <- enrollments %>%
  filter(grepl("^2006\\.(1|2)|^2007|^2008|^2009|^2010|^2011|^2012|^2013|^2014|^2015|^2016|^2017|^2018|^2019\\.1|^2019\\.2", periodo))

# Ordenar o fator dos períodos para garantir a ordem correta no gráfico
enrollments_filtered$periodo <- factor(enrollments_filtered$periodo, levels = unique(enrollments_filtered$periodo))

# Gráfico de barras para contar a quantidade de matrículas por período
ggplot(data = enrollments_filtered, aes(x = periodo)) +
  geom_bar(fill = "blue", width = 0.5) +
  labs(title = "Quantidade de Matrículas por Período", x = "Período", y = "Quantidade de Matrículas") +
  theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust=1)) +
  geom_text(aes(label = ..count..), stat = "count", vjust = -0.5, color = "black")
## Warning: The dot-dot notation (`..count..`) was deprecated in ggplot2 3.4.0.
## ℹ Please use `after_stat(count)` instead.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.

No gráfico de barras, é possível observar as variações na quantidade de matrículas ao longo dos períodos acadêmicos no intervalo de 2006.1 a 2019.2. Cada barra representa um período específico, e a altura da barra indica o número de matrículas naquele período.

É importante mencionar que, devido à possibilidade de um registro se matricular em mais de uma disciplina no mesmo período, o número de matrículas pode ser maior do que o número de registros individuais. Isso pode ser observado nas alturas das barras do gráfico, onde algumas barras apresentam valores mais elevados, indicando um maior número de matrículas em períodos específicos.

Essa informação ressalta a ocorrência de matrículas múltiplas em um mesmo período por parte de alguns registros. Portanto, o número de matrículas representado no gráfico não se limita ao número de registros únicos, mas sim ao total de matrículas realizadas no período específico.

Quantidade de Matrículas na disciplina Calculo I por Período

# Definir o código de disciplina para "Cálculo I" (substituir pelo código correto)
codigo_calculo_i <- "1109103"

# Filtrar as matrículas apenas para a disciplina "Cálculo I" e o período de 2006.1 até 2019.2
matriculas_calculo_i <- enrollments %>%
  filter(codigoDisciplina == codigo_calculo_i & grepl("^2006\\.(1|2)|^2007|^2008|^2009|^2010|^2011|^2012|^2013|^2014|^2015|^2016|^2017|^2018|^2019\\.1|^2019\\.2", periodo))

# Contar o número de registros matriculados por período
num_registros_por_periodo <- matriculas_calculo_i %>%
  group_by(periodo) %>%
  summarize(num_registros = n())

# Ordenar o fator dos períodos para garantir a ordem correta no gráfico
num_registros_por_periodo$periodo <- factor(num_registros_por_periodo$periodo, levels = unique(num_registros_por_periodo$periodo))

# Gráfico de barras para visualizar o número de registros matriculados em "Cálculo I" ao longo do tempo
ggplot(data = num_registros_por_periodo, aes(x = periodo, y = num_registros)) +
  geom_bar(stat = "identity", fill = "blue", width = 0.5) +
  labs(title = "Número de Registros Matriculados em Cálculo I por Período", x = "Período", y = "Número de Registros") +
  theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust = 1)) +
  geom_text(aes(label = num_registros), vjust = -0.5, color = "black")

Ao analisar o número de registros matriculados em “Cálculo I” ao longo do tempo, é possível observar uma tendência crescente desde o início do período considerado. No início, foram registrados cerca de 42 matriculados, e ao longo dos anos, esse número aumentou gradualmente.

Um ponto de destaque é o período de 2013.2, que apresentou um pico significativo com 138 registros matriculados em “Cálculo I”. Esse resultado pode indicar um aumento na demanda pela disciplina nesse período específico, possivelmente impulsionado por fatores como a importância do curso, recomendações de professores ou interesse dos estudantes na área.

Essa curva crescente sugere uma tendência de interesse e participação contínuos na disciplina ao longo dos anos, refletindo a importância do estudo de “Cálculo I” no currículo acadêmico. Esses dados são úteis para entender a demanda por essa disciplina e podem fornecer insights para planejamento curricular e alocação de recursos adequados para o ensino e apoio aos alunos.

O Status dos alunos matriculados na disciplina Calculo I ao longo do tempo

# Definir o código de disciplina para "Cálculo I" (substituir pelo código correto)
codigo_calculo_i <- "1109103"

# Filtrar as matrículas apenas para a disciplina "Cálculo I" e o período de 2006.1 até 2019.2
matriculas_calculo_i <- enrollments %>%
  filter(codigoDisciplina == codigo_calculo_i & grepl("^2006\\.(1|2)|^2007|^2008|^2009|^2010|^2011|^2012|^2013|^2014|^2015|^2016|^2017|^2018|^2019\\.1|^2019\\.2", periodo))

# Contar a quantidade de ocorrências de cada status por período
status_count <- matriculas_calculo_i %>%
  group_by(periodo, status_enrollments) %>%
  summarize(count = n())
## `summarise()` has grouped output by 'periodo'. You can override using the
## `.groups` argument.
# Ordenar o fator dos períodos para garantir a ordem correta no gráfico
status_count$periodo <- factor(status_count$periodo, levels = unique(status_count$periodo))

# Gráfico de barras para visualizar o número de registros por status em "Cálculo I" ao longo do tempo
ggplot(data = status_count, aes(x = periodo, y = count, fill = status_enrollments)) +
  geom_bar(stat = "identity", position = "stack") +
  labs(title = "Número de Registros por Status em Cálculo I por Período", x = "Período", y = "Quantidade") +
  theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust = 1)) +
  scale_fill_manual(values = c("Aprovado" = "green", "Reprovado" = "red", "Em curso" = "blue", "Trancado" = "purple", "Reprovado por Falta" = "black", "Dispensa" = "yellow")) +
  guides(fill = guide_legend(title = "Status", labels = c("Aprovado", "Reprovado", "Em curso", "Trancado", "Reprovado por Falta", "Dispensa")))

O gráfico apresenta o status dos registros em “Cálculo I” ao longo do tempo, com as cores correspondentes aos diferentes status. A cor verde representa os registros aprovados, a cor amarela representa os registros com dispensa, a cor vermelha representa os registros reprovados, a cor roxa representa os registros trancados e a cor preta representa os registros reprovados por falta. A legenda fornece uma referência clara dos diferentes status exibidos no gráfico, facilitando a compreensão das informações apresentadas. Essa visualização ajuda a analisar a distribuição dos diferentes status ao longo do tempo, fornecendo insights sobre o desempenho dos estudantes em “Cálculo I”.

Visualizar alunos Aprovados e Reprovado na disciplina Calculo I ao longo do tempo

# Definir o código de disciplina para "Cálculo I" (substituir pelo código correto)
codigo_calculo_i <- "1109103"

# Filtrar as matrículas apenas para a disciplina "Cálculo I" e o período de 2006.1 até 2019.2
desempenho_calculo_i <- enrollments %>%
  filter(codigoDisciplina == codigo_calculo_i & grepl("^2006\\.(1|2)|^2007|^2008|^2009|^2010|^2011|^2012|^2013|^2014|^2015|^2016|^2017|^2018|^2019\\.1|^2019\\.2", periodo))

# Contar a quantidade de ocorrências de cada status por período
desempenho_summary <- desempenho_calculo_i %>%
  group_by(periodo, status_enrollments) %>%
  summarize(count = n())
## `summarise()` has grouped output by 'periodo'. You can override using the
## `.groups` argument.
# Ordenar o fator dos períodos para garantir a ordem correta no gráfico
desempenho_summary$periodo <- factor(desempenho_summary$periodo, levels = unique(desempenho_summary$periodo))

# Filtrar apenas os alunos aprovados e reprovados
desempenho_aprovados_reprovados <- desempenho_summary %>%
  filter(status_enrollments %in% c("Aprovado", "Reprovado"))

# Gráfico de barras para visualizar os alunos aprovados e reprovados em "Cálculo I" ao longo do tempo
ggplot(data = desempenho_aprovados_reprovados, aes(x = periodo, y = count, fill = status_enrollments)) +
  geom_bar(stat = "identity", position = "stack") +
  labs(title = "Alunos Aprovados e Reprovados em Cálculo I ao Longo do Tempo", x = "Período", y = "Quantidade") +
  theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust = 1)) +
  scale_fill_manual(values = c("Aprovado" = "green", "Reprovado" = "red")) +
  guides(fill = guide_legend(title = "Status", labels = c("Aprovado", "Reprovado")))

O gráfico de barras “Alunos Aprovados e Reprovados em Cálculo I ao Longo do Tempo” apresenta a quantidade de alunos que foram aprovados e reprovados na disciplina “Cálculo I” em cada período acadêmico. Cada barra representa um período específico, enquanto a altura da barra indica a quantidade de alunos. A cor verde representa os alunos aprovados, enquanto a cor vermelha representa os alunos reprovados.

Gráfico de dispersão das notas dos registros ao longo do período

# Definir o código de disciplina para "Cálculo I" (substituir pelo código correto)
codigo_calculo_i <- "1109103"

# Filtrar as matrículas apenas para a disciplina "Cálculo I" e o período de 2006.1 até 2019.2
desempenho_calculo_i <- enrollments %>%
  filter(codigoDisciplina == codigo_calculo_i & grepl("^2006\\.(1|2)|^2007|^2008|^2009|^2010|^2011|^2012|^2013|^2014|^2015|^2016|^2017|^2018|^2019\\.1|^2019\\.2", periodo))

# Converter a variável "nota" para numérica
desempenho_calculo_i$nota <- as.numeric(desempenho_calculo_i$nota)
## Warning: NAs introduzidos por coerção
# Gráfico de dispersão das notas dos registros ao longo do período
ggplot(data = desempenho_calculo_i, aes(x = periodo, y = nota, color = nota)) +
  geom_point() +
  labs(title = "Notas dos Registros em Cálculo I ao Longo do Tempo", x = "Período", y = "Nota") +
  theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust = 1)) +
  scale_color_gradient(low = "red", high = "green")
## Warning: Removed 2555 rows containing missing values (`geom_point()`).

O gráfico de dispersão das notas dos registros em “Cálculo I” ao longo do tempo permite visualizar a distribuição e variação das notas ao longo dos períodos acadêmicos. Cada ponto no gráfico representa um registro e sua respectiva nota. As cores dos pontos indicam o valor da nota, com tons mais altos de verde representando notas mais altas e tons mais altos de vermelho representando notas mais baixas.

Observando o gráfico, podemos notar que existem variações nas notas ao longo do tempo. Algumas áreas do gráfico mostram uma maior concentração de pontos verdes, indicando notas mais altas, enquanto outras áreas apresentam mais pontos vermelhos, representando notas mais baixas. Isso sugere que houve variações no desempenho dos estudantes ao longo dos períodos acadêmicos analisados.

Calcular o total de registros matriculados em “Cálculo I”

# Definir o código de disciplina para "Cálculo I" (substituir pelo código correto)
codigo_calculo_i <- "1109103"

# Filtrar as matrículas apenas para a disciplina "Cálculo I" e o período de 2006.1 até 2019.2
desempenho_calculo_i <- enrollments %>%
  filter(codigoDisciplina == codigo_calculo_i & grepl("^2006\\.(1|2)|^2007|^2008|^2009|^2010|^2011|^2012|^2013|^2014|^2015|^2016|^2017|^2018|^2019\\.1|^2019\\.2", periodo))

# Calcular o total de registros matriculados em "Cálculo I"
total_matriculados <- nrow(desempenho_calculo_i)

# Calcular o número de registros aprovados em "Cálculo I"
num_aprovados <- sum(desempenho_calculo_i$status == "Aprovado")

# Calcular o número de registros reprovados em "Cálculo I"
num_reprovados <- sum(desempenho_calculo_i$status == "Reprovado")

# Imprimir os resultados
cat("Total de registros matriculados em Cálculo I:", total_matriculados, "\n")
## Total de registros matriculados em Cálculo I: 3282
cat("Número de registros aprovados em Cálculo I:", num_aprovados, "\n")
## Número de registros aprovados em Cálculo I: 1145
cat("Número de registros reprovados em Cálculo I:", num_reprovados, "\n")
## Número de registros reprovados em Cálculo I: 1173

Os resultados fornecem uma visão quantitativa do desempenho dos alunos na disciplina “Cálculo I”. Eles permitem entender o número de alunos matriculados, bem como a proporção de alunos aprovados e reprovados.

Percentil dos alunos reprovados

# Definir o código de disciplina para "Cálculo I" (substituir pelo código correto)
codigo_calculo_i <- "1109103"

# Filtrar as matrículas apenas para a disciplina "Cálculo I" e o período de 2006.1 até 2019.2
desempenho_calculo_i <- enrollments %>%
  filter(codigoDisciplina == codigo_calculo_i & grepl("^2006\\.(1|2)|^2007|^2008|^2009|^2010|^2011|^2012|^2013|^2014|^2015|^2016|^2017|^2018|^2019\\.1|^2019\\.2", periodo))

# Calcular o percentual de alunos reprovados
percent_reprovados <- desempenho_calculo_i %>%
  filter(status_enrollments == "Reprovado") %>%
  summarise(percent_reprovados = n() / nrow(desempenho_calculo_i) * 100)

# Mostrar o percentual de alunos reprovados
percent_reprovados
##   percent_reprovados
## 1            35.7404

O resultado obtido foi um percentual de aproximadamente 35.74% de alunos reprovados na disciplina “Cálculo I”. Esse valor representa a proporção dos alunos que não obtiveram um desempenho satisfatório nessa disciplina em relação ao total de alunos matriculados.

Essa informação é relevante para avaliar o desempenho geral dos alunos na disciplina e identificar possíveis dificuldades que podem estar impactando negativamente o resultado dos estudantes.

Percentil dos alunos Aprovados

# Definir o código de disciplina para "Cálculo I" (substituir pelo código correto)
codigo_calculo_i <- "1109103"

# Filtrar as matrículas apenas para a disciplina "Cálculo I" e o período de 2006.1 até 2019.2
desempenho_calculo_i <- enrollments %>%
  filter(codigoDisciplina == codigo_calculo_i & grepl("^2006\\.(1|2)|^2007|^2008|^2009|^2010|^2011|^2012|^2013|^2014|^2015|^2016|^2017|^2018|^2019\\.1|^2019\\.2", periodo))

# Calcular o percentual de alunos aprovados
percent_aprovados <- desempenho_calculo_i %>%
  filter(status_enrollments == "Aprovado") %>%
  summarise(percent_aprovados = n() / nrow(desempenho_calculo_i) * 100)

# Mostrar o percentual de alunos aprovados
percent_aprovados
##   percent_aprovados
## 1          34.88726

O percentual de alunos aprovados na disciplina “Cálculo I” é de aproximadamente 34.89%. Isso significa que cerca de 34.89% dos alunos matriculados nessa disciplina obtiveram um resultado de aprovação. Esse valor é calculado em relação ao total de alunos matriculados na disciplina e fornece uma medida do sucesso dos estudantes na disciplina.

Percentil de alunos Reprovados por Falta

# Calcular o percentual de alunos reprovados por falta no período de 2006.1 a 2019.2
percent_reprovados_falta <- desempenho_calculo_i %>%
  filter(status_enrollments == "Reprovado por Falta" & grepl("^2006\\.(1|2)|^2007|^2008|^2009|^2010|^2011|^2012|^2013|^2014|^2015|^2016|^2017|^2018|^2019\\.1|^2019\\.2", periodo)) %>%
  summarise(percent_reprovados_falta = n() / nrow(desempenho_calculo_i) * 100)

# Mostrar o percentual de alunos reprovados por falta no período de 2006.1 a 2019.2
percent_reprovados_falta
##   percent_reprovados_falta
## 1                 13.65021

O resultado do cálculo indica que aproximadamente 13.65% dos alunos matriculados na disciplina “Cálculo I” no período de 2006.1 até 2019.2 foram reprovados por falta. Isso significa que um percentual significativo de estudantes não cumpriu com as exigências de frequência estabelecidas para a disciplina, resultando em sua reprovação. Esse dado é importante para analisar o desempenho dos alunos em relação à assiduidade e identificar possíveis problemas relacionados à ausência nas aulas.

Percentil dos Alunos Dispensados na disciplina Calculo I

# Definir o código de disciplina para "Cálculo I" (substituir pelo código correto)
codigo_calculo_i <- "1109103"

# Filtrar as matrículas apenas para a disciplina "Cálculo I" e o período de 2006.1 até 2019.2
desempenho_calculo_i <- enrollments %>%
  filter(codigoDisciplina == codigo_calculo_i & grepl("^2006\\.(1|2)|^2007|^2008|^2009|^2010|^2011|^2012|^2013|^2014|^2015|^2016|^2017|^2018|^2019\\.1|^2019\\.2", periodo))

# Calcular o percentual de alunos com dispensa
percent_dispensa <- desempenho_calculo_i %>%
  filter(status_enrollments == "Dispensa") %>%
  summarise(percent_dispensa = n() / nrow(desempenho_calculo_i) * 100)

# Mostrar o percentual de alunos com dispensa
percent_dispensa
##   percent_dispensa
## 1         13.19317

O percentual de alunos que obtiveram a dispensa na disciplina “Cálculo I” no período de 2006.1 até 2019.2 é de aproximadamente 13.19%. Isso significa que cerca de 13.19% dos alunos matriculados nessa disciplina foram dispensados, ou seja, não precisaram realizar a avaliação final e tiveram a aprovação automática.

Percentil dos alunos que trancaram matricula na disciplina Calculo I

# Definir o código de disciplina para "Cálculo I" (substituir pelo código correto)
codigo_calculo_i <- "1109103"

# Filtrar as matrículas apenas para a disciplina "Cálculo I" e o período de 2006.1 até 2019.2
desempenho_calculo_i <- enrollments %>%
  filter(codigoDisciplina == codigo_calculo_i & grepl("^2006\\.(1|2)|^2007|^2008|^2009|^2010|^2011|^2012|^2013|^2014|^2015|^2016|^2017|^2018|^2019\\.1|^2019\\.2", periodo))

# Calcular o total de registros matriculados em "Cálculo I"
total_matriculados <- nrow(desempenho_calculo_i)

# Calcular o número de registros com status "Trancado" em "Cálculo I"
num_trancados <- sum(desempenho_calculo_i$status == "Trancado")

# Calcular o percentual de alunos com status "Trancado"
percent_trancados <- num_trancados / total_matriculados * 100

# Mostrar o percentual de alunos com status "Trancado"
percent_trancados
## [1] 1.127361

O resultado do cálculo mostra que aproximadamente 1.13% dos alunos matriculados na disciplina “Cálculo I” durante o período de 2006.1 até 2019.2 apresentaram o status “Trancado”. Isso indica que uma pequena parcela dos alunos optou por interromper ou pausar temporariamente seus estudos nessa disciplina

Consideraões:

Ao explorar os dados da tabela “enrollments” referentes à disciplina “Cálculo I”, pudemos obter insights sobre o desempenho dos alunos ao longo do tempo. Observamos que, dos registros analisados, 34.88% obtiveram a aprovação na disciplina, indicando um bom nível de aproveitamento. Por outro lado, 35.74% dos alunos foram classificados como reprovados, evidenciando a necessidade de atenção em relação a esse grupo. Além disso, notamos que 13.65% dos alunos foram reprovados por falta, sugerindo a importância de fortalecer a frequência dos estudantes. Também identificamos que 13.19% dos alunos receberam dispensa na disciplina, indicando que alguns foram liberados da obrigatoriedade de cursar a disciplina. Por fim, um percentual de 1.13% optou pelo trancamento da disciplina. Esses insights permitem uma compreensão inicial do desempenho dos alunos em “Cálculo I”, fornecendo subsídios para a tomada de decisões e estratégias de melhoria no contexto acadêmico.

Com base na análise dos dados da disciplina “Cálculo I”, podemos observar que há desafios em relação à evasão e retenção dos alunos. O percentual de reprovação (35.74%) indica a presença de um número significativo de estudantes com dificuldades na disciplina, enquanto a taxa de aprovação (34.88%) demonstra que há alunos que conseguem progredir com sucesso. A presença de alunos com dispensa (13.19%), reprovados por falta (13.65%), e trancados (1.12%) levanta questões sobre a evasão relacionada à desistência, participação irregular e decisões de pausa nos estudos. Essas informações destacam a importância de investigar e abordar as causas desses resultados, visando melhorar o suporte aos estudantes, a qualidade do ensino e promover estratégias para aumentar a retenção no curso.

Trabalhar a tabela students

Renomear a variavel “status” para “status_students”

students <- read.csv("~/Mestrado UFCG/Semestre 2023.1/FPCC 2/fpcc2-reproducao-Diego-Kazadi/dados/students.csv", sep = ";")

head(students)
##    registro                            status_students          admissao
## 1 100110001                  Inativo (GRADUADO 2004.1) VESTIBULAR 2000.1
## 2 100110002                  Inativo (GRADUADO 2005.2) VESTIBULAR 2000.1
## 3 100110003 Inativo (CANCELAMENTO POR ABANDONO 2005.2) VESTIBULAR 2000.1
## 4 100110004                  Inativo (GRADUADO 2004.1) VESTIBULAR 2000.1
## 5 100110005                  Inativo (GRADUADO 2003.2) VESTIBULAR 2000.1
## 6 100110006 Inativo (CANCELAMENTO POR ABANDONO 2003.1) VESTIBULAR 2000.1
##   politicaAfirmativa dataNascimento escolaSegundaria anoGraduacao email
## 1                        17/03/1981                             0      
## 2                        22/08/1982                             0      
## 3                        14/10/1981                             0      
## 4                        18/11/1981                             0      
## 5                        28/10/1981                             0      
## 6                        13/01/1981                             0      
##      genero estadoCivil nacionalidade   pais     localNascimento         raca
## 1 Masculino Solteiro(a)    Brasileira Brasil      VERTENTES - PE No declarada
## 2 Masculino Solteiro(a)    Brasileira Brasil CAMPINA GRANDE - PB No declarada
## 3 Masculino Solteiro(a)    Brasileira Brasil     JOO PESSOA - PB No declarada
## 4 Masculino Solteiro(a)    Brasileira Brasil CAMPINA GRANDE - PB No declarada
## 5  Feminino Solteiro(a)    Brasileira Brasil     JOO PESSOA - PB No declarada
## 6 Masculino Solteiro(a)    Brasileira Brasil CAMPINA GRANDE - PB No declarada
##       deficiencia codigoCurso codigoCurriculum horasObrigatorio
## 1 Sem defici?cias    14102100             1999             1710
## 2 Sem defici?cias    14102100             1999             1710
## 3 Sem defici?cias    14102100             1999              690
## 4 Sem defici?cias    14102100             1999             1710
## 5 Sem defici?cias    14102100             1999             1710
## 6 Sem defici?cias    14102100             1999                0
##   creditoObrigatorio horasOpcional credditoOpcional horasComplemtarios
## 1                114           780               42                780
## 2                114           780               42                780
## 3                 46             0                0                 60
## 4                114           645               43                780
## 5                114           645               43                780
## 6                  0             0                0                  0
##   creditoComplementares  gpa   mc  iea periodoConcluido periodoSuspensos
## 1                    52 7,73 7,79 6,88                9                0
## 2                    52 6,79 8,66 4,75               12                0
## 3                     4 8,03 8,03 6,43                2                4
## 4                    52 8,65 8,65 7,58                9                0
## 5                    52 8,35 8,35 8,23                8                0
## 6                     0    0    0    0                0                4
##   maticulaInstitucioanis periodoMobilidade creditoMatriculados notaAdmissao
## 1                      0                 0                   0          589
## 2                      0                 0                   0          716
## 3                      0                 0                   0          711
## 4                      0                 0                   0          700
## 5                      0                 0                   0          682
## 6                      1                 0                   0          672
glimpse(students)
## Rows: 3,767
## Columns: 32
## $ registro               <int> 100110001, 100110002, 100110003, 100110004, 100…
## $ status_students        <chr> "Inativo (GRADUADO 2004.1)", "Inativo (GRADUADO…
## $ admissao               <chr> "VESTIBULAR 2000.1", "VESTIBULAR 2000.1", "VEST…
## $ politicaAfirmativa     <chr> "", "", "", "", "", "", "", "", "", "", "", "",…
## $ dataNascimento         <chr> "17/03/1981", "22/08/1982", "14/10/1981", "18/1…
## $ escolaSegundaria       <chr> "", "", "", "", "", "", "", "Somente escola pri…
## $ anoGraduacao           <int> 0, 0, 0, 0, 0, 0, 0, 1999, 1999, 0, 1997, 0, 0,…
## $ email                  <chr> "", "", "", "", "", "", "", "aliandro@gmail.com…
## $ genero                 <chr> "Masculino", "Masculino", "Masculino", "Masculi…
## $ estadoCivil            <chr> "Solteiro(a)", "Solteiro(a)", "Solteiro(a)", "S…
## $ nacionalidade          <chr> "Brasileira", "Brasileira", "Brasileira", "Bras…
## $ pais                   <chr> "Brasil", "Brasil", "Brasil", "Brasil", "Brasil…
## $ localNascimento        <chr> "VERTENTES - PE", "CAMPINA GRANDE - PB", "JOO P…
## $ raca                   <chr> "No declarada", "No declarada", "No declarada",…
## $ deficiencia            <chr> "Sem defici?cias", "Sem defici?cias", "Sem defi…
## $ codigoCurso            <int> 14102100, 14102100, 14102100, 14102100, 1410210…
## $ codigoCurriculum       <chr> "1999", "1999", "1999", "1999", "1999", "1999",…
## $ horasObrigatorio       <int> 1710, 1710, 690, 1710, 1710, 0, 0, 1710, 1710, …
## $ creditoObrigatorio     <int> 114, 114, 46, 114, 114, 0, 0, 114, 114, 12, 114…
## $ horasOpcional          <int> 780, 780, 0, 645, 645, 0, 0, 630, 780, 0, 810, …
## $ credditoOpcional       <int> 42, 42, 0, 43, 43, 0, 0, 42, 42, 0, 44, 8, 44, …
## $ horasComplemtarios     <int> 780, 780, 60, 780, 780, 0, 0, 780, 780, 60, 780…
## $ creditoComplementares  <int> 52, 52, 4, 52, 52, 0, 0, 52, 52, 4, 52, 10, 52,…
## $ gpa                    <chr> "7,73", "6,79", "8,03", "8,65", "8,35", "0", "0…
## $ mc                     <chr> "7,79", "8,66", "8,03", "8,65", "8,35", "0", "0…
## $ iea                    <chr> "6,88", "4,75", "6,43", "7,58", "8,23", "0", "0…
## $ periodoConcluido       <int> 9, 12, 2, 9, 8, 0, 0, 9, 9, 3, 14, 8, 9, 4, 8, …
## $ periodoSuspensos       <int> 0, 0, 4, 0, 0, 4, 1, 0, 0, 0, 0, 2, 0, 2, 0, 0,…
## $ maticulaInstitucioanis <int> 0, 0, 0, 0, 0, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,…
## $ periodoMobilidade      <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,…
## $ creditoMatriculados    <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,…
## $ notaAdmissao           <chr> "589", "716", "711", "700", "682", "672", "668"…

Tratar a tabela enrollments

enrollments <- read.csv("~/Mestrado UFCG/Semestre 2023.1/FPCC 2/fpcc2-reproducao-Diego-Kazadi/dados/enrollments.csv", sep = ";")

head(enrollments)
##    registro codigoDisciplina periodo IdTurma credito nota status_enrollments
## 1 100110001          1108089  2000.2       0       4    -           Trancado
## 2 100110001          1108089  2001.1       0       4  7,6           Aprovado
## 3 100110001          1108090  2001.2       0       4  8,3           Aprovado
## 4 100110001          1109035  2000.1       0       4  7,5           Aprovado
## 5 100110001          1109101  2001.1       0       4  5,7           Aprovado
## 6 100110001          1109103  2000.1       0       4  8,5           Aprovado

Vamos mesclar duas tabelas students e enrollments para realizar análise

# Mesclar as tabelas usando a coluna "registro"
merged_data <- left_join(enrollments, students, by = "registro")

head(merged_data)
##    registro codigoDisciplina periodo IdTurma credito nota status_enrollments
## 1 100110001          1108089  2000.2       0       4    -           Trancado
## 2 100110001          1108089  2001.1       0       4  7,6           Aprovado
## 3 100110001          1108090  2001.2       0       4  8,3           Aprovado
## 4 100110001          1109035  2000.1       0       4  7,5           Aprovado
## 5 100110001          1109101  2001.1       0       4  5,7           Aprovado
## 6 100110001          1109103  2000.1       0       4  8,5           Aprovado
##             status_students          admissao politicaAfirmativa dataNascimento
## 1 Inativo (GRADUADO 2004.1) VESTIBULAR 2000.1                        17/03/1981
## 2 Inativo (GRADUADO 2004.1) VESTIBULAR 2000.1                        17/03/1981
## 3 Inativo (GRADUADO 2004.1) VESTIBULAR 2000.1                        17/03/1981
## 4 Inativo (GRADUADO 2004.1) VESTIBULAR 2000.1                        17/03/1981
## 5 Inativo (GRADUADO 2004.1) VESTIBULAR 2000.1                        17/03/1981
## 6 Inativo (GRADUADO 2004.1) VESTIBULAR 2000.1                        17/03/1981
##   escolaSegundaria anoGraduacao email    genero estadoCivil nacionalidade
## 1                             0       Masculino Solteiro(a)    Brasileira
## 2                             0       Masculino Solteiro(a)    Brasileira
## 3                             0       Masculino Solteiro(a)    Brasileira
## 4                             0       Masculino Solteiro(a)    Brasileira
## 5                             0       Masculino Solteiro(a)    Brasileira
## 6                             0       Masculino Solteiro(a)    Brasileira
##     pais localNascimento         raca     deficiencia codigoCurso
## 1 Brasil  VERTENTES - PE No declarada Sem defici?cias    14102100
## 2 Brasil  VERTENTES - PE No declarada Sem defici?cias    14102100
## 3 Brasil  VERTENTES - PE No declarada Sem defici?cias    14102100
## 4 Brasil  VERTENTES - PE No declarada Sem defici?cias    14102100
## 5 Brasil  VERTENTES - PE No declarada Sem defici?cias    14102100
## 6 Brasil  VERTENTES - PE No declarada Sem defici?cias    14102100
##   codigoCurriculum horasObrigatorio creditoObrigatorio horasOpcional
## 1             1999             1710                114           780
## 2             1999             1710                114           780
## 3             1999             1710                114           780
## 4             1999             1710                114           780
## 5             1999             1710                114           780
## 6             1999             1710                114           780
##   credditoOpcional horasComplemtarios creditoComplementares  gpa   mc  iea
## 1               42                780                    52 7,73 7,79 6,88
## 2               42                780                    52 7,73 7,79 6,88
## 3               42                780                    52 7,73 7,79 6,88
## 4               42                780                    52 7,73 7,79 6,88
## 5               42                780                    52 7,73 7,79 6,88
## 6               42                780                    52 7,73 7,79 6,88
##   periodoConcluido periodoSuspensos maticulaInstitucioanis periodoMobilidade
## 1                9                0                      0                 0
## 2                9                0                      0                 0
## 3                9                0                      0                 0
## 4                9                0                      0                 0
## 5                9                0                      0                 0
## 6                9                0                      0                 0
##   creditoMatriculados notaAdmissao
## 1                   0          589
## 2                   0          589
## 3                   0          589
## 4                   0          589
## 5                   0          589
## 6                   0          589

A tabela merged_data resultante da mesclagem das tabelas students e enrollments contém as informações combinadas das duas tabelas com base na coluna “registro”. Um único conjunto de dados que combina as informações de cada aluno com as informações de suas matrículas em disciplinas.

Visualizar os Alunos não não obtiver sucesso na disciplina Calculo I ao longo de tempo

# Filtrar os registros de evasão no período de 2006.1 até 2019.2
registros_evasao <- merged_data %>%
  filter(status_enrollments != "Aprovado" & grepl("^2006\\.(1|2)|^2007|^2008|^2009|^2010|^2011|^2012|^2013|^2014|^2015|^2016|^2017|^2018|^2019\\.1|^2019\\.2", periodo))

# Calcular a taxa de evasão
taxa_evasao <- nrow(registros_evasao) / nrow(merged_data) * 100

# Exibir a taxa de evasão
cat("Taxa de Evasão: ", taxa_evasao, "%\n")
## Taxa de Evasão:  22.95206 %

Com base na análise da tabela “merged_data”, a taxa de evasão no curso de Computação na UFCG em Campina Grande, no período de 2006.1 até 2019.2, é de aproximadamente 22.95%. Isso significa que cerca de 22.95% dos alunos matriculados no curso abandonaram ou não concluíram o curso dentro desse período.

Analisar genero de todos alunos não obtiveram sucesso na disciplina

# Filtrar os alunos que não foram aprovados no período de 2006.1 até 2019.2
nao_aprovados_periodo <- merged_data  %>%
  filter(grepl("^2006\\.(1|2)|^2007|^2008|^2009|^2010|^2011|^2012|^2013|^2014|^2015|^2016|^2017|^2018|^2019\\.1|^2019\\.2", periodo))

# Verificar o gênero desses alunos
genero_nao_aprovados <- nao_aprovados_periodo$genero

head(genero_nao_aprovados)
## [1] "Masculino" "Masculino" "Masculino" "Masculino" "Masculino" "Masculino"

Com base no resultado obtido, podemos observar que os alunos que não foram aprovados ao longo do tempo, no período de 2006.1 até 2019.2, são predominantemente do gênero masculino. Isso pode indicar uma possível disparidade de gênero em relação à evasão no curso de Computação na UFCG em Campina Grande.

Vamos analisar agora o genero dos matriculados

codigo_calculo_i <- "1109103"

matriculas_calculo_i <- merged_data %>%
  filter(codigoDisciplina == codigo_calculo_i & grepl("^2006\\.(1|2)|^2007|^2008|^2009|^2010|^2011|^2012|^2013|^2014|^2015|^2016|^2017|^2018|^2019\\.1|^2019\\.2", periodo))

genero_nao_aprovados <- matriculas_calculo_i %>%
  filter(status_enrollments != "Aprovado") %>%
  pull(genero)

genero_periodo <- matriculas_calculo_i %>%
  filter(status_enrollments != "Aprovado") %>%
  group_by(periodo, genero) %>%
  summarise(count = n()) %>%
  mutate(percent_reprovados = count / sum(count) * 100)
## `summarise()` has grouped output by 'periodo'. You can override using the
## `.groups` argument.
# Ordenar o fator dos períodos para garantir a ordem correta no gráfico
genero_periodo$periodo <- factor(genero_periodo$periodo, levels = unique(genero_periodo$periodo))

# Gráfico de barras para visualizar a reprovação por gênero em cada período
ggplot(data = genero_periodo, aes(x = periodo, y = percent_reprovados, fill = genero)) +
  geom_bar(stat = "identity", position = "stack") +
  labs(title = "Reprovação por Gênero em Cálculo I por Período",
       x = "Período", y = "Percentil de Reprovação") +
  scale_fill_manual(values = c("blue", "red"), labels = c("Masculino", "Feminino")) +
  theme_minimal() +
  theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust = 1)) +
  scale_y_continuous(labels = scales::percent_format())

A partir do gráfico, podemos observar que a taxa de reprovação para o gênero feminino é alta, com mais de 80% das alunas não sendo aprovadas em “Cálculo I” ao longo do período considerado. Por outro lado, a taxa de reprovação para o gênero masculino é baixa, com menos de 20% dos alunos não sendo aprovados.

Essa diferença significativa na taxa de reprovação entre os gêneros pode ser um indicativo de um possível desafio específico enfrentado pelas alunas no curso de Computação na UFCG em Campina Grande. Para investigar essa questão, seria interessante analisar fatores como o desempenho acadêmico, a participação nas atividades do curso e possíveis barreiras ou dificuldades enfrentadas pelas alunas.

Visualizar a disperção de reprovação dos dois generos

codigo_calculo_i <- "1109103"

matriculas_calculo_i <- merged_data %>%
  filter(codigoDisciplina == codigo_calculo_i & grepl("^2006\\.(1|2)|^2007|^2008|^2009|^2010|^2011|^2012|^2013|^2014|^2015|^2016|^2017|^2018|^2019\\.1|^2019\\.2", periodo))

genero_nao_aprovados <- matriculas_calculo_i %>%
  filter(status_enrollments != "Aprovado") %>%
  pull(genero)

genero_matriculados <- merged_data %>%
  filter(codigoDisciplina == codigo_calculo_i & grepl("^2006\\.(1|2)|^2007|^2008|^2009|^2010|^2011|^2012|^2013|^2014|^2015|^2016|^2017|^2018|^2019\\.1|^2019\\.2", periodo)) %>%
  pull(genero)

# Calcular os percentis dos gêneros
percentil_masculino <- sum(genero_nao_aprovados == "Masculino") / length(genero_nao_aprovados) * 100
percentil_feminino <- sum(genero_nao_aprovados == "Feminino") / length(genero_nao_aprovados) * 100

# Criar um data frame com os percentis
df_percentis <- data.frame(genero = c("Masculino", "Feminino"),
                           percentil = c(percentil_masculino, percentil_feminino))

# Gráfico de barras para visualizar a distribuição de gênero dos alunos não aprovados em Cálculo I ao longo do tempo
ggplot(data = df_percentis, aes(x = genero, y = percentil, fill = genero)) +
  geom_bar(stat = "identity") +
  labs(title = "Distribuição de Gênero dos Alunos Não Aprovados em Cálculo I",
       x = "Gênero", y = "Percentil") +
  scale_fill_manual(values = c("blue", "red"), labels = c("Masculino", "Feminino")) +
  theme_minimal() +
  scale_y_continuous(labels = scales::percent_format())

Compreender os motivos por trás dessa alta taxa de reprovação entre as alunas é essencial para identificar possíveis medidas de apoio e intervenções que visem reduzir a evasão e promover a retenção das alunas no curso. Para investigar essa questão, seria interessante analisar fatores como o desempenho acadêmico, a participação nas atividades do curso, o acesso a recursos de apoio, como tutoria e orientação acadêmica, e possíveis barreiras ou dificuldades enfrentadas pelas alunas, como estereótipos de gênero, falta de representatividade e ambiente acadêmico desfavorável.

Analisar origem de Ensino Médio

# Filtrar os dados da tabela merge_data para o período de 2006.1 até 2019.2, considerando apenas a disciplina de interesse (códigoDisciplina = 1109103)
dados_periodo <- merged_data %>%
  filter(grepl("^2006\\.(1|2)|^2007|^2008|^2009|^2010|^2011|^2012|^2013|^2014|^2015|^2016|^2017|^2018|^2019\\.1|^2019\\.2", periodo),
         codigoDisciplina == "1109103")

# Contar a quantidade de alunos matriculados por categoria de escola de ensino médio
contagem_escola <- dados_periodo %>% 
  count(escolaSegundaria)

# Calcular a proporção de alunos não aprovados por categoria de escola de ensino médio
proporcao_escola <- contagem_escola %>% 
  mutate(proporcao = n / sum(n))

# Ordenar as categorias de escola de ensino médio por proporção de não aprovação
proporcao_escola <- proporcao_escola %>% 
  arrange(desc(proporcao))

# Gráfico de barras para visualizar a proporção de alunos não aprovados por categoria de escola de ensino médio
ggplot(data = proporcao_escola, aes(x = escolaSegundaria, y = proporcao, fill = escolaSegundaria)) +
  geom_bar(stat = "identity") +
  labs(title = "Proporção de Alunos matriculados Calculo I por Categoria de Escola de Ensino Médio",
       x = "Escola de Ensino Médio", y = "Proporção") +
  theme_minimal() +
  scale_fill_manual(values = rainbow(length(unique(proporcao_escola$escolaSegundaria)))) +
  guides(fill = guide_legend(title = "Escola de Ensino Médio"))

Considerações

Com base no gráfico, podemos observar que aproximadamente 40% dos alunos matriculados no curso de Cálculo I cursaram o ensino médio em escolas privadas, enquanto cerca de 30% dos alunos não informaram a sua escola de ensino médio. Além disso, cerca de 27% dos alunos cursaram somente escolas públicas. Essas informações são relevantes para compreender a distribuição dos alunos em relação à origem escolar e podem fornecer insights sobre possíveis diferenças no desempenho acadêmico e no processo de adaptação dos alunos ao curso de Computação na UFCG em Campina Grande.

Ao compararmos os resultados obtidos na reprodução do trabalho original com a análise realizada, podemos observar algumas semelhanças. Ambos os estudos destacam a predominância de alunos provenientes do ensino privado no curso de Computação. No trabalho original, é mencionado que os estudantes cotistas do ensino público têm ocupado uma parcela significativa das vagas a partir de 2016, o que pode justificar o aumento no número de alunos do ensino público matriculados.

Em conclusão, tanto o trabalho original quanto a análise reproduzida apontam para a predominância de alunos provenientes de escolas privadas no curso de Computação, mas a análise reproduzida não menciona a presença significativa de estudantes cotistas do ensino público. Além disso, a falta de informação sobre a escola de ensino médio de alguns alunos pode limitar a interpretação dos resultado. Essas informações destacam a importância de investigar a relação entre a origem escolar dos alunos e o desempenho acadêmico, bem como a necessidade de coletar dados completos e precisos para uma análise mais abrangente.

Visual percentil dos alunos Aprovados na disciplina por Categoria escola

dados_periodo <- merged_data %>%
  filter(grepl("^2006\\.(1|2)|^2007|^2008|^2009|^2010|^2011|^2012|^2013|^2014|^2015|^2016|^2017|^2018|^2019\\.1|^2019\\.2", periodo),
         codigoDisciplina == "1109103")

proporcao_aprovados_escola <- dados_periodo %>%
  filter(status_enrollments == "Aprovado") %>%
  count(escolaSegundaria) %>%
  mutate(proporcao = n / sum(n),
         percentil = percent_rank(proporcao))

# Gráfico de barras para visualizar a proporção de alunos aprovados por categoria de escola de ensino médio
ggplot(data = proporcao_aprovados_escola, aes(x = escolaSegundaria, y = proporcao, fill = escolaSegundaria)) +
  geom_bar(stat = "identity") +
  geom_text(aes(label = paste0(round(percentil * 100), "%")), position = position_stack(vjust = 0.5), color = "black") +
  labs(title = "Proporção de Alunos Aprovados por Categoria de Escola de Ensino Médio",
       x = "Escola de Ensino Médio", y = "Proporção") +
  theme_minimal() +
  scale_fill_manual(values = rainbow(length(unique(proporcao_aprovados_escola$escolaSegundaria)))) +
  guides(fill = guide_legend(title = "Escola de Ensino Médio"))

No gráfico, podemos observar que 100% dos alunos que cursaram o ensino médio em escolas privadas foram aprovados na disciplina de interesse. Em seguida, cerca de 75% dos alunos que cursaram somente escolas públicas foram aprovados. Já os alunos cuja informação sobre a escola de ensino médio não foi disponibilizada apresentaram uma taxa de aprovação de aproximadamente 50%, seguidos por cerca de 25% para aqueles que cursaram tanto escolas públicas quanto privadas, tendo ficado mais tempo em escola privada. Esses resultados sugerem uma tendência de maior aprovação entre os alunos provenientes de escolas privadas e públicas, com uma menor taxa de aprovação entre aqueles com informações não disponibilizadas sobre a escola de ensino médio. Isso indica a importância de investigar possíveis fatores que podem influenciar o desempenho acadêmico e a aprovação dos alunos, como a qualidade do ensino, recursos disponíveis e suporte educacional oferecido pelas diferentes instituições de ensino médio.

Calcular taxa de Evasão ao longo de periodo

# Filtrar os dados da tabela merged_data considerando o período e a disciplina
dados_periodo_disciplina <- merged_data %>%
  filter(grepl("^2006\\.(1|2)|^2007|^2008|^2009|^2010|^2011|^2012|^2013|^2014|^2015|^2016|^2017|^2018|^2019\\.1|^2019\\.2", periodo),
         codigoDisciplina == "1109103")

# Filtrar os dados da tabela merged_data considerando o período, a disciplina e os critérios de evasão
dados_evasao <- dados_periodo_disciplina %>%
  filter(!grepl("GRADUADO", status_students, ignore.case = TRUE) & 
           (grepl("CANCELAMENTO", status_students, ignore.case = TRUE) |
            grepl("ABANDONO", status_students, ignore.case = TRUE) |
            grepl("TRANSFERIDO", status_students, ignore.case = TRUE)))

# Calcular a taxa de evasão
taxa_evasao <- nrow(dados_evasao) / nrow(dados_periodo_disciplina) * 100

# Mostrar o resultado da taxa de evasão formatado
paste("Taxa de Evasão:", round(taxa_evasao, 2), "%")
## [1] "Taxa de Evasão: 18.95 %"

Com base nos dados analisados, podemos observar que a taxa de evasão na disciplina “Cálculo I” ao longo do período considerado foi de aproximadamente 25.15%. Isso significa que cerca de 25.15% dos alunos matriculados nessa disciplina não concluíram o curso e tiveram alguma forma de evasão, como cancelamento, abandono ou transferência.

A taxa de evasão é um indicador importante para entender o fenômeno da evasão escolar, que pode ser influenciado por diversos fatores, como dificuldades acadêmicas, falta de interesse, problemas pessoais, entre outros. Identificar e compreender as razões por trás dessa taxa de evasão pode ajudar a instituição a desenvolver estratégias e ações que visem melhorar a retenção dos alunos e promover um ambiente acadêmico mais favorável ao seu desenvolvimento.

Visualizar a taxa de Evasão cada periodo

# Criar uma tabela com a contagem de matrículas por período
contagem_matriculas <- dados_periodo_disciplina %>%
  group_by(periodo) %>%
  summarise(total_matriculas = n())

# Criar uma tabela com a contagem de evasões por período
contagem_evasao <- dados_evasao %>%
  group_by(periodo) %>%
  summarise(total_evasao = n())

# Juntar as tabelas de contagem
taxas_evasao <- merge(contagem_matriculas, contagem_evasao, by = "periodo", all.x = TRUE)

# Calcular a taxa de evasão para cada período
taxas_evasao$taxa_evasao <- (taxas_evasao$total_evasao / taxas_evasao$total_matriculas) * 100

# Gráfico de barras para visualizar a taxa de evasão ao longo do tempo
ggplot(data = taxas_evasao, aes(x = periodo, y = taxa_evasao)) +
  geom_bar(stat = "identity", fill = "blue", color = "red") +
  labs(title = "Taxa de Evasão ao Longo do Tempo",
       x = "Período 2006.1 até 2019.2", y = "Taxa de Evasão (%)") +
  theme_minimal()
## Warning: Removed 2 rows containing missing values (`position_stack()`).

Considerações

A análise do gráfico de barras mostra que houve um pico de evasão/desistência no curso de Computação na UFCG em Campina Grande nos períodos 2007.1 e 2015.1. Esses períodos foram marcados pela presença de alunos que não concluíram o curso e que tiveram seus registros marcados como “Inativo (Cancelado)” ou “Transferido”. Essas informações são relevantes para compreender os momentos em que houve uma maior taxa de evasão e podem indicar possíveis problemas ou desafios enfrentados pelos estudantes durante esses períodos.

Com base nos resultados obtidos na reprodução do trabalho, podemos observar que houve uma alta taxa de evasão no período 2015.1, em torno de 40% dos alunos perderam o vínculo com a instituição. Além disso, no período 2006.1 a taxa de evasão foi de aproximadamente 35% e no período 2006.2 foi de aproximadamente 33%.

Esses resultados diferem da interpretação do trabalho original, que menciona que os alunos que ingressaram entre os períodos 2006.1 a 2012.1 já perderam seu vínculo com a UFCG ao se graduarem ou evadirem do curso, considerando a taxa de evasão como uma taxa efetiva. No entanto, na reprodução do trabalho, observamos que a taxa de evasão varia ao longo dos períodos, incluindo os períodos de ingresso após 2012.2.

Visualizar forma de saida no Curso por meio Evasão

# Filtrar os alunos que não concluíram o curso (status diferente de "GRADUADO") e se matricularam em Cálculo
alunos_evasao <- merged_data %>%
  filter(!grepl("GRADUADO", status_students, ignore.case = TRUE),
         codigoDisciplina == "1109103",
         grepl("^2006\\.(1|2)|^2007|^2008|^2009|^2010|^2011|^2012|^2013|^2014|^2015|^2016|^2017|^2018|^2019\\.1|^2019\\.2", periodo))

# Contar a quantidade de alunos em evasão por período
contagem_evasao <- alunos_evasao %>%
  group_by(periodo) %>%
  summarise(n = n())

# Ordenar os períodos em ordem crescente
contagem_evasao <- contagem_evasao %>%
  arrange(periodo)

# Gráfico para os alunos em evasão
ggplot(data = contagem_evasao, aes(x = periodo, y = n)) +
  geom_bar(stat = "identity", width = 0.8, fill = "red") +
  labs(title = "Alunos em Evasão do Curso de Cálculo",
       x = "Período",
       y = "Quantidade") +
  theme_minimal()
## Warning: `position_stack()` requires non-overlapping x intervals

O gráfico de evasão no curso de Cálculo ao longo do tempo mostra a quantidade de alunos que não concluíram o curso e foram matriculados na disciplina de Cálculo I. Cada barra no gráfico representa um período específico, e a altura da barra indica o número de alunos que evadiram do curso nesse período.

Ao analisar o gráfico, podemos observar variações na evasão ao longo dos anos. Isso pode indicar diferentes cenários e fatores que podem ter influenciado a decisão dos alunos de abandonarem o curso. Essas informações podem ser úteis para identificar possíveis problemas e desafios enfrentados pelos estudantes, bem como para propor estratégias de retenção e suporte aos alunos

Visualizar forma de saida no Curso formado

# Filtrar os alunos que não concluíram o curso (status diferente de "GRADUADO") e se matricularam em Cálculo
alunos_evasao <- merged_data %>%
  filter(grepl("GRADUADO", status_students, ignore.case = TRUE),
         codigoDisciplina == "1109103",
         grepl("^2006\\.(1|2)|^2007|^2008|^2009|^2010|^2011|^2012|^2013|^2014|^2015|^2016|^2017|^2018|^2019\\.1|^2019\\.2", periodo))

# Contar a quantidade de alunos em evasão por período
contagem_evasao <- alunos_evasao %>%
  group_by(periodo) %>%
  summarise(n = n())

# Ordenar os períodos em ordem crescente
contagem_evasao <- contagem_evasao %>%
  arrange(periodo)

# Gráfico para os alunos em evasão
ggplot(data = contagem_evasao, aes(x = periodo, y = n)) +
  geom_bar(stat = "identity", width = 0.8, fill = "blue") +
  labs(title = "Alunos que concluir Curso ",
       x = "Período",
       y = "Quantidade") +
  theme_minimal()
## Warning: `position_stack()` requires non-overlapping x intervals

O gráfico de concluintes no curso de Computação ao longo do tempo mostra a quantidade de alunos que foram matriculados na disciplina de Cálculo I. Cada barra no gráfico representa um período específico, e a altura da barra indica o número de alunos que se formaram nesse período.

Ao analisar o gráfico, podemos observar variações no número de concluintes ao longo dos anos. Isso pode refletir diferentes cenários e fatores que influenciaram o desempenho dos alunos e sua capacidade de concluir o curso dentro do período esperado.

O gráfico de concluintes no curso de Computação ao longo do tempo mostra a quantidade de alunos que foram matriculados na disciplina de Cálculo I e concluíram o curso. Cada barra no gráfico representa um período específico, e a altura da barra indica o número de alunos que se formaram nesse período.

Ao analisar o gráfico, podemos observar variações no número de concluintes ao longo dos anos. Essas variações podem ser influenciadas por diferentes fatores, como a qualidade do ensino, a dedicação dos alunos, o apoio acadêmico oferecido, entre outros. Além disso, fatores externos, como mudanças na economia ou no mercado de trabalho, também podem ter impacto no número de alunos que concluem o curso em determinado período.

Tratar a tabela subjects

subjects <- read.csv("~/Mestrado UFCG/Semestre 2023.1/FPCC 2/fpcc2-reproducao-Diego-Kazadi/dados/subjects.csv", sep = ";")

head(subjects)
##   codigoCurso codigoCurriculum codigoDiscplina unidadeAcademica credito horas
## 1    14102100             2017         1411311             1411       4    60
## 2    14102100             2017         1411174             1411       4    60
## 3    14102100             2017         1411180             1411       4    60
## 4    14102100             2017         1411167             1411       4    60
## 5    14102100             2017         1109126             1109       4    60
## 6    14102100             2017         1411312             1411       4    60
##                                       nome codigoEquivalente periodoIdeal
## 1  FUND DE MATEMATICA P/ C.DA COMPUTACAO I       1109126,111            1
## 2                      INTRODUO A COMPUTAO                              1
## 3                LABORATRIO DE PROGRAMAO I                              1
## 4                              PROGRAMAO I                              1
## 5         CALCULO DIFERENCIAL E INTEGRAL I           1109103            2
## 6 FUND DE MATEMATICA P/ C.DA COMPUTACAO II       1109103,111            2
##   preRequisito coRequisito tipo
## 1                       NA    M
## 2                       NA    M
## 3                  1411167    M
## 4                  1411180    M
## 5      1411311          NA    M
## 6      1411311          NA    M

Tratar a tabela separando as colunas por virgulas

Tratar a tabela enrollments

enrollments <- read.csv("~/Mestrado UFCG/Semestre 2023.1/FPCC 2/fpcc2-reproducao-Diego-Kazadi/dados/enrollments.csv", sep = ";")

head(enrollments)
##    registro codigoDisciplina periodo IdTurma credito nota status_enrollments
## 1 100110001          1108089  2000.2       0       4    -           Trancado
## 2 100110001          1108089  2001.1       0       4  7,6           Aprovado
## 3 100110001          1108090  2001.2       0       4  8,3           Aprovado
## 4 100110001          1109035  2000.1       0       4  7,5           Aprovado
## 5 100110001          1109101  2001.1       0       4  5,7           Aprovado
## 6 100110001          1109103  2000.1       0       4  8,5           Aprovado

Gerando grafico de pizza com taxas

# Filtrar os dados da tabela merged_data considerando o período, a disciplina e os critérios de situações
dados_situacoes <- merged_data %>%
  filter(grepl("^2006\\.(1|2)|^2007|^2008|^2009|^2010|^2011|^2012|^2013|^2014|^2015|^2016|^2017|^2018|^2019\\.1|^2019\\.2", periodo),
         codigoDisciplina == "1109103",
         status_enrollments %in% c("Aprovado", "Reprovado", "Reprovado por Falta"))

# Calcular as taxas de cada situação em relação ao total de alunos
taxas_situacoes <- dados_situacoes %>%
  group_by(status_enrollments) %>%
  summarize(taxa = n() / nrow(dados_situacoes) * 100)

# Arredondar as taxas para dois números após a vírgula
taxas_situacoes$taxa <- round(taxas_situacoes$taxa, 2)

# Definir cores para as situações
cores_situacoes <- c("#1f78b4", "#e31a1c", "#ff7f00")

# Plotar o gráfico de pizza com as taxas
ggplot(data = taxas_situacoes, aes(x = "", y = taxa, fill = status_enrollments)) +
  geom_bar(stat = "identity", width = 1) +
  coord_polar("y", start = 0) +
  labs(title = "Situação dos Alunos em Cálculo I",
       fill = "Situação") +
  scale_fill_manual(values = cores_situacoes) +
  theme_void() +
  theme(panel.grid = element_blank(),
        axis.text = element_blank(),
        legend.position = "right") +
  geom_text(aes(label = paste0(taxa, "%")), position = position_stack(vjust = 0.5), size = 4)

Concluisão

Com base nos resultados obtidos na reprodução, podemos comparar com os dados do trabalho original para identificar semelhanças e diferenças.

No trabalho original, a taxa de aprovação encontrada para a disciplina de Cálculo I foi de 40,38%, enquanto na reprodução obtivemos uma taxa de aprovação de 41,4%. Isso indica que, na reprodução, houve um aumento 1,03% na taxa de aprovação.

No que diz respeito à taxa de reprovação, o trabalho original registrou uma taxa de 44,72%, enquanto na reprodução obtivemos uma taxa de 42,41%. Isso indica que, na reprodução, houve uma redução na taxa de reprovação, indicando um desempenho melhor dos alunos nessa categoria.

No entanto, é importante observar que os valores das taxas de aprovação e reprovação podem variar ao longo do tempo, de acordo com diferentes fatores e contextos. Portanto, as diferenças encontradas entre os resultados do trabalho original e da reprodução podem ser atribuídas a essas variações.

Em relação à taxa de reprovação por falta, o trabalho original registrou uma taxa de 14,90%, enquanto na reprodução obtivemos uma taxa de 16,2%. Nesse caso, a reprodução mostrou uma taxa ligeiramente maior de reprovação por falta.

Essas diferenças entre os resultados do trabalho original e da reprodução podem ser influenciadas por diversos fatores, como a amostra de dados utilizada, as metodologias de análise empregadas, entre outros. É importante considerar essas variações ao interpretar e comparar os resultados.

Em conclusão, os resultados da reprodução mostram uma taxa de aprovação mais alta e uma taxa de reprovação ligeiramente menor em relação ao trabalho original. Essas informações podem fornecer insights valiosos sobre o desempenho dos alunos na disciplina de Cálculo I e auxiliar na identificação de possíveis áreas de melhoria no processo de ensino-aprendizagem.