#Lendo pacotes necessários
library(survey)
library(ggplot2)
library(dplyr)
library(foreign)
library(forcats)
library(tidyverse)
#Carregando banco de dados para R versão 3.5.0 ou superior
load("<coloque aqui o caminho para o arquivo dos microdados formato RDATA PNS 2019>")
#conferindo as dimensões (número de linhas e colunas)
dim("<Coloque aqui o nome do arquivo RDATA PNS 2019>")
#Selecionando registros válidos e calculando peso amostral - summary de verificação
pns2019.1<- <Coloque aqui o nome do arquivo RDATA> %>% mutate(peso_moradores=((V00281*279382/209589607)))
pns2019.1<-pns2019.1 %>% filter(!is.na(peso_moradores))
summary(pns2019.1$peso_moradores)
#Desfechos - Indicadores
#Pessoas com deficiência em pelo menos uma de suas funções - G001P
pns2019.1 <- pns2019.1 %>% mutate(G001P= if_else(G046 == 3 | G046 == 4 | G047 == 3 | G047 == 4 | G057 == 3 | G057 == 4 | G058 == 3 | G058 == 4 |
G070 == 3 | G070 == 4 | G071 == 3 | G071 == 4 | G079 == 3 | G079 == 4 | G080 == 3 | G080 == 4 |
G081 == 3 | G081 == 4 | G082 == 3 | G082 == 4 | G083 == 3 | G083 == 4, 1,2,missing=2))
pns2019.1$G001P<-factor(pns2019.1$G001P, levels=c(1,2), labels=c("Sim","Não"))
summary(pns2019.1$G001P)
#Pessoas com deficiência visual - G002P
pns2019.1 <- pns2019.1 %>% mutate(G002P= if_else(G046 == 3 | G046 == 4 | G047 == 3 | G047 == 4, 1,2,missing=2))
pns2019.1$G002P<-factor(pns2019.1$G002P, levels=c(1,2), labels=c("Sim", "Não"))
pns2019.1$G002P_aux<-factor(pns2019.1$G002P, levels=c("Sim","Não"), labels=c(1,0))
pns2019.1$G002P_aux<-as.numeric(as.character(pns2019.1$G002P_aux))
summary(pns2019.1$G002P)
#Pessoas com deficiência auditiva - G003P
pns2019.1 <- pns2019.1 %>% mutate(G003P= if_else(G057 == 3 | G057 == 4 | G058 == 3 | G058 == 4, 1,2,missing=2))
pns2019.1$G003P<-factor(pns2019.1$G003P, levels=c(1,2), labels=c("Sim", "Não"))
pns2019.1$G003P_aux<-factor(pns2019.1$G003P, levels=c("Sim","Não"), labels=c(1,0))
pns2019.1$G003P_aux<-as.numeric(as.character(pns2019.1$G003P_aux))
summary(pns2019.1$G003P)
#Pessoas com deficiência motora (membros inferiores ou superiores) - G004P
pns2019.1 <- pns2019.1 %>% mutate(G004P= if_else(G070 == 3 | G070 == 4 | G071 == 3 | G071 == 4 | G079 == 3 | G079 == 4 | G080 == 3 | G080 == 4 |
G081 == 3 | G081 == 4 | G082 == 3 | G082 == 4, 1,2,missing=2))
pns2019.1$G004P<-factor(pns2019.1$G004P, levels=c(1,2), labels=c("Sim", "Não"))
pns2019.1$G004P_aux<-factor(pns2019.1$G004P, levels=c("Sim","Não"), labels=c(1,0))
pns2019.1$G004P_aux<-as.numeric(as.character(pns2019.1$G004P_aux))
summary(pns2019.1$G004P)
# Pessoas com deficiência mental ou intelectual l - G005P
pns2019.1 <- pns2019.1 %>% mutate(G005P= if_else(G083 == 3 | G083 == 4, 1,2,missing=2))
pns2019.1$G005P<-factor(pns2019.1$G005P, levels=c(1,2), labels=c("Sim", "Não"))
pns2019.1$G005P_aux<-factor(pns2019.1$G005P, levels=c("Sim","Não"), labels=c(1,0))
pns2019.1$G005P_aux<-as.numeric(as.character(pns2019.1$G005P_aux))
summary(pns2019.1$G005P)
# Pessoas com deficiência múltipla - G006P
pns2019.1 <- pns2019.1 %>% mutate(G006P= if_else((G002P_aux + G003P_aux + G004P_aux + G005P_aux) >= 2, 1,2,missing=2))
pns2019.1$G006P<-factor(pns2019.1$G006P, levels=c(1,2), labels=c("Sim", "Não"))
summary(pns2019.1$G006P)
# Pessoas com deficiência que receberam cuidado regular em reabilitação nos últimos 12 meses - G007P
pns2019.1 <- pns2019.1 %>% mutate(G007P= ifelse(G084 == 1, 1,
ifelse(G084 == 2,2,2)))
pns2019.1$G007P<-factor(pns2019.1$G007P, levels=c(1,2), labels=c("Sim", "Não"))
summary(pns2019.1$G007P)
# Pessoas com deficiência que receberam cuidado regular em reabilitação no SUS nos últimos 12 meses - G008P
pns2019.1 <- pns2019.1 %>% mutate(G008P= ifelse(G086 == 1,1,
ifelse(G084 == 1,2,2)))
pns2019.1$G008P<-factor(pns2019.1$G008P, levels=c(1,2), labels=c("Sim", "Não"))
summary(pns2019.1$G008P)
# Uso de equipamento de auxílio obtido no SUS - G009P
pns2019.1 <- pns2019.1 %>% mutate(G009P= case_when(G035 == 1 | G039 == 1 | G041 == 1 | G050 == 1 | G052 == 1 | G054 == 1 | G061 == 1 | G063 == 1 | G065 == 1 |
G067 == 1 | G074 == 1 | G076 == 1~1,
G034 == 1 | G038 == 1 | G040 == 1 | G049 == 1 | G051 == 1 | G053 == 1 | G060 == 1 | G062 == 1 | G064 == 1 |
G066 == 1 | G073 == 1 | G075 == 1~2))
pns2019.1$G009P<-factor(pns2019.1$G009P, levels=c(1,2), labels=c("Sim", "Não"))
summary(pns2019.1$G009P)
# Uso de equipamento para audição - G010P
pns2019.1 <- pns2019.1 %>% mutate(G010P= if_else(G048 == 1, 1,2,missing=2))
pns2019.1$G010P<-factor(pns2019.1$G010P, levels=c(1,2), labels=c("Sim", "Não"))
summary(pns2019.1$G010P)
# Uso de equipamento de auxílio para locomoção ou para membros superiores - G011P
pns2019.1 <- pns2019.1 %>% mutate(G011P= if_else(G059 == 1 | G072 == 1, 1,2,missing=2))
pns2019.1$G011P<-factor(pns2019.1$G011P, levels=c(1,2), labels=c("Sim", "Não"))
summary(pns2019.1$G011P)
# Uso de óculos ou outro equipamento para visão - G012P
pns2019.1 <- pns2019.1 %>% mutate(G012P= if_else(G033 == 1, 1,2,missing=2))
pns2019.1$G012P<-factor(pns2019.1$G012P, levels=c(1,2), labels=c("Sim", "Não"))
summary(pns2019.1$G012P)
# Pessoas com deficiência motora (membros inferiores) - G013P
pns2019.1 <- pns2019.1 %>% mutate(G013P= if_else(G070 == 3 | G070 == 4 | G071 == 3 | G071 == 4, 1,2,missing=2))
pns2019.1$G013P<-factor(pns2019.1$G013P, levels=c(1,2), labels=c("Sim", "Não"))
summary(pns2019.1$G013P)
# Pessoas com deficiência motora (membros superiores) - G014P
pns2019.1 <- pns2019.1 %>% mutate(G014P= if_else(G079 == 3 | G079 == 4 | G080 == 3 | G080 == 4 | G081 == 3 |
G081 == 4 | G082 == 3 | G082 == 4, 1,2,missing=2))
pns2019.1$G014P<-factor(pns2019.1$G014P, levels=c(1,2), labels=c("Sim", "Não"))
summary(pns2019.1$G014P)
# Uso de equipamento de auxílio para locomoção - G015P
pns2019.1 <- pns2019.1 %>% mutate(G015P= if_else(G059 == 1, 1,2,missing=2))
pns2019.1$G015P<-factor(pns2019.1$G015P, levels=c(1,2), labels=c("Sim", "Não"))
summary(pns2019.1$G015P)
# Uso de equipamento de auxílio para membros superiores - G016P
pns2019.1 <- pns2019.1 %>% mutate(G016P= if_else(G072 == 1, 1,2,missing=2))
pns2019.1$G016P<-factor(pns2019.1$G016P, levels=c(1,2), labels=c("Sim", "Não"))
summary(pns2019.1$G016P)
#Situação Urbano ou Rural
pns2019.1 <- pns2019.1 %>% rename(Situação_Urbano_Rural=V0026)
pns2019.1$Situação_Urbano_Rural<-factor(pns2019.1$Situação_Urbano_Rural, levels=c(1,2), labels=c("Urbano", "Rural"))
summary(pns2019.1$Situação_Urbano_Rural)
#Sexo
pns2019.1 <- pns2019.1 %>% rename(Sexo=C006)
pns2019.1$Sexo<-factor(pns2019.1$Sexo, levels=c(1,2), labels=c("Masculino", "Feminino"))
summary(pns2019.1$Sexo)
#Estados - UFs
pns2019.1 <- pns2019.1 %>% rename(Unidades_da_Federação=V0001)
pns2019.1$Unidades_da_Federação<-factor(pns2019.1$Unidades_da_Federação, 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(pns2019.1$Unidades_da_Federação)
#Grandes Regiões
pns2019.1 <- pns2019.1 %>%
mutate(GrandesRegioes = fct_collapse(Unidades_da_Federação,
`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(pns2019.1$GrandesRegioes)
#Capital
pns2019.1<- pns2019.1 %>% mutate(Capital= fct_collapse(Unidades_da_Federação,
`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(pns2019.1$Capital)
#Faixas Etárias
pns2019.1 <- pns2019.1 %>% mutate(faixa_idade=cut(C008,
breaks = c(2,10,18, 30, 40, 50,65,Inf),
labels = c("2 a 9 anos" ,"10 a 17 anos", "18 a 29 anos" , "30 a 39 anos" , "40 a 49 anos" , "50 a 64 anos" , "65 anos ou mais"),
ordered_result = TRUE, right = FALSE))
summary(pns2019.1$faixa_idade)
#Raça
pns2019.1 <- pns2019.1 %>% mutate(Raca= ifelse(C009==1, 1,
ifelse(C009==2, 2,
ifelse(C009==4, 3, 9))))
pns2019.1$Raca<-factor(pns2019.1$Raca, levels=c(1,2,3),labels=c("Branca", "Preta", "Parda"))
summary(pns2019.1$Raca)
#Rendimento domiciliar per capita
pns2019.1 <- pns2019.1 %>% mutate(rend_per_capita = ifelse(VDF004 %in% 1:2, 1,
ifelse(VDF004%in% 3, 2,
ifelse(VDF004%in% 4, 3,
ifelse(VDF004%in% 5, 4,
ifelse(VDF004==9,"NA",5))))))
pns2019.1$rend_per_capita<-factor(pns2019.1$rend_per_capita, levels=c(1,2,3,4,5), labels=c("Até 1/2 SM","1/2 até 1 SM","1 até 2 SM",
"2 até 3 SM","Mais de 3 SM"))
summary(pns2019.1$rend_per_capita)
#Selecionando variáveis para cálculo de indicadores no survey
pns2019Gsurvey<- pns2019.1 %>% select("V0024","UPA_PNS","peso_moradores","C008","V0031","VDF004","G001P","G002P","G003P","G004P","G005P",
"G006P","G007P","G008P","G009P","G010P","G011P","G012P","G013P","G014P","G015P","G016P",
"Situação_Urbano_Rural","Sexo","Unidades_da_Federação", "GrandesRegioes",
"Capital","faixa_idade", "Raca","rend_per_capita")
summary(pns2019Gsurvey)
#Salvando csv para cálculo de indicadores no survey
diretorio_saida <- "<coloque aqui o diretório>"
write.csv(pns2019Gsurvey, file.path(path, "pns2019Gsurvey.csv"))
#survey design
desPNSG = svydesign(id=~UPA_PNS, strat=~V0024, weight=~peso_moradores, nest=TRUE, data=pns2019Gsurvey)
#subdesigns gerais
desPNSG2 = subset(desPNSG, C008>=2)
desPNSG_C2 = subset(desPNSG, C008>=2 & V0031==1)
desPNSG_RE = subset(desPNSG, C008>=2 & VDF004!=9)
desPNSG_R2 = subset(desPNSG, C008>=2 & !is.na(Raca))
#survey design - G007P
desPNSGG007P2 = subset(desPNSG, C008>=2 & !is.na(G007P))
desPNSGG007P_C2 = subset(desPNSG, C008>=2 & !is.na(G007P) & V0031==1)
desPNSGG007P_RE = subset(desPNSG, C008>=2 & !is.na(G007P) & VDF004!=9)
desPNSG007P_R2 = subset(desPNSG, C008>=2 & !is.na(G007P) & !is.na(Raca))
#survey design - G008P
desPNSGG008P2 = subset(desPNSG, C008>=2 & !is.na(G008P))
desPNSGG008P_C2 = subset(desPNSG, C008>=2 & !is.na(G008P) & V0031==1)
desPNSGG008P_RE = subset(desPNSG, C008>=2 & !is.na(G008P) & VDF004!=9)
desPNSG008P_R2 = subset(desPNSG, C008>=2 & !is.na(G008P) & !is.na(Raca))
#survey design - G009P
desPNSGG009P2 = subset(desPNSG, C008>=2 & !is.na(G009P))
desPNSGG009P_C2 = subset(desPNSG, C008>=2 & !is.na(G009P) & V0031==1)
desPNSGG009P_RE = subset(desPNSG, C008>=2 & !is.na(G009P) & VDF004!=9)
desPNSG009P_R2 = subset(desPNSG, C008>=2 & !is.na(G009P) & !is.na(Raca))
Essa tabela é responsável por unir os indicadores no formato do painel de indicadores
matrizIndicadores = data.frame()
ListaIndicadores = c(~G001P,~G002P,~G003P,~G004P,~G005P,~G006P,~G007P,~G008P,~G009P,~G010P,~G011P,~G012P,~G013P,~G014P,~G015P,~G016P)
ListaIndicadoresTexto = c("G001P","G002P","G003P","G004P","G005P","G006P","G007P","G008P","G009P","G010P","G011P","G012P","G013P","G014P","G015P","G016P")
ListaDominios = c(~Sexo,~Raca,~rend_per_capita,~faixa_idade,~Situação_Urbano_Rural,~Unidades_da_Federação,~GrandesRegioes,~Capital)
ListaDominiosTexto = c("Sexo","raça","rend_per_capita","fx_idade_def","urb_rur","uf","região","capital")
ListaTotais = c('Brasil','Capital')
Ano <- "2019"
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
for (dominio in ListaDominios){
#design especifico para capital que é subconjunto do dataframe total
if (ListaDominiosTexto[j]=="capital"){
if (ListaIndicadoresTexto[i]=="G007P"){
dataframe_indicador<-svyby(indicador , dominio , desPNSGG007P_C2 , svymean,vartype= c("ci","cv"))
}
else if (ListaIndicadoresTexto[i]=="G008P"){
dataframe_indicador<-svyby(indicador , dominio , desPNSGG008P_C2 , svymean,vartype= c("ci","cv"))
}
else if (ListaIndicadoresTexto[i]=="G009P"){
dataframe_indicador<-svyby(indicador , dominio , desPNSGG009P_C2 , svymean,vartype= c("ci","cv"))
}
else if (ListaIndicadoresTexto[i]=="G016P"){
next
}
else{
dataframe_indicador<-svyby(indicador , dominio , desPNSG_C2 , 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]=="G007P"){
dataframe_indicador<-svyby(indicador , dominio , desPNSG007P_R2 , svymean,vartype= c("ci","cv"))
}
else if (ListaIndicadoresTexto[i]=="G008P"){
dataframe_indicador<-svyby(indicador , dominio , desPNSG008P_R2 , svymean,vartype= c("ci","cv"))
}
else if (ListaIndicadoresTexto[i]=="G009P"){
dataframe_indicador<-svyby(indicador , dominio , desPNSG009P_R2 , svymean,vartype= c("ci","cv"))
}
else{
dataframe_indicador<-svyby(indicador , dominio , desPNSG_R2 , svymean,vartype= c("ci","cv"))
}
}
#Uso design do subconjunto para renda que exclui valores NULOS
else if (ListaDominiosTexto[j]=="rend_per_capita"){
if (ListaIndicadoresTexto[i]=="G007P"){
dataframe_indicador<-svyby(indicador , dominio , desPNSGG007P_RE , svymean,vartype= c("ci","cv"))
}
else if (ListaIndicadoresTexto[i]=="G008P"){
dataframe_indicador<-svyby(indicador , dominio , desPNSGG008P_RE , svymean,vartype= c("ci","cv"))
}
else if (ListaIndicadoresTexto[i]=="G009P"){
dataframe_indicador<-svyby(indicador , dominio , desPNSGG009P_RE , svymean,vartype= c("ci","cv"))
}
else{
dataframe_indicador<-svyby(indicador , dominio , desPNSG_RE , svymean,vartype= c("ci","cv"))
}
}
#design geral para o subconjunto maior que 2 anos
else {
if (ListaIndicadoresTexto[i]=="G007P"){
dataframe_indicador<-svyby(indicador , dominio , desPNSGG007P2 , svymean,vartype= c("ci","cv"))
}
else if (ListaIndicadoresTexto[i]=="G008P"){
dataframe_indicador<-svyby(indicador , dominio , desPNSGG008P2 , svymean,vartype= c("ci","cv"))
}
else if (ListaIndicadoresTexto[i]=="G009P"){
dataframe_indicador<-svyby(indicador , dominio , desPNSGG009P2 , svymean,vartype= c("ci","cv"))
}
else{
dataframe_indicador<-svyby(indicador , dominio , desPNSG2 , 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","Não","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
for(indicador in ListaIndicadores){
i <- i+1
for(total in ListaTotais){
dataframe_indicador <- data.frame()
dataframe_indicador_S <- data.frame()
if(total == 'Capital'){
if (ListaIndicadoresTexto[i] == "G007P"){
dataframe_indicador <- svymean(indicador,desPNSGG007P_C2)
}
else if (ListaIndicadoresTexto[i] == "G008P"){
dataframe_indicador <- svymean(indicador,desPNSGG008P_C2)
}
else if (ListaIndicadoresTexto[i] == "G009P"){
dataframe_indicador <- svymean(indicador,desPNSGG009P_C2)
}
else {
dataframe_indicador <- svymean(indicador,desPNSG_C2)
}
}
else{
if (ListaIndicadoresTexto[i] == "G007P"){
dataframe_indicador <- svymean(indicador,desPNSGG007P2)
}
else if (ListaIndicadoresTexto[i] == "G008P"){
dataframe_indicador <- svymean(indicador,desPNSGG008P2)
}
else if (ListaIndicadoresTexto[i] == "G009P"){
dataframe_indicador <- svymean(indicador,desPNSGG009P2)
}
else {
dataframe_indicador <- svymean(indicador,desPNSG2)
}
}
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 <- dataframe_indicador_S %>%
select('Sim','LowerS','UpperS','cvS')
dataframe_indicador_S$Indicador <- ListaIndicadoresTexto[i]
dataframe_indicador_S$abr_tipo <- "total"
dataframe_indicador_S$abr_nome <- total
dataframe_indicador_S$Ano <- Ano
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)
matrizIndicadores
diretorio_saida <- "<coloque aqui o diretório>"
write.table(matrizIndicadores,file=paste0(diretorio_saida,"Indicadores_2019G_R.csv"),sep = ";",dec = ",",row.names = FALSE)