Sinopse

Descobrir problemas e propor soluções pontuais na academia não é muito difícil. A dificuldade está quando não sabemos quando há um problema, e resolver tal problema de forma efetiva torna-se praticamente impossível sem uma análise precisa dos dados.

O índice de evasão dos alunos e o tempo necessário que um aluno precisa para se formar são problemas pertinentes em qualquer universidade pública brasileira. A fim de propor soluções se faz necessário entender os motivos para estes problemas. Neste tentarei apresentar alguns motivos que corroporam para a existência destes problemas.

Bibliotecas

library(dplyr)
## 
## 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(ggplot2)

Sobre os dados

No universo acadêmico temos alunos que estudam em um campus. Cada campus administra centros que por sua vez abriga cursos. Em todo curso há disciplinas que por sua vez é cursada por um ou vários alunos. Todo aluno está em um período corrente e este período é relativo ao período de ingresso.

registros <- read.csv("/Users/diegopedro/Dropbox/UFCG/AD2/MT 01/alunosUFCGAnon.csv")

A base de de dados consiste de 920529 registros contendo 32342 Matrículas de alunos que cursaram disciplinas entre os períodos de 2002.1 e 2014.1

campus_labels <- c("Campina Grande","Cajazeiras","Sousa","Patos","Cuité","Sumé","Pombal")
campus_code <- c(1,2,3,4,5,7,9)

for (i in 1:7){
  registros$Campus[registros$Campus == campus_code[i]] <- campus_labels[i]
}

O gráfico abaixo mostra a distribuição de quantidade de alunos por curso. Podemos observar que a distribuição de mátriculas é bem equilibrada com apenas 5 outliers que podem ser observado logo em seguida

cursos_alunos_disciplinas <- summarise(group_by(registros,Matricula,Campus,Nome_Curso),count=n())
cursos_alunos <- summarise(group_by(cursos_alunos_disciplinas,Campus,Nome_Curso),alunos_matriculados=n())
cursos_alunos <- cursos_alunos[order(-cursos_alunos$alunos_matriculados),]
boxplot(main="Quantidade de alunos por curso",ylab="Quantidade de alunos",cursos_alunos$alunos_matriculados)

Figura 01

cursos_alunos[1:10,]
## Source: local data frame [10 x 3]
## Groups: Campus [3]
## 
##            Campus                  Nome_Curso alunos_matriculados
##             (chr)                      (fctr)               (int)
## 1  Campina Grande         ENGENHARIA ELÉTRICA                1477
## 2  Campina Grande   CIÊNCIA DA COMPUTAÇÃO - D                1296
## 3  Campina Grande        ENGENHARIA CIVIL - D                1175
## 4           Patos    MEDICINA VETERINÁRIA - D                 963
## 5  Campina Grande                MEDICINA - D                 947
## 6  Campina Grande           ADMINISTRAÇÃO - D                 769
## 7  Campina Grande     ENGENHARIA MECÂNICA - D                 769
## 8           Sousa                 DIREITO - N                 687
## 9  Campina Grande ENGENHARIA DE MATERIAIS - D                 647
## 10          Sousa                 DIREITO - M                 638

Tabela 01

Em relação ao número de mátriculas por Campus podemos perceber que a variação não é grande, exceto pelo outiler do Campus Campina Grande, a qual é a sede, que representa mais de 50% de todas as matrículas

alunos_campus <- summarise(group_by(cursos_alunos_disciplinas,Campus),Numero_Matriculas=n())
alunos_campus
## Source: local data frame [7 x 2]
## 
##           Campus Numero_Matriculas
##            (chr)             (int)
## 1     Cajazeiras              4431
## 2 Campina Grande             16265
## 3          Cuité              3081
## 4          Patos              2312
## 5         Pombal              1527
## 6          Sousa              2926
## 7           Sumé              1800

Tabela 02

O número de cursos por campus segue o mesmo padrão de alunos por campus

summarise(group_by(cursos_alunos,Campus),Numero_De_Cursos=n())
## Source: local data frame [7 x 2]
## 
##           Campus Numero_De_Cursos
##            (chr)            (int)
## 1     Cajazeiras               15
## 2 Campina Grande               48
## 3          Cuité               11
## 4          Patos                5
## 5         Pombal                3
## 6          Sousa                6
## 7           Sumé                7

Tabela 03

Abaixo é apresentado um gráfico que mostra a quantidade de matrículas por período de ingresso, sendo a primeira e segunda barra referentes ao primeiro e segundo período respectivamente. É possível notar que a partir do ano de 2008 o número de matrículas começa a subir gradualmente até se estabilizar no ano de 2011. A explicação para isso se deve ao REUNI . Outra observação que pode ser considerada é a diferença de matrículas entre as duas entradas a partir do ano de 2010. Verificou-se que entre o ano de 2009 para 2010 houve a implantação de 13 cursos de graduação representando um acréscimo de 785 alunos. No entanto, isso não é suficiente para explicar este comportamento, e também não está entre os objetivos deste relatório. E por fim, ainda neste gráfico,é possível visualizar que os dados referentes aos alunos que ingressaram anteriormente a 2002 é bastante inferior em relação aos alunos dos demais períodos. Isso pode ser eplicado pelo fato de que a UFCG se desmembrou da UFPB exatamente neste ano, sendo assim os registros de anos anteriores passou a ser de responsabilidade daquela instituição.

alunos_periodo <- summarise(group_by(registros,Matricula,Periodo_Ingresso))
ggplot(alunos_periodo, aes(Periodo_Ingresso)) + geom_bar()

Figura 02

Problema 1: Evasão de alunos

Além das notas baixas, é possível explicar outros motivos para a evasão, considerando apenas os alunos que já concluíram o segundo período (uma vez que nos dois primeiros períodos os motivos de evasão é bastante óbvio e dificilmente explicado pelos dados: ‘não era o que eu pensava’,‘eu passei para o curso X na universidade Y’)?

A primeira tarefa a ser realizada é analisar as diferenças entre dos dados referentes aos alunos que desistiram com os que se formaram ou permaneceram no curso até o período de 2014.1

para mostrar que os dados sao consistentes mostrar grafico de linha de numero de trancamentos, desistencias e reprovacoes ao longo dos periodos

alunos <- transform(registros,media_credito=Creditos*Media_Disciplina)
alunos <- summarise(group_by(alunos,Matricula,Nome_Curso,Creditos_Curso,
                             Periodo_Ingresso,Campus,Centro),
                    Total_Media_Credito = sum(media_credito,na.rm=TRUE),
                    Total_Creditos=sum(Creditos,na.rm=TRUE),
                    Aprovacoes=sum(Situacao=='Aprovado'),
                    Trancamentos=sum(Situacao=='Trancado'),
                    Periodos_Cursados=max(Periodo_Relativo),
                    Desistiu=sum(Cod_Evasao)>1,
                    Reprovacoes=sum(Situacao %in% c('Reprovado por Falta','Reprovado')))

alunos <- transform(alunos,cre=Total_Media_Credito/Total_Creditos)
alunos <- transform(alunos,Taxa_Trancamentos = Trancamentos/(Trancamentos+Aprovacoes+Reprovacoes))

O código acima computa o CRE do aluno e informa se o mesmo desistiu do curso ou não, uma vez que a informação de evasão é informada apenas no período em que o aluno desistiu do curso.

Indice de desistência por período relativo

alunos_periodo_relativo <- summarise(group_by(registros,Matricula,Periodo_Relativo),
                    Desistiu=sum(Cod_Evasao)>1)
g <- ggplot(alunos_periodo_relativo, aes(Periodo_Relativo)) +
        geom_bar(aes(fill = Desistiu)) +
        labs(title = "Desistência por Período Relativo",x = "Período Relativo",y='Número de alunos')
g

Figura 03

É possível observar no gráfico acima que o número de desistência dos dois primeiros períodos pareece ser superior a todos os demais períodos.

alunos_periodo <- summarise(group_by(alunos_periodo_relativo,Periodo_Relativo),Matriculas_Desistentes=sum(Desistiu==TRUE))
periodos_1_2 <- sum(alunos_periodo[alunos_periodo$Periodo_Relativo==1 | alunos_periodo$Periodo_Relativo==2 ,]$Matriculas_Desistentes)
periodos_1_2/ sum(alunos_periodo[alunos_periodo$Periodo_Relativo,]$Matriculas_Desistentes)
## [1] 0.4925745

O resultado acima mostra que o número de desistentes nos dois primeiros períodos representa praticamente a metade de todos os desistentes.

Índice de desistência por período de Ingresso

alunos_periodo_ingresso <- summarise(group_by(registros,Matricula,Periodo_Ingresso),
                                     Desistiu=sum(Cod_Evasao)>1)
ggplot(alunos_periodo_ingresso, aes(Periodo_Ingresso)) + geom_bar(aes(fill = Desistiu)) + labs(title = "Desistência por Período",x = "Período de Ingresso",y='Número de alunos')

Figura 04

No gráfico acima é possível ver que o número de desistência cresce conforme o número de matriculados aumenta, e que a taxa de reprovação é bastante similar entre os períodos. Esta taxa é apresentada na tabela logo abaixo. As exceções são dos 3 últimos periodos, no entanto com base no gráfico anterior, uma parcela considerável dos não desistentes evadirão do curso, com destaque para o período 2014.1.

Função taxa de desistência que será usado nas análises a seguir

taxa_desistencia <- function(desistiu){
  s <- data.frame(table(desistiu))
  
  return(s[s$desistiu==TRUE,]$Freq/sum(s$Freq))
}

Taxa de Desistência por período de Ingresso

taxa_desitencia_ingresso <- aggregate(list("Taxa"=alunos$Desistiu),list("Periodo_Ingresso"=alunos$Periodo_Ingresso),FUN=taxa_desistencia)
taxa_desitencia_ingresso[taxa_desitencia_ingresso$Periodo_Ingresso>= 2002.1,]
##    Periodo_Ingresso      Taxa
## 9            2002.1 0.3486842
## 10           2002.2 0.3257143
## 11           2003.1 0.3292308
## 12           2003.2 0.4652278
## 13           2004.1 0.3489362
## 14           2004.2 0.3824131
## 15           2005.1 0.3773585
## 16           2005.2 0.3932981
## 17           2006.1 0.3901515
## 18           2006.2 0.3942857
## 19           2007.1 0.4311065
## 20           2007.2 0.4211087
## 21           2008.1 0.4179811
## 22           2008.2 0.4246425
## 23           2009.1 0.4407932
## 24           2009.2  0.424055
## 25           2010.1 0.4507042
## 26           2010.2  0.366065
## 27           2011.1 0.4790528
## 28           2011.2 0.3998704
## 29           2012.1 0.4525972
## 30           2012.2 0.3150685
## 31           2013.1 0.2955832
## 32           2013.2 0.2645579
## 33           2014.1 0.1082362

Tabela 04

Até o momento podemos afirmar que o período de ingresso não tem correlação com o número de desistências.

Com base nos gráficos acima será selecionado apenas os alunos que cursaram pelo menos o terceiro período ingressantes entre o período 2003.1 e 2012.2

alunos <- filter(alunos,Periodos_Cursados >= 3 & Periodo_Ingresso >= 2003.1 & Periodo_Ingresso <= 2012.2)

Código utilizado para calcular a taxa de desistência por curso

taxa_desistencia_curso <- aggregate(list("Taxa"=alunos$Desistiu),list("Curso"=alunos$Nome_Curso,"Campus"=alunos$Campus,"Centro"=alunos$Centro),FUN=taxa_desistencia)
taxa_desistencia_curso <- taxa_desistencia_curso[order(-taxa_desistencia_curso$Taxa),]

10 cursos com o maior número de evasão de alunos

taxa_desistencia_curso[1:10,]
##                             Curso         Campus Centro      Taxa
## 48               METEOROLOGIA - D Campina Grande     15 0.8211921
## 7                 ESTATÍSTICA - D Campina Grande     11 0.8064516
## 46    ENGENHARIA DE ALIMENTOS - D Campina Grande     15 0.7600000
## 80               FÍSICA (LIC) - N          Cuité     51 0.7313433
## 44        ENGENHARIA AGRÍCOLA - D Campina Grande     15 0.7007576
## 8                FÍSICA (BAC) - D Campina Grande     11 0.6302521
## 51               FÍSICA (LIC) - N     Cajazeiras     21 0.6097561
## 91 ENGENHARIA DE BIOSSISTEMAS - D           Sumé     71 0.5897436
## 85              QUÍMICA (LIC) - N          Cuité     51 0.5818182
## 42            ENGENHARIA ELÉTRICA Campina Grande     14 0.5706751

Tabela 05

10 cursos com o menor número de evasão de alunos

taxa_desistencia_curso[82:92,]
##                                    Curso         Campus Centro       Taxa
## 38                      MÚSICA (LIC) - D Campina Grande     13 0.14062500
## 59                  MATEMÁTICA (LIC) - D     Cajazeiras     21 0.13725490
## 83                          NUTRIÇÃO - D          Cuité     51 0.13669065
## 37                      MÚSICA (BAC) - D Campina Grande     13 0.12500000
## 58  LETRAS - LÍNGUA PORTUGUESA (LIC) - N     Cajazeiras     21 0.11111111
## 29                    HISTÓRIA (LIC) - M Campina Grande     13 0.10144928
## 87 CURSO SUP DE TECN EM AGROECOLOGIA - D           Sumé     71 0.09890110
## 67                           DIREITO - N          Sousa     31 0.08609272
## 43           ARQUITETURA E URBANISMO - D Campina Grande     15 0.08163265
## 68                           DIREITO - V          Sousa     31 0.07657658
## 66                           DIREITO - M          Sousa     31 0.07194245

Tabela 06

A primeira análise que podemos fazer das tabelas acima é que entre os 10 cursos com o maior número de evasão de alunos há apenas cursos da área de exatas com destaque para os cursos situados no campus de Campina Grande. Entre os cursos com as 10 menores taxas as características já são bem diferentes com humanas e biologicas representando 80% dos cursos.

Antes de nos aprofundarmos na análise, é necessário observar que mesmos cursos similares tem taxas de reprovação distintas para cursos diferentes, como é o caso do curso de Química. Situado no Campus de Cuité, Química tem uma taxa de desitência de quase 50% enquanto que em Campina Grande a taxa é de apenas 12%.

Outros exemplos podem ser observados abaixo. O desvio-padrão é fornecido logo em seguida

taxa_desistencia_curso <- taxa_desistencia_curso[order(taxa_desistencia_curso$Curso),]
taxa_desistencia_curso[1:3,]
##                Curso         Campus Centro      Taxa
## 16 ADMINISTRAÇÃO - D Campina Grande     13 0.2654321
## 17 ADMINISTRAÇÃO - N Campina Grande     13 0.3657588
## 64 ADMINISTRAÇÃO - N          Sousa     31 0.1521739
sqrt(var(taxa_desistencia_curso[1:3,]$Taxa))
## [1] 0.1068576

Na tabela acima vemos que a T.D do curso de Administração no Campus de Sousa é duas vezes menor do que o mesmo curso e turno oferecido no campus de Campina Grande.

taxa_desistencia_curso[24:26,]
##          Curso Campus Centro       Taxa
## 66 DIREITO - M  Sousa     31 0.07194245
## 67 DIREITO - N  Sousa     31 0.08609272
## 68 DIREITO - V  Sousa     31 0.07657658
sqrt(var(taxa_desistencia_curso[24:26,]$Taxa))
## [1] 0.007214132

