ESTAT0109 – Mineração de Dados em Estatística
Prof. Dr. Sadraque E. F. Lucena
sadraquelucena@academico.ufs.br
http://sadraquelucena.github.io/mineracao
IDADE = 200 anos).MUNICIPIO = “Aracaju”, “Aracajú”).NA.Antes de aplicar qualquer técnica de limpeza, transformação ou integração, precisamos fazer um diagnóstico. A primeira e mais fundamental etapa desse diagnóstico é entender a natureza dos nossos dados.
Precisamos identificar os tipos de atributos (ou variáveis) que temos.
Todo conjunto de dados é composto por duas partes fundamentais, assim como uma planilha:
IDADE, SEXO, POPULACAO_2022, IDH_M.ocupacao(estatístico, médico, professor…), COD_MUNICIPIO_IBGE (ex: “2800308” = Aracaju).COD_MUN_IBGE ou ID_cliente), mas operações matemáticas são sem sentido.
OBITO (1=Sim, 0=Não), FUMANTE (1=Sim, 0=Não).SEXO (M/F).TESTE_COVID (Positivo=1, Negativo=0). Por convenção, o “1” é o resultado de maior interesse.ESCOLARIDADE (Analfabeto < Fundamental < Médio < Superior), SATISFACAO_ATENDIMENTO: (Muito Ruim, Ruim, Neutro, Bom, Muito Bom).São quantidades mensuráveis (números inteiros ou reais) onde as operações matemáticas (média, desvio padrão) fazem sentido. Há dois tipos:
VL_TOTAL_INTERNACAO (R$ 0,00 é ausência de custo).IDADE, PESO, ALTURA.RENDA_MENSAL, N_DE_FILHOS.Muitas vezes, os algoritmos e softwares (como R e Python) simplificam a classificação em dois grandes grupos, que não são exatamente iguais aos anteriores, mas os englobam.
RACA_COR)OBITO)ESCOLARIDADE)N_DE_FILHOS, DIAS_DE_INTERNACAO).PESO (ex: 75,32 kg)TAXA_MORTALIDADE_INFANTIL (ex: 12.4 por 1000)VL_MEDICAMENTO (ex: R$ 150,75)Objetivo: Arrumar os dados para iniciar uma análise de boa qualidade. Questões que temos que lidar:
Vejamos detalhes de cada fase.
municipio com respostas “Aracaju” e “Aracajú”).idade_da_mae = 5 anos).NAs.NAs)NAs)Um NA pode ocorrer por 2 fatores principais:
DATA_OBITO está NA (porque o paciente está vivo).NOME_ESCOLA_FILHO está NA (porque a família não tem filhos).NA aqui é informação. Talvez criar uma categoria “Não Aplicável”.Moral: Sempre leia o Dicionário de Dados!
Ao lidarmos com NAs, algumas estratégias costumam ser utilizadas:
NA;NANA ocorreu por acaso e se a perda for menor que 5% dos dados.NA estava só em RACA_COR, jogamos fora IDADE, SEXO, MUNICIPIO e o desfecho (a label).NA em RENDA → 0NA em RACA_COR → "Desconhecido" ou "99"NAs formam um conceito interessante”.Substitui o NA pela medida “do meio” da distribuição daquele atributo. * A Regra de Ouro: * Média: Usar se a distribuição for simétrica (ex: IDADE, se for normal). * Mediana: Usar se a distribuição for assimétrica (ex: RENDA). * Vantagem: É rápido e preserva a média/mediana geral. * Desvantagem: Ignora as relações entre variáveis e “achata” a variância (subestima a variabilidade real).
Esta é a abordagem moderna e preferida na maioria dos casos. Trata o valor ausente como um problema de predição.
X1, X2, X3) para prever o valor faltante (Y_na).RENDA (numérico) usando IDADE e ESCOLARIDADE.RACA_COR (categórico) usando MUNICIPIO e RENDA.recipes (Tidymodels) ou mice fazem isso.Ruído é um erro aleatório ou variância em uma variável medida.
NA, mas um valor que parece “deslocado”.VL_TOTAL) com custo de R$ 1,50.Binning é uma técnica de suavização local (olha a “vizinhança”).
O Processo (Ex: VALOR_INTERNACAO):
[4, 8, 15, 21, 21, 24, 25, 28, 34][4, 8, 15][21, 21, 24][25, 28, 34]Usando o exemplo (Bin 1: [4, 8, 15]):
1. Suavização pela MÉDIA: * O que faz: Substitui todos os valores pela média do bin. * Ex: Média(4, 8, 15) = 9 * Resultado: [9, 9, 9]
2. Suavização pela MEDIANA: (Muito recomendado!) * O que faz:** Substitui todos pela mediana do bin (robusto a outliers!). * Ex: Mediana(4, 8, 15) = 8 * Resultado: [8, 8, 8]
3. Suavização pelos LIMITES: * O que faz: Substitui cada valor pelo limite (min/max) mais próximo. * Ex: [4, 8, 15] -> [4, 4, 15] (8 está mais perto de 4 do que de 15)
O Binning não é a única forma de suavizar dados.
Regressão: Ajusta os dados a uma função (ex: uma linha de regressão linear). * Como suaviza? O “ruído” é a variação aleatória (o erro, \(\epsilon\)) ao redor da linha. O valor “suavizado” é o valor predito pela linha.
Análise de Outliers (via Clustering): Agrupa dados similares (clusters). * Como suaviza? Valores que caem fora dos clusters podem ser considerados outliers (ruído).
É o processo de combinar dados de múltiplas fontes.
O Desafio: Os dados nunca vêm de uma única fonte limpa. * Queremos cruzar Taxas de Mortalidade (SIM/DATASUS)… * … com Indicadores Socioeconômicos (Censo/IBGE)… * … com Dados de Escolaridade (CadÚnico)… * … para cada Município de Sergipe.
Temos quatro grandes desafios ao fazer isso. Vejamos.
Como o computador sabe que ‘Aracaju’ é ‘Aracaju’?
id_cliente (Base A) vs. numero_cliente (Base B).Exemplo: * Base IBGE (Censo): O código de Aracaju é CD_MUN_IBGE = “2800308” (7 dígitos). * Base DATASUS (SIH): O código de Aracaju é CD_MUN_DATASUS = “280030” (6 dígitos). * Solução: Não dá para juntar direto! Precisamos transformar CD_MUN_IBGE para criar uma chave compatível com CD_MUN_DATASUS.
Ok, conseguimos fazer o join() pelo código do município. Agora o problema é outro: os valores não “falam” a mesma língua.
Causas (do Texto):
RENDA em “Salários Mínimos”.RENDA_PER_CAPITA em “Reais (R$)”.GDP em “Dólares (USD)”.VL_TOTAL_INTERNACAO (nível do paciente).ORCAMENTO_ANUAL_HOSPITAL (nível da unidade).INDICE_ESCOLARIDADE (População > 18 anos).INDICE_ESCOLARIDADE (População > 25 anos).Um atributo que pode ser “derivado” de outros.
POP_TOTALPOP_URBANAPOP_RURALPOP_TOTAL é redundante (é POP_URBANA + POP_RURAL).Para Atributos NUMÉRICOS (ex: POP_TOTAL vs POP_URBANA): * Coeficiente de Correlação (Pearson) * cor(dados$pop_total, dados$pop_urbana) * Se \(r\) for muito alto (ex: > 0.9), há forte suspeita de redundância. * Covariância
Para Atributos NOMINAIS (Categóricos): * Teste \(\chi^2\) (Qui-Quadrado) * chisq.test(table(dados$var1, dados$var2)) * Mede a independência. Se \(p\)-valor for baixo (ex: < 0.05), as variáveis são dependentes, o que pode indicar redundância (ex: COD_MUNICIPIO e NOME_MUNICIPIO são 100% dependentes).
A mesma entidade (linha) aparece mais de uma vez.
"João da Silva") aparece duas vezes na tabela de compras, uma com endereço “Rua A” e outra com “Rua B” (pois ele se mudou e a base não foi atualizada corretamente).MARIA JOSE DA SILVA (do CadÚnico) é a mesma paciente M J SILVA (do SINAN/Dengue)?Quem Precisa Disso?
Basicamente, qualquer algoritmo baseado em distância!
Exemplo (RENDA):
\(v = 700\), \(\min = 200\), \(\max = 2000\)
\(v' = (700 - 200) / (2000 - 200) = 500 / 1800 = 0.277\)
Vantagem: Preserva as relações lineares.
Desvantagem: Extremamente sensível a outliers! Um único valor de Renda de R$ 50.000 (um erro) “espremeria” todos os outros dados perto de 0.
NUNCA ajuste seus parâmetros de normalização (min/max ou z-score) usando os dados de TREINO E TESTE juntos!
Isto é um vazamento de dados (data leakage). Você estaria “contando” ao seu modelo de treino sobre a distribuição do futuro (teste).
O Processo Correto (Pipeline):
mean(), sd()) APENAS no conjunto de Treino.recipe() + step_normalize() faz isso automaticamente!| Escolaridade | Código |
|---|---|
| Ensino Fundamental | 1 |
| Ensino Médio | 2 |
| Ensino Superior | 3 |
| Escolaridade | Ensino Médio | Ensino Superior |
|---|---|---|
| Ensino Fundamental | 0 | 0 |
| Ensino Médio | 1 | 0 |
| Ensino Superior | 0 | 1 |
O Objetivo: Reduzir o número de colunas (\(k\)) de \(d\) para \(k\) (onde \(k < d\)), preservando o máximo de “sinal” e removendo “ruído”.
Três Estratégias Principais:
