Modulo 5 em PDF
Modulo 5 em PDF
Modulo 5 em PDF
EQUIPE DE PRODUÇÃO
2
Análise de dados para a vigilância
em saúde – Curso Básico
Curso
3
Análise de dados para a vigilância
em saúde – Curso Básico
A532 Análises básicas de dados para vigilância em saúde – Parte II/ Denis de Oliveira Ro-
drigues, Kamila de Oliveira Belo, Oswaldo Gonçalves Cruz, Marcelo Eduardo Bor-
ges . – Santa Catarina ; São Paulo ; Rio de Janeiro : UFSC ; ITPS ; Abrasco; 2022.
72p. (Análise de dados para a vigilância em saúde – Curso Básico; Módulo 5).
Publicação Online
10.52582/curso-analise-dados-vigilancia-modulo4-p2
4
Análise de dados para a vigilância
em saúde – Curso Básico
Sumário
2. Indicadores de morbidade......................................................................................................................09
2.1 Incidência...................................................................................................................................................10
2.2 Prevalência................................................................................................................................................17
3. Indicadores de Mortalidade...................................................................................................................27
3.1 Taxa bruta de mortalidade ou taxa geral de mortalidade...............................................32
3.2 Taxas específicas de mortalidade por idade e sexo............................................................36
3.3 Mortalidade proporcional por grupo de causas....................................................................40
3.4 Taxa de mortalidade infantil............................................................................................................42
3.5 Taxa de mortalidade materna........................................................................................................44
5. Medidas de associação..............................................................................................................................57
5.1 Risco Relativo - RR..................................................................................................................................57
5.2 Odds ratio - OR........................................................................................................................................65
5
Análise de dados para a vigilância
em saúde – Curso Básico
Nesse momento do curso você já conhece as ferramentas básicas para uso do software R
e RStudio e as principais métricas para análise exploratória de dados fundamentais tam-
bém para o planejamento, monitoramento e avaliação das ações de vigilância em saúde.
Neste Módulo 5 aprofundaremos estas análises aprendendo a calcular alguns dos princi-
pais indicadores de saúde, apoiando o serviço de vigilância a realizar suas ações de manei-
ra oportuna, com rapidez e segurança.
6
Análise de dados para a vigilância
em saúde – Curso Básico
7
Análise de dados para a vigilância
em saúde – Curso Básico
8
Análise de dados para a vigilância
em saúde – Curso Básico
Neste módulo utilizaremos o software R para construir scripts com cálculo dos indicado-
res de saúde epidemiológicos que registram a frequência da morbidade e mortalidade.
Estes são os mais utilizados no dia a dia para realização da análise de situação de saúde.
Acompanhe o script abaixo e não se preocupe com os pacotes que você ainda não conhe-
ce, eles serão explicados de forma detalhada no momento de aplicação neste módulo,
replique-os em seu RStudio :
if(!require(tidyverse)) install.packages("tidyverse");library(tidyverse)
if(!require(foreign)) install.packages("foreign");library(foreign)
if(!require(lubridate)) install.packages("lubridate");library(lubridate)
if(!require(epitools)) install.packages("epitools");library(epitools)
if(!require(summarytools)) install.packages("summarytools");library(summarytools)
if(!require(gtsummary)) install.packages("gtsummary");library(gtsummary)
2. Indicadores de morbidade
Atenção
Lembre-se que um bom indicador é aquele que:
possui uma fonte de dados confiável,
possui um parâmetro para análise comparativa, e
suas limitações ou vieses são conhecidos.
9
Análise de dados para a vigilância
em saúde – Curso Básico
2.1 Incidência
Ao realizar este cálculo, é importante especificar o período de tempo (ano ou mês, por
exemplo) analisado. Dessa forma, tanto os casos novos quanto as pessoas que já estão
sob risco devem se referir ao mesmo período de tempo estudado. Além disso, o nume-
rador do cálculo da incidência (casos novos) deve fazer parte da população que estaria
exposta ao risco (denominador).
Atenção
A expressão matemática para o cálculo da incidência usualmente en-
volve a multiplicação por 100 mil, ou seja, expressamos a incidência
comparando-a a 100.000 (100 mil) habitantes. A escolha dessa uni-
dade de referência é arbitrária, podendo ser modificada por valores
como 1.000 (1 mil) ou 10.000 (10 mil). Entretanto, essa transformação
é utilizada para comparação entre municípios pequenos e grandes re-
giões que foram padronizados para a mesma base decimal!
10
Análise de dados para a vigilância
em saúde – Curso Básico
Observe o script abaixo. Nele iremos calcular a incidência das hepatites virais por etiologia
desconhecida (CID10 = B19) por município, apenas durante o ano de 2012, no Estado de
Rosas. Para isto, acompanhe o passo a passo:
11
Análise de dados para a vigilância
em saúde – Curso Básico
# criando objeto do tipo dataframe (tabela) {`Dados`} com o banco de dados {`NINDINET.dbf`}
filter(
ID_AGRAVO == "B19",
group_by(ID_MN_RESI) |>
summarise(N_CASOS_NOVOS = n())
12
Análise de dados para a vigilância
em saúde – Curso Básico
#> # A tibble: 14 × 2
#> ID_MN_RESI N_CASOS_NOVOS
#> <int> <int>
#> 1 610045 2
#> 2 610170 7
#> 3 610213 72
#> 4 610260 1
#> 5 610270 1
#> 6 610285 1
#> 7 610320 1
#> 8 610330 3
#> 9 610350 5
#> 10 610414 1
#> 11 610490 3
#> 12 610510 4
#> 13 610520 1
#> 14 610580 1
Observe o output: como resultado, você verá uma tabela com duas colunas. A pri-
meira coluna ( ID_MN_RESI ) indica o código de cada município e a segunda coluna
( N_CASOS_NOVOS ) indica o número de casos em cada município.
13
Análise de dados para a vigilância
em saúde – Curso Básico
#> # A tibble: 14 × 2
#> cod_mun POPULACAO
#> <dbl> <dbl>
#> 1 610045 15009
#> 2 610170 69189
#> 3 610213 201452
#> 4 610260 30205
#> 5 610270 19688
#> 6 610285 20448
#> 7 610320 6713
#> 8 610330 17559
#> 9 610350 10018
#> 10 610414 4164
#> 11 610490 79524
#> 12 610510 32042
#> 13 610520 43143
#> 14 610580 3434
Observe que na primeira coluna desta tabela ( cod_mun ), você verá novamente o código
de cada município. Já na segunda coluna ( POPULACAO ) temos os valores referentes ao nú-
mero de habitantes em cada município de Rosas.
Veja abaixo como deve ser feito o script e replique no seu RStudio :
# Criando uma nova coluna com a incidência de casos por 100000 habitantes com
# a função mutate()
#> # A tibble: 14 × 4
#> ID_MN_RESI N_CASOS_NOVOS POPULACAO INCIDENCIA
#> <dbl> <int> <dbl> <dbl>
#> 1 610045 2 15009 13.3
#> 2 610170 7 69189 10.1
#> 3 610213 72 201452 35.7
#> 4 610260 1 30205 3.31
#> 5 610270 1 19688 5.08
#> 6 610285 1 20448 4.89
#> 7 610320 1 6713 14.9
#> 8 610330 3 17559 17.1
#> 9 610350 5 10018 49.9
#> 10 610414 1 4164 24.0
#> 11 610490 3 79524 3.77
#> 12 610510 4 32042 12.5
#> 13 610520 1 43143 2.32
#> 14 610580 1 3434 29.1
15
Análise de dados para a vigilância
em saúde – Curso Básico
16
Análise de dados para a vigilância
em saúde – Curso Básico
2.2 Prevalência
Atenção
A expressão matemática para o cálculo da prevalência usualmente en-
volve a multiplicação por 100 mil, ou seja, expressamos a prevalência
comparando por 100.000 (100 mil) habitantes. A escolha dessa uni-
dade de referência é arbitrária, podendo ser modificada por valores
como 1.000 (1 mil) ou 10.000 (10 mil). Entretanto, essa transformação
é utilizada para comparação entre municípios pequenos e grandes re-
giões que foram padronizados para a mesma base decimal!!
Agora vamos praticar o cálculo deste indicador utilizando os dados referentes à preva-
lência de hanseníase no Estado do Acre durante o ano de 2021. Este banco de dados se
encontra no menu lateral “Arquivos” no módulo!
17
Análise de dados para a vigilância
em saúde – Curso Básico
A prevalência de hanseníase estima a magnitude da endemia no Acre. Ela deve ser estu-
dada com base na totalidade de casos em tratamento no momento em que realizamos a
sua avaliação. Uma alta prevalência (valores acima de 5 casos por 10 mil habitantes) pode
indicar um cenário de baixo desenvolvimento socioeconômico e falta de ações efetivas
do município para o controle da doença. Por outro lado, a baixa prevalência (valores me-
nores que 1 caso por 10 mil habitantes) pode indicar que a hanseníase não deve conside-
rada um problema de saúde pública.
Como vamos avaliar o ano de 2021, vamos selecionar um recorte de dois anos anteriores
(2019 e 2020) e, assim, incluir os casos em tratamento que podem ter iniciado o esquema
terapêutico nesses anos, mas se mantêm em andamento no ano de avaliação. Dessa
forma, vamos filtrar os casos abertos diagnosticados entre 2019 e 2021. Acompanhe os
passos:
1. Primeiro, vamos criar uma nova variável, extraindo o ano da data de diagnóstico
utilizando a função year() do pacote lubridate dentro da função mutate().
3. Por fim, vamos contar os casos confirmados de hanseníase com a função count().
Mas não vamos indicar nenhuma variável dentro da função, pois queremos a con-
tagem total do filtro realizado antes.
18
Análise de dados para a vigilância
em saúde – Curso Básico
base_hans |>
# Criando uma nova coluna com o ano de diagnóstico com a função mutate() e year()
mutate(ano_diag = year(DT_DIAG)) |>
#> n
#> 1 171
Visualize que obtivemos um output apenas com um único valor, indicando o total de ca-
sos em branco neste conjunto de dados ( n ), ou seja, temos 171 casos que ainda estão em
tratamento no Estado do Acre em 2021.
19
Análise de dados para a vigilância
em saúde – Curso Básico
Perceba que para a construção do código executado no script acima incluímos o argu-
mento chamado col_types . Ele foi necessário para garantir que a primeira coluna do
arquivo, chamada “Codigo”, mantenha-se no formato original do tipo character.
Agora vamos visualizar como ficou a tabela que criamos para armazenar a população
por ano da estimativa segundo município do Acre. Digite o script abaixo e replique em
seu RStudio :
#> Rows: 22
#> Columns: 15
#> $ Codigo <chr> "120001", "120005", "120010", "120013", "120017", "120020", …
#> $ Municipio <chr> "Acrelândia", "Assis Brasil", "Brasiléia", "Bujari", "Capixa…
#> $ `2009` <dbl> 12769, 6180, 21758, 8633, 8812, 80978, 15373, 33678, 6653, 1…
#> $ `2010` <dbl> 13081, 6335, 22325, 8838, 9179, 81907, 15754, 33816, 6862, 1…
#> $ `2011` <dbl> 13327, 6457, 22771, 8999, 9468, 82638, 16054, 33925, 7026, 1…
#> $ `2012` <dbl> 13579, 6583, 23231, 9165, 9764, 83389, 16363, 34037, 7195, 1…
#> $ `2013` <dbl> 13821, 6703, 23670, 9324, 10048, 84109, 16658, 34144, 7357, …
#> $ `2014` <dbl> 14069, 6826, 24120, 9486, 10339, 84845, 16960, 34254, 7523, …
#> $ `2015` <dbl> 14318, 6951, 24574, 9650, 10632, 85587, 17265, 34364, 7690, …
#> $ `2016` <dbl> 14551, 7067, 24996, 9803, 10905, 86279, 17550, 34467, 7845, …
#> $ `2017` <dbl> 14781, 7181, 25414, 9954, 11175, 86963, 17830, 34569, 7999, …
#> $ `2018` <dbl> 15020, 7300, 25848, 10111, 11456, 87673, 18122, 34675, 8159,…
#> $ `2019` <dbl> 15256, 7417, 26278, 10266, 11733, 88376, 18411, 34780, 8317,…
#> $ `2020` <dbl> 15490, 7534, 26702, 10420, 12008, 89072, 18696, 34884, 8473,…
#> $ `2021` <dbl> 15721, 7649, 27123, 10572, 12280, 89760, 18979, 34986, 8628,…
Nesta tabela, você verá na primeira linha o código do município, na segunda linha o nome
do município, e a partir da terceira linha as estimativas populacionais para cada um dos
municípios por ano entre 2009 e 2021.
5. Como vamos precisar apenas do ano de 2021, do estado todo, vamos utilizar a fun-
ção summarise() para resumir e somar toda a população dos municípios usando a
função sum(). Perceba que nas colunas da tabela { pop_ac } os anos da população
estimada estão organizados em colunas. Para somar somente o ano de 2021, va-
mos nos referenciar à coluna utilizando crases (assim: `2021`). Isso é necessário
para que o R possa entender que estamos nos referindo a uma coluna de um da-
taframe e não um valor numérico (o título da coluna é 2021). Abaixo vamos criar a
coluna com a população total de 2021. Replique o script abaixo em seu RStudio :
20
Análise de dados para a vigilância
em saúde – Curso Básico
pop_ac |>
#> # A tibble: 1 × 1
#> pop_total_ac_2021
#> <dbl>
#> 1 906876
Você deve observar que a população do Acre, portanto, é de 906.876 habitantes em 2021.
6. Por fim, calcularemos a prevalência de hanseníase no Acre em 2021 por 10 mil habitan-
tes. Para isto, iremos substituir os valores na expressão matemática a seguir, veja:
171
Prevalência= 906876 ×10.000
Observe como fazemos agora no R, escreva conforme script abaixo a operação matemá-
tica no seu RStudio.
# Divisão do número de casos pela população do Acre, seguida da multiplicação com 10000
(171 / 906876) * 10000
O resultado desta operação é o valor de 1.885594. Desta forma, a prevalência dos casos
em tratamento no Estado do Acre em 2021 é de 1,89 pessoas a cada 10 mil habitantes.
7. Agora, vamos calcular este indicador para todos os municípios do estado. Para tal,
vamos repetir o comando utilizado anteriormente, mas indicando dentro da função
count() o município de residência atual ( MUNIRESAT ). Para fins de reprodutibilida-
de, iremos salvar o resultado da contagem por municípios em um novo objeto, que
chamaremos de { casos_hans_ac_21 }. Veja o script abaixo e repita em seu RStudio:
21
Análise de dados para a vigilância
em saúde – Curso Básico
casos_hans_ac_21
#> MUNIRESAT n
#> 1 120001 2
#> 2 120005 3
#> 3 120010 8
#> 4 120013 3
#> 5 120017 3
#> 6 120020 12
#> 7 120025 9
#> 8 120030 6
#> 9 120032 1
#> 10 120033 2
#> 11 120035 1
#> 12 120038 3
#> 13 120039 5
#> 14 120040 70
#> 15 120042 2
#> 16 120043 1
#> 17 120045 6
#> 18 120050 7
#> 19 120060 11
#> 20 120070 10
#> 21 120080 5
#> 22 <NA> 1
22
Análise de dados para a vigilância
em saúde – Curso Básico
Para seguir nesta etapa precisamos da população de cada município para o cálculo da
prevalência. Então, seguiremos os passos abaixo:
# Juntando a tabela casos_hans_ac_21 com pop_ac, pelas colunas com os códigos de município de cada uma
left_join(pop_ac, by = c("MUNIRESAT" = "Codigo"))
prev_casos_ac
23
Análise de dados para a vigilância
em saúde – Curso Básico
Perceba que a tabela resultante irá conter, além do código do município de residência
atual e o número de casos por município, uma nova coluna indicando o nome do muni-
cípio, e diversas colunas indicando a estimativa do tamanho populacional destes municí-
pios para diferentes anos.
4. Iremos selecionar somente as variáveis que nos importam nesta tabela ( MUNIRESAT,
Municipio, prevalencia_2021 ). Acompanhe o script abaixo e replique-o em seu
RStudio :
prev_casos_ac |>
25
Análise de dados para a vigilância
em saúde – Curso Básico
Observe que a tabela resultante irá apresentar, além das informações com o código e
nome do município, os valores de prevalência para cada um deles no ano de 2021. Ob-
serve no output acima que a prevalência da hanseníase no Estado do Acre varia de 0,5 por
10 mil habitantes no município de Marechal Thaumaturgo até 5 por 10 mil habitantes no
município de Xapuri.
Agora, vamos avançar um pouco mais e aprender a calcular com o software R alguns indi-
cadores de mortalidade!
26
Análise de dados para a vigilância
em saúde – Curso Básico
3. Indicadores de Mortalidade
Desta forma, existem vários indicadores de mortalidade que integram as análises de saú-
de. Nesta subseção vamos revisar alguns deles: taxa bruta de mortalidade, taxas es-
pecíficas de mortalidade por idade e sexo, mortalidade proporcional por grupo de
causas, taxa de mortalidade infantil e taxa de mortalidade materna. Todos serão
calculados utilizando os dados de óbitos entre 2015 e 2020 do Estado do Acre.
27
Análise de dados para a vigilância
em saúde – Curso Básico
Atenção
Fique atento ao caminho escolhido para armazenar os bancos de da-
dos em seu computador. Caso tenha colocado-as em outro diretório
ou pasta, escreva o caminho deste arquivo para que o R possa impor-
tá-lo para sua análise.
28
Análise de dados para a vigilância
em saúde – Curso Básico
Acompanhe a tabela abaixo que apresenta as variáveis que serão criadas e a descrição de
cada uma delas, com as alterações que realizaremos para facilitar nossas análises:
Observe que realizaremos de uma só vez todas essas alterações apontadas, escrevendo
diversas linhas de código. Caso sinta-se mais seguro, você poderá realizar as mesmas
alterações variável por variável, de forma mais confortável, construindo seu estilo de tra-
balho. Entretanto, isso implicará em um maior tempo de escrita do seu script.
Agora observe no passo a passo abaixo como colocaremos em prática estas transformações:
Veja o script abaixo com muita atenção, leia os comentários explicando cada parte e
replique-o no seu RStudio :
29
Análise de dados para a vigilância
em saúde – Curso Básico
# Obtendo apenas o ano de óbito a partir da coluna DTOBITO com a função year()
ANO_OBITO = year(DTOBITO),
30
Análise de dados para a vigilância
em saúde – Curso Básico
31
Análise de dados para a vigilância
em saúde – Curso Básico
Agora que já preparamos nosso banco de dados de análise, estamos prontos para reali-
zar o cálculo dos indicadores de mortalidade. Vamos em frente!
Esse indicador representa o número total de óbitos, por mil (1.000) habitantes, na popu-
lação residente em determinado local e ano considerado. Ele expressa a intensidade
que a mortalidade atinge uma população. É um indicador muito usado na demografia,
e exige cuidado ao se utilizar para comparações entre populações distintas.
Para a contagem do número total de óbitos, considere agrupar os dados por ano do óbi-
to. Para isto, utilizaremos a função count() para contar o número de óbitos em cada ano.
#> ANO_OBITO n
#> 1 2015 3517
#> 2 2016 3763
#> 3 2017 3832
#> 4 2018 4094
#> 5 2019 4098
#> 6 2020 4860
#> # A tibble: 6 × 2
#> name pop_ac
#> <chr> <dbl>
#> 1 pop_2015 831665
#> 2 pop_2016 844137
#> 3 pop_2017 856457
#> 4 pop_2018 869265
#> 5 pop_2019 881935
#> 6 pop_2020 894470
A tabela resultante irá apresentar em sua primeira coluna ( name ) informações sobre o ano, e
na segunda coluna ( pop_ac) a população estimada para o Acre para cada ano corresponden-
te. Observe que os bancos de dados de óbito e de população possuem a mesma dimensão
(2 colunas, 6 linhas) e se referem à mesma unidade de tempo nas linhas: o ano.
34
Análise de dados para a vigilância
em saúde – Curso Básico
3. No terceiro passo utilizaremos a função bind_cols() do pacote dplyr para unir as ta-
belas de óbitos e população para calcular a taxa bruta de mortalidade. Vamos execu-
tar juntos os códigos do script abaixo, e replique-o em seu RStudio :
Veja como foi simples unir as duas tabelas utilizando a função bind_cols() !
4. Agora podemos criar uma nova coluna contendo a taxa geral de mortalidade usan-
do a função mutate(). Vamos lá, acompanhe o script abaixo e replique-o no seu
computador:
# Criando uma nova coluna com a taxa geral de mortalidade com a função mutate()
mutate(tx_bruta_ac = (n / pop_ac) * 1000)
35
Análise de dados para a vigilância
em saúde – Curso Básico
Você deverá encontrar esta tabela acima resultante da união de tabelas que foram ge-
radas nos passos anteriores. Esta nova tabela possui a adição de uma coluna nova: a
tx_bruta_ac que indica a taxa bruta de mortalidade para todo o Estado do Acre, nos anos
entre 2015 e 2020. Observe no output que a taxa bruta de mortalidade ou taxa geral de
mortalidade do Estado do Acre variou entre 4,23 e 5,43 por mil habitantes, nestes anos.
Atenção
Unir tabelas com a função bind_cols() do pacote dplyr será possível
apenas quando ambas as tabelas possuírem a mesma dimensão (nú-
mero de linhas) e lógica de armazenamento de dados. Nestes casos,
os argumentos da função são as tabelas a serem conectadas!!!
Também podemos calcular se há diferenças entre sexo e idade por uma mesma doença
nos óbitos. Para isto, utilizamos a taxa específica de mortalidade por idade e sexo, calcu-
lamos o número de óbitos por uma causa de morte específica e a comparamos por 100
mil habitantes residentes em mesmo local e ano determinado.
36
Análise de dados para a vigilância
em saúde – Curso Básico
Observe abaixo, no script que selecionamos para análise, os óbitos por causas externas
no ano de 2020. Lembre-se que permanecemos utilizando o banco de dados de óbitos
do Estado do Acre.
Para a construção do script que nos retornará taxas específicas de mortalidade por idade
e sexo seguiremos os seguintes passos:
Agora, veja com atenção como ficam todos estes passos no código abaixo. Replique a
escrita deste script em seu RStudio :
37
Análise de dados para a vigilância
em saúde – Curso Básico
base_obito_ac |>
# Contando o número de casos por faixa etária e sexo com a função count()
count(FX_ETARIA_11C, SEXO) |>
# Transformando a tabela do formato longo para o formato largo com a função pivot_wider()
pivot_wider(names_from = SEXO,
values_from = n) |>
# Criando colunas de taxa específica para homens e mulheres com a função mutate()
mutate(
taxa_especifica_homem = masculino / Pop_Masculino * 100000,
taxa_especifica_mulher = feminino / Pop_Feminino * 100000
) |>
38
Análise de dados para a vigilância
em saúde – Curso Básico
#> # A tibble: 11 × 3
#> `Faixa Etaria 1` taxa_especifica_homem taxa_especifica_mulher
#> <chr> <dbl> <dbl>
#> 1 0 a 4 anos 11.8 2.47
#> 2 5 a 9 anos 11.5 7.23
#> 3 10 a 14 anos 22.0 6.83
#> 4 15 a 19 anos 179. 35.1
#> 5 20 a 29 anos 177. 22.0
#> 6 30 a 39 anos 172. 18.9
#> 7 40 a 49 anos 121. 16.9
#> 8 50 a 59 anos 110. 14.4
#> 9 60 a 69 anos 94.7 14.3
#> 10 70 a 79 anos 111. 18.1
#> 11 80 anos e mais 169. 39.4
Observe no output que, para o ano de 2020 no Estado do Acre, a taxa de mortalidade por
causas externas em homens é muito superior à taxa de mortalidade por causas externas
em mulheres. A faixa etária mais acometida é a de 15 a 19 anos em homens e 80 anos e
mais em mulheres.
39
Análise de dados para a vigilância
em saúde – Curso Básico
Este indicador é importante para medir a carga de cada grupo de causa no total de
óbitos da região geográfica analisada. Pode ser calculado matematicamente da se-
guinte forma:
Mortalidade
proporcional por
Números de óbitos de residentes por grupos de causas
grupos de causas= ×100
Número total de óbitos de residentes
Para todo cálculo que representar uma proporção pode-se utilizar cál-
culos simples para a porcentagem, ou seja, multiplicado por 100.
Para o cálculo deste indicador no R , você deverá criar uma tabela com frequência abso-
luta e frequência relativa, cuja coluna de frequência relativa representará o resultado do
cálculo da mortalidade proporcional. Para esta etapa, siga o passo a passo abaixo:
base_obito_ac |>
Assim, ao observar o output do código executado podemos concluir que o maior grupo
de causa de morte no Acre é o de Doenças infecciosas e parasitárias, com 20,69% de to-
das as mortes ocorridas no Estado. Essa informação é muito importante para a vigilância,
pois o serviço precisa conhecer as principais causas de mortalidade e desencadear ações
de saúde e intersetoriais.
41
Análise de dados para a vigilância
em saúde – Curso Básico
42
Análise de dados para a vigilância
em saúde – Curso Básico
Agora, vamos escrever o script que corresponderá à fórmula matemática e que permite
que seu cálculo possa ser realizado de maneira automatizada. Observe abaixo e replique
no seu RStudio :
base_obito_ac |>
# Filtrando os dados por registros de casos com menos de 1 ano com a função
# filter()
filter(FX_ETARIA_M1ANO == "< 1 ano") |>
A taxa de mortalidade infantil por mil nascidos vivos no Acre chegou a diminuir de 17,13
em 2015 para 13,63 em 2017, mas voltou a aumentar e chegou a 16,04 em 2020.
43
Análise de dados para a vigilância
em saúde – Curso Básico
44
Análise de dados para a vigilância
em saúde – Curso Básico
Agora, vamos escrever o script que corresponderá à fórmula matemática e permitirá que
seu cálculo possa ser realizado de maneira automatizada, replique o código abaixo em
seu RStudio :
base_obito_ac |>
45
Análise de dados para a vigilância
em saúde – Curso Básico
Observe que o nosso output informa para cada ano o total de óbitos maternos (coluna n ), o
número de nascidos vivos (coluna n_nascidos_vivos ), e o valor da razão de mortalidade
materna (coluna razao_mort_materna ).
Ao analisarmos a tabela construída, é possível observar melhora na taxa de mortalidade
materna ao longo desses 6 anos, o que pode indicar esforços do Estado do Acre para
interferir sobre o indicador. Lembre-se dos vieses que influenciam este indicador como a
subnotificação do denominador (número de nascidos vivos) e problemas de investigação
do óbito materno (número de óbitos por causas de morte materna).
Para tornar sua análise ainda mais aprofundada sugere-se que você análise além da cau-
sa específica da morte materna, também a idade da mulher ao morrer, o estado marital,
o número de filhos tidos e os ainda vivos, a paridade, o intervalo entre gestações, consul-
tas no pré-natal, hábito de fumar, de beber e outras. Algumas destas variáveis, não são
obtidas a partir dos atestados de óbito, necessitando análises do SINASC, e-SUS AB PEC
ou outros bancos de dados disponíveis em seu município.
Com base nos códigos até agora descritos você já pode expandir suas análises para di-
ferentes doenças e agravos, locais, anos, faixas etárias, etc. Mas vamos adiante. Há mais
possibilidades à frente.
46
Análise de dados para a vigilância
em saúde – Curso Básico
Para isto, costumamos montar tabelas de análises chamadas de tabelas 2x2 ou tabelas
de contingência. Muito utilizadas quando calculamos taxa de ataque, uma espécie de
coeficiente ou taxa de incidência que analisa uma determinada doença comparando um
grupo de pessoas expostas ao mesmo risco limitadas a uma área bem definida. O cálculo
da taxa de ataque é muito útil para investigar e analisar surtos de doenças ou agravos à
saúde em locais delimitados.
47
Análise de dados para a vigilância
em saúde – Curso Básico
Estado de Saúde
Frequentou c d c+d
Agora, vamos acompanhar algumas análises em que as tabelas 2x2 serão úteis na rotina
de trabalho da vigilância em saúde. Vamos lá!
48
Análise de dados para a vigilância
em saúde – Curso Básico
Para investigar essa situação, vamos utilizar o agravo dengue da base de notificação do
Estado de Rosas. Acompanhe o passo a passo a seguir:
Agora veja como o passo 5 pode ser escrito em um script abaixo e replique em seu RStudio:
# Criando uma tabela de resumo do cruzamento de informações sobre região e tipo de diagnóstico
tbl_cross(
row = regiao,
col = classificacao,
percent = "row",
missing = "no"
)
Agora, vamos visualizar a tabela criada, para isso digite apenas seu nome { tabela_re-
sid_diag_dengue } e clique no botão “Run”. Fique atento pois a tabela será mostrada no
painel Viewer do RStudio e não no Painel Console !
51
Análise de dados para a vigilância
em saúde – Curso Básico
classificacao
regiao
Atenção
Observe que tanto a região da Capital quanto o do Interior do Estado de Rosas possuem
porcentagens semelhantes de casos prováveis e de casos descartados. Avaliando a últi-
ma linha da tabela gerada no output do código, perceberemos que independente da
região, 96% dos casos notificados são casos prováveis.
52
Análise de dados para a vigilância
em saúde – Curso Básico
Pronto, agora vamos realizar o teste qui-quadrado para verificar se esta associação é
somente devido ao acaso. Podemos fazer isso através da função add_p() do pacote
gtsummary. Ao adicionarmos esta função, as células da tabela são verificadas e o teste
estatístico adequado é realizado.
classificacao
regiao 0.8
Observe que o resultado do valor do p foi 0,8. O que isso significa? Como 0,8 é maior que
0,05, não podemos rejeitar a hipótese nula que definimos anteriormente. Assim, temos
evidência que não há associação entre a região de residência e a classificação final
de Dengue. 53
Análise de dados para a vigilância
em saúde – Curso Básico
Interessante, não é mesmo? Isso faz sentido, pois a dengue está muito espalhada pelo
território, sem distinção de local de residência. O mosquito Aedes aegypti não reconhece
as barreiras ou fronteiras geográficas.
#>
#> Pearson's Chi-squared test with Yates' continuity
correction
#>
#> data: data.frame(Capital = c(11672, 442), Interior =
c(314, 13))
#> X-squared = 0.026064, df = 1, p-value = 0.8717
54
Análise de dados para a vigilância
em saúde – Curso Básico
Atenção
55
Análise de dados para a vigilância
em saúde – Curso Básico
#>
#> Fisher's Exact Test for Count Data
#>
#> data: data.frame(Capital = c(3, 2), Interior = c(2,
3))
#> p-value = 0.5
#> alternative hypothesis: true odds ratio is greater
than 1
#> 95 percent confidence interval:
#> 0.1541449 Inf
#> sample estimates:
#> odds ratio
#> 2.069959
p-valor do teste,
a hipótese alternativa em consideração,
o intervalo de confiança construído baseado na hipótese alternativa, e
a estimativa da razão de chances com base na tabela de contingência.
56
Análise de dados para a vigilância
em saúde – Curso Básico
5. Medidas de associação
Sempre quando estiver realizando uma análise epidemiológica e a associação entre va-
riáveis estiver presente é possível quantificar a magnitude da diferença de chance ou de
risco. Para isto, em epidemiologia, usamos duas medidas para nos apoiar nesta análise:
Nas subseções logo abaixo iremos rever os conceitos e aprender a aplicá-los no dia a dia,
dando robustez às análises realizadas e qualificando ainda mais a rotina de análise dos
serviços de vigilância em saúde municipais.
O Risco Relativo é uma razão de incidências que estima a magnitude das diferenças de
incidência entre os grupos expostos e não expostos a um fator e a ocorrência da doença.
Em poucas palavras, calcular o valor do RR expressa quantas vezes é maior (ou menor)
o RISCO de desenvolver a doença no grupo que foi exposto a um determinado fator
em comparação a um grupo que não foi exposto. Expressa uma comparação mate-
mática da incidência entre os grupos. Veja seu cálculo matemático:
57
Análise de dados para a vigilância
em saúde – Curso Básico
Para analisar esta situação, observe a tabela abaixo que faz uma simulação de grupos
expostos e não expostos (na linha) e se houve ou não a doença (na coluna). As letras ex-
pressam as seguintes interseções:
Logo, a incidência da doença em quem foi exposto é representada por a/a+b e a incidên-
cia da doença em quem não foi exposto é representada por c/c+d .
a
Incidência no grupo exposto a+b
Risco Relativo (RR)= =
Incidência no grupo não exposto c
c+d
58
Análise de dados para a vigilância
em saúde – Curso Básico
Considere que você foi chamado para participar da investigação de um surto de gastro-
enterite (DTA) entre pessoas que participaram de uma festa de casamento. Ao total, 80
pessoas estiveram presentes no jantar que ocorreu em uma igreja no dia 18 de abril. O
jantar foi realizado das 18 às 23 horas. Durante este período, os alimentos ficaram expos-
tos em uma mesa e disponíveis aos convidados.
Os dados coletados foram tabulados e enviados ao seu e-mail no formato texto ( .csv ).
Agora você deverá seguir o passo a passo abaixo para analisá-los:
# Carregando o banco de dados do surto e criando uma tabela (dataframe) com o nome base_surto
base_surto_18_04 <- read_csv("Dados/base_surto.csv")
59
Análise de dados para a vigilância
em saúde – Curso Básico
Como já deve ser de seu conhecimento, a investigação de surto pela vigilância visa cons-
tatar a causa do surto, suas características quanto ao local, pessoa e tempo e quais ações
necessárias para seu término. Considere também que a análise pode determinar se exis-
te alguma associação entre consumo de algum alimento e a ocorrência da doença. Por-
tanto, vamos construir as tabelas 2x2 para cada um dos supostos fatores de risco.
2. Como recurso estético, vamos deixar a tabela um pouco mais compacta, execu-
tando a função theme_gtsummary_compact(), considerando que a tabela pode ficar
grande e de difícil visualização.
3. Vamos retirar as variáveis que não vamos utilizar neste momento utilizando a fun-
ção select(). Note que estamos utilizando o símbolo de menos ( - ) para retirar as
variáveis de identificação ( id ), data e hora de início de sintomas e hora do jantar.
4. Em seguida, utilizaremos a função tbl_summary() do pacote gtsummary apresen-
tada anteriormente. Faremos um cruzamento entre as variáveis sobre alimentos
ingeridos e a variável com status da doença.
5. E como último passo aplicaremos a função add_p() para o cálculo do teste estatísti-
co adequado para verificar se há associação entre os fatores e o status dos doentes.
# Utilizando a função theme_gtsummary_compact() para facilitar a visualização da tabela que será gerada
theme_gtsummary_compact()
base_surto_18_04 |>
# Criando uma tabela com resumo das informações de acordo com a coluna "doente"
tbl_summary(by = doente, missing = "no") |>
60
Análise de dados para a vigilância
em saúde – Curso Básico
61
Análise de dados para a vigilância
em saúde – Curso Básico
Pronto, verifique se os seguintes resultados para os que ficaram doente foi o seguinte:
Nessa situação, perceba que o sorvete de creme é o único alimento que as pessoas foram
“expostas” e que apresentou valor de p menor que 0,05 no teste estatístico de associação.
Temos, portanto, nosso principal suspeito. Perceba também que, agora, será preciso
comparar quem foi exposto ou não ao fator de risco (sorvete de creme) e que desenvol-
veram a doença (gastroenterite) ou não. Vamos calcular o Risco Relativo (RR)!
6. Para calcular o RR, vamos precisar do pacote epitools , muito útil para cálculo de
medidas de associação e já carregado no início do módulo.
7. Para o cálculo do Risco Relativo vamos utilizar a função riskratio() do pacote
epitools . Essa função possui três argumentos principais:
O argumento conf.level define o nível de confiança das estimativas. Por padrão ele já
é preenchido como 0,95 (95%). Assim, não é necessário inseri-lo na função. Caso queira
alterar, basta definir na função com o valor correspondente.
62
Análise de dados para a vigilância
em saúde – Curso Básico
#> $data
#> Outcome
#> Predictor Disease2 Disease1 Total
#> Exposed2 18 3 21
#> Exposed1 11 43 54
#> Total 29 46 75
#>
#> $measure
#> risk ratio with 95% C.I.
#> Predictor estimate lower upper
#> Exposed2 1.000000 NA NA
#> Exposed1 5.574074 1.93834 16.02934
#>
#> $p.value
#> two-sided
#> Predictor midp.exact fisher.exact chi.square
#> Exposed2 NA NA NA
#> Exposed1 2.698215e-07 2.597451e-07 1.813314e-07
#>
#> $correction
#> [1] FALSE
#>
#> attr(,"method")
#> [1] "Unconditional MLE & normal approximation (Wald) CI"
63
Análise de dados para a vigilância
em saúde – Curso Básico
9. Como vamos precisar apenas dos cálculos do Risco Relativo (RR), vamos utilizar so-
mente o segundo elemento da lista, chamado “measure”. Veja no script abaixo como
o acessamos e replique-o em seu computador:
Ufa! Conseguimos calcular o RR com sucesso. Agora vamos aprender a calcular o Odds Ratio!!
64
Análise de dados para a vigilância
em saúde – Curso Básico
Odds ratio (OR) é uma razão que estima quantas vezes é maior (ou menor) a CHANCE
de exposição a um determinado fator no grupo que já manifestou a doença em
relação a um grupo não doente. Ou seja, odds ratio identifica a associação entre a ex-
posição e doença entre pessoas que já desenvolveram a doença.
Logo, a chance de ter sido exposto dado que manifestou a doença é representada por
a / c e a chance de ter sido exposto dado que não manifestou a doença é representada
por b / d .
65
Análise de dados para a vigilância
em saúde – Curso Básico
A partir da tabela acima, o cálculo da OR, envolvendo as odds, pode ser expresso mate-
maticamente da seguinte forma:
a
a×d
Odds Ratio= c =
b b×c
d
Vamos praticar! Considere que enquanto profissional de vigilância, você precisará ava-
liar a situação da coinfecção entre tuberculose e HIV em casos do Estado do Acre!
O adoecimento de tuberculose em pessoas vivendo com HIV (PVHIV) pode ser maior do
que quando comparamos com outras pessoas não infectadas pelo vírus do HIV, princi-
palmente pela influência da imunossupressão tornando esse grupo um dos mais vulne-
ráveis, dentre os casos de tuberculose.
66
Análise de dados para a vigilância
em saúde – Curso Básico
67
Análise de dados para a vigilância
em saúde – Curso Básico
5 Transferência -
6 Mudança de diagnóstico -
8 Mudança de esquema -
4. Agora, vamos categorizar também a variável HIV , conforme tabela abaixo (Figura 7).
Observe que iremos descartar as variáveis que não revelam o resultado da sorolo-
gia. Pos estamos fazendo uma avaliação dos desfechos que aconteceram logo os
casos em brancos não serão utilizados.
68
Análise de dados para a vigilância
em saúde – Curso Básico
1 Positivo Positivo
2 Negativo Negativo
3 Em andamento -
4 Não realizado -
# Transformando os códigos de situação de encerramento nos nomes correspondentes com a função case_when()
SITUA_ENCE = case_when(
SITUA_ENCE == "1" ~ "Favorável",
SITUA_ENCE %in% c("2", "3", "7", "9", "10") ~ "Desfavorável",
TRUE ~ NA_character_
),
# Transformando os códigos de resultado de HIV nos nomes correspondentes com a função case_when()
HIV = case_when(HIV == "1" ~ "Positivo",
HIV == "2" ~ "Negativo",
TRUE ~ NA_character_),
69
Análise de dados para a vigilância
em saúde – Curso Básico
7. Agora, avalie a associação entre as variáveis por meio do teste estatístico qui-qua-
drado numa tabela 2x2:
Definindo hipótese nula como não associação entre Sorologia de HIV e situação do
encerramento e o nível de significância do teste estatístico em 0,05.
Acompanhe os scripts abaixo e replique-os em seu RStudio
base_tb |>
SITUA_ENCE
HIV <0.001
70
Análise de dados para a vigilância
em saúde – Curso Básico
Pronto! Terminamos a primeira etapa do estudo de Odds Ratio. Agora vamos lá respon-
der à pergunta: Existe associação entre pessoas com diagnóstico de tuberculose e
vivem com HIV e a situação do caso no encerramento?
Nota-se ainda que o valor de p foi menor que 0,05, evidenciando que a hipótese nula
pode ser rejeitada. Isso significa que há evidência para associação entre desfecho desfa-
vorável para pessoas com tuberculose e quando expostas ao vírus HIV.
Vamos inserir o vetor com os dados da tabela 2x2 acima, sem os totais. Vamos salvar o
resultado em um objeto chamado resultado_or_tb .
71
Análise de dados para a vigilância
em saúde – Curso Básico
Próximos cursos
Pronto, chegamos ao final do último módulo deste curso! Agora você já
conhece as principais ações para automatizar suas análises de dados do
dia a dia com o apoio da linguagem de programação R . Quer seguir a
diante no aprendizado? Você encontrará outras etapas para aprofunda-
mento das análises de dados em vigilância em saúde nos outros cursos.
Aproveite e já faça sua inscrição nos cursos abaixo clicando nos links: