## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr     1.1.2     ✔ readr     2.1.4
## ✔ forcats   1.0.0     ✔ stringr   1.5.0
## ✔ ggplot2   3.4.2     ✔ tibble    3.2.1
## ✔ lubridate 1.9.2     ✔ tidyr     1.3.0
## ✔ purrr     1.0.1     
## ── 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
## 
## Attaching package: 'modelr'
## 
## 
## The following object is masked from '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)

Esses resultados fornecem informações sobre a qualidade do modelo ajustado. O R-quadrado (0.8145886) indica que aproximadamente 81.5% da variabilidade da quantidade de artigos publicados é explicada pelo número de docentes permanentes. O valor p do modelo (1.088465e-27) indica que o modelo é estatisticamente significativo.

O modelo possui um baixo erro padrão dos resíduos (sigma) de 28.37407, o que sugere que os resíduos do modelo estão próximos da média zero.

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 múltipla foi utilizada para analisar a associação entre o número de docentes permanentes e a produção de artigos em programas de pós-graduação em Ciência da Computação no Brasil. Os resultados indicam que um modelo com a variável preditora ‘Número de Docentes Permanentes’ explica aproximadamente 81,46% da variância da produção de artigos (R-quadrado ajustado = 0,8119). O coeficiente estimado para a variável ‘Número de Docentes Permanentes’ é de 24,07 (IC 95%: 21,97 a 26,18), indicando que um aumento de uma unidade no número de docentes permanentes está associado a um aumento médio de 24,07 na produção de artigos, mantendo-se os demais preditores constantes. Esse efeito é estatisticamente significativo, com um valor-p < 0,001.”


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?


A relação encontrada entre o número de docentes permanentes e a produção de artigos em programas de pós-graduação em Ciência da Computação no Brasil indica que programas com mais docentes permanentes tendem a ter uma maior produção científica. Isso pode ser explicado pela maior diversidade de especializações, colaboração entre pesquisadores, recursos disponíveis e supervisão para os estudantes. Além disso, a possibilidade de maior financiamento e parcerias de pesquisa também pode influenciar positivamente a produção de artigos. No entanto, é importante considerar que outros fatores podem estar envolvidos.


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?

Considerando o numero de alunos como uma variavel independente para determinar se o número de alunos tem um efeito significativo na produção de artigos.

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

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

OS resultados indicam que o modelo com as variáveis “docentes”, “mestrados” e “doutorados” tem um bom ajuste aos dados, explicando aproximadamente 87.07% da variância na produção de artigos. O valor p extremamente baixo indica que o modelo é estatisticamente significativo.

” 1.Para cada aumento de uma unidade no número de docentes permanentes, espera-se um aumento de aproximadamente X unidades na produção de artigos, mantendo as outras variáveis constantes.

  1. Para cada aumento de uma unidade no número de mestrados concluídos, espera-se um aumento de aproximadamente Y unidades na produção de artigos, mantendo as outras variáveis constantes.

  2. Para cada aumento de uma unidade no número de doutorados concluídos, espera-se um aumento de aproximadamente Z unidades na produção de artigos, mantendo as outras variáveis constantes.”

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…

O resultado do modelo apresenta 120 linhas e 5 colunas cujo a descrição das colunas: ” producao: Valores variando de 0 a 10, representando a produção de artigos. docentes: Valores variando de 8.25 a 120.75, representando o número de docentes permanentes. mestrados: Valor fixo de 58, representando o número de mestrados concluídos. doutorados: Valores variando de 0 a 152, representando o número de doutorados concluídos. pred: Valores preditos pelo modelo modelo2 para a variável de resposta producao, com base nos valores das variáveis independentes. ”

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

O gráfico gerado permite visualizar a relação entre o número de docentes, os valores preditos e observados da produção de artigos, levando em consideração a variação dos doutorados. As linhas representam diferentes valores de doutorados no modelo, mostrando como os valores preditos de produção de artigos variam com o número de docentes para cada nível de doutorados.

As cores representam os diferentes níveis da variável “doutorados”, que varia de 0 a 150. Cada cor na legenda corresponde a um intervalo específico de valores de doutorados. Dessa forma, é possível analisar visualmente como a produção de artigos se relaciona com o número de docentes, observando como os pontos de diferentes cores se distribuem ao longo da linha representada pelos valores preditos.

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?


EXPLICAÇÃO: Considerando os três fatores: número de docentes permanentes, número de mestrados concluídos e número de doutorados concluídos, podemos fazer as seguintes observações sobre como cada um deles se relaciona com a produção de um programa de pós-graduação em Ciência da Computação:

“1. Número de Docentes Permanentes: Com base no modelo, observamos que um aumento de uma unidade no número de docentes permanentes está associado a um aumento de aproximadamente X unidades na produção de artigos, mantendo as outras variáveis constantes. Isso indica que programas com um maior número de docentes permanentes tendem a ter uma maior produção de artigos.

  1. Número de Mestrados Concluídos: O modelo sugere que um aumento de uma unidade no número de mestrados concluídos está associado a um aumento de aproximadamente Y unidades na produção de artigos, mantendo as outras variáveis constantes. Isso indica que programas com um maior número de mestrados concluídos tendem a ter uma maior produção de artigos.

  2. Número de Doutorados Concluídos: O modelo sugere que um aumento de uma unidade no número de doutorados concluídos está associado a um aumento de aproximadamente Z unidades na produção de artigos, mantendo as outras variáveis constantes. Isso indica que programas com um maior número de doutorados concluídos tendem a ter uma maior produção de artigos. ”


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)

