## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr     1.2.1     ✔ readr     2.2.0
## ✔ forcats   1.0.1     ✔ stringr   1.6.0
## ✔ ggplot2   4.0.3     ✔ tibble    3.3.1
## ✔ lubridate 1.9.5     ✔ tidyr     1.3.2
## ✔ purrr     1.2.2     
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag()    masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
## 
## Anexando pacote: 'modelr'
## 
## 
## O seguinte objeto é mascarado por 'package:broom':
## 
##     bootstrap

Dados da CAPES sobre avaliação da pós-graduação

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)
## Rows: 73
## Columns: 31
## $ Instituição                  <chr> "UNIVERSIDADE FEDERAL DO AMAZONAS", "UNIV…
## $ Programa                     <chr> "INFORMÁTICA (12001015012P2)", "CIÊNCIA D…
## $ 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, 0…
## $ per_comaluno_A1              <int> 4, 1, 0, 0, 1, 7, 5, 0, 1, 0, 10, 0, 0, 2…
## $ per_comaluno_A2              <int> 5, 5, 5, 0, 2, 15, 3, 0, 3, 0, 3, 0, 0, 1…
## $ 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, 3…
## $ per_comaluno_NA              <int> 6, 14, 2, 2, 9, 3, 6, 4, 5, 1, 10, 0, 17,…

Produção e produtividade de artigos

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

EDA

skimr::skim(cacc)
Data summary
Name cacc
Number of rows 73
Number of columns 8
_______________________
Column type frequency:
logical 1
numeric 7
________________________
Group variables None

Variable type: logical

skim_variable n_missing complete_rate mean count
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
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 = docentes, y = producao)) + 
  geom_point()

Parece que existe uma relação. Vamos criar um modelo então:

modelo1 = lm(producao ~ docentes, data = cacc)

tidy(modelo1, conf.int = TRUE, conf.level = 0.95)
glance(modelo1)

Para visualizar o modelo:

cacc_augmented = cacc %>% 
  add_predictions(modelo1) 

cacc_augmented %>% 
  ggplot(aes(x = docentes)) + 
  geom_line(aes(y = pred), colour = "brown") + 
  geom_point(aes(y = producao)) + 
  labs(y = "Produção do programa")

Se considerarmos que temos apenas uma amostra de todos os programas de pós em CC no Brasil, o que podemos inferir a partir desse modelo sobre a relação entre número de docentes permanentes e produção de artigos em programas de pós?

Normalmente reportaríamos o resultado da seguinte maneira, substituindo VarIndepX e todos os x’s e y’s pelos nomes e valores de fato:

Regressão múltipla foi utilizada para analisar se VarIndep1 e VarIndep2 tem uma associação significativa com VarDep. Os resultados da regressão indicam que um modelo com os 2 preditores no formato VarDep = XXX.VarIndep1 + YYY.VarIndep2 explicam XX,XX% da variância da variável de resposta (R2 = XX,XX). VarIndep1, medida como/em [unidade ou o que é o 0 e o que é 1] tem uma relação significativa com o erro (b = [yy,yy; zz,zz], IC com 95%), assim como VarIndep2 medida como [unidade ou o que é o 0 e o que é 1] (b = [yy,yy; zz,zz], IC com 95%). O aumento de 1 unidade de VarIndep1 produz uma mudança de xxx em VarDep, enquanto um aumento…

Produza aqui a sua versão desse texto, portanto:


Regressão linear simples foi utilizada para analisar se o número de docentes permanentes tem uma associação significativa com a produção de artigos (periódicos A1, A2 e B1) dos programas de pós-graduação em Ciência da Computação. Os resultados da regressão indicam que um modelo com 1 preditor no formato Produção = -41,27 + 4,81.Docentes explica 81,46% da variância da variável de resposta (R2 = 0,815, R2 ajustado = 0,812). O número de docentes permanentes, medido em quantidade de docentes (em equivalência de tempo integral), tem uma relação significativa com a produção (b = [4,27; 5,36], IC com 95%). O aumento de 1 docente permanente no programa produz uma mudança média de 4,81 artigos na produção do programa, controlado apenas por essa variável.


