* setup version 15.0 capture log close set more off * open log log using chap08Wooldridge.txt, text replace * open data ***Capítulo 8 - ereocedasticidade*** *Exemplo 8.1 ERROS PADRÕES ROBUSTOS A HETEROCEDASTICIDADE*** use "/Users/denisardalves/Desktop/EAE 324 2017/DATA SET/WAGE1.DTA", clear /* As variáveis dummies simples ( como são single e male) e as interativas (como singfem, marrmale e marrfem) podem ser criadas da segu inte forma: gen single = (~married) gen male = (~female) gen marrmale = male*married gen marrfem = female*married gen singfem = single*female*/ *Primeiro regressão sob as hipóteses de Gauss_Markov reg lwage marrmale marrfem singfem educ exper expersq tenure tenursq estimates store OLS reg lwage marrmale marrfem singfem educ exper expersq tenure tenursq, robust estimates store OLSROBUST esttab OLS OLSROBUST, b(%10.4f) se scalars(N r2 F) mtitles keep(marrmale marrfem singfem educ exper expersq tenure tenursq) title("Comparacao de Modelos OLS OLSROBUST") /* Comparem os t's e F's dasregressão com robusta com OLS, vejam que mudou pouco, talvez a heterocedasticidade não seja muito acentuada, mas mesmo que não seja os t's e F's de OLS estão fora das suas respectivas distribuições, logo não fazem sentido. Observem, também, que o os testes robustos somente têm validade assintótica*/ ***Exemplo 8.3 F Robusto*** use "/Users/denisardalves/Desktop/EAE 324 2017/DATA SET/GPA3.DTA", clear reg cumgpa sat hsperc tothrs female black white if spring==1, robust /* Outra forma de usar OLS robusto é usando vce(robust), o que é exatamente igual a regressão anterior onde somente robust aparece*/ reg cumgpa sat hsperc tothrs female black white if spring==1, vce(robust) /* Podemos usar o teste de F robusto para testarmos se existe diferenças significantes entre negros e brancos nas notas finais, Neste caso o teste de F robusto é também conhecido como teste de Wald. O Wald se distribui como Chi2, mas como já vimos com n (tamanho da amostra) cescendo ele converge em p-value para o Chi2. O test aparece como um F ao invés de Chi2, porque a OLS coloca F, se fosse um outro método de estimação, como Maxima Verossemelhança, o resultado do comando teste seria um Chi2.*/ test black white **Teste LM Robusto** use "/Users/denisardalves/Desktop/EAE 324 2017/DATA SET/CRIME1.DTA", clear gen avgsensq=avgsen*avgsen reg narr86 pcnv avgsen avgsensq ptime86 qemp86 inc86 black hispan, robust *Turning point for avgsen di _b[avgsen]/(2*_b[avgsensq]) reg narr86 pcnv ptime86 qemp86 inc86 black hispan predict ubar1, resid qui reg avgsen pcnv ptime86 qemp86 inc86 black hispan predict r1, r qui reg avgsensq pcnv ptime86 qemp86 inc86 black hispan predict r2, r qui gen ur1 = ubar1*r1 qui gen ur2 = ubar1*r2 gen um = 1 reg um ur1 ur2, noconstant scalar hetlm = e(N)-e(rss) scalar pval = chi2tail(2,hetlm) display _n "Robust LM statistic : " %6.3f hetlm /* > */ _n "Under H0, distrib Chi2(2), p-value: " %5.3f pval /*Vimos antes que para testarmos H0:Beta[avgsen] = 0, Beta[avgsen] = 0, usavamos o teste LM, pois narr86 não tem distribuição normal ou seja fariamos:*/ reg narr86 pcnv ptime86 qemp86 inc86 black hispan /*Omitimos avgsen e avgsesq da regressão e obtinhamos o sesíduo da regressão com elas omitidas:*/ predict r, residual reg r avgsen avgsensq pcnv ptime86 qemp86 inc86 black hispan scalar lm1 = e(N)*e(r2) scalar pval = chi2tail(2,lm1) display _n "LM statistic : " %6.3f lm1 /* > */ _n "Under H0,distrb Chi2(2), p-value: " %5.3f pval **Exemplo 8.4: Heteroscedasticity in Housing Price Equation** /*O pricipal problema de heterocedasticidade é que os erros padrões de OLS estão errados e, com isso, o uso deles nos testes de t e de F, leva a resultados incorretos dos testes, pois já não apresentam mais as distribuições exatas. Vamos aqui mostrar os testes para verificar se H0: Var(u/X)=Sigma2(ou u2 não está correlacionado com os x's, hipótese 5 do modelo linear de regressão mais fraca) não é rejeitada pelos dados. Se não for, OLS é o método correto de estimação, pois com as hipóteses de Gauss-Marcov, ele apresenta propriedades desejáveis, mesmo em pequenas amostras. Caso se rejeite H0, então recorre-se a OLS, com estimador robusto a heterocedasticidade do erro padrão, o que levará a testes assintoticamente válidos*/ use "/Users/denisardalves/Desktop/EAE 324 2017/DATA SET/HPRICE1.DTA", clear reg price lotsize sqrft bdrms **Primeiro veremos duas versões do teste Breush-Pagan/Cook-Weisberg/Koencker** /* Como vimos temos duas opções para este teste: 1. Usa-se os resíduos ao quadrado para serem regressados contra as variávseis explicativas e se H0 de existência da regressão não for rejeitada por teste de F ou LM, significa que os dados não apresentam hetrocedasticidade; 2. Outra opção é usar u2 e regressá-lo contra yhat Em ambos os casos adicionando-se iid como opção foge-se da hipótese de normalidade dos erros, que é o default do comando do Stata estat hettest, Em ambos os casos o Stata usa o LM=n*R2uhat2*/ *Versão 1, com opção iid estat hettest, iid *Versão 2, u2 função dos x's, com opção iid estat hettest lotsize sqrft bdrms, iid /* Agora veremos o teste do White, com uso de yhat e yhat2. Também é um teste LM da regressão dos resíduos ao quadrado contra os valores ajustados do y e seus quadrados, como variáveis explicativas*/ estat imtest ***Exemplo 8.5 Log of Price Form reg lprice llotsize lsqrft bdrms estat imtest /*Observe que agora não se rejeita a hipótese de variância constante. Ou seja a simples mudança na especificação resolveu o problema da heterocedasticidade*/ ***WLS*** *Exemplo 8.6 use "/Users/denisardalves/Desktop/EAE 324 2017/DATA SET/SAVING.DTA", clear reg sav inc reg sav inc [aw = 1/inc] reg sav inc size educ age black [aw = 1/inc] *Exemplo 8.7 Cigarro* /*Aproveitarei este exemplo para introduzir, além, dos métodos para de tecção e correção de heterocedasticidade, outros cpmandos particularmente úteis do Stata. Usarei comandos para apresentação de resultados de regressões bastante úteis para a apresentação de resultados emlaboração de trabalhos, monografias e teses.*/ use "/Users/denisardalves/Desktop/EAE 324 2017/DATA SET/SMOKE.DTA", clear reg cigs lincome lcigpric educ age agesq restaurn *Comando para armazenar resultados da regressão: estimates store OLS /* Iremos usar os testes do B-P e do White para detectar hetererocedasticidade neste modelo de explicação da demanda por cigarros*/ *Teste de White: estat imtest /*O teste que o Stata uriliza é teste do Breush-Pagan/Gook-Weisbrg, que eu estou chamando de B-P, será feito para ver se é possível indentificar quais variáveis explicarivas estão mais associadas à variabilidade da dispersão das quantidades de cigarro demandadas. Assim, poderemos usar um método de Feasable Generalized Least Squares (FGLS) para corrigir o modelo de forma a tornar a variância dos erros constante, e logo tornar o modelo adequado às hipóteses de Gauss-Markov.*/ /*Primeiro, vamos verificar as variáveis mais influentes na explicação da dispersão da variância, usando um B-P/Cook-Weinsberg, colocando as variávesi explicativas e a interação entre elas:*/ estat hettest lincome lcigpric educ age agesq restaurn, mtest /* Segundo, poderiamos usar apenas aquelas que têm Chi2, COM o-valor rejeitando H0, a um nível de significância:*/ estat hettest lincome restaurn, mtest predict ub, residual /*Temos duas formas de estimação da variância de u, tomando a raiz quadrada de sua inversa tem-se a ponderação a ser usada para se obter o FGLS. A primeira é estimar a variãncia de u, ou o valor previsto para o quadrado do resíduo de OLS, quando os explicamos pelas variáveis explicativas(podemoriamos usar somente àquelas que fossem significantes,seriam as mais relevantes, ou usar todas. Ambas são assintóticamente válidas*/ gen ub2=ub*ub gen one=1 /* Aqui usamos todas as variáveis explicativas e estimamps a relação ub2(resíduos OLS ao quadrado) =exp(todas as variáveis explicativas, inclusive a constante(one)). Usamos para isso Mínimos Quadrados Não lineares, dado pelo comando nl.*/ nl (ub2=exp({xb:lincome lcigpric educ age agesq restaurn one})) predict varu, yhat /*Observe que é indiferente usar xb ou yhat, no comando predict para a variável dependente*/ *FGLS1(Usando NLS para se estimar a variância): reg cigs lincome lcigpric educ age agesq restaurn [aw=1/varu] estimates store FGLS1 /*Ou uma alternativa é tomarmos o log de resíduos de OLS ao quadrado e estimarmos um modelo linear, ao invés de um não linear:*/ gen lubsq=log(ub2) qui reg lubsq lincome lcigpric educ age agesq restaurn predict lubsqh, xb gen ubhse = exp(lubsqh) *FGLS2(Tomando log(u2) para estimar forma linearizada da variâncja por OLS): reg cigs lincome lcigpric educ age agesq restaurn [aw=1/ubhse] estimates store FGLS2 *FGLS1-Robust: reg cigs lincome lcigpric educ age agesq restaurn [aw=1/varu], vce(robust) estimates store FGLS1R *FGLS2-Robust: reg cigs lincome lcigpric educ age agesq restaurn [aw=1/ubhse], vce(robust) estimates store FGLS2R esttab OLS FGLS1 FGLS2 FGLS1R FGLS2R, b(%10.4f) se scalars(N r2 F) mtitles keep(lincome lcigpric educ age agesq restaurn) title("Comparacao de Modelos OLS FGLS1 FGLS2 FGLS1R FGLS2R") /*Observem que os F's da tabela não apresentam o p-valor. Com um pouco, mais de trabalho, teriamos de rodar as 5 regressões novamente guardar os resultado e fazer o download no Stata de um comando estadd, que se utiliza dos valores armazenado em e() para calcular o p-valor dos Fs de cada regeressão. É só dar uma search estadd no Stata e, fazer o dowanload e usar o esttab novamente.*/ log close