A covid-19 é uma doença infecciosa aguda do trato respiratório causada pelo coronavirus SARS-CoV-2. É potencialmente grave, de elevado grau de transmissão e de distribuição global. Entretanto, nos dias de hoje, o nível de infecção está controlado em quase todos os países, devido a descoberta de vacinas eficases, em tempo recorde, no combate a essa doença.
O processo de transmissão dessa doença se dá de três formas:
Contato direto: ao tocar uma pessoa infectada ou superfícies contaminadas e levar as mãos ao rosto (boca, nariz ou olhos);
Gotículas: são liberadas ao tossir, espirrar ou falar e podem atingir quem está a menos de um metro de distância;
Aerossóis: partículas menores e mais leves que as gotículas que permanecem no ar por horas e podem alcancar também distâncias maiores que um metro. Mais frequentes em locais fechados e mal ventilados ou quando há exposição prolongada.
Figura 1: principais tipos de transmissão - Covid-19.
O tempo de incubação varia de 1 a 10 dias , com uma média de 3 a 4 dias. Os principais sintomas apresentados são febre ou calafrios, tosse, fadiga, anorexia, dispneia, mialgia e dor de cabeça. Outros sintomas como anosmia (perda de olfato) e ageusia (perda de paladar) também estão presentes.
O objetivo no presente relatório é analisar as informações sobre a covid-19, no Brasil, através das coletas da PNAD-contínua-2020. Um total de 15 variáveis foram escolhidas pelo autor.
Material
Os dados analisados foram coletados pela PNAD - contínua, no ano de 2020, no Brasil. Os dados originais possum 145 variáveis e 1.149.197 observações. Foram analizados os últimos três meses disponíveis: setembro, outubro e novembro. Por recomendação, foram selecionadas somente 15 variáveis para compor esse relatório. São elas: unidade de federação, semana do mês, mês da pesquisa, situação do domicílio, projeção da população, condição no domicílio, idade do morador respondente, sexo, na semana passada teve febre, na semana passada teve tosse, na semana passada teve dor de garganta, na semana passada teve dificuldade para respirar, na semana passada teve diarréia, por causa disso foi a algum estabelecimento de saúde, providência tomada para recuperar dos sintomas foi ficar em casa. As análises foram realizadas utilizando os softwares Rstudio e PowerBI.
Tratamento dos dados brutos
As bases de dados brutos estão disponíveis no sítio dados, selecionando microdados e depois dados. Então os arquivos PNAD_COVID_092020.zip, PNAD_COVID_102020.zip e PNAD_COVID_112020.zip foram salvos em uma pasta local. Após, os arquivos com a extensão csv foram extraídos. Finalmente, os dados brutos foram unidos, tratados e as variáveis de estudo já mencionadas foram então selecionadas. Todo esse tratamento foi feito utilizando a linguaguem de programação sql através do pacote sqldf disponível no CRAN.
Posteriormente, as variáveis selecionadas foram renomeadas e os níveis correspondentes de cada variável foram substituídos pelos respectivos textos correspondentes (por exemplo, o nível 1 foi substituído por Sim).
O pacote sqldf
Trata-se de um pacote em lingugem R, disponível no CRAN, que permite executar instruções em SQL na IDE R e Rstudio. Basicamente, esse pacote permite manipular dataframes de grandes volumes de informações (bigdata). O mesmo suporta banco de dados em SQLite (default), Java H2, PostgreSQL e MySQL.
Importando as bases de dados .csv para o ambiente Rstudio
Ressalta-se aqui que todos os pacotes utilizados estão com a linha de comando correspondente a instalção comentados, pois os mesmos já se encontram instalados em minha máquina.
Primeiramente, a linah de códigos R abaixo permite alinhar e justificar esse mesmo código de forma organizada.
Para importar as bases de dados .csv para o Rstudio, foi utilizado o pacote readr. Abaixo, segue o scripty em lingugaem R utilizado:
Rows: 381438 Columns: 148
── Column specification ────────────────────────────────────────────────────────
Delimiter: ","
chr (32): V1008, A001, A001A, A001B1, A001B2, A002, C0051, C007, C007C, C00...
dbl (112): Ano, UF, CAPITAL, RM_RIDE, V1012, V1013, V1016, Estrato, UPA, V10...
lgl (4): B006, C0052, C0053, C0103
ℹ Use `spec()` to retrieve the full column specification for this data.
ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
Manipulando as bases de dados em SQL
Uma vez que as bases de dados já estão importadas e prontas para serem manipuladas no ambiente Rstudio, foi utilizado o pacote sqldf para unir as bases e selecionar as 15 variáveis escolhidas. É necessário ressaltar ainda que as instruções SQL: SELECT, FROM E UNION ALL, correspondem, respectivamente, a slecionar as variáveis desejadas (15), da respectiva base de dados .csv e, empilhar essas bases unindo-as, considerando as observações repetidas.
# install.packages('sqldf')library(sqldf)
Carregando pacotes exigidos: gsubfn
Carregando pacotes exigidos: proto
Carregando pacotes exigidos: RSQLite
BASE_FINAL <-"SELECT UF, V1012 AS 'Semana do mês' , V1013 AS 'Mês da pesquisa', V1022 AS 'Situação do domicílio', V1030 AS 'Projeção da população', A001A AS 'Condição no domicílio', A002 AS 'Idade do morador', A003 AS 'Sexo', B0011 AS 'Na semana passada teve febre?', B0012 AS 'Na semana passada teve tosse?', B0013 AS 'Na semana passada teve dor de garganta?', B0014 AS 'Na semana passada teve dificuldade para respirar?', B00113 AS 'Na semana passada teve diarréia?', B002 AS 'Por causa disso, foi a algum estabelecimento de saúde?', B0031 AS 'Providência tomada para recuperar dos sintomas foi ficar em casa'FROMPNAD_COVID_092020UNION ALLSELECT UF, V1012 AS 'Semana do mês' , V1013 AS 'Mês da pesquisa', V1022 AS 'Situação do domicílio', V1030 AS 'Projeção da população', A001A AS 'Condição no domicílio', A002 AS 'Idade do morador', A003 AS 'Sexo', B0011 AS 'Na semana passada teve febre?', B0012 AS 'Na semana passada teve tosse?', B0013 AS 'Na semana passada teve dor de garganta?', B0014 AS 'Na semana passada teve dificuldade para respirar?', B00113 AS 'Na semana passada teve diarréia?', B002 AS 'Por causa disso, foi a algum estabelecimento de saúde?', B0031 AS 'Providência tomada para recuperar dos sintomas foi ficar em casa'FROMPNAD_COVID_102020UNION ALLSELECT UF, V1012 AS 'Semana do mês' , V1013 AS 'Mês da pesquisa', V1022 AS 'Situação do domicílio', V1030 AS 'Projeção da população', A001A AS 'Condição no domicílio', A002 AS 'Idade do morador', A003 AS 'Sexo', B0011 AS 'Na semana passada teve febre?', B0012 AS 'Na semana passada teve tosse?', B0013 AS 'Na semana passada teve dor de garganta?', B0014 AS 'Na semana passada teve dificuldade para respirar?', B00113 AS 'Na semana passada teve diarréia?', B002 AS 'Por causa disso, foi a algum estabelecimento de saúde?', B0031 AS 'Providência tomada para recuperar dos sintomas foi ficar em casa'FROMPNAD_COVID_112020EXPORT"names(sqldf(BASE_FINAL, 10))
[1] "UF"
[2] "Semana do mês"
[3] "Mês da pesquisa"
[4] "Situação do domicílio"
[5] "Projeção da população"
[6] "Condição no domicílio"
[7] "Idade do morador"
[8] "Sexo"
[9] "Na semana passada teve febre?"
[10] "Na semana passada teve tosse?"
[11] "Na semana passada teve dor de garganta?"
[12] "Na semana passada teve dificuldade para respirar?"
[13] "Na semana passada teve diarréia?"
[14] "Por causa disso, foi a algum estabelecimento de saúde?"
[15] "Providência tomada para recuperar dos sintomas foi ficar em casa"
dim(sqldf(BASE_FINAL))
[1] 1149197 15
É necessário exportar a bse de dados para a pasta que contém os arquivos na sua máquina.
write.csv(sqldf(BASE_FINAL), "base.csv")
Importando a base dados .csv salva para o ambiente R.
Base_csv <-read_csv("base.csv", col_types =cols(UF =col_character(),`Semana do mês`=col_character(), `Situação do domicílio`=col_character(),Sexo =col_character(), `Na semana passada teve febre?`=col_character(),`Na semana passada teve tosse?`=col_character(),`Na semana passada teve dor de garganta?`=col_character(),`Na semana passada teve dificuldade para respirar?`=col_character(),`Na semana passada teve diarréia?`=col_character(),`Por causa disso, foi a algum estabelecimento de saúde?`=col_character(),`Providência tomada para recuperar dos sintomas foi ficar em casa`=col_character()))
New names:
• `` -> `...1`
recodificando os níveis dos fatores das colunas de interesse
# | tidy: true | tidy.opts:# list(width.cutoff = 30) # quebra# linha a cada 30 caracteresbase <-"SELECT CASE WHEN `UF` = '11' THEN 'Rondônia' WHEN `UF` = '12' THEN 'Acre' WHEN `UF` = '13' THEN 'Amazonas' WHEN `UF` = '14' THEN 'Roraima' WHEN `UF` = '15' THEN 'Pará' WHEN `UF` = '16' THEN 'Amapá' WHEN `UF` = '17' THEN 'Tocantins' WHEN `UF` = '21' THEN 'Maranhão' WHEN `UF` = '22' THEN 'Piauí' WHEN `UF` = '23' THEN 'Ceará' WHEN `UF` = '24' THEN 'Rio Grande do Norte' WHEN `UF` = '25' THEN 'Paraíba' WHEN `UF` = '26' THEN 'Pernambuco' WHEN `UF` = '27' THEN 'Alagoas' WHEN `UF` = '28' THEN 'Sergipe' WHEN `UF` = '29' THEN 'Bahia' WHEN `UF` = '31' THEN 'Minas Gerais' WHEN `UF` = '32' THEN 'Espírito Santo' WHEN `UF` = '33' THEN 'Rio de Janeiro' WHEN `UF` = '35' THEN 'São Paulo' WHEN `UF` = '41' THEN 'Paraná' WHEN `UF` = '42' THEN 'Santa Catarina' WHEN `UF` = '43' THEN 'Rio Grande do Sul' WHEN `UF` = '50' THEN 'Mato Grosso do Sul' WHEN `UF` = '51' THEN 'Mato Grosso' WHEN `UF` = '52' THEN 'Goiás' WHEN `UF` = '53' THEN 'Distrito Federal' ELSE `UF` END AS `Unidade de Federação`, CASE WHEN `Semana do mês` = '1' THEN 'Semana 1' WHEN `Semana do mês` = '2' THEN 'Semana 2' WHEN `Semana do mês` = '3' THEN 'Semana 3' WHEN `Semana do mês` = '4' THEN 'Semana 4' ELSE `Semana do mês` END AS `Semana do mês`, CASE WHEN `Mês da pesquisa` = '09' THEN 'Setembro' WHEN `Mês da pesquisa` = '10.0' THEN 'Outubro' WHEN `Mês da pesquisa` = '11.0' THEN 'Novembro' ELSE `Mês da pesquisa` END AS `Mês da pesquisa`, CASE WHEN `Situação do domicílio` = '1' THEN 'Urbana' WHEN `Situação do domicílio` = '2' THEN 'Rural' ELSE `Situação do domicílio` END AS `Situação do domicílio`, `Projeção da população`, CASE WHEN `Condição no domicílio` = '01' THEN 'Pessoa responsável pelo domicílio' WHEN `Condição no domicílio` = '02' THEN 'Cônjuge ou companheiro(a) de sexo diferente' WHEN `Condição no domicílio` = '03' THEN 'Cônjuge ou companheiro(a) de mesmo sexo' WHEN `Condição no domicílio` = '04' THEN 'Filho(a) do responsável e do cônjuge' WHEN `Condição no domicílio` = '05' THEN 'Filho(a) somente do responsável' WHEN `Condição no domicílio` = '06' THEN 'Filho(a) somente do cônjuge' WHEN `Condição no domicílio` = '07' THEN 'Genro ou nora' WHEN `Condição no domicílio` = '08' THEN 'Pai, mãe, padastro ou madastra' WHEN `Condição no domicílio` = '09' THEN 'Sogro(a)' WHEN `Condição no domicílio` = '10' THEN 'Neto(a)' WHEN `Condição no domicílio` = '11' THEN 'Bisneto(a)' WHEN `Condição no domicílio` = '12' THEN 'Irmão ou irmã' WHEN `Condição no domicílio` = '13' THEN 'Avô ou avó' WHEN `Condição no domicílio` = '14' THEN 'Outro parente' WHEN `Condição no domicílio` = '15' THEN 'Agregado(a) - Não parente que nãocompartilha despesas' WHEN `Condição no domicílio` = '16' THEN 'Convivente - Não parente que compartilha despesas' WHEN `Condição no domicílio` = '17' THEN 'Pensionista' WHEN `Condição no domicílio` = '18' THEN 'Empregado(a) doméstico(a)' WHEN `Condição no domicílio` = '19' THEN 'Parente do empregado(a) doméstico(a)' ELSE `Condição no domicílio` END AS `Condição no domicílio`, `Idade do morador`, CASE WHEN `Sexo` = '1' THEN 'Homem' WHEN `Sexo` = '2' THEN 'Mulher' ELSE `Sexo` END AS `Sexo`, CASE WHEN `Na semana passada teve febre?` = '1' THEN 'Sim' WHEN `Na semana passada teve febre?` = '2' THEN 'Não' WHEN `Na semana passada teve febre?` = '3' THEN 'Não sabe' WHEN `Na semana passada teve febre?` = '9' THEN 'Ignorado' ELSE `Na semana passada teve febre?` END AS `Na semana passada teve febre?`, CASE WHEN `Na semana passada teve tosse?` = '1' THEN 'Sim' WHEN `Na semana passada teve tosse?` = '2' THEN 'Não' WHEN `Na semana passada teve tosse?` = '3' THEN 'Não sabe' WHEN `Na semana passada teve tosse?` = '9' THEN 'Ignorado' ELSE `Na semana passada teve tosse?` END AS `Na semana passada teve tosse?`, CASE WHEN `Na semana passada teve dor de garganta?` = '1' THEN 'Sim' WHEN `Na semana passada teve dor de garganta?` = '2' THEN 'Não' WHEN `Na semana passada teve dor de garganta?` = '3' THEN 'Não sabe' WHEN `Na semana passada teve dor de garganta?` = '9' THEN 'Ignorado' ELSE `Na semana passada teve dor de garganta?` END AS `Na semana passada teve dor de garganta?`, CASE WHEN `Na semana passada teve dificuldade para respirar?` = '1' THEN 'Sim' WHEN `Na semana passada teve dificuldade para respirar?` = '2' THEN 'Não' WHEN `Na semana passada teve dificuldade para respirar?` = '3' THEN 'Não sabe' WHEN `Na semana passada teve dificuldade para respirar?` = '9' THEN 'Ignorado' ELSE `Na semana passada teve dificuldade para respirar?` END AS `Na semana passada teve dificuldade para respirar?`, CASE WHEN `Na semana passada teve diarréia?` = '1' THEN 'Sim' WHEN `Na semana passada teve diarréia?` = '2' THEN 'Não' WHEN `Na semana passada teve diarréia?` = '3' THEN 'Não sabe' WHEN `Na semana passada teve diarréia?` = '9' THEN 'Ignorado' ELSE `Na semana passada teve diarréia?` END AS `Na semana passada teve diarréia?`, CASE WHEN `Por causa disso, foi a algum estabelecimento de saúde?` = '1' THEN 'Sim' WHEN `Por causa disso, foi a algum estabelecimento de saúde?` = '2' THEN 'Não' WHEN `Por causa disso, foi a algum estabelecimento de saúde?` = '9' THEN 'Ignorado' WHEN `Por causa disso, foi a algum estabelecimento de saúde?` IS NULL THEN 'Não aplicável' ELSE `Por causa disso, foi a algum estabelecimento de saúde?` END AS `Por causa disso, foi a algum estabelecimento de saúde?`, CASE WHEN `Providência tomada para recuperar dos sintomas foi ficar em casa` = '1' THEN 'Sim' WHEN `Providência tomada para recuperar dos sintomas foi ficar em casa` = '2' THEN 'Não' WHEN `Providência tomada para recuperar dos sintomas foi ficar em casa` = '9' THEN 'Ignorado' WHEN `Providência tomada para recuperar dos sintomas foi ficar em casa` IS NULL THEN 'Não aplicável' ELSE `Providência tomada para recuperar dos sintomas foi ficar em casa` END AS `Providência tomada para recuperar dos sintomas foi ficar em casa`FROM Base_csv"head(sqldf(base, 10))
Unidade de Federação Semana do mês Mês da pesquisa Situação do domicílio
1 Rondônia Semana 4 Setembro Urbana
2 Rondônia Semana 4 Setembro Urbana
3 Rondônia Semana 4 Setembro Urbana
4 Rondônia Semana 4 Setembro Urbana
5 Rondônia Semana 1 Setembro Urbana
6 Rondônia Semana 2 Setembro Urbana
Projeção da população Condição no domicílio
1 152677 Pessoa responsável pelo domicílio
2 150642 Cônjuge ou companheiro(a) de sexo diferente
3 145237 Filho(a) do responsável e do cônjuge
4 145237 Filho(a) do responsável e do cônjuge
5 91889 Pessoa responsável pelo domicílio
6 91889 Pessoa responsável pelo domicílio
Idade do morador Sexo Na semana passada teve febre?
1 036 Homem Não
2 030 Mulher Não
3 013 Homem Não
4 011 Homem Não
5 057 Mulher Não
6 058 Mulher Não
Na semana passada teve tosse? Na semana passada teve dor de garganta?
1 Não Não
2 Não Não
3 Não Não
4 Não Não
5 Não Não
6 Não Não
Na semana passada teve dificuldade para respirar?
1 Não
2 Não
3 Não
4 Não
5 Não
6 Não
Na semana passada teve diarréia?
1 Não
2 Não
3 Não
4 Não
5 Não
6 Não
Por causa disso, foi a algum estabelecimento de saúde?
1 Não aplicável
2 Não aplicável
3 Não aplicável
4 Não aplicável
5 Não aplicável
6 Não aplicável
Providência tomada para recuperar dos sintomas foi ficar em casa
1 Não aplicável
2 Não aplicável
3 Não aplicável
4 Não aplicável
5 Não aplicável
6 Não aplicável
dim(sqldf(base))
[1] 1149197 15
Nesse momento, exportou-se essa base de dados SQL para uma pasta na nossa máquina no formato .csv.
write.csv(sqldf(base), "Base_manipulada.csv")
Análises
Todas os resultados aqui mostrados foram obtidos utilizando o PowerBI. Os painéis aqui apresentados apresentam uma interatividade com as variáveis Mês da pesquisa, Sexo, Semana do mês, Situação do domicílio e Condição no domicílio.
Menu de navegação
Um menu de navegação principal foi disponibilizado. O intuito é permitir ao usuário interessado maior facilidade na navegação entre as páginas. Para tal, basta clicar nos botões de navegação: Análise descritiva dos sintomas apresentados, Atendimento médico e Procedimento foi aguardar em casa. A Figura 2 mostra esse menu.
Figura 2: menu principal de navegação entre as abas.
Descrição geral dos sintomas apresentados
Nessa etapa, buscou-se apresentar, de forma bem direta, o total de respondentes de cada um dos sintomas avaliados por unidade de federação. A Figura 3 ilustra essa descrição.
Figura 3: descrição geral do total de respondentes por tipo de sintoma.
Especificamente, para cada um dos sintomas: diarréia, dificuldade para respirar, dor de garganta, febre e tosse, as opções de respostas são as mesmas - Ignorado, Não (não apresentou o sintoma), Não sabe e Sim. Exemplificando, para o sintoma diarréia, tivemos para o estado do Acre 52 indivíduos que ignoraram a pergunta, 18.716 que não apresentaram o sintoma, 6 que não sabiam se tinham apresentado o mesmo sintoma e, finalmente, 60 respondentes que apresentaram o sintoma, totalizando 18.834 respondentes.
O interessante, nos filtros apresentados na coluna à esquerda desse painel, é que, se optarmos por avaliar o total de homens respondentes, na quarta semana do mês de outubro, com domícilio na zona rural e que seja a pessoa responsável pelo domicílio, temos, para o estado do Acre, 57 respondentes que não apresentaram o sintoma. A Figura 4 ilustra esse fato.
Figura 4: exemplo para o estado do Acre.
Dessa forma, é permitido ao usuário interessado finteragir com os resultados apresentados de acordo com seu interesse.
Total de respondentes com sintomas que procuraram atendimento médico
Do mesmo modo, buscou-se descrever, dentre aqueles que apresentaram os sintomas aqui avaliados, se os mesmo procuraram alguma forma de atendimento médico.
O sintoma diarréia
A Figura 5 apresenta um panorama geral construído no painel PowerBi.
Figura 5: panorama geral dos indivíduos que apresentaram algum sintoma e procuraram atendimento médico.
Dentre aqueles que afirmaram apresentar o sintoma diarréia, para o estado de Minas Gerais, 179 respondentes procuraram alguma forma de atendimento médico, enquanto que 261 respondentes não procuraram. A Figura 6 ilustra essa fato.
Figura 6: exemplificando o sintoma diarréia para o estado de Minas Gerais
As Figuras 7, 8, 9 e 10 ilustram o comportamento para cada um dos outros sintomas restantes.
Figura 7: comportamento distribucional do sintoma dificuldade para respirar.
Figura 8: comportamento distribucional do sintoma dor de garganta.
Figura 9: comportamento distribucional do sintoma febre.
Figura 10: comportamento distribucional do sintoma tosse.
Total de respondentes com sintomas que preferiram aguardar em casa
Do mesmo modo, apresentou-se um outro painél BI que mostra, dentre aqueles que apresentaram algum tipo de sintoma, o total que preferiu aguardar em casa a procurar atendimento médico. Acredita-se que a interpretação dos painéis já está claro e com uso de forma bem intuitiva, permitindo então apresentar os resultados de forma direta, sem interpretá-los.
A Figura 11 apresenta esse painel em um contexto geral.
Figura 11: comportamento distribucional, por estado, do total de respondentes que preferiu aguardar em casa a procurar atendimento médico.
A Figura 11 apresenta esse comportamento para o sintoma tosse.
Ressalta-se que, uma vez obtida a base de dados e com essa manipulada de forma correta, a imaginação para construir insights interativos com o mesmo é livre. De modo que, outros tipos de análises com a base de dados aqui obtida podem e devem ser realizadas. Por comodidade e por achar ser suficiente, cessaremos aqui nossas análises.