Um pacote novo para o R sobre o tema. Não, não testei ainda.
Tag: variáveis instrumentais
Quando eu já perdia a esperança nos cientistas políticos…
…alguém me envia isto. Ou seja, alguém lá entende bem o problema de variáveis instrumentais e não fica falando bobagens ou asneiras (do original: “asno”) sobre o “uso da estatística na ciência social”.
I rest my briefcase.
Bons papais e mamães importam?
Wallace e Erik (ou, formalmente, Souza & Figueiredo (2014)) fazem um estudo interessante. Eis o resumo:
This study aims to measure the influence of family background on the level of individual income. The empirical estimation strategy was based on three steps: i) estimating the effect of different methods for mean treatment, following Heckman and Honore (1990) and Heckman and Vytlacil (1999); ii) the variation bounds of Shaikh and Vytlacil (2004) for the impact of treatment and iii) a test for robustness of the estimates with the schooling of the spouse and parents of spouse as instruments to endogenize year study of individuals. The results indicate a significant effect of parents’ education, especially in less educated individuals. This can be explained, among other factors, the lower level of income and consequently a higher degree of dependence on these individuals of their family background, following the assumptions of unequal opportunities. Finally, with the use of instruments has a greater impact on the yield, since it can be viewed as proxies for characteristics of subjects not observed.
Ficou um pouco confuso o resumo, mas nas conclusões eles explicam melhor:
In general, estimates show that the impact of father’s education is stronger on the group of individuals without a college degree (“Lower”), corroborating the idea that, for being less educated, they probably have lower average earnings and thus are more susceptible to the effects of family background. In other words, these individuals are more influenced and, to some extent, more dependent on their father’s education level, especially with regard to decisions about education. (p.19)
Mais interessante, neste ponto, é lembrar da história do Mussum (sim, o humorista), contada na recém-lançada biografia da editora Leya. Em resumo, em algum momento de sua vida, ele decide que queria ir à escola e, como a mãe era pobre, Mussum teve que aceitar a proposta dela de que estudaria para uma prova que poderia para uma boa escola pública de nível técnico.
Ou seja, naquele momento, a decisão da mãe foi uma inflexão na vida de Mussum, tal e qual nos dizem os autores, com os resultados do texto citado. Mas, o que pode surpreender você – com certeza foi uma surpresa para mim – é que, neste processo, o próprio Mussum alfabetizou a mãe. Em outras palavras, foi uma solução win-win.
p.s. Em alguns casos, o dia dos pais e também o das mães, ambos, têm um significado bem maior, não?
Exemplo de 2SLS em R (Momento R do Dia)
Tomo de empréstimo a base de dados do exercício 19.4 da 5a edição de Gujarati (agora Gujarati & Porter).
Trata-se de um sistema de oferta e demanda de moeda.
Mdt= b0 + b1Yt + b2Rt+b3Pt+u1t
Mst = a0 + a1Yt + u2t
As variáveis R (taxa de juros) e P (índice de preços) são exógenas por hipótese. Percebe-se que existem duas variáveis que não estão na equação de oferta que são, justamente, estas duas. Logo, há duas formas de se identificar a equação de oferta, o que a caracteriza como uma equação sobre-identificada. A equação de demanda, como se vê, é não-identificada (ou sub-identificada).
O exercício de Gujarati pede as formas reduzidas, pergunta sobre identificação e depois faz uma aplicação do teste de simultaneidade e de exogeneidade. Mas nós vamos partir da identificação e usar o pacote systemfit do R para estimar o sistema. Depois, vamos comparar o resultado com aquele obtido por meio do comando ivreg do pacote AER.
Para importar os dados, fazemos:
# importar Table 19.4.xls base <- read.table(file = "clipboard", sep = "\t", header=TRUE) head(base) m2<-ts(base$M2, start=c(1970),freq=1) gdp<-ts(base$GDP, start=c(1970),freq=1) tbrate<-ts(base$TBRATE, start=c(1970),freq=1) cpi<-ts(base$CPI, start=c(1970),freq=1)
Feito isto, vamos aos dois métodos de estimação.
Estimando o sistema com “systemfit”
Neste pacote – que está bem exemplificado pelos autores do mesmo aqui – a sintaxe dos comandos exige que se escreva o sistema. Assim, temos as seguintes linhas de comando.
library(systemfit) demand1<-m2~gdp+tbrate+cpi supply1<-m2~gdp system<-list(demand=demand1,supply=supply1) inst1<-~tbrate+cpi
Repare que definimos as duas equações e o sistema. Em seguida, informamos ao programa a lista de instrumentos. Para resolver o sistema, usamos o comando systemfit. Note que escolhi o método de Mínimos Quadrados em Dois Estágios (2SLS).
fit2sls2<-systemfit(system,"2SLS",inst=inst1) print(fit2sls2) summary(fit2sls2)
Note que a diferença entre print e summary é de detalhamento. Também note que, com esta biblioteca, o sistema é estimado, mesmo que a equação de demanda não seja identificável. Isto fica claro quando usamos o summary.
> print(fit2sls2)
systemfit results
method: 2SLS
Coefficients:
demand_(Intercept) demand_gdp demand_tbrate demand_cpi
-795.817242 0.165427 -64.865418 26.393878
supply_(Intercept) supply_gdp
-2517.944548 0.805575
> summary(fit2sls2)
systemfit results
method: 2SLS
N DF SSR detRCov OLS-R2 McElroy-R2
system 74 68 6339723 4258428053 0.974049 0.967006
N DF SSR MSE RMSE R2 Adj R2
demand 37 33 4265631 129261.5 359.530 0.965079 0.961904
supply 37 35 2074092 59259.8 243.433 0.983020 0.982535
The covariance matrix of the residuals
demand supply
demand 129261.5 58323.1
supply 58323.1 59259.8
The correlations of the residuals
demand supply
demand 1.000000 0.666386
supply 0.666386 1.000000
2SLS estimates for ‘demand’ (equation 1)
Model Formula: m2 ~ gdp + tbrate + cpi
Instruments: ~tbrate + cpi
Estimate Std.Error t value Pr(>|t|)
(Intercept) -7.95817e+02 2.25516e+09 0 1
gdp 1.65427e-01 8.70873e+05 0 1
tbrate -6.48654e+01 7.93049e+07 0 1
cpi 2.63939e+01 3.61958e+07 0 1
Residual standard error: 359.529607 on 33 degrees of freedom
Number of observations: 37 Degrees of Freedom: 33
SSR: 4265630.767425 MSE: 129261.538407 Root MSE: 359.529607
Multiple R-Squared: 0.965079 Adjusted R-Squared: 0.961904
2SLS estimates for ‘supply’ (equation 2)
Model Formula: m2 ~ gdp
Instruments: ~tbrate + cpi
Estimate Std. Error t value Pr(>|t|)
(Intercept) -2.51794e+03 1.32467e+02 -19.0081 < 2.22e-16 ***
gdp 8.05575e-01 1.81658e-02 44.3456 < 2.22e-16 ***
—
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 243.433303 on 35 degrees of freedom
Number of observations: 37 Degrees of Freedom: 35
SSR: 2074092.061577 MSE: 59259.773188 Root MSE: 243.433303
Multiple R-Squared: 0.98302 Adjusted R-Squared: 0.982535
Repare como os teste “t” e os p-valores da equação estimada de demanda não fazem sentido algum. Agora, vamos fazer o mesmo exercício com o comando ivreg do pacote AER.
Estimação com variáveis instrumentais, por meio do pacote AER
Bem, aqui vão os comandos.
library(AER) oferta <- ivreg(m2 ~ gdp | tbrate+cpi,) summary(oferta) summary(oferta, vcov = sandwich, df = Inf, diagnostics = TRUE) demanda<-ivreg(m2~gdp+tbrate+cpi |tbrate+cpi )
Neste pacote, os comandos são mais intuitivos. Você define uma equação de cada vez. Aproveitei para mostrar o absurdo que é tentar estimar a curva de demanda usando os mesmo instrumentos da oferta. Além disso, para a curva de oferta, apresento os erros-padrão robustos para os estimadores.
> oferta <- ivreg(m2 ~ gdp | tbrate+cpi,)
> summary(oferta)
Call:
ivreg(formula = m2 ~ gdp | tbrate + cpi)
Residuals:
Min 1Q Median 3Q Max
-471.89 -123.96 39.56 144.45 434.82
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) -2.518e+03 1.325e+02 -19.01 <2e-16 ***
gdp 8.056e-01 1.817e-02 44.35 <2e-16 ***
—
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 243.4 on 35 degrees of freedom
Multiple R-Squared: 0.983, Adjusted R-squared: 0.9825
Wald test: 1967 on 1 and 35 DF, p-value: < 2.2e-16
> summary(oferta, vcov = sandwich, df = Inf, diagnostics = TRUE)
Call:
ivreg(formula = m2 ~ gdp | tbrate + cpi)
Residuals:
Min 1Q Median 3Q Max
-471.89 -123.96 39.56 144.45 434.82
Coefficients:
Estimate Std. Error z value Pr(>|z|)
(Intercept) -2.518e+03 1.066e+02 -23.61 <2e-16 ***
gdp 8.056e-01 1.899e-02 42.41 <2e-16 ***
Diagnostic tests:
df1 df2 statistic p-value
Weak instruments 2 34 575.139 <2e-16 ***
Wu-Hausman 1 34 0.047 0.829
Sargan 1 NA 0.166 0.684
—
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 243.4 on Inf degrees of freedom
Multiple R-Squared: 0.983, Adjusted R-squared: 0.9825
Wald test: 1799 on 1 DF, p-value: < 2.2e-16
> demanda<-ivreg(m2~gdp+tbrate+cpi |tbrate+cpi )
Warning message:
In ivreg.fit(X, Y, Z, weights, offset, …) :
more regressors than instruments
Percebe-se que os resultados são os mesmos. Quando se pede os diagnósticos, no caso da oferta, temos três testes: Wu-Hausman, Sargan e de exogeneidade fraca. Segundo a documentação:
diagnostics: logical.
Should diagnostic tests for the instrumental-variable regression be carried out? These encompass an F test of the first stage regression for weak instruments, a Wu-Hausman test for endogeneity, and a Sargan test of overidentifying restrictions (only if there are more instruments than regressors).
O teste de Wu-Hausman está resumidamente explicado aqui. Já o teste de Sargan está aqui. Mais detalhes sobre o pacote AER podem ser encontrados aqui. O teste de instrumentos fracos pode ser encontrado em outros lugares, mas o Diffuse Prior tem um interessante texto sobre o tema. Como o teste indica evidências de rejeição da hipótese nula (H0: instrumentos excluídos são irrelevantes), a conclusão, para este exemplo, é a de que os instrumentos não são…irrelevantes, obviamente.
E os outros tópicos do exercício?
Não existe almoço grátis, não é? Portanto, você pode trabalhar sobre estes dados para responder as questões colocadas pelos autores. A bem da verdade, falar sobre a identificação da oferta, da demanda, encontrar as formas reduzidas…isto tudo é muito fácil.
O teste de simultaneidade envolve a estimação da forma reduzida do gdp, obtendo os resíduos e usando-os numa regressão de m2 em gdp e nos resíduos estimados. Na ausência de simultaneidade, os resíduos estimados não deveriam ajudar a explicar m2.
Estou me sentindo generoso hoje. Então, eis os comandos:
simult.test<-lm(gdp~tbrate+cpi) summary(simult.test) vchapeu<-simult.test$resid simult.test2<-lm(m2~gdp+vchapeu) summary(simult.test2)
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) -2.518e+03 1.343e+02 -18.748 <2e-16 ***
gdp 8.056e-01 1.842e-02 43.738 <2e-16 ***
vchapeu -2.237e-02 1.043e-01 -0.214 0.832
—
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 246.8 on 34 degrees of freedom
Multiple R-squared: 0.983, Adjusted R-squared: 0.982
F-statistic: 985.6 on 2 and 34 DF, p-value: < 2.2e-16
Conclusão
Bem, por hoje é só. Mais um Momento R do Dia que facilita a vida de quem está aprendendo a caminhar no R. Claro, outros exercícios empíricos deveriam ser feitos por você mesmo. Já está aí o caminho das pedras. Faça sua parte.