Mesmo em turnos diferentes, a T.D entre os cursos acima é praticamente igual.

taxa_desistencia_curso[68:71,]
##                                   Curso         Campus Centro       Taxa
## 57 LETRAS - LÍNGUA PORTUGUESA (LIC) - M     Cajazeiras     21 0.05263158
## 34 LETRAS - LÍNGUA PORTUGUESA (LIC) - N Campina Grande     13 0.25000000
## 58 LETRAS - LÍNGUA PORTUGUESA (LIC) - N     Cajazeiras     21 0.11111111
## 35  LETRAS- LÍNGUA PORTUGUESA (LIC) - D Campina Grande     13 0.21052632
sqrt(var(taxa_desistencia_curso[68:71,]$Taxa))
## [1] 0.09038647

Na tabela acima observa-se que a T.D é diferente mesmo no mesmo campus, mas em turnos diferentes.

taxa_desistencia_curso[73:78,]
##                   Curso         Campus Centro      Taxa
## 10 MATEMÁTICA (BAC) - D Campina Grande     11 0.4666667
## 81 MATEMÁTICA (LIC) - D          Cuité     51 0.4666667
## 11 MATEMÁTICA (LIC) - D Campina Grande     11 0.2328767
## 59 MATEMÁTICA (LIC) - D     Cajazeiras     21 0.1372549
## 82 MATEMÁTICA (LIC) - N          Cuité     51 0.5316456
## 12 MATEMÁTICA (LIC) - N Campina Grande     11 0.4384615
sqrt(var(taxa_desistencia_curso[73:78,]$Taxa))
## [1] 0.1562049

Assim como na tabaela anterior, os cursos do Campus de Cajazeiras apresenta baixa T.D em relação aos demais Campus. Também podemos observar que o Campus de Cuité apresenta cursos com altas T.D.

taxa_desistencia_curso[79:80,]
##           Curso         Campus Centro       Taxa
## 60 MEDICINA - D     Cajazeiras     21 0.21374046
## 14 MEDICINA - D Campina Grande     12 0.02237762
sqrt(var(taxa_desistencia_curso[79:80,]$Taxa))
## [1] 0.135314

Acreditava-se que o Campus de Cajazeiras apresentaria uma T.D bem superior ao Campus de Campina Grande por diversos motivos: Localização, estrutura oferecida pela cidade e idade do curso. No entanto, como podemos perceber, a T.D é quase 10 vezes inferior ao Campus de Campina Grande.

taxa_desistencia_curso[60:63,]
##                 Curso         Campus Centro      Taxa
## 54 HISTÓRIA (LIC) - M     Cajazeiras     21 0.2028571
## 29 HISTÓRIA (LIC) - M Campina Grande     13 0.1014493
## 55 HISTÓRIA (LIC) - N     Cajazeiras     21 0.2857143
## 30 HISTÓRIA (LIC) - N Campina Grande     13 0.1419355
sqrt(var(taxa_desistencia_curso[60:63,]$Taxa))
## [1] 0.08016929

Diferentemente das tabelas apresentadas acima, em relação ao curso de Historia, o campus de Cajazeiras apresenta o dobro da T.D em comparação com o Campus de Campina Grande.

taxa_desistencia_curso[51:55,]
##               Curso         Campus Centro      Taxa
## 8  FÍSICA (BAC) - D Campina Grande     11 0.6302521
## 79 FÍSICA (LIC) - D          Cuité     51 0.5394737
## 9  FÍSICA (LIC) - D Campina Grande     11 0.5000000
## 80 FÍSICA (LIC) - N          Cuité     51 0.7313433
## 51 FÍSICA (LIC) - N     Cajazeiras     21 0.6097561
sqrt(var(taxa_desistencia_curso[51:55,]$Taxa))
## [1] 0.08930485

Dentre todos os cursos analisados, Física é o que apresenta a maior taxa de desistência. Destaque mais uma vez para o Campus de Cajazeiras que apresenta a menor taxa e também na tabela abaixo.

taxa_desistencia_curso[92:94,]
##                Curso     Campus Centro      Taxa
## 84 QUÍMICA (LIC) - D      Cuité     51 0.4671533
## 85 QUÍMICA (LIC) - N      Cuité     51 0.5818182
## 63 QUÍMICA (LIC) - N Cajazeiras     21 0.1923077
sqrt(var(taxa_desistencia_curso[92:94,]$Taxa))
## [1] 0.2001693

Para concluir abaixo está a tabela de taxa de desitência por campus

taxa_desistencia_campus <- aggregate(list("Taxa"=alunos$Desistiu),list("Campus"=alunos$Campus),FUN=taxa_desistencia)
taxa_desistencia_campus
##           Campus      Taxa
## 1     Cajazeiras 0.1985560
## 2 Campina Grande 0.3449235
## 3          Cuité 0.2985651
## 4          Patos 0.2358551
## 5         Pombal 0.4570766
## 6          Sousa 0.1064483
## 7           Sumé 0.3032787

Tabela 07 Poderíamos inferir que o Campus contribuí para a taxa de Desistência. No entanto, vimos casos em que o Curso, independente do campus, contribui também para a Taxa de Desistência. Também poderíamos concluir que cursos de exatas tendem a ter uma maior taxa de desistência, em relação aos cursos de humanas. Porém, são apenas suposições, hipóteses com pouca ou nenhuma base estatística. A fim de tornar nossa análise mais científica, aplicaremos uma regressão múltipla nos dados a fim de avaliar se alguma das hipóteses levantadas acima são verdadeiras. O que mais contribuí para Taxa de Evasão, Campus, Curso ou Tipo do Curso?

Mas antes de aplicamos a regressão precisamos analisar uma última variáve, Trancamento, uma vez que esta variável estará inclusa na regressão.

O valor abaixo se refere a razão de trancamentos entre os alunos desistentes e os não desistentes. Percebe-se que o valor é bastante significativo.

Media_Taxa_Trancamento_Desistiu <- mean(alunos[alunos$Desistiu==TRUE,]$Taxa_Trancamentos)
Media_Taxa_Trancamento <- mean(alunos[alunos$Desistiu==FALSE,]$Taxa_Trancamentos)
Media_Taxa_Trancamento_Desistiu/Media_Taxa_Trancamento
## [1] 3.575584
Código Área de Concentração
1 Exatas
2 Humanas e Sociais
3 Saúde e Biológicas
4 Multidisciplinares

Adicionando Area de Concentração

Cod_Area <- c(1, 1, 2, 1, 1, 4, 2, 2, 4, 4, 1, 1, 2, 1, 1, 1, 3, 3, 2, 2, 2, 2, 2, 1, 3, 2, 2, 2, 2, 2, 1, 1, 2, 4, 2, 1, 1, 2, 4, 4, 4, 2, 2, 1, 1, 2, 1, 2, 3, 4, 2, 1, 1, 1, 1, 3, 3, 3, 2, 4, 2, 2, 2, 2, 3, 1, 2, 3, 1, 1, 2, 2, 2, 1, 3, 1)

nome_cursos <- data.matrix(unique(alunos$Nome_Curso))[,1]
alunos$Cod_Area <- data.matrix(alunos$Nome_Curso)[,1]

for (i in 1:length(nome_cursos)){
  alunos$Cod_Area[alunos$Cod_Area == nome_cursos[i]] <- Cod_Area[i]
}

alunos$Cod_Area <- as.numeric(alunos$Cod_Area)

Tabela 08

Codificando campos

alunos$Cod_Curso <- data.matrix(alunos$Nome_Curso)[,1]

for (i in 1:length(nome_cursos)){
  alunos$Cod_Curso[alunos$Cod_Curso == nome_cursos[i]] <- i
}
alunos$Desistiu[alunos$Desistiu== FALSE] <- 0
alunos$Desistiu[alunos$Desistiu== TRUE] <- 1

