*Limpando a memória
clear

*Indicando tamanho da memória
set mem 100m

*Abrindo o arquivo de log
log using "C:\DCP854B\Aula30.log", replace text

*Instalando o módulo do teste de Qui-quadrado
*http://www.stata.com/quest/quest/t/tablesq.ado
do "C:\DCP854B\modulos\tablesq.ado"

************************************
*PNAD 2007 - MINAS GERAIS
************************************
use "C:\DCP854B\pes2007MG.dta", clear

************************************
*RENDIMENTO
************************************
gen renpri=.
replace renpri=v9532 if v9532!=999999999999

*Criando logaritmo de rendimento
gen lnrenpri=ln(renpri)

************************************
*SEXO FEMININO
************************************
gen mulher=.
replace mulher=0 if v0302==2
replace mulher=1 if v0302==4
tab v0302 mulher, missing

************************************
*SEXO MASCULINO
************************************
*Categoria zero igual a 1
*e as demais iguais a zero
gen homem=!mulher
tab homem mulher, missing

*Isso é o mesmo que...
gen homem2=~mulher
tab homem2 mulher, missing

************************************
*IDADE DO MORADOR
************************************
gen idpia=.
replace idpia=v8005 if v8005>=15 & v8005<=64

************************************
*RAÇA
************************************
gen negra=.
replace negra=0 if v0404==2
replace negra=1 if v0404==4 | v0404==8
tab v0404 negra, missing

************************************
*RAÇA E SEXO
************************************
gen rcsexo=.
replace rcsexo=1 if mulher==1 & negra==1
replace rcsexo=2 if mulher==1 & negra==0
replace rcsexo=3 if mulher==0 & negra==1
replace rcsexo=4 if mulher==0 & negra==0
tab rcsexo negra, missing
tab rcsexo mulher, missing

************************************
*ANOS DE ESTUDO
*Variável quantitativa discreta
*Nível de mensuração de razão (possui zero natural)
************************************
gen anest=.
replace anest=v4803-1 if v4803!=17
tab v4803 anest, missing

************************************
*ANOS DE ESTUDO
*Variável qualitativa
*Nível de mensuração ordinal
************************************
gen anest3=.
replace anest3=1 if anest>=0 & anest<=4
replace anest3=2 if anest>=5 & anest<=8
replace anest3=3 if anest>=9 & anest<=15
tab anest anest3, missing

*Variável binária para 0<=anest<=4
gen anest04=0
replace anest04=1 if anest3==1
tab anest3 anest04, missing

*Variável binária para 5<=anest<=8
gen anest58=0
replace anest58=1 if anest3==2
tab anest3 anest58, missing

*Variável binária para 9<=anest<=15
gen anest9=0
replace anest9=1 if anest3==3
tab anest3 anest9, missing

************************************
*GRUPOS DE ANOS DE ESTUDO E SEXO
************************************
gen estsexo=.
replace estsexo=1 if mulher==1 & (anest>=0 & anest<=4)
replace estsexo=2 if mulher==1 & (anest>=5 & anest<=8)
replace estsexo=3 if mulher==1 & (anest>=9 & anest<=15)
replace estsexo=4 if mulher==0 & (anest>=0 & anest<=4)
replace estsexo=5 if mulher==0 & (anest>=5 & anest<=8)
replace estsexo=6 if mulher==0 & (anest>=9 & anest<=15)
tab anest estsexo, missing
tab mulher estsexo, missing

************************************
*LIMPANDO O BANCO DE DADOS
************************************
keep if lnrenpri!=. & mulher!=. & idpia!=. & anest!=. & negra!=.
tab mulher, missing
tab idpia, missing
tab anest, missing
tab negra, missing

************************************
*ANÁLISE DE VARIÂNCIA (ANOVA)
************************************
*A análise de variância é um método para se testar a igualdade de
*médias populacionais através da análise das variâncias amostrais.

*Podemos utilizar o comando de análise de variância (anova)
*para saber se a média de uma variável com distribuição normal
*varia de acordo com os grupos de uma variável categórica.