Dito isso, o que significa a relação que você encontrou na prática para entendermos os programas de pós graduação no Brasil? E algum palpite de por que a relação que encontramos é forte?


Na prática, o tamanho do corpo docente permanente é, sozinho, um preditor forte da produção bruta de um programa, ele explica 81,46% da variação na quantidade de artigos entre os 73 programas avaliados. Isso é esperado, já que produção é uma medida de volume total, não de eficiência, mais docentes significa mais gente pesquisando e publicando, então a produção total tende a crescer de forma aproximadamente linear com o número de docentes.


Mais fatores

modelo2 = lm(producao ~ docentes + mestrados_pprof + doutorados_pprof + tem_doutorado, 
             data = cacc_md)

tidy(modelo2, conf.int = TRUE, conf.level = 0.95)
glance(modelo2)

E se considerarmos também o número de alunos?

modelo2 = lm(producao ~ docentes + mestrados + doutorados, data = cacc)

tidy(modelo2, conf.int = TRUE, conf.level = 0.95)
glance(modelo2)

Visualizar o modelo com muitas variáveis independentes fica mais difícil

para_plotar_modelo = cacc %>% 
  data_grid(producao = seq_range(producao, 10), # Crie um vetor de 10 valores no range
            docentes = seq_range(docentes, 4),  
            # mestrados = seq_range(mestrados, 3),
            mestrados = median(mestrados),
            doutorados = seq_range(doutorados, 3)) %>% 
  add_predictions(modelo2)

glimpse(para_plotar_modelo)
## Rows: 120
## Columns: 5
## $ producao   <dbl> 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.000…
## $ docentes   <dbl> 8.25000, 8.25000, 8.25000, 27.91667, 27.91667, 27.91667, 47…
## $ mestrados  <int> 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58,…
## $ doutorados <dbl> 0, 76, 152, 0, 76, 152, 0, 76, 152, 0, 76, 152, 0, 76, 152,…
## $ pred       <dbl> 3.199123, 79.257725, 155.316327, 72.026777, 148.085378, 224…
para_plotar_modelo %>% 
  ggplot(aes(x = docentes, y = pred)) + 
  geom_line(aes(group = doutorados, colour = doutorados)) + 
  geom_point(data = cacc, aes(y = producao, colour = doutorados))

Considerando agora esses três fatores, o que podemos dizer sobre como cada um deles se relaciona com a produção de um programa de pós em CC? E sobre o modelo? Ele explica mais que o modelo 1?


Regressão múltipla foi utilizada para analisar se número de docentes, mestrados e doutorados têm uma associação significativa com a produção de artigos dos programas. Os resultados da regressão indicam que um modelo com os 3 preditores no formato Produção = -14,37 + 3,50.Docentes - 0,19.Mestrados + 1,00.Doutorados explica 87,07% da variância da produção (R2 = 0,871, R2 ajustado = 0,865), um ganho em relação aos 81,5% do modelo com apenas docentes (modelo 1). Docentes, medido em quantidade de docentes permanentes, continua tendo uma relação positiva e significativa com a produção (b = [2,58; 4,42], IC 95%). O aumento de 1 docente permanente produz uma mudança média de 3,50 artigos na produção do programa, mantendo mestrados e doutorados constantes. Doutorados, medido em número de teses defendidas, também tem relação positiva e significativa (b = [0,64; 1,37], IC 95%). Cada tese produzida está associada a um aumento médio de 1 artigo na produção do programa, mantendo os demais fatores constantes. Já mestrados apresenta uma relação negativa e significativa com a produção (b = [-0,36; -0,03], IC 95%) quando controlamos por docentes e doutorados. Um aumento de uma dissertação está associado, em média, a uma pequena redução de 0,19 artigo na produção, mantendo docentes e doutorados fixos.