campus_labels <- c("Campina Grande","Cajazeiras","Sousa","Patos","Cuité","Sumé","Pombal")
campus_code <- c(1,2,3,4,5,7,9)

for (i in 1:7){
  alunos$Campus[alunos$Campus == campus_labels[i]] <- campus_code[i]
}

Iniciamos o modelo usando as variáveis Modelo

alunos$Cod_Area <- as.numeric(alunos$Cod_Area)
alunos$Cod_Curso <- as.numeric(alunos$Cod_Curso)
alunos$Campus <- as.numeric(alunos$Campus)

modelo1 <- lm(alunos$Desistiu ~ alunos$Campus 
             + alunos$Periodo_Ingresso
             + alunos$Cod_Area
             + alunos$Cod_Curso
             + alunos$Trancamentos
             + alunos$Centro
             + alunos$Creditos_Curso)
summary(modelo1)
## 
## Call:
## lm(formula = alunos$Desistiu ~ alunos$Campus + alunos$Periodo_Ingresso + 
##     alunos$Cod_Area + alunos$Cod_Curso + alunos$Trancamentos + 
##     alunos$Centro + alunos$Creditos_Curso)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -1.3756 -0.2875 -0.1747  0.4970  0.9606 
## 
## Coefficients:
##                           Estimate Std. Error t value Pr(>|t|)    
## (Intercept)              9.008e+00  2.411e+00   3.737 0.000187 ***
## alunos$Campus           -4.227e-01  2.576e-02 -16.413  < 2e-16 ***
## alunos$Periodo_Ingresso -4.311e-03  1.200e-03  -3.593 0.000328 ***
## alunos$Cod_Area         -7.791e-02  3.036e-03 -25.663  < 2e-16 ***
## alunos$Cod_Curso         9.284e-05  1.798e-04   0.516 0.605646    
## alunos$Trancamentos      3.591e-02  1.297e-03  27.694  < 2e-16 ***
## alunos$Centro            4.406e-02  2.657e-03  16.584  < 2e-16 ***
## alunos$Creditos_Curso   -2.675e-04  4.749e-05  -5.632 1.81e-08 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.4302 on 19800 degrees of freedom
##   (83 observations deleted due to missingness)
## Multiple R-squared:  0.1035, Adjusted R-squared:  0.1032 
## F-statistic: 326.6 on 7 and 19800 DF,  p-value: < 2.2e-16

Tabela 09

Como podemos observar acima a variável Curso é a que tem menos relação com a variável desistência. Com base no que analisamos anterioremente isso foi até de certa forma uma surpresa, pois esperava-se um significância maior. Então eliminamos esta variável do nosso modelo e reiniciamos novamente.

modelo1 <- lm(alunos$Desistiu ~ alunos$Campus 
             + alunos$Periodo_Ingresso
             + alunos$Cod_Area
             + alunos$Trancamentos
             + alunos$Centro
             + alunos$Creditos_Curso)
summary(modelo1)
## 
## Call:
## lm(formula = alunos$Desistiu ~ alunos$Campus + alunos$Periodo_Ingresso + 
##     alunos$Cod_Area + alunos$Trancamentos + alunos$Centro + alunos$Creditos_Curso)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -1.3747 -0.2872 -0.1737  0.4971  0.9610 
## 
## Coefficients:
##                           Estimate Std. Error t value Pr(>|t|)    
## (Intercept)              8.986e+00  2.410e+00   3.728 0.000193 ***
## alunos$Campus           -4.225e-01  2.575e-02 -16.406  < 2e-16 ***
## alunos$Periodo_Ingresso -4.299e-03  1.200e-03  -3.583 0.000340 ***
## alunos$Cod_Area         -7.754e-02  2.947e-03 -26.308  < 2e-16 ***
## alunos$Trancamentos      3.593e-02  1.296e-03  27.722  < 2e-16 ***
## alunos$Centro            4.407e-02  2.657e-03  16.587  < 2e-16 ***
## alunos$Creditos_Curso   -2.714e-04  4.688e-05  -5.789  7.2e-09 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.4302 on 19801 degrees of freedom
##   (83 observations deleted due to missingness)
## Multiple R-squared:  0.1035, Adjusted R-squared:  0.1032 
## F-statistic:   381 on 6 and 19801 DF,  p-value: < 2.2e-16

Tabela 10

A não relação do período ingresso com a taxa de desistência já era esperado. Após a realização de vários iterações o resultado final foi o seguinte. Creditos_Curso Eliminamos centro, pois o mesmo esta correlacionado com Campus e Area. Após remover esta variável, a variável campus perdeu significancia, sendo assim removida do modelo Finalmente concluímos com o seguinte modelo

modelo1 <- lm(alunos$Desistiu ~ alunos$Cod_Area
             + alunos$Trancamentos)
summary(modelo1)
## 
## Call:
## lm(formula = alunos$Desistiu ~ alunos$Cod_Area + alunos$Trancamentos)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -1.3043 -0.2998 -0.1719  0.5097  0.9177 
## 
## Coefficients:
##                      Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          0.440991   0.007046   62.59   <2e-16 ***
## alunos$Cod_Area     -0.089681   0.002888  -31.05   <2e-16 ***
## alunos$Trancamentos  0.038118   0.001277   29.84   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.434 on 19888 degrees of freedom
## Multiple R-squared:  0.0878, Adjusted R-squared:  0.08771 
## F-statistic: 957.1 on 2 and 19888 DF,  p-value: < 2.2e-16

Como já esperava-se a partir da análise descritiva, as variáveis taxa de trancamento e área de concentração são as variáveis que mais contribuem após a variável cre

modelo1 <- lm(alunos$Desistiu ~ alunos$Cod_Area
             + alunos$Trancamentos
             + alunos$cre)
summary(modelo1)
## 
## Call:
## lm(formula = alunos$Desistiu ~ alunos$Cod_Area + alunos$Trancamentos + 
##     alunos$cre)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -1.27106 -0.19806 -0.04337  0.13065  1.18534 
## 
## Coefficients:
##                      Estimate Std. Error  t value Pr(>|t|)    
## (Intercept)          1.292949   0.009530  135.666  < 2e-16 ***
## alunos$Cod_Area     -0.021885   0.002360   -9.273  < 2e-16 ***
## alunos$Trancamentos -0.006254   0.001085   -5.765 8.27e-09 ***
## alunos$cre          -0.147952   0.001345 -109.975  < 2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.3421 on 19875 degrees of freedom
##   (12 observations deleted due to missingness)
## Multiple R-squared:  0.433,  Adjusted R-squared:  0.4329 
## F-statistic:  5059 on 3 and 19875 DF,  p-value: < 2.2e-16

Tabela 11

E possivel perceber acima que a variável Trancamentos perde significancia devido à variável cre, uma vez que ambas estão correlacionadas, no entanto pouco interfere na variável área de concentração. Concluímos a resposta para a pergunta mostrando que após o desempenho do aluno, a variável que mais contribui para o índice de desistêncai é a área de concentração, que assim como vimos anteriormente, as áreas de exatas contribuem para o alto índice de desistência, diferentemente das áreas de humanas.

Problema 2: Tempo de Formação

Quais motivos contribuem para a média de formação em determinados cursos ser maiores do que de outros cursos, levando em consideração a carga horária? Sim, há cursos que tem disciplinas que travam a formação do aluno, como por exemplo cálculo 1

Para a resolução desta pergunta, primeiramente filtraremos os dados considerando apenas os alunos graduados. Logo em seguida, precisamos saber quais os cursos tem o maior tempo de formação, considerando a carga horária e número de graduados. Logo em seguida precisamos descobrir quais as disciplinas que são mais oferecidas entre os cursos. Na próxima etapa analisaremos a correlação entre a média destas disciplinas com o número de períodos cursados. Por fim, analisaremos o curso com o maior tempo de formação de cada área: Exatas, Humanas e Sociais, Saúde e Biológicas, e Multidisciplinares. Observacao: A descrição acima não foi modifada durante a fase de análise