************************************
*ANÁLISE DE VARIÂNCIA (ANOVA) DE UM FATOR
*"ONEWAY ANALYSIS OF VARIANCE"
*SESSÃO 7.2. ÚNICA VARIÁVEL CATEGÓRICA INDEPENDENTE
************************************
*Análise de variância de um fator usa
*uma única cracterística para categorizar populações.

*Vamos testar se há diferenças entre as médias da variável renda (lnrenpri)
*nos diversos níveis da variável categórica (anest3).
tab anest3, summarize(renpri) means

*Realizando o comando ANOVA de um fator
anova lnrenpri anest3

*Partial SS é o mesmo que "partial sum of squares", ou soma parcial dos quadrados.
*Df é o mesmo que "degrees of freedom", ou graus de liberdade.
*MS é o mesmo que "mean square", ou média dos quadrados (Partial SS dividido por Df).
*F é o mesmo que "F Value", ou "F-test", ou teste de "F".

*A média populacional do logaritmo do rendimento
*é diferente entre os níveis da variável categórica,
*com significância estatística.

*Por isso, temos que incluir informação de educação se
*formos estimar um modelo em que a variável dependente é renda

*Regressão com educação contínua
reg lnrenpri anest [pweight=v4729]

*Regressão com educação considerada quantitativa discreta
reg lnrenpri anest3 [pweight=v4729]

*Regressão com educação considerada qualitativa (educ04 é referência)
reg lnrenpri anest58 anest9 [pweight=v4729]

*O comando acima poderia ter sido estimado
*mesmo sem gerar as variáveis binárias previamente
xi: reg lnrenpri i.anest3 [pweight=v4729]

************************************
*CURIOSIDADE
*REGRESSÃO COM UMA ÚNICA VARIÁVEL BINÁRIA
************************************
*Regressão com sexo feminino, propositalmente sem peso
reg lnrenpri mulher

*Resultado da constante acima é o mesmo que
*média do logaritmo de renda dos homens
sum lnrenpri if homem==1

*Resultado da constante acima e beta1 é o mesmo que
*média do logaritmo de renda das mulheres
di 6.466551 - 0.3874975
sum lnrenpri if mulher==1

************************************
*ANÁLISE DE VARIÂNCIA (ANOVA) DE DOIS FATORES
*"TWOWAY ANALYSIS OF VARIANCE"
*SESSÃO 7.3. VARIÁVEIS BINÁRIAS PARA CATEGORIAS MÚLTIPLAS
************************************
*Análise de variância de dois fatores usa
*dados divididos em categorias de acordo com dois fatores.

*Vamos testar se há diferenças entre as médias da variável renda (lnrenpri)
*nos diversos níveis da variável categórica (mulher*anest3).
tab anest3 mulher, summarize(renpri) means

*Realizando o comando ANOVA de dois fatores
anova lnrenpri manest

*A média populacional do logaritmo do rendimento
*é diferente entre os níveis da variável categórica
*que combina informações de anos de estudo e sexo,
*com significância estatística.

*Nós rejeitamos a hipótese nula
*de que não há interação entre educação e sexo:
*H0: sexo*educação=0

*Ou seja, se há interação entre os fatores,
*não devemos considerar os efeitos de sexo
*sem considerar os efeitos de educação e vice-versa.

*Regressão com usos de variáveis binárias para categorias múltiplas
*(sexo e anos de estudo)
xi: reg lnrenpri i.estsexo [pweight=v4729]

*Se não houvesse interação significativa entre educação e sexo,
*nós não teríamos rejeitado a hipótese nula de nenhuma interação.

*Nesse caso, teríamos que testar as duas hipóteses seguintes:
*H0: Não há qualquer efeito do fator sexo
*H0: Não há qualquer efeito do fator educação
anova lnrenpri mulher anest3

************************************
*SESSÃO 7.4. INTERAÇÕES ENVOLVENDO VARIÁVEIS BINÁRIAS
************************************

