Para coleta das informações de estudantes de graduação e de docentes, utilizamos os dados do Censo da Educação Superior de 2022. Para os dados de pós-graduação, utilizamos (?????).
Em cada uma das abas abaixo são apresentados os códigos utilizados para computar as informações solicitadas, bem como a metodologia utilizada para obter o Full Time Equivalent para docentes e discentes.
Nesta atualização de dados, procuramos seguir as {diretrizes}
apontadas pelo QS World Rankings, exceto na sugestão de fórmula para
calcular o FTE:
\[ FTE = FT + \frac{PT}{3} \] Em que \(FT\) é a quantidade observada de indivíduos em tempo integral e \(PT\) é a quantidade observada de indivíduos em tempo parcial.
Nossa definição para aluno em tempo integral \((=1)\) corresponde ao discente presencial
matriculado no turno integral, enquanto os demais discentes são
incluídos na categoria tempo parcial
\((=0.5)\).
Analogamente, para os docentes a ideia é a mesma: aqueles que trabalham em tempo parcial são contados como 0.5, enquanto os docentes em tempo integral são contabilizados como 1.
Em cada um dos tópicos abaixo, apresentamos a metodologia, os resultados e a necessidade de novos dados para preenchimento completo do ranking.
Primeiramente, vamos abrir os dados de docentes utilizados no Censo da Educação Superior relativos a 2022 e verificar a distribuição por regime de trabalho. Tomamos como critério a exclusão dos docentes visitantes, além disso, há 70 docentes que não possuem registro do regime de trabalho. Estes também deverão ser excluídos do contagem. Neste ponto, já temos um total de 328 docentes em tempo parcial e 2651 docentes em tempo integral:
# QS World University Rankings - dados de 2022
library(readr)
library(dplyr)
library(readxl)
library(knitr)
library(countries)
#setwd("C:/Users/kassi/workspace/QS World University Rankings/Atualizacao_2022/")
# abrindo dados do censo
dados_docentes_2022 <- read_delim("dados/relatorio_detalhado_docente_ies_580_20230728_134940 (2).csv",
delim = ";", escape_double = FALSE,
locale = locale(encoding = "ISO-8859-1"),
trim_ws = TRUE)
# Faculty Staff -----------------------------------------------------------
# Regra para o FULL TIME: se o regime de trabalho for tempo parcial = 0.5
dados_docentes_2022 %>% distinct(NU_CPF, .keep_all = TRUE) %>%
filter(DOCENTE_VISITANTE=="Não") %>%
mutate(FULL_TIME = ifelse(REGIME_TRABALHO=="Tempo Parcial", 0.5, 1)) ->
dados_docentes_2022
# existem 70 docentes sem regime de trabalho preenchido
dados_docentes_2022 %>% select(FULL_TIME) %>% table(useNA = "ifany") %>% kable
FULL_TIME | Freq |
---|---|
0.5 | 328 |
1 | 2651 |
NA | 70 |
Os docentes em tempo integral podem ser “com dedicação exclusiva” ou “sem dedicação exclusiva”:
# numero total Full Time (nao eh o equivalente)
dados_docentes_2022 %>% group_by(REGIME_TRABALHO) %>%
summarise(Totais = n()) %>% kable
REGIME_TRABALHO | Totais |
---|---|
Tempo Parcial | 328 |
Tempo integral com DE | 2208 |
Tempo integral sem DE | 443 |
NA | 70 |
Agora, criamos uma nova coluna para registrar os valores 1 ou 0.5, de acordo com o regime de trabalho do docente. Em seguida computamos as somas por sexo. Assim, obtemos o FTE por sexo para os docentes.
Para o sexo masculino, temos:
# contabilizando o FTE
dados_docentes_2022$FULL_TIME %>% sum(na.rm = TRUE) -> faculty_staff_FTE
# por sexo
dados_docentes_2022 %>% group_by(REGIME_TRABALHO, SEXO) %>%
summarise(Totais = n(), fte=sum(FULL_TIME)) -> docentes_2022_sexo
docentes_2022_sexo %>% filter(SEXO=="Masculino") %>% kable
REGIME_TRABALHO | SEXO | Totais | fte |
---|---|---|---|
Tempo Parcial | Masculino | 179 | 89.5 |
Tempo integral com DE | Masculino | 1124 | 1124.0 |
Tempo integral sem DE | Masculino | 210 | 210.0 |
NA | Masculino | 35 | NA |
Para o sexo feminino:
docentes_2022_sexo %>% filter(SEXO=="Feminino") %>% kable
REGIME_TRABALHO | SEXO | Totais | fte |
---|---|---|---|
Tempo Parcial | Feminino | 149 | 74.5 |
Tempo integral com DE | Feminino | 1084 | 1084.0 |
Tempo integral sem DE | Feminino | 233 | 233.0 |
NA | Feminino | 35 | NA |
Para os docentes estrangeiros, basta filtrar a base de dados onde a nacionalidade é diferente de “Brasileira”. Novamente, a partir do regime de trabalho, computamos o total headcount e o FTE:
# international
dados_docentes_2022 %>%
mutate(ESTRANGEIRO=ifelse(NOME_NACIONALIDADE!="Brasileira", "Sim", "Não")) ->
dados_docentes_2022
dados_docentes_2022 %>% group_by(ESTRANGEIRO, REGIME_TRABALHO) %>%
summarise(Total = n(), fte = sum(FULL_TIME)) %>% kable
ESTRANGEIRO | REGIME_TRABALHO | Total | fte |
---|---|---|---|
Não | Tempo Parcial | 328 | 164 |
Não | Tempo integral com DE | 2189 | 2189 |
Não | Tempo integral sem DE | 439 | 439 |
Não | NA | 70 | NA |
Sim | Tempo integral com DE | 19 | 19 |
Sim | Tempo integral sem DE | 4 | 4 |
Finalmente, para preenchimento do ranking, temos para os docentes os seguintes dados:
Full Time | Part Time | HC | FTE | |
Faculty Staff | 2651 | 328 | 2979 | 2815 |
Faculty Staff Male | 1334 | 179 | 1513 | 1423,5 |
Faculty Staff Female | 1317 | 149 | 1466 | 1391,5 |
International Faculty Staff | 23 | 0 | 23 | 23 |
Para os estudantes, temos três casos:
Assim, o primeiro passo é obter todos os números de CPF que aparecem no ano de 2022.
Em seguida, obtemos os CPFs dos alunos matriculados apenas em 2022.1 ou 2022.2 e utilizamos para separar os três conjuntos de dados.
dados_alunos <- readRDS("./dados/base_censo_2013_2022_V2.rds")
# Students - Undergraduate ------------------------------------------------
dados_alunos %>% filter(ANO=="2022") -> dados_alunos_2022
# cpf dos alunos que aparecem em pelo menos um semestre
dados_alunos_2022 %>% select(NU_CPF) %>% unique -> CPFs_2022
# cpf dos alunos que aparecem em 2022.1
dados_alunos_2022 %>% filter(PERIODO_REFERENCIA == 1) %>% select(NU_CPF) %>%
unique -> CPFs_2022.1
# cpf dos alunos que aparecem em 2022.2
dados_alunos_2022 %>% filter(PERIODO_REFERENCIA == 2) %>% select(NU_CPF) %>%
unique -> CPFs_2022.2
# dim(CPFs_2022)
# dim(CPFs_2022.1)
# dim(CPFs_2022.2)
# CPFs que aparecem em dois semestres
intersect(CPFs_2022.1, CPFs_2022.2) -> alunos_2_semestres
# CPFs que aparecem somente em 2022.1
setdiff(CPFs_2022.1, alunos_2_semestres) -> alunos_so_2022.1
# CPFs que aparecem somente em 2022.2
setdiff(CPFs_2022.2, alunos_2_semestres) -> alunos_so_2022.2
Utilizando os CPFs nos três casos, podemos agora criar em cada dataframe a coluna FULL_TIME guardando o FTE de cada aluno. Novamente, atribuimos o valor 1 para o estudantes em turno integral e 0.5 para os demais, excluindo os alunos EaD do cálculo.
# agora, faz o filtro
# testar com 0.5 e 1 mesmo se ele passou somente um semestre
# apenas 2022.1
dados_alunos_2022 %>% filter(NU_CPF %in% alunos_so_2022.1$NU_CPF,
VINCULADO=="Sim", TURNO!="Ead") %>%
mutate(FULL_TIME = ifelse(TURNO!="Integral", 0.5, 1)) -> dados_alunos_so_2022.1
# apenas 2022.2
dados_alunos_2022 %>% filter(NU_CPF %in% alunos_so_2022.2$NU_CPF, VINCULADO=="Sim",
TURNO!="Ead") %>%
mutate(FULL_TIME = ifelse(TURNO!="Integral", 0.5, 1)) -> dados_alunos_so_2022.2
# ambos
dados_alunos_2022 %>% filter(NU_CPF %in% alunos_2_semestres$NU_CPF, VINCULADO=="Sim",
TURNO!="Ead") %>%
distinct(NU_CPF, .keep_all = TRUE) %>%
mutate(FULL_TIME = ifelse(TURNO!="Integral", 0.5, 1)) -> dados_alunos_ambos
Agora, utilizamos a coluna FULL_TIME anteriormente criada para computar o FTE, o número de discentes em tempo integral e o número de discentes em tempo parcial. Vamos somar os totais de alunos FTE para os presentes em apenas um semestre e os presentes em ambos os semestres:
# FTE
dados_alunos_so_2022.1 %>% select(FULL_TIME) %>% sum +
dados_alunos_so_2022.2 %>% select(FULL_TIME) %>% sum +
dados_alunos_ambos %>% select(FULL_TIME) %>% sum
## [1] 25660
Utilizamos o mesmo procedimento para obter a quantidade de alunos de graduação em tempo integral, somando os totais de alunos (não o FTE):
# Full Time
(dados_alunos_so_2022.1 %>% group_by(TURNO) %>% summarise(Total=n()) %>% filter(TURNO=="Integral"))$Total +
(dados_alunos_so_2022.2 %>% group_by(TURNO) %>% summarise(Total=n()) %>% filter(TURNO=="Integral"))$Total +
(dados_alunos_ambos %>% group_by(TURNO) %>% summarise(Total=n()) %>% filter(TURNO=="Integral"))$Total
## [1] 16691
FInalmente, a quantidade de alunos de graduação em tempo parcial:
# Part Time
((dados_alunos_so_2022.1 %>% group_by(TURNO) %>% summarise(Total=n()) %>% filter(TURNO!="Integral"))$Total +
(dados_alunos_so_2022.2 %>% group_by(TURNO) %>% summarise(Total=n()) %>% filter(TURNO!="Integral"))$Total +
(dados_alunos_ambos %>% group_by(TURNO) %>% summarise(Total=n()) %>% filter(TURNO!="Integral"))$Total) %>% sum
## [1] 17938
Para computar o número de estudantes de graduação estrangeiros, realizamos o mesmo procedimento, filtrando os alunos cujo país de origem é diferente de “Brasil”.
# undergraduate international students
dados_alunos_so_2022.1 %>% filter(NOME_PAIS_ORIGEM != "Brasil") %>%
group_by(TURNO) %>% summarise(Total=n(), FTE=sum(FULL_TIME)) %>% kable
TURNO | Total | FTE |
---|---|---|
Integral | 3 | 3.0 |
Matutino | 1 | 0.5 |
Noturno | 1 | 0.5 |
dados_alunos_so_2022.2 %>% filter(NOME_PAIS_ORIGEM != "Brasil") %>%
group_by(TURNO) %>% summarise(Total=n(), FTE=sum(FULL_TIME)) %>% kable
TURNO | Total | FTE |
---|---|---|
Integral | 3 | 3.0 |
Noturno | 1 | 0.5 |
dados_alunos_ambos %>% filter(NOME_PAIS_ORIGEM != "Brasil") %>%
group_by(TURNO) %>% summarise(Total=n(), FTE=sum(FULL_TIME)) %>% kable
TURNO | Total | FTE |
---|---|---|
Integral | 35 | 35 |
Matutino | 2 | 1 |
Noturno | 8 | 4 |
Os totais para estudantes internacionais na graduação: somando as quantidades das tabelas acima, temos 47.5 alunos estrangeiros equivalente, 41 alunos em tempo integral e 13 em tempo parcial.
# undergraduate Exchange Student - Outbound
# Full time
dados_alunos_2022 %>% filter(!is.na(MOB_ACAD_PAISDESTINO)) %>%
distinct(NU_CPF, CODIGO_CURSO, .keep_all = TRUE) %>%
select(TURNO) %>%
filter(TURNO=="Integral") %>% nrow
## [1] 66
dados_alunos_so_2022.1 %>% filter(!is.na(MOB_ACAD_PAISDESTINO)) %>%
distinct(NU_CPF, CODIGO_CURSO, .keep_all = TRUE) %>% select(TURNO) %>%
filter(TURNO=="Integral") %>% nrow
## [1] 0
dados_alunos_so_2022.2 %>% filter(!is.na(MOB_ACAD_PAISDESTINO)) %>%
distinct(NU_CPF, CODIGO_CURSO, .keep_all = TRUE) %>% select(TURNO) %>%
filter(TURNO=="Integral") %>% nrow
## [1] 0
# Partial Time
dados_alunos_2022 %>% filter(!is.na(MOB_ACAD_PAISDESTINO)) %>%
distinct(NU_CPF, CODIGO_CURSO, .keep_all = TRUE) %>% select(TURNO) %>%
filter(TURNO!="Integral") %>% nrow
## [1] 18
# FTE
dados_alunos_2022 %>% filter(!is.na(MOB_ACAD_PAISDESTINO)) %>%
distinct(NU_CPF, CODIGO_CURSO, .keep_all = TRUE) %>%
mutate(FULL_TIME = ifelse(TURNO=="Integral", 1, 0.5)) %>% select(FULL_TIME) %>%
sum
## [1] 75
Em relação ao número de graduandos estrangeiros na UFPE em programas de mobilidade (Undergraduate Exchange Students – Inbound), não há disponibilidade destes dados no Censo da Educação Superior. Necessitamos de outra fonte de dados para obter esta informação.
Finalmente, para o item Students - Undergraduate, fornecemos os seguintes dados:
Full Time | Part Time | HC | FTE | |
---|---|---|---|---|
Undergraduate Students | 16691 | 17938 | 34629 | 25660 |
Undergraduate International Students | 41 | 13 | 54 | 47,5 |
Undergraduate Exchange Students – Inbound | ||||
Undergraduate Exchange Students – Outbound | 66 | 18 | 84 | 75 |
Para pós-graduação, consideramos os matriculados em cursos de mestrado e doutorado. Consideramos todos os alunos da pós stricto sensu como tempo integral.
dados_pos <- read_excel("dados/relatorio_dados_enviados_coleta_publico (3) (1).xlsx")
dados_pos %>% filter(`Situação Discente` == "MATRICULADO",
`Nível Discente` %in% c("Mestrado", "Doutorado")) %>% dim
## [1] 9596 18
Nesta seção, maior parte dos dados exige informações que não consta nas planilhas da pós-graduação:
- Número de alunos de pós-graduação estrangeiros (não há coluna de nacionalidade nos dados);
- Número de alunos de pós-graduação da UFPE em intercâmbio (sanduíche?) em outros países;
- Número de alunos de pós-graduação estrangeiros em intercâmbio na UFPE.
Full Time | Part Time | HC | FTE | |
---|---|---|---|---|
Graduate/Postgraduate Students | 9596 | 0 | 9596 | 9596 |
Graduate/Postgraduate International Students | ||||
Graduate/Postgraduate Exchange Inbound Students – Inbound | ||||
Graduate/Postgraduate Outbound Exchange Students |
Os dois primeiros dados solicitados são apenas a soma do total de estudantes e o total de estudantes internacionais.
# FTE
dados_alunos_so_2022.1 %>% filter(TURNO=="EaD") %>% nrow +
dados_alunos_so_2022.2 %>% filter(TURNO=="EaD") %>% nrow +
dados_alunos_ambos %>% filter(TURNO=="EaD") %>% nrow
## [1] 800
Os dados solicitados nesta seção que não temos são:
- International Students – distance
- Exchange Students – Inbound
- Exchange Students – Outbound
Na planilha utilizada para os dados da pós-graduação, não temos a coluna SEXO, não sendo possível calcular estes dados.
Primeiramente vamos computar o número de estudantes FTE por sexo na graduação, obtendo os valores de 12974.5 discentes do sexo feminino e 12685.5 do sexo masculino. Note que a soma (25660) é o número de estudantes FTE informado anteriormente.
# FTE por sexo
(dados_alunos_so_2022.1 %>% group_by(SEXO) %>%
summarise(Total = n(), FTE = sum(FULL_TIME)))$FTE +
(dados_alunos_so_2022.2 %>% group_by(SEXO) %>%
summarise(Total = n(), FTE = sum(FULL_TIME)))$FTE +
(dados_alunos_ambos %>% group_by(SEXO) %>%
summarise(Total = n(), FTE = sum(FULL_TIME)))$FTE
## [1] 12974.5 12685.5
# Full Time por sexo
(dados_alunos_so_2022.1 %>% group_by(TURNO, SEXO) %>% summarise(Total=n()) %>%
filter(TURNO=="Integral"))$Total +
(dados_alunos_so_2022.2 %>% group_by(TURNO, SEXO) %>% summarise(Total=n()) %>%
filter(TURNO=="Integral"))$Total +
(dados_alunos_ambos %>% group_by(TURNO, SEXO) %>% summarise(Total=n()) %>%
filter(TURNO=="Integral"))$Total
## [1] 7984 8707
# Part Time por sexo
(dados_alunos_so_2022.1 %>% filter(TURNO!="Integral") %>% group_by(SEXO) %>%
summarise(Total=n()))$Total +
(dados_alunos_so_2022.2 %>% filter(TURNO!="Integral") %>% group_by(SEXO) %>%
summarise(Total=n()))$Total +
(dados_alunos_ambos %>% filter(TURNO!="Integral") %>% group_by(SEXO) %>%
summarise(Total=n()))$Total
## [1] 9981 7957
# total de nacionalidades
(dados_alunos_so_2022.1 %>% filter(NOME_PAIS_ORIGEM!="Brasil"))$NOME_PAIS_ORIGEM %>%
table %>% as.data.frame -> internacional_2022.1
(dados_alunos_so_2022.2 %>% filter(NOME_PAIS_ORIGEM!="Brasil"))$NOME_PAIS_ORIGEM %>%
table %>% as.data.frame -> internacional_2022.2
(dados_alunos_ambos %>% filter(NOME_PAIS_ORIGEM!="Brasil"))$NOME_PAIS_ORIGEM %>%
table %>% as.data.frame -> internacional_ambos
internacional_2022.1 %>% bind_rows(internacional_2022.2) %>%
bind_rows(internacional_ambos) -> internacional
colnames(internacional) = c("Origem", "Discentes")
internacional$Origem %>% unique
## [1] Argentina Cabo Verde
## [3] Costa Rica Honduras
## [5] Suíça Estados Unidos
## [7] França Japão
## [9] Alemanha Antártida
## [11] Benim Bolívia
## [13] Camarões Canadá
## [15] Colômbia Espanha
## [17] Gabão Guatemala
## [19] Guiné-Bissau Haiti
## [21] Israel Itália
## [23] Namíbia Peru
## [25] Portugal Reino Unido
## [27] República Democrática do Congo São Tomé e Príncipe
## [29] Venezuela
## 29 Levels: Argentina Cabo Verde Costa Rica Honduras Suíça ... Venezuela
internacional$Origem <- internacional$Origem %>%
country_name(to="name_en")
internacional %>% group_by(Origem) %>% summarise(Discentes=sum(Discentes)) %>%
kable
Origem | Discentes |
---|---|
Antarctica | 1 |
Argentina | 3 |
Benin | 3 |
Bolivia (Plurinational State of) | 1 |
Cabo Verde | 4 |
Cameroon | 1 |
Canada | 1 |
Colombia | 1 |
Congo, Democratic Republic of the | 1 |
Costa Rica | 2 |
France | 1 |
Gabon | 1 |
Germany | 1 |
Guatemala | 1 |
Guinea-Bissau | 1 |
Haiti | 1 |
Honduras | 3 |
Israel | 1 |
Italy | 1 |
Japan | 5 |
Namibia | 1 |
Peru | 1 |
Portugal | 4 |
Sao Tome and Principe | 1 |
Spain | 2 |
Switzerland | 2 |
United Kingdom of Great Britain and Northern Ireland | 2 |
United States of America | 6 |
Venezuela (Bolivarian Republic of) | 1 |
Full Time | Part Time | HC | FTE | |
---|---|---|---|---|
Students Male | 8707 | 7957 | 16664 | 12685.5 |
Students Female | 7984 | 9981 | 17965 | 12974.5 |
Students Other | 0 | 0 | 0 | 0 |
Total de países: 28.
dados_alunos_2022 %>% distinct(NOME_CURSO, CODIGO_CURSO, .keep_all = TRUE) %>%
nrow
## [1] 112
dados_pos %>% distinct(`Código do PPG`, `Nome do PPG`) %>% unique() %>% nrow
## [1] 97
dados_alunos_2022 %>% distinct(NOME_CURSO, CODIGO_CURSO, .keep_all = TRUE) %>%
filter(TURNO=="EaD") %>% nrow
## [1] 6
Em relação aos demais dados solicitados neste tópico:
1. Student Continuation Rate (in %): trata-se da porcentagem de discentes de graduação que se formam e ingressam em pós-graduação na mesma instituição ou em outras em menos de dois anos. Atualmente não temos estes dados.
2. Student Retention Rate (in %): Percentual de alunos ingressantes em tempo integral que continua seus estudos no segundo ano.
3. Completion Rate (in %): percentual dos estudantes de graduação em um coorte que completam o curso em 100% do tempo alocado.
4. First Generation Learners: percentual de estudantes cujos guardiões não obtiveram algum grau universitário.
Para preencher esta seção, seria necessário realizar o acompanhamento dos egressos. Os dados necessários são o número de estudantes com empregos no prazo de 15 meses após conclusão dos estudos e sua média salarial.
Evidências dos dados apresentados anteriormente, a saber, a pesquisa com os egressos.