Filtrando os dados apenas dos alunos graduados

matriculas_graduados <- filter(registros,Periodo_Ingresso >= 2002.1 & Periodo_Ingresso <= 2011.1)

Sumarizando os dados dos alunos

matriculas_graduados_data <- summarise(group_by(matriculas_graduados,Matricula,Centro,Campus,Nome_Curso,Creditos_Curso,Periodo_Ingresso),Total_Creditos=sum(Creditos*as.numeric(Situacao=='Aprovado')),Periodos_Cursados=length(unique(Periodo)),Disciplinas_Aprovadas=sum(Situacao=='Aprovado' & Tipo=='Obrigatória'),Desistiu=sum(Cod_Evasao)>1)
matriculas_graduados <- filter(matriculas_graduados_data,Desistiu==FALSE,Periodos_Cursados>=5)

Durante a analise foi observado que em alguns cursos e matriculas haviam disciplinas com 0 créditos, como pode ser observado na tabela abaixo em que o curso de Medicina no campus de Campina Grande tem 84% de suas disciplinas com zero créditos. A solução filtrar pelo número de disciplinas obrigatórias concluídas

curso_creditos <- summarise(group_by(registros,Campus,Nome_Curso),Disciplinas_Sem_Creditos=sum(Creditos==0),Disciplinas_Com_Creditos=sum(Creditos>0))
curso_creditos <- transform(curso_creditos,Taxa_Disciplinas_Sem_Creditos=Disciplinas_Sem_Creditos/(Disciplinas_Sem_Creditos+Disciplinas_Com_Creditos))
curso_creditos <- curso_creditos[order(-curso_creditos$Taxa_Disciplinas_Sem_Creditos),]
cursos_inconsistentes <- filter(curso_creditos,Taxa_Disciplinas_Sem_Creditos> 0)
select(cursos_inconsistentes,Campus,Nome_Curso,Taxa_Disciplinas_Sem_Creditos)
##            Campus                Nome_Curso Taxa_Disciplinas_Sem_Creditos
## 1  Campina Grande                DESIGN - D                   0.845353883
## 2  Campina Grande              MEDICINA - D                   0.560724578
## 3           Patos  MEDICINA VETERINÁRIA - D                   0.243159080
## 4           Sousa               DIREITO - N                   0.013964021
## 5           Sousa               DIREITO - M                   0.013069662
## 6      Cajazeiras            ENFERMAGEM - D                   0.012844612
## 7           Sousa               DIREITO - V                   0.012567838
## 8  Campina Grande CIÊNCIA DA COMPUTAÇÃO - D                   0.011190713
## 9  Campina Grande       PEDAGOGIA (LIC) - M                   0.007132175
## 10 Campina Grande       PEDAGOGIA (LIC) - N                   0.005761523
## 11          Patos  ENGENHARIA FLORESTAL - D                   0.002229414
## 12 Campina Grande      ENGENHARIA CIVIL - D                   0.001931320
## 13 Campina Grande       ENGENHARIA ELÉTRICA                   0.000941847

Antes de filtrar os dados precisamos considerar quais características de um aluno se faz necessário para considerá-lo graduado. Uma gararantia seria filtrar apenas os alunos que completaram 100% dos créditos. No entanto, devido à erros nos dados (conforme explicado acima), assim como também créditos não contabilizados como por exemplo, monitoria, estágio; projeto de pequisa, desenvolvimento e extensão excluíremos vários alunos. Para evitar isso, precisamos definir um limiar de porcentagem. O valor escolhido foi 95% de forma empírica (o número de alunos “graduados” nos períodos anteriores ao oitavo é praticamente nula).

O gráfico abaixo mostra a distribuição de alunos com base no número de períodos cursados.

A área verde representa os alunos que concluíram pelo menos 95% dos créditos do curso.

ggplot(matriculas_graduados, aes(Periodos_Cursados)) + geom_bar(aes(fill = Total_Creditos>= Creditos_Curso*.95)) + labs(title = "Integração do Curso",x = "Período Cursados",y='Número de alunos')

Figura 05

Uma vez analisado os dados com base nos créditos, precisamos analisar dos demais cursos que apresentaram erros, como é o caso dos cursos de Design e Medicina Campus Campina Grande. Consideraremos que o aluno deve ter sido aprovado em pelo menos 5.7 disciplinas por período, visto que o curso de medicina é o quinto curso com o maior número de alunos,ver Tabela 01, e a carga horária é consideravelmente alta. O valor de 6 disciplinas por período foi definido de forma empírica, após analisar os dados dos alunos que cursaram o maior número de disciplinas.

ggplot(matriculas_graduados, aes(Periodos_Cursados)) +
  geom_bar(aes(fill = Disciplinas_Aprovadas/Periodos_Cursados >= 5.7)) +
  labs(title = "Integração do Curso",x = "Período Cursados",y='Número de alunos')

Figura 06

Abaixo está o gráfico que representa a união dos dois gráficos apresentados acima

ggplot(matriculas_graduados, aes(Periodos_Cursados)) + geom_bar(aes(fill = (Disciplinas_Aprovadas/Periodos_Cursados >= 5.7) | Total_Creditos>= Creditos_Curso*.95)) + labs(title = "Integração do Curso",x = "Período Cursados",y='Número de alunos')

Figura 07

Como é possível ver no gráfico acima, o número de alunos “graduados” a partir do 7 período é batante alto devido ao filtro de disciplinas aprovados por período. A última condição a ser definida se refere ao número mínimo de períodos necessários para considerar o aluno como graduado. Devido aos cursos de humanas e licenciaturas terem uma grade curricular com integração média de 8 períodos, foi definido que o liminar será 8 e 10.

condicao1 <- matriculas_graduados$Total_Creditos >= matriculas_graduados$Creditos_Curso*.95
condicao2 <- matriculas_graduados$Disciplinas_Aprovadas/matriculas_graduados$Periodos_Cursados >= 5.7
condicao3 <- matriculas_graduados$Periodos_Cursados >= 8
condicao4 <- matriculas_graduados$Periodos_Cursados >= 10
alunos_graduados <- matriculas_graduados[(condicao1 & condicao3) | (condicao2 & condicao4),]

Abaixo é realizado a nomeação dos códigos dos campos a fim de facilitar a leitura.

campus_labels <- c("Campina Grande","Cajazeiras","Sousa","Patos","Cuité","Sumé","Pombal")
campus_code <- c(1,2,3,4,5,7,9)

for (i in 1:7){
  alunos_graduados$Campus[alunos_graduados$Campus == campus_code[i]] <- campus_labels[i]
}

Distribuição de alunos graduados em relação ao campus

ggplot(alunos_graduados, aes(Periodos_Cursados)) +
  geom_bar(aes(fill = Campus)) +
  labs(title = "Graduados",x = "Períodos Concluídos",y='Número de alunos')

Figura 08

Como pode-se perceber no gráfico acima o número de alunos do Campus de Campina Grande tem um representação considerável entre o 8 até o 12 primeiro período. Percebemos também que há dois outiliers na barra do décimo período referente aos campus de Patos e Sousa respectivamente. Isso existe por dois motivos, primeiro porque ambos curso tem uma taxa de desistência muito baixa e segundo porque o tempo de formação é bem próximo do estimulado a qual é de 5 anos para os curso de Direito, Veterinária, Enfermagem e Odontologia. Além disso, como pode ser observado na Tabela 01 o curso de Veterinária é o 4 com o maior número de alunos, e direito entre os 10 primeiros.

Abaixo é realizado uma substituição dos códigos dos centros pelos seus respectivos nomes para facilitar a leitura. As duas primeiras letras se refere ao campus a qual o centro está situado

siglas <- c('CG-CEEI','CG-CCT','CG-CCBS','CG-CTRN','CG-CH','CJ-CFP','SS-CCJS','PT-CSTR','SM-CDSS','PL-CCTA','CT-CES')
codigos <- c(14,11,12,15,13,21,31,41,71,91,51)

for (i in 1:length(siglas)){
  alunos_graduados$Centro[alunos_graduados$Centro == codigos[i]] <- siglas[i]
}

No gráfico abaixo podemos ver a mesma distribuição apresentada acima, mas agora subdividade por centros. Assim como na distribuição acima da Figura 08, há os alunos dos campus de Patos e Sousa está bem representada no período 10. Outro ponto a ser destacado se refere ao Centro de Humanidades da UFCG que tem a maior concentração entre o oitavo e nono período. Por último, vemos que o CEEI, apesar de ter os dois cursos com o maior número de alunos, a taxa de desistência dos alunos de Engenharia Elétrica é consideravelmente alta como pode ser observado na Tabela 05, apesar disso ainda é o centro do campus de Campina Grande com o segundo maior número de alunos graduados.

ggplot(alunos_graduados, aes(Periodos_Cursados)) +
  geom_bar(aes(fill = Centro)) +
  labs(title = "Graduados",x = "Períodos Concluídos",y='Número de alunos')

Figura 09

A tabela abaixo mostra os cursos com o maior número de alunos graduados.

graduados_por_curso <- summarise(group_by(alunos_graduados,Campus,Nome_Curso),Numero_Alunos=n())
graduados_por_curso <- graduados_por_curso[order(-graduados_por_curso$Numero_Alunos),]
graduados_por_curso[1:10,]
## Source: local data frame [10 x 3]
## Groups: Campus [4]
## 
##            Campus                Nome_Curso Numero_Alunos
##             (chr)                    (fctr)         (int)
## 1           Patos  MEDICINA VETERINÁRIA - D           459
## 2  Campina Grande      ENGENHARIA CIVIL - D           258
## 3  Campina Grande CIÊNCIA DA COMPUTAÇÃO - D           207
## 4           Sousa               DIREITO - M           168
## 5  Campina Grande         ADMINISTRAÇÃO - D           142
## 6           Sousa               DIREITO - N           129
## 7           Sousa               DIREITO - V           120
## 8  Campina Grande          ARTE E MÍDIA - D           103
## 9  Campina Grande   CIÊNCIAS ECONÔMICAS - M            92
## 10          Cuité              FARMÁCIA - D            92

Tabela 11

disciplinas sao diferentes em departamentos e campus por exemplo o curso de lingua portuguesa e dado em 7 diferentes centros, e para cada centro a um codigo neste caso sera considerado apenas o nome da disciplina

matriculas_graduados <- registros[is.element(registros$Matricula,alunos_graduados$Matricula),]
graduados_data <- summarise(group_by(matriculas_graduados,Matricula,Centro,Campus,Nome_Curso,Nome_Disciplina),Media_Disciplina=mean(Media_Disciplina))
disciplinas_cursos <- summarise(group_by(graduados_data,Nome_Disciplina),Numero_De_Cursos=length(unique(Nome_Curso)))
disciplinas_cursos <- disciplinas_cursos[order(-disciplinas_cursos$Numero_De_Cursos),]
disciplinas_cursos[1:20,]
## Source: local data frame [20 x 2]
## 
##                           Nome_Disciplina Numero_De_Cursos
##                                    (fctr)            (int)
## 1                       LINGUA PORTUGUESA               25
## 2          TRABALHO DE CONCLUSAO DE CURSO               22
## 3        CALCULO DIFERENCIAL E INTEGRAL I               17
## 4       CALCULO DIFERENCIAL E INTEGRAL II               17
## 5  ÁLGEBRA VETORIAL E GEOMETRIA ANALÍTICA               15
## 6      CALCULO DIFERENCIAL E INTEGRAL III               14
## 7                 INTRODUCAO A SOCIOLOGIA               14
## 8          EQUACOES DIFERENCIAIS LINEARES               13
## 9                        ALGEBRA LINEAR I               12
## 10                         FÍSICA GERAL I               12
## 11                 METODOLOGIA CIENTÍFICA               12
## 12                  FÍSICA EXPERIMENTAL I               11
## 13                        FÍSICA GERAL II               11
## 14     INTRODUÇÃO À CIÊNCIA DA COMPUTAÇÃO               11
## 15                       CALCULO NUMERICO               10
## 16                               DIDATICA               10
## 17               ESTAGIO SUPERVISIONADO I               10
## 18                       FÍSICA GERAL III               10
## 19            PROBABILIDADE E ESTATISTICA               10
## 20                          QUÍMICA GERAL               10

Tabela 12

Devido à predominância de disciplinas da área de ciências exatas, e ausência de disciplinas de demais áreas foi então decidido que seria analisado apenas os cursos da área de Exatas

Abaixo é realizado uma interseção para encontrar o maior número de cursos que têm disciplnas em comum.

matriculas_calculo1 <- matriculas_graduados[matriculas_graduados$Nome_Disciplina=='CALCULO DIFERENCIAL E INTEGRAL I',]$Matricula
matriculas_calculo2 <- matriculas_graduados[matriculas_graduados$Nome_Disciplina=='CALCULO DIFERENCIAL E INTEGRAL II',]$Matricula
matriculas_calculo3 <- matriculas_graduados[matriculas_graduados$Nome_Disciplina=='CALCULO DIFERENCIAL E INTEGRAL III',]$Matricula
matriculas_ga <- matriculas_graduados[matriculas_graduados$Nome_Disciplina=='ÁLGEBRA VETORIAL E GEOMETRIA ANALÍTICA',]$Matricula
matriculas_linear <- matriculas_graduados[matriculas_graduados$Nome_Disciplina=='ALGEBRA LINEAR I',]$Matricula
matriculas_fisica_1 <- matriculas_graduados[matriculas_graduados$Nome_Disciplina=='FÍSICA GERAL I',]$Matricula
exatas <- intersect(matriculas_calculo1,matriculas_calculo2)
exatas <- intersect(exatas,matriculas_ga)
exatas <- intersect(exatas,matriculas_linear)
exatas <- intersect(exatas,matriculas_fisica_1)
exatas <- intersect(exatas,matriculas_calculo3)
graduados_exatas <- graduados_data[is.element(graduados_data$Matricula,exatas),]

A tabela abaixo mostra os cursos que serão analisados como um grupo

unique(graduados_exatas$Nome_Curso)
## [1] ENGENHARIA MECÂNICA - D     ENGENHARIA CIVIL - D       
## [3] ENGENHARIA QUÍMICA - D      ENGENHARIA DE PRODUÇÃO - D 
## [5] ENGENHARIA DE MINAS - D     ENGENHARIA ELÉTRICA        
## [7] METEOROLOGIA - D            FÍSICA (BAC) - D           
## [9] ENGENHARIA DE MATERIAIS - D
## 76 Levels: ADMINISTRAÇÃO - D ADMINISTRAÇÃO - N ... SERVIÇO SOCIAL - M

Tabela 13

disciplinas <- data.frame(Calculo1=graduados_exatas[graduados_exatas$Nome_Disciplina=='CALCULO DIFERENCIAL E INTEGRAL I',]$Media_Disciplina)
nome_disciplinas <- c('CALCULO DIFERENCIAL E INTEGRAL II','CALCULO DIFERENCIAL E INTEGRAL III','ÁLGEBRA VETORIAL E GEOMETRIA ANALÍTICA','ALGEBRA LINEAR I','FÍSICA GERAL I')