************************************
*INTERAÇÕES ENTRE VARIÁVEIS BINÁRIAS
************************************
gen mulnegra=mulher*negra
reg lnrenpri mulher negra mulnegra [pweight=v4729]

*Homens brancos
di exp(6.633914)

*Homens negros
di exp(6.633914 - 0.3496797)

*Mulheres brancas
di exp(6.633914 - 0.4044713)

*Mulheres negras
di exp(6.633914 - 0.4044713 - 0.3496797 + 0.0135062)

************************************
*CONSIDERAÇÃO DE INCLINAÇÕES DIFERENTES
************************************
*entre sexo (mulher) e educação (anest)
gen muleduc=mulher*anest
reg lnrenpri mulher anest muleduc [pweight=v4729]

*Salvando valor predito com variáveis constantes
*MULHER=1
predict lnrenpri1 if mulher==1, xb
gen renpri1=exp(lnrenpri1)

*Salvando valor predito com variáveis constantes
*MULHER=0
predict lnrenpri0 if mulher==0, xb
gen renpri0=exp(lnrenpri0)

*Comparação relativa dos salários de mulheres e homens por escolaridade
*Gráfico dos valores preditos em LOG por escolaridade para homens e mulheres
twoway (scatter lnrenpri0 anest) (scatter lnrenpri1 anest)

*Comparação absoluta dos salários de mulheres e homens por escolaridade
*Gráfico dos valores preditos por escolaridade para homens e mulheres
twoway (scatter renpri0 anest) (scatter renpri1 anest)

************************************
*VERIFICAÇÃO DE DIFERENÇAS NAS FUNÇÕES DE REGRESSÃO ENTRE GRUPOS
************************************
*ESTATÍSTICA DE CHOW AUTOMÁTICA
*Modelo sem variável binária "mulher" e sem interações
reg lnrenpri idpia anest [aweight=v4729]

*Modelo com variável binária "mulher" e com duas interações
gen mulid=mulher*idpia
reg lnrenpri mulher idpia anest mulid muleduc [aweight=v4729]

*F-TESTE AUTOMÁTICO
test mulher mulid muleduc

*ESTATÍSTICA DE CHOW MANUAL
*Modelo sem variável binária "mulher" e sem interações
reg lnrenpri idpia anest [aweight=v4729]
*SQRp = 8237.31092
*gl = k + 1 = interações + 1 = 2 + 1 = 3

*Modelo para homens
reg lnrenpri idpia anest [aweight=v4729] if mulher==0
*SQR1 = 4049.69019
*n1 = 9211

*Modelo para mulheres
reg lnrenpri idpia anest [aweight=v4729] if mulher==1
*SQR2 = 3130.0984
*n1 = 6471

*n = n1 + n2 = 9211 + 6471 = 15682
*gl = n - 2(k + 1) = 15682 - 2(3) = 15682 - 6 = 15676
*SQR1 + SQR2 = 4049.69019 + 3130.0984 = 7179.7886

*F-TESTE MANUAL - WOOLDRIDGE - PÁGINA 229
*{[SQRp - (SQR1 + SQR2)]/(SQR1 + SQR2)}*{[n - 2(k + 1)]/(k + 1)}
di [(8237.31092 - 7179.7886)/(7179.7886)]*(15676 / 3)

*Calculando a probabilidade acima do valor do F-teste
*df1 = 15676
*df2 = 3
*F0  = 769.64754
*display Ftail(df1, df2, F0)
display Ftail(15676, 3, 769.64754)

************************************
*SESSÃO 7.5. MODELO DE PROBABILIDADE LINEAR
************************************
*Data de referência da PNAD 2007:
*29 de setembro de 2007

*Salário mínimo de 01/04/2007 a 29/02/2008:
*R$380,00

*Linha de pobreza (metade do salário mínimo)
*R$190,00

*Criando variável binária de pobreza
sum renpri, d
gen pobre=.
replace pobre=0 if renpri>=190 & renpri<=30000
replace pobre=1 if renpri>=15 & renpri<190
tab pobre, missing

*Modelo de probabilidade linear
reg pobre mulher anest idpia [aweight=v4729], beta