Mais policiais, menos crimes?
Existe, atualmente, uma visão estranha de que policiais são agentes da maldade e do crime. Não que não existam policiais corruptos, obviamente. Entretanto, há uma parcela da sociedade que pensa que policial é um sujeito que deveria ficar quieto, desarmado, para levar pedrada e tudo pelo “social”.
Não dá para começar um post falando assim da polícia (mas da sociedade dá, porque eu conheço alguns indivíduos que não conseguem distinguir a instituição “polícia” do indivíduo “policial”…algo como não saber a diferença do Ronaldinho para a Seleção Brasileira).
Uma pergunta que sempre me ocorre é a de se esta história de policiamente realmente diminui crimes. O pessoal do Freakonomics tem aquela tese engraçada sobre aborto que parece ser robusta para os EUA – e lá faz sentido, dados os fatos históricos daquela amostra – mas no Brasil não há um federalismo de facto, já que estados não podem adotar diferentes leis. Não senhor, experimentação, aqui, só a que Brasília permite.
Mas, ainda assim, a pergunta permanece: mais policiais, menos crimes? Aparentemente, existem evidências de que sim, pelo menos na amostra estudada. Quer saber mais? Olha o link aí.
Who invented IV regression?
É o título deste resumo breve sobre variáveis instrumentais do Stock.
Depois da antropometria, tudo mundo usa altura nas regressões!
Eis a saudável novidade: a altura das pessoas vem se tornando uma variável mais utilizada entre pesquisadores brasileiros (veja, por exemplo, este Machado (2008 )). Meu contato inicial com o tema veio com o Leo Monasterio.