• Nenhum resultado encontrado

B.2 Código para o Cálculo de Estimativas

B.2.4 Pareamento e Balanceamento dos Modelos Ajustados com PAC

De forma análoga ao que foi feito acima, tomemos agora os modelos ajustados na subseção B.2.2 para pareamento e verificação do balanceamento no banco pareado, mas incorporando o PAC. Note que o banco das crianças terá uma observação a menos em relação ao caso IID. O banco dos adultos ainda é o mesmo, mas o vetor de escores preditos usado para pareamento é outro

set.seed(2017)

par.cp = Match(Tr = ym.c.p$crit, X = esc.cp, M = 1, caliper = 0.2, replace = T, ties = F)

set.seed(2017)

par.ap = Match(Tr = ym.adu$crit, X = esc.ap, M = 1, caliper = 0.2, replace = T, ties = F)

par.cp$index.control; which(duplicated(par.cp$index.control) == F) par.ap$index.control; which(duplicated(par.ap$index.control) == F) par.cp$ndrops.matches #Todos os indivíduos tratados são pareados. par.ap$ndrops.matches #Todos os indivíduos tratados são pareados. ym.par.cp = ym.c.p[c(par.cp$index.treated, par.cp$index.control),] ym.par.ap = ym.adu[c(par.ap$index.treated, par.ap$index.control),]

Como estamos considerando o PAC, um objeto alternativo que contenha as suas informações apenas para os dados pareados deve ser criado, para ambos os grupos etários. Antes de criá-lo, devemos remover as observações que são únicas em suas províncias (1º nível de estratificação) no banco pareado, como feito para o banco completo

count(ym.par.cp$f5) #Apenas um indivíduo representa a província de Aden. count(ym.par.ap$f5) #No grupo dos adultos, todas as províncias têm dois

#ou mais indivíduos representando cada uma.

which(ym.par.cp$f5 == "aden") #Indivíduo da linha 144 do banco pareado, #que é controle.

ym.par.cp = ym.par.cp[-c(28, 144),] #Como o banco é pareado, eliminamos #também os contrafatuais.

count(ym.par.cp$f5) #Todas as 14 províncias restantes têm pelo menos 2 #indivíduos que as representam cada uma.

ym.par.cp$crit #Os indivíduos tratados agora estão entre as linhas 1 e #117 (inclusive).

Criando o objeto que contém as informações do PAC para os bancos completos (pois inserimos vetores de escores preditos) e pareados de crianças e adultos

d.re.c = svydesign(id = ~f15 + f1, strat = ~f5, weight = ~pl, nest = TRUE, data = ym.c.p)

d.re.a = svydesign(id = ~f15 + f1, strat = ~f5, weight = ~pl, nest = TRUE, data = ym.adu)

d.par.c = svydesign(id = ~f15 + f1, strat = ~f5, weight = ~pl, nest = TRUE, data = ym.par.cp)

d.par.a = svydesign(id = ~f15 + f1, strat = ~f5, weight = ~pl, nest = TRUE, data = ym.par.ap)

Verificando que o suporte dos escores preditos é comum para indivíduos tratados e controles

par(mfrow = c(1,2))

hist(ym.par.cp[c(1:117),]$esc.cp, breaks = 10, main = "",

xlab = "Escores dos Tratados Pareados", ylab = "Frequência", col = "gray", border = "black", axes = F)

axis(side = 1); axis(side = 2, las = 1, line = -.4)

hist(ym.par.cp[c(118:234),]$esc.cp, breaks = 10, main = "",

xlab = "Escores dos Controles Pareados", ylab = "Frequência", col = "gray", border = "black", axes = F)

axis(side = 1); axis(side = 2, las = 1, line = -.4) par(mfrow = c(1,2))

hist(ym.adu[c(par.ap$index.treated),]$esc.ap, breaks = 10, main = "", xlab = "Escores dos Tratados Pareados", ylab = "Frequência", col = "gray", border = "black", axes = F)

