*ssc install psmatch2, replace clear set more 1 set dp comma cap log close cd "C:\Elaine\app_pos\2017\aplicaçao_matching" log using "resultados.log", replace use "bonus_es_2011.dta", clear ********************************************************************* *****DESCRIÇÃO DAS VARIÁVEIS UTILIZADAS NAS ESPECIFICAÇÕES ABAIXO**** ********************************************************************* **VARIÁVEIS DO CENSO DA EDUCAÇÃO **escola_estadual: DUMMY PARA ESCOLA ESTADUAL **NUM_SALAS_EXISTENTES: NÚMERO DE SALAS DE AULA EXISTENTES NA ESCOLA (VARIÁVEL DO CENSO DA EDUCAÇÃO) **NUM_FUNCIONARIOS: NÚMERO DE FUNCIONÁRIOS DA ESCOLA (VARIÁVEL DO CENSO DA EDUCAÇÃO) **prof_sem_superior: número de professores sem nível superior completo (VARIÁVEL DO CENSO DA EDUCAÇÃO) **prof_superior_completo: número de professores com nível superior completo (VARIÁVEL DO CENSO DA EDUCAÇÃO) **dreg: Código do Órgão Regional de Ensino (VARIÁVEL DO CENSO DA EDUCAÇÃO) - dummy 11 regiões **EXTRAINDO VARIÁVEIS DO QUESTIONÁRIO PAEBES 2011** **VARIÁVEIS DO QUEST PAEBES 2011 (COLLAPSEI PELA MÉDIA) **idade: Qual é a sua idade? (variável do questionário Paebes) - Collapsei pela média, por escola - quanto maior o valor, maior a idade. **prof_falta: Com que frequência o(a) seu professor(a) falta às aulas? (variável do questionário Paebes) - Collapsei pela média, por escola - quanto menor o valor, mais frequentemente o professor falta. **VARIÁVEIS DO QUEST PAEBES 2011 (GEREI DUMMY E COLLAPSEI PELA SOMA) **esc_mae_ef:número de mães com ef (variável do questionário Paebes) **esc_mae_em:números de mães com em (variável do questionário Paebes) **esc_mae_sup:número de mães com sup completo (variável do questionário Paebes) **esc_mae_n_sabe:número de alunos que não souberam responcer a escolaridade da mãe **recebe_bolsa_fam: número de alunos que as famílias não recebem bolsa família (variável do questionário Paebes) **tem_computador_casa:número de alunos que tem computador em casa (variável do questionário Paebes) **prop_recebe_bolsa_fam: número de alunos que as famílias não recebem bolsa família/ número total de questionários **prop_tem_computador_casa: número de alunos que tem computador em casa/ número total de questionários ********************************************************************************** *****************BANCO 4ª SERIE / 5º ANO****************************************** ********************************************************************************** *** ESTATISTICAS DESCRITIVAS **** *** define o tratamento tab escola_estadual so escola_estadual by escola_estadual: sum NUM_SALAS_EXISTENTES NUM_SALAS_UTILIZADAS NUM_COMPUTADORES NUM_COMP_ALUNOS NUM_FUNCIONARIOS ID_LOCALIZACAO esc_mae_ef esc_mae_em esc_mae_sup esc_mae_n_sabe tem_computador_casa recebe_bolsa_fam prof_falta prof_sem_superior prof_superior_completo proficiencia_lp proficiencia_mt n_quest prop_recebe_bolsa_fam prop_tem_computador_casa n_alunos_4a_5o dreg1 dreg2 dreg3 dreg4 dreg5 dreg6 dreg7 dreg8 dreg9 dreg10 dreg11 urbana ****** PROFICIENCIA EM PORTUGUES - 4a serie ********************** **ESPECIFICAÇÃO lp_4 (ESPECIFICAÇÃO com prop recepiente de bf e prop computador em casa) **logit logit escola_estadual NUM_SALAS_EXISTENTES NUM_FUNCIONARIOS /*esc_mae_ef esc_mae_em esc_mae_sup esc_mae_n_sabe */ prof_sem_superior prof_superior_completo /*prop_recebe_bolsa_fam prop_tem_computador_casa */ dreg1- dreg10 urbana estat classification, cutoff(0.22) *Correctly classified = 75,28% logit escola_estadual NUM_SALAS_EXISTENTES NUM_FUNCIONARIOS esc_mae_ef esc_mae_em esc_mae_sup esc_mae_n_sabe prof_sem_superior prof_superior_completo prop_recebe_bolsa_fam prop_tem_computador_casa dreg1- dreg10 urbana estat classification, cutoff(0.22) *Correctly classified = 78,82% logit escola_estadual NUM_SALAS_EXISTENTES NUM_FUNCIONARIOS /*esc_mae_ef esc_mae_em esc_mae_sup esc_mae_n_sabe*/ prof_sem_superior prof_superior_completo /*prop_recebe_bolsa_fam*/ prop_tem_computador_casa dreg1- dreg10 urbana estat classification, cutoff(0.22) * Correctly classified =78,54% predict pscore_lp4, pr histogram pscore_lp4, by(escola_estadual) graph save "hist_pscore_lp4_antes_matching.gph", replace sum pscore_lp4 if escola_estadual==1, d sum pscore_lp4 if escola_estadual==0, d **PSMATCH2 * If you want to be able to replicate your results you should set seed before calling psmatch2. set seed 248 gen x=uniform() so x /* psmatch2 depvar [indepvars] [if exp] [in range] [, outcome(varlist) pscore(varname) neighbor(integer) radius caliper(real) mahalanobis(varlist) ai(integer) kernel llr kerneltype(type) bwidth(real) spline nknots(integer) common trim(real) noreplacement descending odds index logit ties quietly w(matrix) ate] */ psmatch2 escola_estadual, pscore(pscore_lp4) out (proficiencia_lp) neighbor(1) cal (0.02) com norepl tab _weight escola_estadual sum _pdif /* common imposes a common support by dropping treatment observations whose pscore is higher than the maximum or less than the minimum pscore of the controls. */ ** aumentando o calliper psmatch2 escola_estadual, pscore(pscore_lp4) out (proficiencia_lp) neighbor(1) cal (0.2) com norepl tab _weight escola_estadual sum _pdif *** ver se notas fora do suporte comum são diferentes das que parearam *** interessante checar outras características tb... ttest proficiencia_lp if escola_estadual==1, by (_support) psmatch2 escola_estadual, pscore(pscore_lp4) out (proficiencia_lp) neighbor(1) cal (0.02) com norepl histogram pscore_lp4 if _weight~=., by(escola_estadual) graph save "hist_pscore_lp4_depois_matching.gph", replace ** teste de balanceamento pstest NUM_SALAS_EXISTENTES NUM_FUNCIONARIOS prof_sem_superior prof_superior_completo prop_tem_computador_casa dreg1- dreg10 urbana, both graph logit escola_estadual NUM_SALAS_EXISTENTES NUM_FUNCIONARIOS prof_sem_superior prof_superior_completo prop_tem_computador_casa dreg1- dreg10 urbana [fw=_weight] * matching 1 vizinho - com reposição psmatch2 escola_estadual, pscore(pscore_lp4) out (proficiencia_lp) neighbor(1) cal (0.02) com sort _id tab _nn tab _weight escola_estadual /* _id In the case of one-to-one and nearest-neighbors matching, a new identifier created for all observations. _nk In the case of one-to-one and nearest-neighbors matching, for every treatment observation, it stores the observation number of the k-th matched control observation. Do not forget to sort by _id if you want to use the observation number (id) of for example the 1st nearest neighbor as in sort _id g x_of_match = x[_n1] _nn In the case of nearest-neighbors matching, for every treatment observation, it stores the number of matched control observations. */ * comparando 1 vizinho com 5 vizinhos psmatch2 escola_estadual, pscore(pscore_lp4) out (proficiencia_lp) neighbor(5) cal (0.02) com tab _nn tab _weight drop _n1-_n5 ********************* *Comparando diferentes métodos *******um vizinho com reposição************ psmatch2 escola_estadual, pscore(pscore_lp4) out (proficiencia_lp) neighbor(1) cal (0.02) com *******radius************ psmatch2 escola_estadual, pscore(pscore_lp4) out (proficiencia_lp) cal (0.02) com radius ********kernel****************** psmatch2 escola_estadual, pscore(pscore_lp4) out (proficiencia_lp) kernel com tab _weight if escola_estadual==1 *tab _weight if escola_estadual~=1 ***************************** *** analise de sensibilidade a suporte comum psmatch2 escola_estadual, pscore(pscore_lp4) out (proficiencia_lp) kernel com tab escola_estadual _support, ro /* | psmatch2: Common escola_est | support adual | Off suppo On suppor | Total -----------+----------------------+---------- 0 | 0 1.123 | 1.123 | 0,00 100,00 | 100,00 -----------+----------------------+---------- 1 | 32 285 | 317 | 10,09 89,91 | 100,00 -----------+----------------------+---------- Total | 32 1.408 | 1.440 | 2,22 97,78 | 100,00 */ sum proficiencia_lp sum proficiencia_lp if _support==0 /* . sum proficiencia_lp Variable | Obs Mean Std. Dev. Min Max -------------+-------------------------------------------------------- proficienc~p | 1440 197,1541 26,33224 116,5395 329,6628 . sum proficiencia_lp if _support==0 Variable | Obs Mean Std. Dev. Min Max -------------+-------------------------------------------------------- proficienc~p | 32 197,6461 18,22433 162,1356 238,464 */ gen upper_bound = 1.44*0.8991 + [197.6461 - 329.6628]*0.1009 gen lower_bound = 1.44*0.8991 + [197.6461 - 116.5395]*0.1009 sum upper_bound lower_bound *** para a CIA *** mhbounds tem que instalar * H0 = programa não tem impacto gen sucesso = 1 if proficiencia_lp>=200 replace sucesso = 0 if proficiencia_lp<200 gen sucesso1 = 1 if proficiencia_lp>=190 replace sucesso1 = 0 if proficiencia_lp<190 psmatch2 escola_estadual, pscore(pscore_lp4) out (sucesso) n(1) com mhbounds sucesso, gamma(1 (0.1) 6) psmatch2 escola_estadual, pscore(pscore_lp4) out (sucesso1) n(1) com mhbounds sucesso1, gamma(1 (0.5) 8) /* rbounds calculates Rosenbaum bounds for average treatment effects on the treated in the presence of unobserved heterogeneity (hidden bias) between treatment and control cases. rbounds takes the difference in the response variable between treatment and control cases as input variable varname. The procedure then calculates Wilcoxon signrank tests that give upper and lower bound estimates of significance levels at given levels of hidden bias. rbounds implements the sensitivity tests for matched (1x1) pairs only. */ psmatch2 escola_estadual, pscore(pscore_lp4) out (proficiencia_lp) n(1) com *drop delta gen delta = proficiencia_lp - _proficiencia_lp if _treat==1 & _support==1 rbounds delta, gamma(1 (0.05) 4) sigonly