Isso mostra que o efeito dos alunos depende do nível. Mais mestrandos não ajuda a produção, possivelmente porque consomem tempo de orientação sem contribuir tanto quanto doutorandos para publicações de alto impacto, e possivelmente porque parte desses programas tem maior peso de mestrado profissional, com produção naturalmente menor. Já mais doutorandos está fortemente ligado a mais produção, já que orientandos de doutorado tendem a co-autorar mais artigos de alto impacto que os de mestrado. Em resumo, não é só o tamanho do corpo docente que importa, mas também a composição do programa entre mestrado e doutorado.


Agora produtividade

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?

modelo3 = lm(produtividade ~ mestrados_pprof + doutorados_pprof + tem_doutorado, 
             data = cacc)

tidy(modelo3, conf.int = TRUE, conf.level = 0.95)
glance(modelo3)

Visualizando o modelo:

para_plotar_modelo3 = cacc %>% 
  data_grid(
    mestrados_pprof = seq_range(mestrados_pprof, 4),
    doutorados_pprof = seq_range(doutorados_pprof, 5),
    tem_doutorado = c(TRUE, FALSE)
  ) %>% 
  add_predictions(modelo3)

para_plotar_modelo3 %>% 
  ggplot(aes(x = doutorados_pprof, y = pred)) + 
  geom_line(aes(group = interaction(mestrados_pprof, tem_doutorado), 
                colour = mestrados_pprof)) + 
  facet_wrap(~tem_doutorado, labeller = label_both) +
  geom_point(data = cacc, aes(y = produtividade, colour = mestrados_pprof)) +
  labs(x = "Doutorados por docente",
       y = "Produtividade (produção / docente)", 
       colour = "Mestrados\npor docente")


(i) O modelo

Regressão múltipla foi utilizada para analisar se mestrados por docente, doutorados por docente e a presença de doutorado têm uma associação significativa com a produtividade dos programas. Os resultados da regressão indicam que um modelo com os 3 preditores no formato Produtividade = 1,47 + 0,018.MestradosPorDocente + 0,730.DoutoradosPorDocente + 1,10.TemDoutorado explica 51,3% da variância da produtividade (R2 = 0,513, R2 ajustado = 0,492). Ter doutorado, medido como uma variável binária, tem uma relação significativa e forte com a produtividade (b = [0,508; 1,691], IC 95%), programas com doutorado produzem, em média, 1,10 artigo a mais por docente do que programas sem doutorado, mantendo os demais fatores constantes. Doutorados por docente, medido como número de teses defendidas dividido pelo número de docentes permanentes, também tem relação positiva e significativa com a produtividade (b = [0,323; 1,138], IC 95%), cada aumento de 1 tese por docente está associado a um aumento médio de 0,73 artigo por docente na produtividade. Já mestrados por docente (b = [-0,109; 0,145], IC 95%) não apresentou relação significativa com a produtividade nesse modelo, já que seu intervalo de confiança inclui o zero.


(ii) Implicações - o que aprendemos sobre como funcionam programas de pós no brasil?

O achado central é que ter doutorado e ter mais doutorandos por docente (proporcionalmente) são os fatores associados a maior produtividade, enquanto ter mais mestrandos por docente não tem relação significativa com produtividade. Uma possível explicação é que orientandos de doutorado, por passarem mais anos no programa e desenvolverem pesquisa mais aprofundada, tendem a co-autorar mais artigos em periódicos de maior impacto ao longo de sua formação do que orientandos de mestrado, cujos trabalhos muitas vezes se voltam mais para dissertações e produção em conferências. Além disso, a própria existência de um programa de doutorado é normalmente um sinal de um corpo docente mais consolidado, com redes de colaboração mais amplas e maior experiência de publicação em periódicos seletivos, o que tende a se refletir em maior produtividade por docente.