for (i in 1:length(nome_disciplinas)){
  disciplinas <- cbind(disciplinas,i=graduados_exatas[graduados_exatas$Nome_Disciplina==nome_disciplinas[i],]$Media_Disciplina)
}
nome_colunas<- c('calculo1','calculo2','calculo3','algebra_vetorial','linear','fisica1')
colnames(disciplinas) <- nome_colunas

graduados_exatas <- alunos_graduados[is.element(alunos_graduados$Matricula,exatas),]
graduados_exatas <- na.omit(cbind(graduados_exatas,disciplinas))
modelo2 <- lm(graduados_exatas$Periodos_Cursados ~ graduados_exatas$calculo1
              +graduados_exatas$calculo2
              +graduados_exatas$calculo3
              +graduados_exatas$algebra_vetorial
              +graduados_exatas$linear
              +graduados_exatas$fisica1)

Podemos concluir na tabela abaixo mostra as disciplinas que mais contribuem para o tempo de formação dos alunos dos cursos apresentados na Tabela 13 são Física Geral I, Algebra Linear e Geometria Vetorial.

summary(modelo2)
## 
## Call:
## lm(formula = graduados_exatas$Periodos_Cursados ~ graduados_exatas$calculo1 + 
##     graduados_exatas$calculo2 + graduados_exatas$calculo3 + graduados_exatas$algebra_vetorial + 
##     graduados_exatas$linear + graduados_exatas$fisica1)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -3.5649 -1.0379 -0.1951  0.6903  8.3773 
## 
## Coefficients:
##                                   Estimate Std. Error t value Pr(>|t|)    
## (Intercept)                       17.02401    0.43605  39.042  < 2e-16 ***
## graduados_exatas$calculo1         -0.07937    0.06525  -1.216  0.22458    
## graduados_exatas$calculo2         -0.01502    0.06863  -0.219  0.82688    
## graduados_exatas$calculo3         -0.02549    0.06271  -0.406  0.68464    
## graduados_exatas$algebra_vetorial -0.22591    0.07242  -3.120  0.00195 ** 
## graduados_exatas$linear           -0.23996    0.07687  -3.121  0.00194 ** 
## graduados_exatas$fisica1          -0.27308    0.06669  -4.095 5.18e-05 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.591 on 377 degrees of freedom
## Multiple R-squared:  0.3597, Adjusted R-squared:  0.3495 
## F-statistic:  35.3 on 6 and 377 DF,  p-value: < 2.2e-16

Tabela 14

como podemos perceber as 3 disciplinas que mais contribuem para o tempo de formacao do aluno sao as disciplinas linear, vetorial e fisica, por incrivel, calculo1 nao e tao importante. a mais alta e calculo2 eliminaremos calculo2 e seguimos o mesmo processo de remocao de variaveis

Concluimos que as disciplinas que mais contribuem para a formacao de um aluno dentre os cursos apresentados sao algebra vetorial, linear e fisica 1. Acreditava-se que calculo estava mais correlacionado devido o alto indice de reprovacao.

modelo2 <- lm(graduados_exatas$Periodos_Cursados ~graduados_exatas$algebra_vetorial
              +graduados_exatas$linear
              +graduados_exatas$fisica1)
summary(modelo2)
## 
## Call:
## lm(formula = graduados_exatas$Periodos_Cursados ~ graduados_exatas$algebra_vetorial + 
##     graduados_exatas$linear + graduados_exatas$fisica1)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -3.3354 -1.0680 -0.1996  0.6965  8.3077 
## 
## Coefficients:
##                                   Estimate Std. Error t value Pr(>|t|)    
## (Intercept)                       16.88016    0.38362  44.002  < 2e-16 ***
## graduados_exatas$algebra_vetorial -0.27203    0.06297  -4.320 2.00e-05 ***
## graduados_exatas$linear           -0.28103    0.06764  -4.155 4.02e-05 ***
## graduados_exatas$fisica1          -0.28321    0.06534  -4.335 1.87e-05 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.588 on 380 degrees of freedom
## Multiple R-squared:  0.3567, Adjusted R-squared:  0.3516 
## F-statistic: 70.24 on 3 and 380 DF,  p-value: < 2.2e-16

Tabela 15

Por fim analisaremos os dados dos alunos de Computação

Abaixo é realizada uma breve sumarização dos dados. Quarenta e Duas é o número mínimo de disciplinas obrigatórias necessárias para a integração do curso de Ciência da Computação. A disciplina de Seminários é removida dos dados por não oferecer significância. Importante observar que é realizado uma média da notas de uma disciplina de determinado aluno. Por exemplo, se o aluno cursou cálculo três vezes com as notas 0,4 e 8 então sua média final será 4.

alunos_computacao_graduados      <- filter(matriculas_graduados_data,Nome_Curso=='CIÊNCIA DA COMPUTAÇÃO - D',Desistiu==FALSE,Disciplinas_Aprovadas >= 42)
alunos_computacao_graduados_data <- registros[is.element(registros$Matricula,alunos_computacao_graduados$Matricula) & registros$Nome_Disciplina != 'SEMINÁRIOS_(EDUCAÇÃO_AMBIENTAL)',]
alunos_computacao_graduados_data <- na.omit(summarise(group_by(alunos_computacao_graduados_data,Matricula,Centro,Campus,Nome_Disciplina),Media_Disciplina=mean(Media_Disciplina))) 

Abaixo são selecionadas as disciplinas que foram cursadas pelo menos por 230 alunos.

disciplinas_computacao_graduados <- summarise(group_by(alunos_computacao_graduados_data,Nome_Disciplina),Numero_Matriculas=length(unique(Matricula)))
disciplinas_computacao_graduados <- disciplinas_computacao_graduados[order(-disciplinas_computacao_graduados$Numero_Matriculas),]
disciplinas_computacao_graduados[1:10,]
## Source: local data frame [10 x 2]
## 
##                             Nome_Disciplina Numero_Matriculas
##                                      (fctr)             (int)
## 1                    GERÊNCIA DA INFORMAÇÃO               270
## 2             LABORATÓRIO DE PROGRAMAÇÃO II               270
## 3                          BANCO DE DADOS I               269
## 4                         BANCO DE DADOS II               269
## 5           ESTRUTURA DE DADOS E ALGORITMOS               269
## 6             FUNDAMENTOS DE FÍSICA MODERNA               269
## 7     INTERCONEXÃO DE REDES DE COMPUTADORES               269
## 8    LAB.DE ESTRUTURA DE DADOS E ALGORITMOS               269
## 9  LAB.DE INTERCON.DE REDES DE COMPUTADORES               269
## 10 LAB.DE ORG.E ARQUITETURA DE COMPUTADORES               269
disciplinas_comp_nome <- disciplinas_computacao_graduados[disciplinas_computacao_graduados$Numero_Matriculas >= 230,]$Nome_Disciplina

Abaixo é realizado uma intersecção entre as disciplinas com o propósito o maior número de disciplinas que seja comum entre os alunos.

computacao <- alunos_computacao_graduados_data[alunos_computacao_graduados_data$Nome_Disciplina==disciplinas_comp_nome[1],]$Matricula

for (i in 2:length(disciplinas_comp_nome)){
  computacao <- intersect(computacao,alunos_computacao_graduados_data[alunos_computacao_graduados_data$Nome_Disciplina==disciplinas_comp_nome[i],]$Matricula)
}
graduados_computacao_disciplinas <- alunos_computacao_graduados_data[is.element(alunos_computacao_graduados_data$Matricula,computacao),]

Abaixo é construído uma tabela com os dados das notas das disciplinas com o objetivo de realizar uma regressão linear

disciplinas_comp <- data.frame(graduados_computacao_disciplinas[graduados_computacao_disciplinas$Nome_Disciplina==disciplinas_comp_nome[1],]$Media_Disciplina)

