*Limpando a memória clear *Indicando tamanho da memória set mem 200m *Não interromper tabelas longas set more off *Colocar vírgulas e pontos no padrão brasileiro set dp comma *Abrindo o arquivo de log log using "C:\curso\Aula30.log", replace text ***************************** *PROGRESA/OPORTUNIDADES: abrindo banco de dados *Alguns municípios foram selecionados aleatoriamente para receber o programa em maio de 1998 (tratamento) *Os demais municípios receberam o programa somente em dezembro de 2000 (controle) ***************************** use "C:\curso\Progresa.dta", clear ***************************** *Manter somente crianças com 16 anos ou menos ***************************** count keep if age<=16 count tab age, missing nolabel ***************************** *VARIÁVEL DEPENDENTE: frequência à escola ***************************** tab enroll, missing tab enroll, missing nolabel gen escola=. replace escola=1 if enroll==1 replace escola=0 if enroll==0 tab enroll escola, missing ***************************** *VARIÁVEL DEPENDENTE: trabalhou na última semana ***************************** tab work, missing tab work, missing nolabel gen trab=. replace trab=1 if work==1 replace trab=0 if work>=2 & work<=4 tab work trab, missing ***************************** *TEMPO: 1997 ***************************** tab time t1, missing ***************************** *TEMPO: Outubro de 1998 ***************************** tab time t3, missing ***************************** *TEMPO: variável dicotômica ***************************** gen tempo=. replace tempo=0 if time==1 replace tempo=1 if time==3 tab time tempo, missing ***************************** *Município não recebeu (control) ou recebeu (basal) Progresa ***************************** tab program, missing ***************************** *Indíviuos pobres ***************************** tab pobre, missing ***************************** *GRUPO DE TRATAMENTO *Indivíduo pobre que participou do Progresa *Interação de program e pobre ***************************** tab program pobre tab propob ***************************** *GRUPO DE CONTROLE *Indivíduo pobre que não participou do Progresa *Interação de noprogram e pobre ***************************** gen noprogram=!program tab program noprogram, missing nolabel gen nopropob=noprogram*pobre ***************************** *Verificando variáveis que indicam pobres com e sem Progresa ***************************** tab program pobre tab propob tab nopropob ***************************** *GRUPO * TEMPO *Interação de grupo e tempo ***************************** tab propob tempo gen protem = propob * tempo tab protem propob, missing tab protem tempo, missing ***************************** *Sexo ***************************** tab female, missing tab female, missing nolabel ***************************** *Escolaridade da mãe ***************************** tab momedu, missing tab momedu, missing nolabel gen educmae=. replace educmae=momedu if momedu>=0 & momedu<=10 tab momedu educmae, missing ***************************** *Banheiro no domicílio ***************************** tab bthroom, missing tab bthroom, missing nolabel gen banheiro=. replace banheiro=1 if bthroom==1 replace banheiro=0 if bthroom==2 tab bthroom banheiro, missing ***************************** *Luz elétrica no domicílio ***************************** tab elctrcty, missing tab elctrcty, missing nolabel gen eletrica=. replace eletrica=1 if elctrcty==1 replace eletrica=0 if elctrcty==2 tab elctrcty eletrica, missing ***************************** *Limpando banco de dados ***************************** keep if trab!=. & escola!=. & age!=. & female!=. & /// educmae!=. & banheiro!=. & eletrica!=. & propob!=. & /// tempo!=. & protem!=. count ***************************** *Organizando o banco de dados no formato amplo/largo (wide), *ao invés do formato longo (long) ***************************** sort indv_id tempo browse indv_id propob tempo escola keep trab escola age female educmae banheiro eletrica /// propob tempo protem indv_id reshape wide trab escola age educmae banheiro eletrica protem /// , i(indv_id) j(tempo) browse indv_id propob escola0 escola1 count keep if trab0!=. & escola0!=. & age0!=. & educmae0!=. & /// banheiro0!=. & eletrica0!=. & protem0!=. & /// trab1!=. & escola1!=. & age1!=. & educmae1!=. & /// banheiro1!=. & eletrica1!=. & protem1!=. & /// female!=. & propob!=. count ***************************** *ESCORE DE PROPENSIDADE DE PAREAMENTO ***************************** ***************************** *Especificação de um número para iniciar a escolha aleatória ***************************** set seed 1000 ***************************** *Gerando variável com distribuição uniforme ***************************** generate x=uniform() hist x sort x ***************************** *Estimando os escores de propensidade de pareamento ***************************** *Verifique a significância conjunta do "modelo de participação". *Após pareamento o pseudo-R2 deve ser baixo. *Efeito líquido da política é dado pela diferença entre grupos *da média da variável de interesse (escola1). *Observe que os valores antes (unmatched) *e após (ATT) pareamento não são os mesmos. *ATT=efeito médio do tratamento no tratado psmatch2 propob age0 educmae0 banheiro0 eletrica0, logit neighbor(4) outcome(escola1) *Visualizando variáveis criadas pelo "psmatch2" browse propob _pscore _treated _support _weight _escola1 _id _n1 _n2 _n3 _n4 _nn _pdif ***************************** *Verificar se os casos respeitam pressuposto de sobreposição ***************************** tab _support, missing ***************************** *Gráficos para verificar pressuposto de sobreposição ***************************** psgraph twoway histogram _pscore if propob==0, bfcolor(none) blcolor(blue) /// || histogram _pscore if propob==1, bfcolor(none) blcolor(pink) ***************************** *Teste de distribuição de igualdade de Kolmogorov-Smirnov ***************************** *Este teste estatístico é mais rigoroso. *A hipótese nula é que há igualdade entre as distribuições *dos escores de pareamento dos grupos de *controle e tratamento após pareamento. *Resultado é que a probabilidade de *não rejeitar a hipótese nula é pequena. *Ou seja, rejeitamos a hipótese de igualdade entre as curvas. ksmirnov _pscore, by(propob) ***************************** *Verificando a qualidade do pareamento ***************************** *Somente após pareamento há balanceamento das covariáveis *entre os grupos de controle e tratamento. *Há redução do viés padronizado antes/depois do pareamento *em mais de 5% em todas variáveis. *O teste de igualdade de médias nos grupos de controle e tratamento, *antes/depois do pareamento, indica que as médias das covariáveis *antes da política (tempo 0) são altas entre os grupos (p-valor>0,05). pstest age0 educmae0 banheiro0 eletrica0 ***************************** *Para comparação de médias, devemos considerar o peso gerado *pelo escore de propensidade de pareamento ***************************** svyset [pweight=_weight] ***************************** *Estimando média, desvio padrão e intervalo de confiança *das covariáveis ANTES do pareamento. *Resultado da média é o mesmo do "pstest" ("unmatched"). ***************************** mean age0 educmae0 banheiro0 eletrica0, over(propob) ***************************** *Estimando média, desvio padrão e intervalo de confiança *das covariáveis DEPOIS do pareamento. *Resultado da média é o mesmo do "pstest" ("matched"). ***************************** svy: mean age0 educmae0 banheiro0 eletrica0, over(propob) ***************************** *Média da frequência à escola antes da política *para grupos de controle e tratamento ***************************** *Forma incorreta (sem peso do PSM) mean escola0, over(propob) *Forma correta (com peso do PSM) svy: mean escola0, over(propob) ***************************** *Média da frequência à escola depois da política *para grupos de controle e tratamento ***************************** *Forma incorreta (sem peso do PSM) mean escola1, over(propob) *Forma correta (com peso do PSM) svy: mean escola1, over(propob) log close