⚠Tem dado faltando? Pode excluir, ninguém vai perceber!

📌 Será mesmo? Perder 1% dos dados não significa um modelo apenas 1% pior, pode ser muito mais!

📌Dados ausentes são uma realidade em muitas análises e modelos de aprendizado de máquina. Mas como lidar com eles: ignorar, excluir ou imputar?

📌 Neste projeto, demonstro o impacto de diferentes estratégias e por fim, apliquei redes neurais LSTM para comparar a performance das projeções (Dados: Mortalidade Histórica do estado de SP).

1 - Base de dados

A base de dados que utilizaremos corresponde à mortalidade do estado de São Paulo, de 1996 até 2023. Dados disponíveis em: http://tabnet.datasus.gov.br/cgi/deftohtm.exe?sim/cnv/obt10sp.def.

2 - Verificando valores ausentes

Após importar a base para o google colab, verifiquei a presença de dados ausentes.

Figura 1 - Importação da base de dados, verificando valores ausentes.

O data frame importado diretamente do datasus não contém dados ausentes. Em seguida, vamos visualizar a série temporal para na próxima sessão excluir aleatoriamente os dados para simular as técnicas de imputação.

⚠ Abaixo, é interessante destacar que as maiores taxas de mortalidade no meio do ano estão ligadas ao clima frio, aumento de doenças respiratórias e cardiovasculares, circulação de vírus sazonais e sobrecarga no sistema de saúde.

Figura 2 - Plotando a série temporal.

3 - Excluindo valores aleatoriamente

Como nosso data frame não tem valores ausentes, vamos excluir aleatoriamente 10% dos dados. Em seguida, plotei a séria temporal com dados ausentes para verificar a distribuição.

Figura 3 - Removendo aleatoriamente 10% dos dados.

Figura 4 - Série temporal com valores ausentes.

4 - Tratando valores ausentes

A seguir, vamos implementar diferentes métodos para tratar valores ausentes na coluna Qt óbitos da base de dados, para comparar o impacto desses métodos na integridade dos dados em relação à base original.

📌 Remoção: Exclui linhas com valores ausentes.

📌 Média anual: Substitui valores ausentes pela média do respectivo ano.

📌 KNN: Preenche valores ausentes com a média dos 5 vizinhos mais próximos no padrão de dados.

📌 Regressão linear: Prediz valores ausentes com base no ano e mês usando um modelo de regressão.

Figura 5 - Tratando valores ausentes por remoção, imputação simples, KNN e regressão linear.

5 - Análise do Impacto

Abaixo, a Figura 6 demonstra o impacto de cada método de tratamento de valores ausentes

Figura 6 - Total de óbitos por método.

📌 Sem Dados Ausentes: Excluir dados reduz significativamente a somatória total, causando o maior erro absoluto

📌 Média por Ano: Aproxima bem da base original, com um erro absoluto pequeno

📌 KNN: É o método mais preciso, com apenas 200,21 óbitos de diferença em relação à base original.

📌 Regressão Linear: Embora melhor que a exclusão, apresenta um erro moderado

Figura 7 - Erro percentual em relação ao método inicial.

6 - Projeção com redes neurais LSTM

Considerando o desempenho discutido no item anterior, agora vamos realizar projeções com redes neurais LSTM (Long Short-Term Memory) para a base com exclusão de dados ausentes e para a base em que imputamos os dados pela média ano.

Os dados foram preparados com uma função que converte a série temporal em um formato adequado, criando janelas de 12 meses (n_steps). Em seguida, removi períodos após 2018 para evitar interferência da COVID-19. Normalizei os dados utilizando o MinMaxScaler e dividi em 70% para treino e 30% para teste. O modelo LSTM foi definido com dois blocos contendo 150 neurônios cada, ativados pela função ReLU, seguidos por uma camada densa para gerar a saída.

Após o treinamento, converti os valores previstos e reais para o formato original, permitindo o cálculo das métricas de avaliação: MAE (Erro Médio Absoluto), RMSE (Raiz do Erro Quadrático Médio) e R² (Coeficiente de Determinação).

Figura 8 - Definindo o modelo LSTM | Parte 1

Figura 9 - Definindo o modelo LSTM | Parte 2

Os resultados (Figura 10) indicam que o desempenho do modelo LSTM varia significativamente dependendo do método de tratamento dos dados ausentes

📌 A base "Média por Ano" apresenta melhores resultados em todas as métricas, indicando que imputar dados ausentes com a média anual ajuda o modelo LSTM a capturar padrões mais consistentes na série temporal.

📌 A base "Sem Dados Ausentes" sofre com a perda de informações devido à exclusão de dados, resultando em um modelo menos preciso.

O coeficiente de determinação (R2) mede o quanto o modelo consegue explicar a variabilidade dos dados. Ao excluir apenas 10% dos dados, o modelo treinado na base sem dados ausentes teve um desempenho significativamente pior (R2=0,19) em comparação com o modelo que usou a imputação por média (R2=0,46).

Isso significa que o modelo treinado com a base que usou imputação foi mais que duas vezes melhor em explicar a variabilidade dos dados, mesmo tendo apenas 10% dos valores ausentes originalmente. Isso reforça a importância de tratar dados ausentes corretamente, pois a exclusão pode levar à perda de padrões importantes, prejudicando a performance do modelo.

Figura 10 - Comparando o desempenho do modelo LSTM

Então, nunca podemos excluir registros com dados ausentes?

Excluir dados ausentes pode ser válido em casos específicos, como quando a quantidade de valores faltantes é pequena e distribuída de forma aleatória, ou quando a ausência não compromete a representatividade da base. Também pode ser útil em modelos que lidam bem com a redução de dados. No entanto, na maioria das situações, a exclusão pode distorcer análises e prejudicar a qualidade das previsões.

7 - Conclusão

Este estudo reforça que o tratamento de dados ausentes não é apenas uma etapa preliminar, mas uma decisão estratégica que impacta diretamente a qualidade das análises e previsões. Investir em técnicas robustas de imputação e modelagem é essencial para análises confiáveis, especialmente em áreas sensíveis como saúde pública, onde as decisões dependem de previsões precisas e bem fundamentadas.

0
Subscribe to my newsletter

Read articles from Bernardo Ribeiro de Moura directly inside your inbox. Subscribe to the newsletter, and don't miss out.

Written by

Bernardo Ribeiro de Moura
Bernardo Ribeiro de Moura

Analista de dados sênior na Unimed Rio Preto, explorando modelos preditivos, otimização de custos e tomadas de decisão baseadas em dados. Bacharel em Química (UNESP), em transição para Ciência de Dados (UNIVESP), combinando ciência e tecnologia para resolver problemas do mundo real. Especializações em Google Data Analytics e Data Science pela HarvardX. Escrevo sobre análises preditivas, visualização de dados e modelagem estatística. Vamos trocar ideias sobre Python, SQL e o impacto dos dados no dia a dia?