*Criando "idpia" constante na média
gen idpiaa=idpia
egen idpiab=mean(idpia)
drop idpia
gen idpia=idpiab

*Salvando valor predito com variáveis constantes
*MULHER=1
predict pobre1 if mulher==1, xb

*Salvando valor predito com variáveis constantes
*MULHER=0
predict pobre0 if mulher==0, xb

*Gráfico dos valores preditos por idade para homens e mulheres
twoway (scatter pobre0 anest) (scatter pobre1 anest)

*Voltando "idpia" ao normal
drop idpia
gen idpia=idpiaa

************************************
*ENTENDENDO OS RESÍDUOS
************************************
reg lnrenpri mulher idpia anest [pweight=v4729]

*Resíduos por variável dependente
rvfplot, yline(0)

*Isso é o mesmo que...
predict lnrenpre, xb
gen res=lnrenpri-lnrenpre
twoway scatter res lnrenpre, yline(0)

*Isso também é o mesmo que...
predict residuo, score
twoway scatter residuo lnrenpre, yline(0)

*O comando "qnorm" estima gráficos quantis-normais ("quantile-normal plots")
*É gerado um gráfico dos quantis da variável indicada (res)
*pelos quantis de uma distribuição normal.
qnorm res

*Se os resíduos possuíssem uma distribuição normal,
*os pontos ficariam em cima da linha diagonal.

*Em nosso exemplo, isso acontece no centro dos pontos.
*No entanto, as curvas nas extremidades exibem não-normalidade.

*Do lado direito e acima do gráfico,
*há resíduos maiores do que se esperaria
*se eles estivessem normalmente distribuídos.

*Do lado esquerdo e abaixo do gráfico,
*há resíduos menores do que se esperaria
*se eles estivessem normalmente distribuídos.

*O livro do Lawrence Hamilton ("Regression with Graphs")
*exemplifica este tipo de gráfico (pág.16).

*Em nosso exemplo, a distribuição indica que
*o resíduo está distribuído com uma leve
*concentração à esquerda ou à direita.
*No entanto, isso não é perceptível quando
*tiramos o histograma do resíduo,
*o qual apresenta distribuição praticamente normal.
hist res, freq

*Box plot do resíduo
graph box res
graph hbox res

************************************
*EXPLORANDO TRANSFORMAÇÕES DA VARIÁVEL DEPENDENTE
************************************
*Lawrence Hamilton ("Regression with graphics") pág.18-19
*Y^3        q=3
*Y^2        q=2
*Y^1        q=1
*Y^0.5      q=0.5
*log(Y)     q=0
*-(Y^-0.5)  q=-0.5
*-(Y^-1)    q=-1

*De uma forma geral:
*q>1: reduz concentração à direita
*q=1: dados originais
*q<1: reduz concentração à esquerda (usamos log para renda)

*Renda original
hist renpri, percent

*Exponencial da renda
gen renexp=exp(renpri)
hist renexp, percent
twoway scatter renexp renpri if renpri<50

*Renda ao cubo
gen rencubo=renpri^3
hist rencubo, percent
twoway scatter rencubo renpri

*Logaritmo da renda
hist lnrenpri, percent
twoway scatter lnrenpri renpri

*Negativo da renda elevado a -1
gen renmen1=-(renpri^-1)
hist renmen1, percent

*Dados artificiais
egen id=seq()

*Logaritmo dos dados artificiais
gen lnid=ln(id)
twoway scatter lnid id

*Exponencial dos dados artificiais
gen expid=exp(id)
twoway scatter expid id if id<100

************************************
*REGRESSÃO COM "AWEIGHT" - PARA TESTE-F E R2-ajustado
************************************
reg lnrenpri mulher [aweight=v4729]

reg lnrenpri mulher idpia anest [aweight=v4729]

test idpia anest

************************************
*REGRESSÃO COM "PWEIGHT" - PARA ERROS PADRÕES ROBUSTOS
************************************
reg lnrenpri mulher idpia anest [pweight=v4729]

************************************
*SALVANDO O LOG
************************************
log close