modelo_produtividade = lm(produtividade ~ docentes + producao + mestrados_pprof, data = cacc)

Utilizamos as variáveis independentes docentes, producao e mestrados_pprof como fatores que se relacionam com a produtividade.

Vamos visualizar o modelo

library(broom)

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

Esses resultados fornecem informações sobre o ajuste do modelo aos dados e a significância estatística das variáveis independentes. O R-quadrado e o R-quadrado ajustado indicam que o modelo explica cerca de 74% da variabilidade da produtividade. A estatística F e o valor p indicam que o modelo como um todo é estatisticamente significativo.

library(ggplot2)
ggplot(cacc, aes(x = producao, y = produtividade)) +
  geom_point() +
  labs(x = "Produção", y = "Produtividade")

library(ggplot2)
ggplot(cacc, aes(x = producao, y = produtividade)) +
  geom_line(aes(group = produtividade, colour = produtividade)) +
  geom_point(aes(colour = produtividade)) +
  labs(x = "Produção", y = "Produtividade")

library(ggplot2)
# Gráfico com retas entre produtividade e producao
ggplot(cacc, aes(x = produtividade, y = producao)) +
  geom_point() +
  geom_line() +
  labs(x = "Produtividade", y = "Produção de Artigos")

A relação entre a produção e a produtividade dos programas. Cada ponto representa um programa específico, com sua posição no gráfico determinada pelos valores de produção e produtividade correspondentes. As linhas conectando os pontos representam a variabilidade da relação entre as variáveis de acordo com os diferentes valores da produtividade.

library(ggplot2)
# Gráfico com retas entre produtividade e producao
ggplot(cacc, aes(x = produtividade, y = producao)) +
  geom_point() +
  geom_line() +
  labs(x = "Produtividade", y = "Produção de Artigos") +
  geom_abline(intercept = 0, slope = max(cacc$producao) / max(cacc$produtividade), color = "red", linetype = "dashed")

A presença da reta vermelha sobre a curva de dispersão indica uma relação linear entre as variáveis produtividade e producao. Isso significa que, em geral, um aumento na produtividade está associado a um aumento proporcional na produção de artigos. No entanto, os pontos dispersos em torno da reta mostram que nem todos os programas de pós-graduação seguem essa relação linear perfeitamente.

library(ggplot2)
ggplot(cacc, aes(x = producao, y = produtividade)) +
  geom_line(aes(group = 1), colour = "blue") +
  geom_point(aes(colour = produtividade)) +
  geom_segment(aes(x = min(producao), y = min(produtividade),
                   xend = max(producao), yend = max(produtividade)),
               colour = "red", linetype = "dashed") +
  labs(x = "Produção", y = "Produtividade")

O resultado indica que há uma tendência geral ou o modelo linear ajustado aos dados de produção e produtividade. O gráfico mostra a direção da relação entre as variáveis, indicando que, em média, um aumento na produção está associado a um aumento na produtividade. No entanto, os pontos dispersos em torno da reta azul demonstram a variabilidade dos dados e que nem todos os pontos seguem exatamente essa tendência.

Ao analisar o gráfico, podemos observar a dispersão dos pontos em relação à reta azul, o que indica a variabilidade da relação entre a produção e a produtividade dos programas. Alguns programas estão próximos à reta, indicando uma relação mais forte entre as variáveis, enquanto outros estão mais distantes, indicando uma relação mais fraca.

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_produtividade <- lm(produtividade ~ docentes + mestrados + doutorados, data = cacc)
summary(modelo_produtividade)
## 
## Call:
## lm(formula = produtividade ~ docentes + mestrados + doutorados, 
##     data = cacc)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -1.9474 -0.9735 -0.0773  0.7831  3.7694 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  1.695839   0.343072   4.943 5.18e-06 ***
## docentes     0.032265   0.021155   1.525  0.13179    
## mestrados   -0.004488   0.003755  -1.195  0.23616    
## doutorados   0.022936   0.008427   2.722  0.00821 ** 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.106 on 69 degrees of freedom
## Multiple R-squared:  0.3771, Adjusted R-squared:   0.35 
## F-statistic: 13.93 on 3 and 69 DF,  p-value: 3.394e-07

O modelo de produtividade apresentou os seguintes resultados:

Intercepto: 1.695839, indica o valor esperado da produtividade quando todas as variáveis independentes são iguais a zero. Coeficiente para docentes: 0.032265, indica que, em média, a produtividade aumenta em 0.032265 unidades para cada aumento de uma unidade no número de docentes. Coeficiente para mestrados: -0.004488, indica que não há uma relação estatisticamente significativa entre o número de mestrados e a produtividade. Coeficiente para doutorados: 0.022936, indica que, em média, a produtividade aumenta em 0.022936 unidades para cada aumento de uma unidade no número de doutorados.

Os resultados indicam que o número de docentes e doutorados tem um impacto significativo na produtividade dos programas de pós-graduação em Ciência da Computação. Aumentar esses dois fatores pode levar a um aumento na produtividade desses programas.

No entanto, não há evidências estatísticas para afirmar que o número de mestrados tem um impacto significativo na produtividade.