axis(side = 1); axis(side = 2, las = 1, line = -.4)

hist(ym.adu[c(par.ap$index.control),]$esc.ap, breaks = 10, main = "", xlab = "Escores dos Controles Pareados", ylab = "Frequência", col = "gray", border = "black", axes = F)

axis(side = 1); axis(side = 2, las = 1, line = -.4)

Podemos enfim fazer os testes de balanceamento considerando o PAC da pesquisa YNSPMS. Iniciando novamente pelo grupo das crianças, temos que

svychisq(~crit + charit.x.x, design = d.re.c)$statistic svychisq(~crit + cri.d.avi, design = d.re.c)$statistic svychisq(~crit + charit.x.x, design = d.re.c)$p.value svychisq(~crit + cri.d.avi, design = d.re.c)$p.value

svyranktest(esc ~ crit, design = d.re.c, test = "wilcoxon")$statistic svyranktest(esc ~ crit, design = d.re.c, test = "wilcoxon")$p.value svychisq(~crit + charit.x.x, design = d.par.c)$statistic

svychisq(~crit + cri.d.avi, design = d.par.c)$statistic svychisq(~crit + charit.x.x, design = d.par.c)$p.value svychisq(~crit + cri.d.avi, design = d.par.c)$p.value

svyranktest(esc ~ crit, design = d.par.c, test = "wilcoxon")$statistic svyranktest(esc ~ crit, design = d.par.c, test = "wilcoxon")$p.value svyttest(esc ~ crit, design = d.re.c)

svyttest(esc ~ crit, design = d.par.c)

Para o banco pareado, a covariável CRDAI não está balanceada nas classes de indivíduos tratados e controles pareados pelo escore de propensão, pois o teste χ2 rejeita a hipótese nula de independência ao nível nominal de 5%. Neste caso, teremos que refazer a análise desde a modelagem para o escore de propensão, mas agora especificando somente DRC como covariável dentre as presentes no modelo m2.cp. Temos então que

mcp.1 = svyglm(crit ~ charit.x.x, family = binomial(link = logit), design = d.re.c)

summary(mcp.1); esc.cp.1 = fitted.values(mcp.1); count(esc.cp.1) hist(esc.cp.1, breaks = 10, main = "", xlab = "Escores Preditos",

ylab = "Frequência", col = "gray", border = "black", axes = F) axis(side = 1); axis(side = 2, las = 1, line = -.4)

ym.c.p = cbind(ym.c.p, esc.cp.1)

O intercepto e a covariável DRC continuam significativos e o PATFI é respeitado. É muito provável que DRC esteja balanceada ao final dos testes de balanceamento no banco pareado. Para confirmar isto, fazemos

rm(mcp.1) set.seed(2017)

par.cp.1 = Match(Tr = ym.c.p$crit, X = esc.cp.1, M = 1, caliper = 0.2, replace = T, ties = F)

par.cp.1$ndrops.matches #Todos os indivíduos tratados são pareados. par.cp.1$index.control; which(duplicated(par.cp.1$index.control) == F); ym.par.cp.1 = ym.c.p[c(par.cp.1$index.treated, par.cp.1$index.control),] count(ym.par.cp.1$f5) #No novo banco pareado, temos um único in-

#divíduo pertencente à província da Cidade #de Sana’a.

which(ym.par.cp$f5 == "sana’a city") #Indivíduo da linha 6 do banco #pareado, que é tratado.

ym.par.cp = ym.par.cp[-c(6, 124),] #Como o banco é pareado, eliminamos #também os contrafatuais.

count(ym.par.cp$f5) #Todas as 13 províncias restantes têm pelo menos 2 #indivíduos que as representam cada uma.

ym.par.cp$crit #Os indivíduos tratados agora estão entre as linhas 1 e #117, inclusive.

par(mfrow = c(1,2))

hist(ym.par.cp[c(1:117),]$esc.cp.1, breaks = 10, main = "",

xlab = "Escores dos Tratados Pareados", ylab = "Frequência", col = "gray", border = "black", axes = F)

