## ── Attaching packages ──────────────────────────────────────────────── tidyverse 1.2.1 ──
## ✓ ggplot2 3.3.0 ✓ purrr 0.3.3
## ✓ tibble 2.1.3 ✓ dplyr 0.8.4
## ✓ tidyr 1.0.2 ✓ stringr 1.4.0
## ✓ readr 1.3.1 ✓ forcats 0.4.0
## ── Conflicts ─────────────────────────────────────────────────── tidyverse_conflicts() ──
## x dplyr::filter() masks stats::filter()
## x dplyr::lag() masks stats::lag()
##
## Attaching package: 'modelr'
## The following object is masked from 'package:broom':
##
## bootstrap
A CAPES é um órgão do MEC que tem a atribuição de acompanhar a pós-graduação na universidade brasileira. Uma das formas que ela encontrou de fazer isso e pela qual ela é bastante criticada é através de uma avaliação quantitativa a cada x anos (era 3, mudou para 4).
Usaremos dados da penúltima avaliação da CAPES:
cacc_tudo = read_projectdata()
glimpse(cacc_tudo)
## Observations: 73
## Variables: 31
## $ Instituição <chr> "UNIVERSIDADE FEDERAL DO AMAZONAS", "UNI…
## $ Programa <chr> "INFORMÁTICA (12001015012P2)", "CIÊNCIA …
## $ Nível <int> 5, 4, 3, 3, 3, 5, 4, 3, 3, 3, 5, 3, 3, 3…
## $ Sigla <chr> "UFAM", "UFPA", "UFMA", "UEMA", "FUFPI",…
## $ `Tem doutorado` <chr> "Sim", "Sim", "Não", "Não", "Não", "Sim"…
## $ `Docentes colaboradores` <dbl> 0.25, 5.50, 3.00, 6.25, 1.75, 2.00, 1.00…
## $ `Docentes permanentes` <dbl> 24.75, 14.00, 10.00, 14.00, 9.50, 20.75,…
## $ `Docentes visitantes` <dbl> 0.00, 0.00, 0.00, 0.00, 0.00, 0.75, 0.50…
## $ `Resumos em conf` <int> 20, 23, 15, 5, 4, 10, 6, 136, 0, 24, 27,…
## $ `Resumos expandidos em conf` <int> 25, 24, 7, 10, 1, 68, 9, 13, 4, 6, 16, 5…
## $ `Artigos em conf` <int> 390, 284, 115, 73, 150, 269, 179, 0, 120…
## $ Dissertacoes <int> 108, 77, 50, 25, 31, 75, 60, 129, 45, 3,…
## $ Teses <int> 14, 0, 0, 0, 0, 24, 5, 0, 0, 0, 29, 0, 0…
## $ periodicos_A1 <int> 15, 19, 5, 1, 7, 21, 21, 0, 3, 8, 44, 0,…
## $ periodicos_A2 <int> 19, 21, 11, 1, 4, 32, 13, 0, 9, 2, 23, 2…
## $ periodicos_B1 <int> 19, 38, 7, 3, 6, 26, 16, 2, 6, 4, 32, 4,…
## $ periodicos_B2 <int> 1, 12, 2, 6, 0, 0, 11, 0, 0, 2, 1, 0, 0,…
## $ periodicos_B3 <int> 3, 16, 2, 2, 3, 16, 15, 0, 4, 6, 9, 0, 2…
## $ periodicos_B4 <int> 0, 4, 0, 3, 3, 0, 1, 3, 1, 6, 0, 0, 4, 5…
## $ periodicos_B5 <int> 10, 16, 8, 4, 12, 4, 16, 2, 6, 2, 11, 0,…
## $ periodicos_C <int> 9, 34, 12, 5, 2, 3, 11, 9, 5, 10, 16, 1,…
## $ periodicos_NA <int> 7, 15, 8, 11, 12, 6, 19, 31, 7, 14, 19, …
## $ per_comaluno_A1 <int> 4, 1, 0, 0, 1, 7, 5, 0, 1, 0, 10, 0, 0, …
## $ per_comaluno_A2 <int> 5, 5, 5, 0, 2, 15, 3, 0, 3, 0, 3, 0, 0, …
## $ per_comaluno_B1 <int> 4, 2, 5, 2, 2, 14, 6, 0, 2, 0, 17, 0, 1,…
## $ per_comaluno_B2 <int> 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0…
## $ per_comaluno_B3 <int> 2, 2, 0, 1, 0, 7, 9, 0, 2, 0, 4, 0, 0, 1…
## $ per_comaluno_B4 <int> 0, 0, 0, 0, 2, 0, 1, 0, 1, 3, 0, 0, 2, 0…
## $ per_comaluno_B5 <int> 5, 0, 4, 0, 8, 3, 6, 0, 4, 0, 4, 0, 2, 5…
## $ per_comaluno_C <int> 6, 5, 3, 1, 2, 3, 7, 1, 2, 4, 8, 0, 11, …
## $ per_comaluno_NA <int> 6, 14, 2, 2, 9, 3, 6, 4, 5, 1, 10, 0, 17…
Uma das maneiras de avaliar a produção dos docentes que a CAPES utiliza é quantificando a produção de artigos pelos docentes. Os artigos são categorizados em extratos ordenados (A1 é o mais alto), e separados entre artigos em conferências e periódicos. Usaremos para esse lab a produção em periódicos avaliados com A1, A2 e B1.
cacc = cacc_tudo %>%
transmute(
is_CC = grepl("CIÊNCIAS DA COMPUTAÇÃO", Programa, fixed=T) |
grepl("CIÊNCIA DA COMPUTAÇÃO", Programa, fixed=T),
Nível = Nível,
Teses = Teses,
Dissertacoes = Dissertacoes,
`Artigos em conf` = `Artigos em conf`,
per_NA = periodicos_NA + per_comaluno_NA,
com_aluno = (per_comaluno_A1 + per_comaluno_A2 + per_comaluno_B1),
periodicos_baixoqualis = periodicos_C + periodicos_NA,
contribuidores_externos = `Docentes colaboradores` + `Docentes visitantes`,
docentes = `Docentes permanentes`,
producao = (periodicos_A1 + periodicos_A2 + periodicos_B1),
produtividade = producao / docentes,
mestrados = Dissertacoes,
doutorados = Teses,
tem_doutorado = tolower(`Tem doutorado`) == "sim",
mestrados_pprof = mestrados / docentes,
doutorados_pprof = doutorados / docentes
)
cacc_md = cacc %>%
filter(tem_doutorado)
cacc %>%
glimpse()
## Observations: 73
## Variables: 17
## $ is_CC <lgl> FALSE, TRUE, TRUE, FALSE, TRUE, TRUE, FALSE, …
## $ Nível <int> 5, 4, 3, 3, 3, 5, 4, 3, 3, 3, 5, 3, 3, 3, 4, …
## $ Teses <int> 14, 0, 0, 0, 0, 24, 5, 0, 0, 0, 29, 0, 0, 0, …
## $ Dissertacoes <int> 108, 77, 50, 25, 31, 75, 60, 129, 45, 3, 108,…
## $ `Artigos em conf` <int> 390, 284, 115, 73, 150, 269, 179, 0, 120, 92,…
## $ per_NA <int> 13, 29, 10, 13, 21, 9, 25, 35, 12, 15, 29, 0,…
## $ com_aluno <int> 13, 8, 10, 2, 5, 36, 14, 0, 6, 0, 30, 0, 1, 8…
## $ periodicos_baixoqualis <int> 16, 49, 20, 16, 14, 9, 30, 40, 12, 24, 35, 1,…
## $ contribuidores_externos <dbl> 0.25, 5.50, 3.00, 6.25, 1.75, 2.75, 1.50, 7.2…
## $ docentes <dbl> 24.75, 14.00, 10.00, 14.00, 9.50, 20.75, 16.0…
## $ producao <int> 53, 78, 23, 5, 17, 79, 50, 2, 18, 14, 99, 6, …
## $ produtividade <dbl> 2.1414141, 5.5714286, 2.3000000, 0.3571429, 1…
## $ mestrados <int> 108, 77, 50, 25, 31, 75, 60, 129, 45, 3, 108,…
## $ doutorados <int> 14, 0, 0, 0, 0, 24, 5, 0, 0, 0, 29, 0, 0, 0, …
## $ tem_doutorado <lgl> TRUE, TRUE, FALSE, FALSE, FALSE, TRUE, TRUE, …
## $ mestrados_pprof <dbl> 4.3636364, 5.5000000, 5.0000000, 1.7857143, 3…
## $ doutorados_pprof <dbl> 0.5656566, 0.0000000, 0.0000000, 0.0000000, 0…
skimr::skim(cacc)
| Name | cacc |
| Number of rows | 73 |
| Number of columns | 17 |
| _______________________ | |
| Column type frequency: | |
| logical | 2 |
| numeric | 15 |
| ________________________ | |
| Group variables | None |
Variable type: logical
| skim_variable | n_missing | complete_rate | mean | count |
|---|---|---|---|---|
| is_CC | 0 | 1 | 0.49 | FAL: 37, TRU: 36 |
| tem_doutorado | 0 | 1 | 0.47 | FAL: 39, TRU: 34 |
Variable type: numeric
| skim_variable | n_missing | complete_rate | mean | sd | p0 | p25 | p50 | p75 | p100 | hist |
|---|---|---|---|---|---|---|---|---|---|---|
| Nível | 0 | 1 | 3.84 | 1.17 | 3.00 | 3.00 | 3.00 | 4.00 | 7.00 | ▇▅▁▁▁ |
| Teses | 0 | 1 | 14.96 | 30.98 | 0.00 | 0.00 | 0.00 | 14.00 | 152.00 | ▇▁▁▁▁ |
| Dissertacoes | 0 | 1 | 75.79 | 63.23 | 0.00 | 39.00 | 58.00 | 103.00 | 433.00 | ▇▃▁▁▁ |
| Artigos em conf | 0 | 1 | 245.58 | 182.61 | 0.00 | 124.00 | 199.00 | 296.00 | 959.00 | ▇▆▂▁▁ |
| per_NA | 0 | 1 | 24.32 | 17.39 | 0.00 | 13.00 | 20.00 | 30.00 | 90.00 | ▇▇▂▁▁ |
| com_aluno | 0 | 1 | 21.33 | 35.98 | 0.00 | 2.00 | 8.00 | 25.00 | 193.00 | ▇▁▁▁▁ |
| periodicos_baixoqualis | 0 | 1 | 28.73 | 18.28 | 0.00 | 16.00 | 25.00 | 38.00 | 92.00 | ▇▇▃▂▁ |
| contribuidores_externos | 0 | 1 | 4.26 | 4.11 | 0.00 | 1.50 | 3.00 | 5.75 | 22.25 | ▇▃▁▁▁ |
| docentes | 0 | 1 | 20.63 | 12.27 | 8.25 | 11.25 | 16.75 | 25.75 | 67.25 | ▇▃▁▁▁ |
| producao | 0 | 1 | 58.03 | 65.44 | 0.00 | 18.00 | 42.00 | 67.00 | 355.00 | ▇▂▁▁▁ |
| produtividade | 0 | 1 | 2.36 | 1.37 | 0.00 | 1.40 | 2.27 | 3.20 | 5.66 | ▆▇▇▅▂ |
| mestrados | 0 | 1 | 75.79 | 63.23 | 0.00 | 39.00 | 58.00 | 103.00 | 433.00 | ▇▃▁▁▁ |
| doutorados | 0 | 1 | 14.96 | 30.98 | 0.00 | 0.00 | 0.00 | 14.00 | 152.00 | ▇▁▁▁▁ |
| mestrados_pprof | 0 | 1 | 3.66 | 1.81 | 0.00 | 2.57 | 3.58 | 4.88 | 8.19 | ▂▇▇▃▂ |
| doutorados_pprof | 0 | 1 | 0.43 | 0.73 | 0.00 | 0.00 | 0.00 | 0.57 | 2.69 | ▇▁▁▁▁ |
cacc %>%
ggplot(aes(x = docentes)) +
geom_histogram(bins = 15, fill = paleta[1])
cacc %>%
ggplot(aes(x = producao)) +
geom_histogram(bins = 15, fill = paleta[2])
cacc %>%
ggplot(aes(x = produtividade)) +
geom_histogram(bins = 15, fill = paleta[3])
Se quisermos modelar o efeito do tamanho do programa em termos de docentes (permanentes) na quantidade de artigos publicados, podemos usar regressão.
Importante: sempre queremos ver os dados antes de fazermos qualquer modelo ou sumário:
cacc %>%
ggplot(aes(x = mestrados, y = produtividade)) +
geom_point()
mestrados é uma possível preditor de interesse, mas cujo impacto talvez seja limitado.cacc %>%
ggplot(aes(x = docentes, y = producao)) +
geom_point() +
facet_wrap(~ Nível, labeller = "label_both")
Nível, isso sugere Nível como um preditor de interessecacc %>%
ggplot(aes(x = `Artigos em conf`, y = produtividade)) +
geom_point()
Artigos em conf é uma possível preditor de interesse, mas cujo impacto talvez seja limitado.Diferente de medirmos produção (total produzido), é medirmos produtividade (produzido / utilizado). Abaixo focaremos nessa análise. Para isso crie um modelo que investiga como um conjunto de fatores que você julga que são relevantes se relacionam com a produtividade dos programas. Crie um modelo que avalie como pelo menos 3 fatores se relacionam com a produtividade de um programa. Pode reutilizar fatores que já definimos e analizamos para produção. Mas cuidado para não incluir fatores que sejam função linear de outros já incluídos (ex: incluir A, B e um tercero C=A+B)
Produza abaixo o modelo e um texto que comente (i) o modelo, tal como os que fizemos antes, e (ii) as implicações - o que aprendemos sobre como funcionam programas de pós no brasil?.
modelo = lm(produtividade ~ `Artigos em conf` + mestrados + Nível, data = cacc)
tidy(modelo,
conf.int=TRUE,
conf.level=0.95)
Artigos em conf, o estimado foi 0.004351066mestrados, o estimado foi -0.008506629Nível, o estimado foi 0.655638162Impacto Positivo / Negativo
Artigos em conf tem um impacto positivo. É intuitivo que produzir mais artigos em conferências indique mais produtividade.mestrados tem um impacto negativo. Esse resultado é contra intuitivo, um maior grande demais mestrados talvez seja associado a programas de níveis mais baixo. A interpretação não é claro, a priori esperaríamos que o preditor mestrados possuísse um efeito positivo.Nível tem um impacto positivo. É intuitivo que seja um efeito positivo, quanto mais alto o nível do programa mais alto a produção exigida do programa. E como sabemos, produtividade é derivada de produção.Significância
Relevância
Os estimados para Artigos em conf e mestrados possuem valores muito baixos, 0.004351066 e -0.008506629 respectivamente. Isso aponta que nenhum dos dois é particularmente relevante. * Em termos da regressão aumentar uma unidade Artigos em conf gera um aumento de 0.004351066 na produtividade, é fácil ver porque o preditor é pouco relevante. * Em termos da regressão aumentar uma unidade mestrados gera uma diminuição de -0.008506629 na produtividade, é fácil ver porque o preditor é pouco relevante.
O estimado para Nível foi de 0.655638162, em termos da regressão aumentar uma unidade Nível gera um aumento de 0.655638162 na produtividade. Nível é claramente nosso preditor mais relevante.
Nossa análise através de regressão linear apontou número de mestrados e número de artigos em conferência como parâmetros pouco relevantes para prever produtividade como descrita no contexto desse relatório.
tidy(modelo,
conf.int=TRUE,
conf.level=0.95) %>%
filter(term != "(Intercept)") %>%
ggplot(aes(term, estimate, ymin = conf.low, ymax = conf.high)) +
geom_errorbar(size = 0.8, width= 0.4) +
geom_point(color = "red", size = 2) +
geom_hline(yintercept = 0, colour = "darkred") +
labs(x = "preditor",
y = "valor estimado (95% de confiança)")
mestrados e Artigos em conf não são tão relevantes em termos práticos, e Nível se destaca como nosso preditor mais relevante.modelo %>%
glance()
mestrados e Artigos em conf como esses `preditores.para_plotar_modelo = cacc %>%
data_grid(produtividade = seq_range(produtividade, 5), # Crie um vetor de 10 valores no range
`Artigos em conf` = seq_range(`Artigos em conf`, 5),
#mestrados = seq_range(mestrados, 5),
mestrados = median(mestrados),
Nível = seq_range(Nível, 5),) %>%
add_predictions(modelo)
glimpse(para_plotar_modelo)
## Observations: 125
## Variables: 5
## $ produtividade <dbl> 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0…
## $ `Artigos em conf` <dbl> 0.00, 0.00, 0.00, 0.00, 0.00, 239.75, 239.75, 239.7…
## $ mestrados <int> 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58,…
## $ Nível <dbl> 3, 4, 5, 6, 7, 3, 4, 5, 6, 7, 3, 4, 5, 6, 7, 3, 4, …
## $ pred <dbl> 0.8994103, 1.5550484, 2.2106866, 2.8663248, 3.52196…
para_plotar_modelo %>%
ggplot(aes(x = `Artigos em conf`, y = pred)) +
geom_line(aes(group = mestrados, colour = mestrados)) +
geom_point(data = cacc, aes(y = produtividade, colour = mestrados)) +
facet_wrap(~ Nível, labeller = "label_both") +
labs(y = "Predições")
Nível não é o suficiente para explicar bem a questão de produtividade, isso nos leva a concluir que apesar de ser nosso preditor mais relevante, Nível tem limitações em sua relevância.Regressão múltipla foi utilizada para analisar se Artigos em conf, Nível e mestrados tem uma associação significativa com produtividade. Os resultados da regressão indicam que um modelo com os 3 preditores no formato produtividade = Artigos em conf + mestrados + Nível explica 62,54% da variância da variável de resposta (R2 = 0,6254). Artigos em conf, medida em unidades de artigotem uma relação significativa com o erro (b = [0.002396278, 0.006305855], IC com 95%), assim como mestrados medida como número inscritos em programa de mestrado (b = [-0.013737694, -0.003275565], IC com 95%), e assim como Nível medida em uma escala númerica indo de 3 a 7 (b = [0.388719886, 0.922556437], IC com 95%). O aumento de 1 unidade de Artigos em conf produz uma mudança de 0.004351066 em produtividade, enquanto um aumento de 1 unidade em mestrados produz uma mudança de 0.008506629 em produtividade, por fim um aumento de 1 unidade em Nível produz uma mudança de 0.655638162 em produtividade.
A partir de nossa análise via regressão linear percebemos que nos Programas de Pós Graduação o Nível do Programa dentro do contexto CAPES possui de fato um impacto em sua produtividade. Vimos um efeito relativamente forte, onde programas de nível mais alto tendem a ser mais produtivos.
Vimos que número de mestrados e número de artigos em conferência se demonstraram inexpressivos. Curiosamente, número de mestrados teve um efeito negativo, algo até um tanto quanto contraintuitvo. Mais mestrados representa mais pessoa que podem contribuir, mas também mais pessoas que podem ser ineficientes. Um número excessivo pode também representar de certa forma um programa de menor nível pois é esperado que em um programa de mais alto nível haja doutorados, e se estes não existirem o vácuo seria preenchido por mestrados.