Apresentação
Estou prometendo disponibilizar os scripts para reprodução do artigo baseado em minha dissertação, mas tem sido complicado. Decidi que para conseguir cumprir esse objetivo terei que dividir a tarefa. Assim, serão três posts contando este. Os próximos apresentarão os testes para dependência espacial e os modelos e o último tratará dos efeitos espaciais comuns. Um resumo do que trata o artigo pode ser encontrado aqui.
Base de dados
Para fazer a dissertação e, consequentemente, o artigo, utilizei dados dos municípios nordestinos dos Censos de 1991, 2000 e 2010. Há um problema de se trabalhar com municípios que é que eles mudam ao longo do tempo. Há emancipações e até extinções. Uma sugestão de Reis et al., acatada na pesquisa, é de trabalhar com áreas mínimas comparáveis. Nesse sentido o que chamo de municípios são, na verdade, áreas mínimas comparáveis (AMC) do nordeste brasileiro. Para fazer isso com os dados do censo é necessário agregar municípios, o que dá algum trabalho. Neste momento não vou disponibilizar os procedimentos para ganhar em objetividade, talvez mais para frente. Assim, vou disponibilizar a base que utilizei. Para tanto coloquei ela no github. O arquivo conta com os códigos municípais com seis dígitos. As taxas de crescimento da produtividade, em logarítmo, para os diferentes períodos: 1991-2010, 1991-2000, 2000-2010. Também estão ali as produtividades em logaritmo dos anos de 1991 e 2000. Para essa variável foi considerado o salário médio do município, por hora trabalhada. Além disso estão disponíveis as variáveis de controle para os anos de 1991 e 2000. As variáveis de controle são Escolaridade, percentual da população com ensino médio completo, grau de urbanização, percentual de analfabetos na população, população em logaritmo, horas trabalhadas, salário e dummys para os estados. Não vou detalhar tudo, mas para maiores informações você pode olhar a dissertação, o artigo, ou deixar um comentário.
BASE <- read.csv("http://raw.githubusercontent.com/RodrigoAnderle/Artigos-Reproduz-veis/master/Fatores%20Espaciais%20Comuns%20(RBERU)/NE1991.csv", header = T)
stargazer(head(BASE), type = "html",
summary = F, align = T) #necessário carregar o pacote stargazer
X | MUN | lng9110 | lng9100 | lng0010 | lnProd1991 | lnProd2000 | lnProd2010 | Escol1991 | Escol2000 | EMedio1991 | EMedio2000 | Urb1991 | Urb2000 | Analf1991 | Analf2000 | Gini1991 | Gini2000 | LnPop1991 | LnPop2000 | Indus1991 | Indus2000 | Serv1991 | Serv2000 | Horas1991 | Horas2000 | Horas2010 | Sal1991 | Sal2000 | Sal2010 | MA | PI | CE | RN | PB | PE | AL | SE | BA | |
1 | 210,010 | 210,010 | 1.022 | 0.200 | 0.822 | 2.129 | 2.330 | 3.152 | 3.672 | 5.285 | 0.032 | 0.097 | 0.347 | 0.482 | 0.608 | 0.431 | 0.884 | 0.893 | 8.429 | 8.451 | 0.260 | 0.150 | 0.482 | 0.628 | 38.207 | 39.767 | 48.413 | 324.126 | 366.061 | 707.554 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
2 | 210,020 | 210,020 | 1.001 | 0.231 | 0.770 | 2.599 | 2.831 | 3.600 | 6.029 | 6.652 | 0.175 | 0.183 | 0.204 | 0.266 | 0.475 | 0.309 | 0.837 | 0.916 | 9.883 | 9.966 | 0.286 | 0.142 | 0.380 | 0.635 | 40.600 | 36.322 | 45.738 | 525.640 | 564.942 | 775.574 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
3 | 210,030 | 210,030 | 0.455 | 0.049 | 0.405 | 2.623 | 2.673 | 3.078 | 4.165 | 5.932 | 0.055 | 0.119 | 0.279 | 0.392 | 0.666 | 0.472 | 0.846 | 0.907 | 9.879 | 9.843 | 0.283 | 0.144 | 0.443 | 0.690 | 42.586 | 42.532 | 64.301 | 401.963 | 468.960 | 733.660 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
4 | 210,040 | 210,040 | 0.212 | -0.303 | 0.514 | 2.787 | 2.485 | 2.999 | 3.750 | 5.951 | 0.171 | 0.084 | 0.121 | 0.263 | 0.600 | 0.443 | 0.851 | 0.861 | 9.904 | 9.867 | 0.100 | 0.154 | 0.354 | 0.637 | 34.999 | 39.614 | 48.217 | 620.248 | 385.851 | 588.369 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
5 | 210,050 | 210,050 | 0.659 | 0.036 | 0.623 | 2.906 | 2.943 | 3.565 | 5.652 | 6.292 | 0.147 | 0.144 | 0.436 | 0.593 | 0.334 | 0.240 | 0.876 | 0.892 | 9.243 | 9.228 | 0.326 | 0.157 | 0.338 | 0.667 | 38.176 | 44.309 | 53.417 | 685.375 | 666.616 | 1,039.950 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
6 | 210,060 | 210,060 | 0.293 | -0.325 | 0.618 | 2.854 | 2.529 | 3.147 | 5.922 | 5.507 | 0.123 | 0.073 | 0.318 | 0.346 | 0.512 | 0.308 | 0.900 | 0.904 | 10.048 | 10.351 | 0.264 | 0.209 | 0.396 | 0.603 | 39.804 | 45.732 | 60.896 | 687.382 | 488.196 | 762.167 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Convergência Absoluta
A convergência absoluta é mais simples de identificar. Apenas com uma figura gráfica é possível saber se ela conteceu ou não.
library(ggplot2)
ggplot(BASE) +
geom_point(aes(x = lnProd1991,y = lng9110),
color = "blue", alpha = 1/3) +
geom_point(aes(x = lnProd1991, y = lng9100),
color = "red", alpha = 1/3) +
geom_point(aes(x = lnProd2000, y = lng0010),
color = "green", alpha = 1/3) +
labs(y = "Taxa de Crescimento", x = "Produtividade Inicial")
A inclinação negativa dos pontos sugere que houve convergência absoluta. Ou seja, os municípios mais pobres, com menor Produtividade Inicial, tiveram maiores taxas de crescimento no período.
Regressão
Convergência Absoluta
A regressão para convergência absoluta é uma regressão simples, tal que:
\[\log(Taxa de Crescimento Produtvidade) = \alpha + \beta Produtividade Inicial + \varepsilon\]
Para a estimação se utiliza o comando lm
de linear model (regressão linear).
CA9110<-lm(lng9110~lnProd1991, data=BASE)
CA9100<-lm(lng9100~lnProd1991, data=BASE)
CA0010<-lm(lng0010~lnProd2000, data=BASE)
stargazer(CA9110, CA9100, CA0010, type = "html")
Dependent variable: | |||
lng9110 | lng9100 | lng0010 | |
(1) | (2) | (3) | |
lnProd1991 | -0.749*** | -0.704*** | |
(0.018) | (0.018) | ||
lnProd2000 | -0.596*** | ||
(0.023) | |||
Constant | 2.550*** | 1.956*** | 2.084*** |
(0.044) | (0.045) | (0.062) | |
Observations | 1,451 | 1,451 | 1,451 |
R2 | 0.553 | 0.517 | 0.315 |
Adjusted R2 | 0.553 | 0.516 | 0.314 |
Residual Std. Error (df = 1449) | 0.209 | 0.211 | 0.203 |
F Statistic (df = 1; 1449) | 1,794.525*** | 1,549.752*** | 665.363*** |
Note: | p<0.1; p<0.05; p<0.01 |
Mais uma vez, para ganhar em objetividade, não estou organizando as tabelas, só replicando os resultados. Para ser sincero, na dissertação e no artigo utilizei o Excel mesmo. Hoje já tenho um pouco mais de know-how no R, mas ainda não parei para olhar tabelas. Assim fica para uma próxima também.
Convergência Condicionada
A covnergência condicionada, como o nome sugere, condiciona a regressão as variáveis de controle. A ideia é filtrar variações que possam ser causadas por outras motivações. Como por exemplo tamanho da população, escolaridade, estrutura produtiva. Tudo isso afeta a variável renda de alguma forma e as diferentes composições devem influenciar diferentemente nas taxas de crescimento. O modelo é semelhante:
\[ \log(Taxa de Crescimento Produtvidade) = \alpha + \beta_0 Produtividade Inicial + \beta_iControles + \varepsilon \]
E as regressões também são análogas:
CC9110 <- lm(lng9110~lnProd1991+EMedio1991+Analf1991
+Urb1991+LnPop1991+Indus1991+Serv1991+Gini1991, data=BASE)
CC9100 <- lm(lng9100~lnProd1991+EMedio1991+Analf1991
+Urb1991+LnPop1991+Indus1991+Serv1991+Gini1991, data=BASE)
CC0010 <- lm(lng0010~lnProd2000+EMedio2000+Analf2000
+Urb2000+LnPop2000+Indus2000+Serv2000+Gini2000, data=BASE)
stargazer(CC9110, CC9100, CC0010, type = "html")
Dependent variable: | |||
lng9110 | lng9100 | lng0010 | |
(1) | (2) | (3) | |
lnProd1991 | -0.871*** | -0.807*** | |
(0.018) | (0.019) | ||
EMedio1991 | 0.340*** | 0.547*** | |
(0.130) | (0.137) | ||
Analf1991 | -0.286*** | -0.266*** | |
(0.069) | (0.073) | ||
Urb1991 | 0.184*** | 0.109*** | |
(0.031) | (0.032) | ||
LnPop1991 | 0.061*** | 0.038*** | |
(0.006) | (0.007) | ||
Indus1991 | -0.236*** | -0.264*** | |
(0.061) | (0.064) | ||
Serv1991 | -0.015 | -0.003 | |
(0.077) | (0.082) | ||
Gini1991 | -0.468** | -0.278 | |
(0.213) | (0.225) | ||
lnProd2000 | -0.748*** | ||
(0.024) | |||
EMedio2000 | 0.069 | ||
(0.114) | |||
Analf2000 | -0.373*** | ||
(0.079) | |||
Urb2000 | 0.108*** | ||
(0.030) | |||
LnPop2000 | 0.065*** | ||
(0.006) | |||
Indus2000 | 0.213** | ||
(0.100) | |||
Serv2000 | 0.213*** | ||
(0.066) | |||
Gini2000 | -0.961*** | ||
(0.200) | |||
Constant | 2.753*** | 2.170*** | 2.605*** |
(0.199) | (0.210) | (0.170) | |
Observations | 1,451 | 1,451 | 1,451 |
R2 | 0.640 | 0.576 | 0.444 |
Adjusted R2 | 0.638 | 0.574 | 0.441 |
Residual Std. Error (df = 1442) | 0.188 | 0.199 | 0.183 |
F Statistic (df = 8; 1442) | 320.733*** | 245.050*** | 144.107*** |
Note: | p<0.1; p<0.05; p<0.01 |
Por fim, achei um pacote no R para expor os resultados dos coeficientes com seus respectivos erros-padrão. Serve só uma visualização diferente dos resultados.
library(dotwhisker)
dwplot(list(CC9110, CC9100, CC0010))
Comentários finais
Pois bem, está um pouco superficial. Não estou comentando os resultados, pois o objetivo aqui é disponibilizar os scripts para reprodução. Nem detalhei muito os comandos ou arrumei as tabelas de resultados, mas isso era para concluir outro objetivo deste post: começar a publicar essa série de uma vez!! Caso queira mais detalhes, pergunte nos comentários. Para as próximas postagens tentarei ser mais detalhista.