#Lendo pacotes necessários
library(survey)
library(dplyr)
library(tictoc)
library(foreign)
library(forcats)
library(tidyverse)
#Carregando banco de dados
load("<coloque aqui o caminho para o arquivo dos microdados formato RDATA>")
#Selecionando registros válidos para o módulo P e calculando peso amostral - summary de verificação
pns2013.1<-pns2013 %>% filter(M001==1)
pns2013.1<-pns2013.1 %>% mutate(peso_morador_selec=((V00291*(60202/145572211))))
pns2013.1<-pns2013.1 %>% filter(!is.na(peso_morador_selec))
summary(pns2013.1$peso_morador_selec)
#Usa sempre cinto quando anda no banco de trás de automóvel. - O002P
pns2013.1 <- pns2013.1 %>% mutate(O002P=ifelse(O005==1, NA, ifelse(O005==2, 1, 2)))
pns2013.1$O002P<-factor(pns2013.1$O002P, levels=c(1,2), labels=c("Sim","Não"))
summary(pns2013.1$O002P)
#Usa sempre capacete quando dirige motocicleta. - O003P
pns2013.1 <- pns2013.1 %>% mutate(O003P= ifelse(O007==1, 1, 2))
pns2013.1$O003P<-factor(pns2013.1$O003P, levels=c(1,2), labels=c("Sim","Não"))
summary(pns2013.1$O003P)
#Usa sempre capacete quando está como passageiro de motocicleta. - O004P
pns2013.1 <- pns2013.1 %>% mutate(O004P= ifelse(O008==1,NA,ifelse(O008==2,1,2)))
pns2013.1$O004P<-factor(pns2013.1$O004P, levels=c(1,2), labels=c("Sim","Não"))
summary(pns2013.1$O004P)
#Usa sempre capacete quando está como passageiro de motocicleta. - O006P
pns2013.1 <- pns2013.1 %>% mutate(O006P = ifelse(O009==1,1,
ifelse(O009==2,2,2)))
pns2013.1$O006P<-factor(pns2013.1$O006P, levels=c(1,2), labels=c("Sim","Não"))
summary(pns2013.1$O006P)
#Situação Urbano ou Rural
pns2013.1 <- pns2013.1 %>% rename(Sit_Urbano_Rural=V0026)
pns2013.1$Sit_Urbano_Rural<-factor(pns2013.1$Sit_Urbano_Rural, levels=c(1,2), labels=c("urbano", "rural"))
summary(pns2013.1$Sit_Urbano_Rural)
#Sexo
pns2013.1 <- pns2013.1 %>% rename(Sexo=C006)
pns2013.1$Sexo<-factor(pns2013.1$Sexo, levels=c(1,2), labels=c("Masculino", "Feminino"))
summary(pns2013.1$Sexo)
#Estados - UFs
pns2013.1 <- pns2013.1 %>% rename(Unidades_da_Federacao=V0001)
pns2013.1$Unidades_da_Federacao<-factor(pns2013.1$Unidades_da_Federacao, levels=c(11,12,13,14,15,16,17,21,22,23,24,25,26,27,28,29,31,32,33,35,41,42,43,50,51,52,53),
label=c("Rondônia","Acre","Amazonas","Roraima","Pará","Amapá","Tocantins","Maranhão","Piauí","Ceará",
"Rio Grande do Norte","Paraíba","Pernambuco","Alagoas","Sergipe","Bahia",
"Minas Gerais","Espírito Santo","Rio de Janeiro","São Paulo",
"Paraná","Santa Catarina","Rio Grande do Sul",
"Mato Grosso do Sul","Mato Grosso","Goiás","Distrito Federal"))
summary(pns2013.1$Unidades_da_Federacao)
#Grandes Regiões
pns2013.1 <- pns2013.1 %>%
mutate(GrandesRegioes = fct_collapse(Unidades_da_Federacao,
`Norte` = c("Rondônia","Acre","Amazonas","Roraima","Pará", "Amapá","Tocantins"),
`Nordeste` = c("Maranhão", "Piauí", "Ceará", "Rio Grande do Norte", "Paraíba","Pernambuco", "Alagoas","Sergipe","Bahia"),
`Sudeste` = c("Minas Gerais", "Espírito Santo","Rio de Janeiro", "São Paulo"),
`Sul` = c("Paraná", "Santa Catarina", "Rio Grande do Sul"),
`Centro-Oeste`= c("Mato Grosso do Sul","Mato Grosso", "Goiás", "Distrito Federal")))
summary(pns2013.1$GrandesRegioes)
#Faixas Etárias
pns2013.1 <- pns2013.1 %>% mutate(faixa_idade=cut(C008,
breaks = c(18,30, 45, 60,Inf),
labels = c("18 a 29 anos","30 a 44 anos","45 a 59 anos","60 anos ou mais"),
ordered_result = TRUE, right = FALSE))
summary(pns2013.1$faixa_idade)
#Raça
pns2013.1 <- pns2013.1 %>% mutate(Raca= ifelse(C009==1, 1,
ifelse(C009==2, 2,
ifelse(C009==4, 3, 9))))
pns2013.1$Raca<-factor(pns2013.1$Raca, levels=c(1,2,3),labels=c("Branca", "Preta", "Parda"))
summary(pns2013.1$Raca)
#Rendimento domiciliar per capita
pns2013.1 <- pns2013.1 %>% mutate(rend_per_capita=cut(VDF003,
breaks = c(-Inf,339, 678, 1356, 2034,Inf),
labels=c("Até 1/2 SM","1/2 até 1 SM","1 até 2 SM","2 até 3 SM","Mais de 3 SM"),
ordered_result = TRUE, right = TRUE, na.exclude= TRUE))
summary(pns2013.1$rend_per_capita)
# Escolaridade
pns2013.1 <- pns2013.1 %>% mutate(gescol = ifelse(VDD004A %in% 1:2, 1,
ifelse(VDD004A%in% 3:4, 2,
ifelse(VDD004A%in% 5:6, 3,4
))))
pns2013.1$gescol<-factor(pns2013.1$gescol, levels=c(1,2,3,4),
labels=c("Fundamental incompleto ou equivalente","Médio incompleto ou equivalente",
"Superior incompleto ou equivalente","Superior completo"))
summary(pns2013.1$gescol)
#Capital
pns2013.1<- pns2013.1 %>% mutate(Capital= fct_collapse(Unidades_da_Federacao,
`Porto Velho`= "Rondônia",
`Boa Vista`= "Roraima",
`Rio Branco`= "Acre",
`Manaus` = "Amazonas",
`Belém` = "Pará" ,
`Macapá`= "Amapá",
`Palmas` = "Tocantins",
`São Luís` = "Maranhão",
`Teresina`= "Piauí" ,
`Fortaleza`= "Ceará",
`Natal`= "Rio Grande do Norte",
`João Pessoa`= "Paraíba",
`Recife`= "Pernambuco",
`Maceió`= "Alagoas",
`Aracaju`= "Sergipe",
`Salvador`= "Bahia",
`Belo Horizonte`= "Minas Gerais",
`Vitória`= "Espírito Santo",
`Rio de Janeiro`= "Rio de Janeiro",
`São Paulo`= "São Paulo",
`Curitiba`= "Paraná",
`Florianópolis`= "Santa Catarina",
`Porto Alegre`= "Rio Grande do Sul",
`Campo Grande`= "Mato Grosso do Sul",
`Cuiabá`= "Mato Grosso",
`Goiânia` = "Goiás",
`Brasília`= "Distrito Federal"))
summary(pns2013.1$Capital)
#Selecionando variáveis para cálculo de indicadores no survey
pns2013Osurvey<- pns2013.1 %>% select("V0024","UPA_PNS","peso_morador_selec", "O002P","O003P","O004P", "O006P",
"C008","C009","V0031","Sit_Urbano_Rural","Sexo","Unidades_da_Federacao", "GrandesRegioes",
"faixa_idade", "Raca","rend_per_capita",,"gescol","Capital")
summary(pns2013Osurvey)
#Salvando csv para cálculo de indicadores no survey
path <- "../dados"
write.csv(pns2013Osurvey, file.path(path, "pns2013Osurvey.csv"))
desPNSO=svydesign(id=~UPA_PNS, strat=~V0024, weight=~peso_morador_selec, nest=TRUE, data=pns2013Osurvey)
#survey design -O002P
desPNSO002P_18=subset(desPNSO, C008>=18 & !is.na(O002P))
desPNSO002P_R18=subset(desPNSO, C008>=18 & !is.na(O002P) & !is.na(Raca))
desPNSO002P_C18=subset(desPNSO, C008>=18 & V0031==1 & !is.na(O002P))
desPNSO002P_RC18=subset(desPNSO, C008>=18 & !is.na(O002P) & !is.na(rend_per_capita))
#survey design -O003P
desPNSO003P_18=subset(desPNSO, C008>=18 & !is.na(O003P))
desPNSO003P_R18=subset(desPNSO, C008>=18 & !is.na(O003P) & !is.na(Raca))
desPNSO003P_C18=subset(desPNSO, C008>=18 & V0031==1 & !is.na(O003P))
desPNSO003P_RC18=subset(desPNSO, C008>=18 & !is.na(O003P) & !is.na(rend_per_capita))
#survey design -O004P
desPNSO004P_18=subset(desPNSO, C008>=18 & !is.na(O004P))
desPNSO004P_R18=subset(desPNSO, C008>=18 & !is.na(O004P) & !is.na(Raca))
desPNSO004P_C18=subset(desPNSO, C008>=18 & V0031==1 & !is.na(O004P))
desPNSO004P_RC18=subset(desPNSO, C008>=18 & !is.na(O004P) & !is.na(rend_per_capita))
#survey design -O006P
desPNSO006P_18=subset(desPNSO, C008>=18)
desPNSO006P_R18=subset(desPNSO, C008>=18 & !is.na(Raca))
desPNSO006P_C18=subset(desPNSO, C008>=18 & V0031==1)
desPNSO006P_RC18=subset(desPNSO, C008>=18 & !is.na(rend_per_capita))
Essa tabela é responsável por unir os indicadores no formato do painel de indicadores
matrizIndicadores = data.frame()
ListaIndicadores = c(~O002P,~O003P,~O004P,~O006P)
ListaIndicadoresTexto = c("O002P","O003P","O004P","O006P")
ListaDominios = c(~Sexo,~Raca,~rend_per_capita,~faixa_idade,~Sit_Urbano_Rural,~Unidades_da_Federacao,~GrandesRegioes,~gescol,~Capital)
ListaDominiosTexto = c("sexo","raça","rend_per_capita","fx_idade_acid","urb_rur","uf","região","gescol","capital")
ListaTotais = c('Brasil','Capital')
Ano <- "2013"
Essas iterações rodam por indicador, abrangência e por design
#Cálculo dos indicadores usando o pacote survey
i <- 0
#Para cada indicador
for( indicador in ListaIndicadores){
i <- i + 1
j <- 1
#Para cada dominio
for (dominio in ListaDominios){
#design especifico para capital que é subconjunto do dataframe total
if (ListaDominiosTexto[j]=="capital"){
#designs especificos por variavel que são subconjuntos do dataset total
if(ListaIndicadoresTexto[i] == "O002P"){
dataframe_indicador<-svyby( indicador , dominio , desPNSO002P_C18 , svymean,vartype= c("ci", "cv"))
}
else if(ListaIndicadoresTexto[i] == "O003P"){
dataframe_indicador<-svyby( indicador , dominio , desPNSO003P_C18 , svymean,vartype= c("ci", "cv"))
}else if(ListaIndicadoresTexto[i] == "O004P"){# cv maior do que o aceitável
dataframe_indicador<-svyby( indicador , dominio , desPNSO004P_C18 , svymean,vartype= c("ci", "cv"))
}else{
dataframe_indicador<-svyby( indicador , dominio , desPNSO006P_C18 , svymean,vartype= c("ci", "cv"))
}
#Uso design do subconjunto para raça/cor que inclui preta,branca e parda as outras
#não possuiam dados suficientes para os dominios dos indicadores
}else if (ListaDominiosTexto[j]=="raça"){
if(ListaIndicadoresTexto[i] == "O002P"){
dataframe_indicador<-svyby( indicador , dominio , desPNSO002P_R18 , svymean,vartype= c("ci", "cv"))
}
else if(ListaIndicadoresTexto[i] == "O003P"){
dataframe_indicador<-svyby( indicador , dominio , desPNSO003P_R18 , svymean,vartype= c("ci", "cv"))
}else if(ListaIndicadoresTexto[i] == "O004P"){
dataframe_indicador<-svyby( indicador , dominio , desPNSO004P_R18 , svymean,vartype= c("ci", "cv"))
}
else{
dataframe_indicador<-svyby( indicador , dominio , desPNSO006P_R18 , svymean,vartype= c("ci", "cv"))
}
#design geral para o subconjunto maior que 18 anos
}else if (ListaDominiosTexto[j]=="rend_per_capita"){
if(ListaIndicadoresTexto[i] == "O002P"){
dataframe_indicador<-svyby( indicador , dominio , desPNSO002P_RC18 , svymean,vartype= c("ci", "cv"))
}
else if(ListaIndicadoresTexto[i] == "O003P"){
dataframe_indicador<-svyby( indicador , dominio , desPNSO003P_RC18 , svymean,vartype= c("ci", "cv"))
}else if(ListaIndicadoresTexto[i] == "O004P"){
dataframe_indicador<-svyby( indicador , dominio , desPNSO004P_RC18 , svymean,vartype= c("ci", "cv"))
}
else{dataframe_indicador<-svyby( indicador , dominio , desPNSO006P_RC18 , svymean,vartype= c("ci", "cv"))}
#design geral para o subconjunto maior que 18 anos
}else {
if(ListaIndicadoresTexto[i] == "O002P"){
dataframe_indicador<-svyby( indicador , dominio , desPNSO002P_18 , svymean,vartype= c("ci", "cv"))
}
else if(ListaIndicadoresTexto[i] == "O003P"){
dataframe_indicador<-svyby( indicador , dominio , desPNSO003P_18 , svymean,vartype= c("ci", "cv"))
}else if(ListaIndicadoresTexto[i] == "O004P"){
dataframe_indicador<-svyby( indicador , dominio , desPNSO004P_18 , svymean,vartype= c("ci", "cv"))
}else{
dataframe_indicador<-svyby( indicador , dominio , desPNSO006P_18 , svymean,vartype= c("ci", "cv"))
}
}
#União do dataframe de indicadores no formato do painel disponibilizado para PNS
dataframe_indicador<-data.frame(dataframe_indicador)
colnames(dataframe_indicador) <- c("abr_nome","Sim","Nao","LowerS","LowerN","UpperS","UpperN","cvS","cvN")
dataframe_indicador$Indicador <- ListaIndicadoresTexto[i]
dataframe_indicador$abr_tipo <- ListaDominiosTexto[j]
dataframe_indicador$Ano <- Ano
dataframe_indicador <- dataframe_indicador %>% select("abr_tipo","abr_nome","Ano","Indicador","Sim","LowerS","UpperS","cvS")
matrizIndicadores <-rbind(matrizIndicadores,dataframe_indicador)
j <- j + 1
}
}
matriz_totais <- data.frame()
i=0
#para cada indicador
for(indicador in ListaIndicadores){
i <- i+1
#para os totais Brasil e total das capitais
for(total in ListaTotais){
#Uso do design que é subconjunto do dataset para cada Capital
if (total == "Capital"){
#Indicadores que são subconjunto do dataset tot
if(ListaIndicadoresTexto[i] == "O002P"){
dataframe_indicador <- svymean(indicador,desPNSO002P_C18)
}else if(ListaIndicadoresTexto[i] == "O003P"){
dataframe_indicador <- svymean(indicador,desPNSO003P_C18)
}else if(ListaIndicadoresTexto[i] == "O004P"){
dataframe_indicador <- svymean(indicador,desPNSO004P_C18)
}else{
dataframe_indicador <- svymean(indicador,desPNSO006P_C18)
}
} else {
if(ListaIndicadoresTexto[i] == "O002P"){
dataframe_indicador <- svymean(indicador,desPNSO002P_18)
}else if(ListaIndicadoresTexto[i] == "O003P"){
dataframe_indicador <- svymean(indicador,desPNSO003P_18)
}else if(ListaIndicadoresTexto[i] == "O004P"){
dataframe_indicador <- svymean(indicador,desPNSO004P_18)
}else{
dataframe_indicador <- svymean(indicador,desPNSO006P_18)
}
}
intervalo_confianca <- confint(dataframe_indicador)
coeficiente_variacao <- cv(dataframe_indicador)
dataframe_indicador <- cbind(data.frame(dataframe_indicador),data.frame(intervalo_confianca))
dataframe_indicador <- cbind(data.frame(dataframe_indicador),data.frame(coeficiente_variacao))
dataframe_indicador <- dataframe_indicador %>%
select('mean','X2.5..','X97.5..',coeficiente_variacao)
dataframe_indicador_S <- dataframe_indicador %>%
slice(1)
colnames(dataframe_indicador_S) <- c('Sim','LowerS','UpperS', 'cvS')
dataframe_indicador_S$Indicador <- ListaIndicadoresTexto[i]
print(ListaIndicadoresTexto[i])
dataframe_indicador_S$abr_tipo <- "total"
dataframe_indicador_S$abr_nome <- total
dataframe_indicador_S$Ano <- Ano
print(colnames(dataframe_indicador_S))
dataframe_indicador_S <- dataframe_indicador_S %>%
select("abr_tipo","abr_nome","Ano","Indicador","Sim","LowerS","UpperS",'cvS')
matriz_totais <-rbind(matriz_totais,dataframe_indicador_S)
}
}
matrizIndicadores<-rbind(matrizIndicadores,matriz_totais)
write.table(matrizIndicadores,file="<coloque aqui o caminho para exportação da matriz de indicadores>",sep = ";",dec = ",",row.names = FALSE)