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