axis(side = 1); axis(side = 2, las = 1, line = -.4)

hist(ym.par.cp[c(118:234),]$esc.cp.1, breaks = 10, main = "", xlab = "Escores dos Controles Pareados", ylab = "Frequência", col = "gray", border = "black", axes = F)

Recriando os objetos do plano amostral para cada banco e fazendo os testes de balanceamento com o novo modelo, temos

d.re.c = svydesign(id = ~f15 + f1, strat = ~f5, weight = ~pl, nest = TRUE, data = ym.c.p)

d.par.c = svydesign(id = ~f15 + f1, strat = ~f5, weight = ~pl, nest = TRUE, data = ym.par.cp.1)

svychisq(~crit + charit.x.x, design = d.re.c)$statistic svychisq(~crit + charit.x.x, design = d.re.c)$p.value

svyranktest(esc ~ crit, design = d.re.c, test = "wilcoxon")$statistic svyranktest(esc ~ crit, design = d.re.c, test = "wilcoxon")$p.value svychisq(~crit + charit.x.x, design = d.par.c)$statistic

svychisq(~crit + charit.x.x, design = d.par.c)$p.value

svyranktest(esc ~ crit, design = d.par.c, test = "wilcoxon")$statistic svyranktest(esc ~ crit, design = d.par.c, test = "wilcoxon")$p.value svyttest(esc ~ crit, design = d.re.c)

svyttest(esc ~ crit, design = d.par.c)

Agora, temos que a covariável DRC está balanceada, o que também ocorria no banco pareado pelo modelo inicial (em que CRDAI estava especificada, mas não balanceada). Com relação aos escores preditos, estes também estão balanceados. Logo, o banco pareado pelos escores do modelo reduzido será utilizado na avaliação de impacto do SWF em TSAT no grupo das crianças, quando consideramos o PAC.

Para o grupo dos adultos, considerando o PAC, temos pelos testes χ2 e MW que d.re.a = svydesign(id = ~f15 + f1, strat = ~f5, weight = ~pl,

nest = TRUE, data = ym.adu)

d.par.a = svydesign(id = ~f15 + f1, strat = ~f5, #Apenas

weight = ~pl, nest = TRUE, #relembrando. data = ym.par.ap)

svychisq(~crit + charit.x.x, design = d.re.a)$statistic svychisq(~crit + poor.x.x, design = d.re.a)$statistic svychisq(~crit + inc, design = d.re.a)$p.value

svychisq(~crit + charit.x.x, design = d.re.a)$p.value svychisq(~crit + poor.x.x, design = d.re.a)$p.value

svyranktest(esc ~ crit, design = d.re.a, test = "wilcoxon")$statistic svyranktest(esc ~ crit, design = d.re.a, test = "wilcoxon")$p.value svychisq(~crit + inc, design = d.par.a)$statistic

svychisq(~crit + charit.x.x, design = d.par.a)$statistic svychisq(~crit + poor.x.x, design = d.par.a)$statistic svychisq(~crit + inc, design = d.par.a)$p.value

svychisq(~crit + charit.x.x, design = d.par.a)$p.value svychisq(~crit + poor.x.x, design = d.par.a)$p.value

svyranktest(esc ~ crit, design = d.par.a, test = "wilcoxon")$statistic svyranktest(esc ~ crit, design = d.par.a, test = "wilcoxon")$p.value svyttest(esc ~ crit, design = d.re.a)

svyttest(esc ~ crit, design = d.par.a)

todas as três covariáveis, bem como os escores preditos, estão balanceados. Logo, o modelo map, em sua especificação original, será usado para a avaliação de impacto do SWF em TSAT neste grupo, quando incorporamos o PAC na análise. Podemos salvar os bancos pareados que de fato estão balanceados

write.csv(ym.par.cp.1, "ynspmsParCriComPA.csv") write.csv(ym.par.ap, "ynspmsParAduComPA.csv")

e enfim prosseguir para os comandos da avaliação de impacto do SWF.