for (i in 2:length(disciplinas_comp_nome)){
  disciplinas_comp <- cbind(disciplinas_comp,graduados_computacao_disciplinas[graduados_computacao_disciplinas$Nome_Disciplina==disciplinas_comp_nome[i],]$Media_Disciplina)
}
disciplinas_comp_nome <- gsub(" ", "_", disciplinas_comp_nome)
colnames(disciplinas_comp) <- disciplinas_comp_nome
alunos_computacao  <- alunos_computacao_graduados[is.element(alunos_computacao_graduados $Matricula,computacao),]
alunos_computacao <- na.omit(cbind(alunos_computacao,disciplinas_comp))

É realizado uma regressão linear polinomial para encontrar as disciplinas que mais contribuem para o tempo de formação do aluno

modelo3 <- lm(alunos_computacao$Periodos_Cursados ~
              + alunos_computacao$ORG.E_ARQUITETURA_DE_COMPUTADORES_I + (alunos_computacao$ORG.E_ARQUITETURA_DE_COMPUTADORES_I)^2 + (alunos_computacao$ORG.E_ARQUITETURA_DE_COMPUTADORES_I)^3
              + alunos_computacao$PARADIGMAS_DE_LING._DE_PROGRAMAÇÃO + (alunos_computacao$PARADIGMAS_DE_LING._DE_PROGRAMAÇÃO)^2 + (alunos_computacao$PARADIGMAS_DE_LING._DE_PROGRAMAÇÃO)^3
              + alunos_computacao$INFORMÁTICA_E_SOCIEDADE + (alunos_computacao$INFORMÁTICA_E_SOCIEDADE)^2 + (alunos_computacao$INFORMÁTICA_E_SOCIEDADE)^3
              + alunos_computacao$LABORATÓRIO_DE_PROGRAMAÇÃO_I + (alunos_computacao$LABORATÓRIO_DE_PROGRAMAÇÃO_I)^2 + (alunos_computacao$LABORATÓRIO_DE_PROGRAMAÇÃO_I)^3
              + alunos_computacao$COMPILADORES + (alunos_computacao$COMPILADORES)^2 + (alunos_computacao$COMPILADORES)^3
              + alunos_computacao$SISTEMAS_OPERACIONAIS + (alunos_computacao$SISTEMAS_OPERACIONAIS)^2 + (alunos_computacao$SISTEMAS_OPERACIONAIS)^3
              + alunos_computacao$PROBABILIDADE_E_ESTATISTICA + (alunos_computacao$PROBABILIDADE_E_ESTATISTICA)^2 + (alunos_computacao$PROBABILIDADE_E_ESTATISTICA)^3
              + alunos_computacao$METODOS_ESTATISTICOS + (alunos_computacao$METODOS_ESTATISTICOS)^2 + (alunos_computacao$METODOS_ESTATISTICOS)^3)

Abaixo podemos ver as disciplinas que mais contribuem para a formação do aluno de Ciência da computação com destaque para as disciplinas de Compiladores, Métodos Estatísticos, Sistemas Operacionais e Paradigmas de Linguagens de Programação. Interessante Notar que as disciplnas de Cálculo I, Cálculo II e Vetorial não estão presentes. No caso de Cálculo II o motivo se deve a ausência de dados dos alunos anterior ao período 2008.2. No caso de Cálculo I e Vetorial podem ser explicados devido a dependência das disciplinas de Probabilidade e Métodos que são respectivamente seus últimos pós requisitos.

summary(modelo3)
## 
## Call:
## lm(formula = alunos_computacao$Periodos_Cursados ~ +alunos_computacao$ORG.E_ARQUITETURA_DE_COMPUTADORES_I + 
##     (alunos_computacao$ORG.E_ARQUITETURA_DE_COMPUTADORES_I)^2 + 
##     (alunos_computacao$ORG.E_ARQUITETURA_DE_COMPUTADORES_I)^3 + 
##     alunos_computacao$PARADIGMAS_DE_LING._DE_PROGRAMAÇÃO + 
##     (alunos_computacao$PARADIGMAS_DE_LING._DE_PROGRAMAÇÃO)^2 + 
##     (alunos_computacao$PARADIGMAS_DE_LING._DE_PROGRAMAÇÃO)^3 + 
##     alunos_computacao$INFORMÁTICA_E_SOCIEDADE + (alunos_computacao$INFORMÁTICA_E_SOCIEDADE)^2 + 
##     (alunos_computacao$INFORMÁTICA_E_SOCIEDADE)^3 + alunos_computacao$LABORATÓRIO_DE_PROGRAMAÇÃO_I + 
##     (alunos_computacao$LABORATÓRIO_DE_PROGRAMAÇÃO_I)^2 + (alunos_computacao$LABORATÓRIO_DE_PROGRAMAÇÃO_I)^3 + 
##     alunos_computacao$COMPILADORES + (alunos_computacao$COMPILADORES)^2 + 
##     (alunos_computacao$COMPILADORES)^3 + alunos_computacao$SISTEMAS_OPERACIONAIS + 
##     (alunos_computacao$SISTEMAS_OPERACIONAIS)^2 + (alunos_computacao$SISTEMAS_OPERACIONAIS)^3 + 
##     alunos_computacao$PROBABILIDADE_E_ESTATISTICA + (alunos_computacao$PROBABILIDADE_E_ESTATISTICA)^2 + 
##     (alunos_computacao$PROBABILIDADE_E_ESTATISTICA)^3 + alunos_computacao$METODOS_ESTATISTICOS + 
##     (alunos_computacao$METODOS_ESTATISTICOS)^2 + (alunos_computacao$METODOS_ESTATISTICOS)^3)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -1.4642 -0.6453 -0.0194  0.4969  3.2194 
## 
## Coefficients:
##                                                       Estimate Std. Error
## (Intercept)                                           12.65614    1.08977
## alunos_computacao$ORG.E_ARQUITETURA_DE_COMPUTADORES_I -0.20813    0.08137
## alunos_computacao$PARADIGMAS_DE_LING._DE_PROGRAMAÇÃO  -0.17792    0.06591
## alunos_computacao$INFORMÁTICA_E_SOCIEDADE              0.26804    0.11958
## alunos_computacao$LABORATÓRIO_DE_PROGRAMAÇÃO_I        -0.10176    0.05737
## alunos_computacao$COMPILADORES                        -0.17353    0.06406
## alunos_computacao$SISTEMAS_OPERACIONAIS                0.23275    0.08204
## alunos_computacao$PROBABILIDADE_E_ESTATISTICA         -0.12086    0.06363
## alunos_computacao$METODOS_ESTATISTICOS                -0.19791    0.06409
##                                                       t value Pr(>|t|)    
## (Intercept)                                            11.614  < 2e-16 ***
## alunos_computacao$ORG.E_ARQUITETURA_DE_COMPUTADORES_I  -2.558  0.01163 *  
## alunos_computacao$PARADIGMAS_DE_LING._DE_PROGRAMAÇÃO   -2.699  0.00783 ** 
## alunos_computacao$INFORMÁTICA_E_SOCIEDADE               2.241  0.02661 *  
## alunos_computacao$LABORATÓRIO_DE_PROGRAMAÇÃO_I         -1.774  0.07835 .  
## alunos_computacao$COMPILADORES                         -2.709  0.00762 ** 
## alunos_computacao$SISTEMAS_OPERACIONAIS                 2.837  0.00525 ** 
## alunos_computacao$PROBABILIDADE_E_ESTATISTICA          -1.899  0.05964 .  
## alunos_computacao$METODOS_ESTATISTICOS                 -3.088  0.00244 ** 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.8676 on 136 degrees of freedom
## Multiple R-squared:  0.4672, Adjusted R-squared:  0.4359 
## F-statistic: 14.91 on 8 and 136 DF,  p-value: 1.559e-15