Registered S3 method overwritten by 'dplyr':
method from
print.rowwise_df
[30m── [1mAttaching packages[22m ──────────────────────────────────────────────────────── tidyverse 1.2.1 ──[39m
[30m[32m✔[30m [34mggplot2[30m 3.2.0 [32m✔[30m [34mpurrr [30m 0.3.2
[32m✔[30m [34mtibble [30m 2.1.3 [32m✔[30m [34mdplyr [30m 0.8.1
[32m✔[30m [34mtidyr [30m 0.8.3 [32m✔[30m [34mstringr[30m 1.4.0
[32m✔[30m [34mreadr [30m 1.3.1 [32m✔[30m [34mforcats[30m 0.4.0[39m
[30m── [1mConflicts[22m ─────────────────────────────────────────────────────────── tidyverse_conflicts() ──
[31m✖[30m [34mdplyr[30m::[32mfilter()[30m masks [34mstats[30m::filter()
[31m✖[30m [34mdplyr[30m::[32mlag()[30m masks [34mstats[30m::lag()[39m
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 [3m[38;5;246m<chr>[39m[23m "UNIVERSIDADE FEDERAL DO AMAZONAS", "UNIVERSIDADE FEDERAL…
$ Programa [3m[38;5;246m<chr>[39m[23m "INFORMÁTICA (12001015012P2)", "CIÊNCIA DA COMPUTAÇÃO (15…
$ Nível [3m[38;5;246m<int>[39m[23m 5, 4, 3, 3, 3, 5, 4, 3, 3, 3, 5, 3, 3, 3, 4, 6, 3, 3, 3, …
$ Sigla [3m[38;5;246m<chr>[39m[23m "UFAM", "UFPA", "UFMA", "UEMA", "FUFPI", "UFC", "UNIFOR",…
$ `Tem doutorado` [3m[38;5;246m<chr>[39m[23m "Sim", "Sim", "Não", "Não", "Não", "Sim", "Sim", "Não", "…
$ `Docentes colaboradores` [3m[38;5;246m<dbl>[39m[23m 0.25, 5.50, 3.00, 6.25, 1.75, 2.00, 1.00, 6.25, 2.75, 0.7…
$ `Docentes permanentes` [3m[38;5;246m<dbl>[39m[23m 24.75, 14.00, 10.00, 14.00, 9.50, 20.75, 16.00, 15.75, 8.…
$ `Docentes visitantes` [3m[38;5;246m<dbl>[39m[23m 0.00, 0.00, 0.00, 0.00, 0.00, 0.75, 0.50, 1.00, 0.50, 0.0…
$ `Resumos em conf` [3m[38;5;246m<int>[39m[23m 20, 23, 15, 5, 4, 10, 6, 136, 0, 24, 27, 4, 30, 20, 5, 14…
$ `Resumos expandidos em conf` [3m[38;5;246m<int>[39m[23m 25, 24, 7, 10, 1, 68, 9, 13, 4, 6, 16, 5, 25, 29, 28, 81,…
$ `Artigos em conf` [3m[38;5;246m<int>[39m[23m 390, 284, 115, 73, 150, 269, 179, 0, 120, 92, 389, 60, 12…
$ Dissertacoes [3m[38;5;246m<int>[39m[23m 108, 77, 50, 25, 31, 75, 60, 129, 45, 3, 108, 12, 94, 108…
$ Teses [3m[38;5;246m<int>[39m[23m 14, 0, 0, 0, 0, 24, 5, 0, 0, 0, 29, 0, 0, 0, 40, 144, 0, …
$ periodicos_A1 [3m[38;5;246m<int>[39m[23m 15, 19, 5, 1, 7, 21, 21, 0, 3, 8, 44, 0, 6, 21, 20, 93, 7…
$ periodicos_A2 [3m[38;5;246m<int>[39m[23m 19, 21, 11, 1, 4, 32, 13, 0, 9, 2, 23, 2, 6, 20, 15, 43, …
$ periodicos_B1 [3m[38;5;246m<int>[39m[23m 19, 38, 7, 3, 6, 26, 16, 2, 6, 4, 32, 4, 2, 11, 29, 51, 2…
$ periodicos_B2 [3m[38;5;246m<int>[39m[23m 1, 12, 2, 6, 0, 0, 11, 0, 0, 2, 1, 0, 0, 4, 1, 10, 6, 1, …
$ periodicos_B3 [3m[38;5;246m<int>[39m[23m 3, 16, 2, 2, 3, 16, 15, 0, 4, 6, 9, 0, 2, 6, 16, 20, 13, …
$ periodicos_B4 [3m[38;5;246m<int>[39m[23m 0, 4, 0, 3, 3, 0, 1, 3, 1, 6, 0, 0, 4, 5, 1, 3, 3, 5, 3, …
$ periodicos_B5 [3m[38;5;246m<int>[39m[23m 10, 16, 8, 4, 12, 4, 16, 2, 6, 2, 11, 0, 4, 16, 9, 29, 18…
$ periodicos_C [3m[38;5;246m<int>[39m[23m 9, 34, 12, 5, 2, 3, 11, 9, 5, 10, 16, 1, 14, 28, 8, 19, 2…
$ periodicos_NA [3m[38;5;246m<int>[39m[23m 7, 15, 8, 11, 12, 6, 19, 31, 7, 14, 19, 0, 27, 26, 18, 29…
$ per_comaluno_A1 [3m[38;5;246m<int>[39m[23m 4, 1, 0, 0, 1, 7, 5, 0, 1, 0, 10, 0, 0, 2, 8, 63, 1, 1, 3…
$ per_comaluno_A2 [3m[38;5;246m<int>[39m[23m 5, 5, 5, 0, 2, 15, 3, 0, 3, 0, 3, 0, 0, 1, 11, 22, 0, 0, …
$ per_comaluno_B1 [3m[38;5;246m<int>[39m[23m 4, 2, 5, 2, 2, 14, 6, 0, 2, 0, 17, 0, 1, 5, 18, 37, 0, 1,…
$ per_comaluno_B2 [3m[38;5;246m<int>[39m[23m 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 4, 0, 0, 0, …
$ per_comaluno_B3 [3m[38;5;246m<int>[39m[23m 2, 2, 0, 1, 0, 7, 9, 0, 2, 0, 4, 0, 0, 1, 10, 12, 0, 0, 0…
$ per_comaluno_B4 [3m[38;5;246m<int>[39m[23m 0, 0, 0, 0, 2, 0, 1, 0, 1, 3, 0, 0, 2, 0, 0, 2, 0, 2, 0, …
$ per_comaluno_B5 [3m[38;5;246m<int>[39m[23m 5, 0, 4, 0, 8, 3, 6, 0, 4, 0, 4, 0, 2, 5, 3, 17, 1, 4, 5,…
$ per_comaluno_C [3m[38;5;246m<int>[39m[23m 6, 5, 3, 1, 2, 3, 7, 1, 2, 4, 8, 0, 11, 3, 8, 13, 4, 5, 2…
$ per_comaluno_NA [3m[38;5;246m<int>[39m[23m 6, 14, 2, 2, 9, 3, 6, 4, 5, 1, 10, 0, 17, 6, 7, 17, 0, 3,…
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)
skimr::skim(cacc)
Skim summary statistics
n obs: 73
n variables: 8
── Variable type:integer ────────────────────────────────────────────────────────────────────────
variable missing complete n mean sd p0 p25 p50 p75 p100 hist
doutorados 0 73 73 14.96 30.98 0 0 0 14 152 ▇▁▁▁▁▁▁▁
mestrados 0 73 73 75.79 63.23 0 39 58 103 433 ▇▇▂▁▁▁▁▁
producao 0 73 73 58.03 65.44 0 18 42 67 355 ▇▅▁▁▁▁▁▁
── Variable type:logical ────────────────────────────────────────────────────────────────────────
variable missing complete n mean count
tem_doutorado 0 73 73 0.47 FAL: 39, TRU: 34, NA: 0
── Variable type:numeric ────────────────────────────────────────────────────────────────────────
variable missing complete n mean sd p0 p25 p50 p75 p100 hist
docentes 0 73 73 20.63 12.27 8.25 11.25 16.75 25.75 67.25 ▇▅▂▁▁▁▁▁
doutorados_pprof 0 73 73 0.43 0.73 0 0 0 0.57 2.69 ▇▁▁▁▁▁▁▁
mestrados_pprof 0 73 73 3.66 1.81 0 2.57 3.58 4.88 8.19 ▂▃▅▇▅▃▁▂
produtividade 0 73 73 2.36 1.37 0 1.4 2.27 3.2 5.66 ▃▆▆▇▃▃▂▂
skimr::skim(cacc_md)
Skim summary statistics
n obs: 34
n variables: 8
── Variable type:integer ────────────────────────────────────────────────────────────────────────
variable missing complete n mean sd p0 p25 p50 p75 p100 hist
doutorados 0 34 34 32.12 39.07 0 1 18 50.5 152 ▇▃▂▂▁▁▁▁
mestrados 0 34 34 104.47 78.48 0 60 102 119.75 433 ▃▇▅▁▁▁▁▁
producao 0 34 34 97.74 75.81 26 49 71 104.75 355 ▇▅▁▁▁▁▁▁
── Variable type:logical ────────────────────────────────────────────────────────────────────────
variable missing complete n mean count
tem_doutorado 0 34 34 1 TRU: 34, NA: 0
── Variable type:numeric ────────────────────────────────────────────────────────────────────────
variable missing complete n mean sd p0 p25 p50 p75 p100 hist
docentes 0 34 34 27.85 13.6 10 19.44 25 32.31 67.25 ▆▇▇▂▂▁▂▁
doutorados_pprof 0 34 34 0.92 0.84 0 0.033 0.99 1.45 2.69 ▇▂▁▅▂▂▁▁
mestrados_pprof 0 34 34 3.66 1.72 0 2.8 3.65 4.47 7.4 ▂▁▅▇▇▅▁▂
produtividade 0 34 34 3.31 1.16 1.54 2.37 3.16 4.15 5.66 ▆▆▆▇▃▅▂▃
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 múltipla foi utilizada para analisar se docentes tem uma associação significativa com produção. Os resultados da regressão indicam que um modelo com os 2 preditores no formato producao = 4,81 * docentes - 41,27 explicam 81,45% da variância da variável de resposta (R2 = 0,8145886). Docentes, medida em unidades, tem uma relação significativa com o erro (b = [4,269955; 5,356786], IC com 95%). O aumento de 1 unidade de docente produz uma mudança de 4,81 em produção.
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?
Significa que quanto maior o número de docentes, maior a produção. O palpite para essa relação é que a grande maioria dos trabalhos produzidos precisa de um orientador, que é um docente, e isso faz com que quanto maior o número de docentes, maior a produção de trabalhos.
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)
Observations: 120
Variables: 5
$ producao [3m[38;5;246m<dbl>[39m[23m 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.0…
$ docentes [3m[38;5;246m<dbl>[39m[23m 8.25000, 8.25000, 8.25000, 27.91667, 27.91667, 27.91667, 47.58333, 47.58333…
$ mestrados [3m[38;5;246m<int>[39m[23m 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58,…
$ doutorados [3m[38;5;246m<dbl>[39m[23m 0, 76, 152, 0, 76, 152, 0, 76, 152, 0, 76, 152, 0, 76, 152, 0, 76, 152, 0, …
$ pred [3m[38;5;246m<dbl>[39m[23m 3.199123, 79.257725, 155.316327, 72.026777, 148.085378, 224.143980, 140.854…
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, dissertações de mestrado e teses de doutorado tem uma associação significativa com a produção. Os resultados da regressão indicam que um modelo com os 3 preditores no formato producao = 3,4997 * docentes - 0,1949 * mestrados + 1,0007 * doutorados - 14,3663 explicam 87,06% da variância da variável de resposta (R2 = 0,8706642). A variável docentes, medida em unidades, tem uma relação significativa com o erro (b = [2,5827; 4,4166], IC com 95%), assim como mestrados, medida em unidades(b = [-0,3577; -0,0321], IC com 95%), assim como doutorados, medida em unidades(b = [0,6355112; 1,3660], IC com 95%). O aumento de 1 unidade de docentes produz um aumento de 3,4997 na produção, enquanto um aumento de 1 unidade de mestrados produz uma redução de 0,1949 na produção, enquanto um aumento de 1 unidade de doutorados produz um aumento de 1,0007 na produção.
É mais completo que modelo anterior, pois explica como a variável de produção cresce ou diminui considerando vários fatores.
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 analisamos 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 terceiro 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.
Criando um modelo baseado em produtividade:
modelo3 = lm(produtividade ~ docentes + mestrados + doutorados + tem_doutorado,
data = cacc)
tidy(modelo3, conf.int = TRUE, conf.level = 0.95)
glance(modelo3)
Visualizando o modelo com muitas variáveis independentes:
para_plotar_modelo = cacc %>%
data_grid(produtividade = seq_range(produtividade, 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),
tem_doutorado = median(tem_doutorado)) %>%
add_predictions(modelo3)
glimpse(para_plotar_modelo)
Observations: 120
Variables: 6
$ produtividade [3m[38;5;246m<dbl>[39m[23m 0.0000000, 0.0000000, 0.0000000, 0.0000000, 0.0000000, 0.0000000, 0.0000…
$ docentes [3m[38;5;246m<dbl>[39m[23m 8.25000, 8.25000, 8.25000, 27.91667, 27.91667, 27.91667, 47.58333, 47.58…
$ mestrados [3m[38;5;246m<int>[39m[23m 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, …
$ doutorados [3m[38;5;246m<dbl>[39m[23m 0, 76, 152, 0, 76, 152, 0, 76, 152, 0, 76, 152, 0, 76, 152, 0, 76, 152, …
$ tem_doutorado [3m[38;5;246m<lgl>[39m[23m FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FA…
$ pred [3m[38;5;246m<dbl>[39m[23m 1.460124, 2.817475, 4.174827, 1.643066, 3.000418, 4.357770, 1.826009, 3.…
para_plotar_modelo %>%
ggplot(aes(x = docentes, y = pred)) +
geom_line(aes(group = doutorados, color = doutorados)) +
geom_point(data = cacc, aes(y = produtividade, color = doutorados))
Considerando agora esses três fatores, o que podemos dizer sobre como cada um deles se relaciona com a produtividade de um programa de pós em CC? E sobre o modelo? Ele explica mais que o modelo anterior?
Regressão múltipla foi utilizada para analisar se número de docentes, dissertações de mestrado, teses de doutorado e programas que tem doutorado tem uma associação significativa com a produtividade. Os resultados da regressão indicam que um modelo com os 4 preditores no formato produtividade = 0,0093 * docentes - 0,0031 * mestrados + 0,0178 * doutorados + 1,2402 * tem_doutorado + 1,5648 explicam 51,66% da variância da variável de resposta (R2 = 0,5166287). A variável docentes, medida em unidades, tem uma relação significativa com o erro (b = [-0,0295; 0,0481], IC com 95%), assim como mestrados, medida em unidades(b = [-0,0098; 0,0035], IC com 95%), assim como doutorados, medida em unidades(b = [0,002763971; 0,032955808], IC com 95%), assim como tem_doutorado medida como 0 quando o programa não tem doutorado e 1 quando o programa tem (b = [0,6815; 1,7988], IC com 95%). O aumento de 1 unidade de docentes produz um aumento de 0,0093 na produtividade, enquanto um aumento de 1 unidade de mestrados produz uma redução de 0,0031 na produtividade, enquanto um aumento de 1 unidade de doutorados produz um aumento de 0,0178 na produtividade, e quando o programa tem_doutorado produz um aumento de 1,2402 na produtividade.
É praticamente análogo ao modelo anterior, só o crescimento da variável de produtividade é menor, visto que ela já é uma relação entre produção e o número de docentes.