Como lidar com dados em falta

library(imputeTS)na.random(mydata) # Random Imputation
na.locf(mydata, option = "locf") # Last Obs. Carried Forward
na.locf(mydata, option = "nocb") # Next Obs. Carried Backward
na.interpolation(mydata) # Linear Interpolation
na.seadec(mydata, algorithm = "interpolation") # Seasonal Adjustment then Linear Interpolation

Meio, mediana e modo

A computação da média geral, mediana ou modo é um método de imputação muito básico, é a única função testada que não tira vantagem das características das séries temporais ou da relação entre as variáveis. É muito rápido, mas tem claras desvantagens. Uma desvantagem é que a imputação média reduz a variância no conjunto de dados.

library(imputeTS)na.mean(mydata, option = "mean") # Mean Imputation
na.mean(mydata, option = "median") # Median Imputation
na.mean(mydata, option = "mode") # Mode ImputationIn Python
from sklearn.preprocessing import Imputer
values = mydata.values
imputer = Imputer(missing_values='NaN', strategy='mean')
transformed_values = imputer.fit_transform(values)# strategy can be changed to "median" and "most_frequent"

Regressão linear

Para começar, vários preditores da variável com valores ausentes são identificados usando uma matriz de correlação. Os melhores preditores são selecionados e usados como variáveis independentes em uma equação de regressão. A variável com dados ausentes é usada como a variável dependente. Os casos com dados completos para as variáveis preditoras são usados para gerar a equação de regressão; a equação é então usada para prever valores ausentes para casos incompletos. Em um processo iterativo, são inseridos valores para a variável ausente e, em seguida, todos os casos são usados para prever a variável dependente. Estas etapas são repetidas até que haja pouca diferença entre os valores previstos de uma etapa para a outra, ou seja, convergem.
O “teoricamente” fornece boas estimativas para os valores em falta. No entanto, existem várias desvantagens deste modelo que tendem a superar as vantagens. Primeiro, porque os valores substituídos foram previstos a partir de outras variáveis, eles tendem a se encaixar “muito bem” e, portanto, o erro padrão é deflacionado. Deve-se também assumir que há uma relação linear entre as variáveis usadas na equação de regressão quando pode não haver uma.

Imputação múltipla

  1. Imputação: Imputar as entradas em falta dos conjuntos de dados incompletos m vezes (m=3 na figura). Note que os valores imputados são extraídos de uma distribuição. A simulação de sorteios aleatórios não inclui incerteza nos parâmetros do modelo. A melhor abordagem é usar a simulação de Markov Chain Monte Carlo (MCMC). Esta etapa resulta em m conjuntos de dados completos.
  2. Análise: Analisar cada um dos m conjuntos de dados completos.
  3. Pooling: Integrar os resultados da análise m em um resultado final

Source: http://www.stefvanbuuren.nl/publications/mice%20in%20r%20-%20draft.pdf
# We will be using mice library in r
library(mice)
# Deterministic regression imputation via mice
imp <- mice(mydata, method = "norm.predict", m = 1)
# Store data
data_imp <- complete(imp)# Multiple Imputation
imp <- mice(mydata, m = 5)#build predictive model
fit <- with(data = imp, lm(y ~ x + z))#combine results of all 5 models
combine <- pool(fit)

Este é de longe o método de imputação mais preferido pelas seguintes razões:
– Fácil de usar
– Sem viés (se o modelo de imputação estiver correcto)

Imputação de Variáveis Categóricas

  1. O modo de imputação é um método, mas irá definitivamente introduzir viés
  2. Os valores em falta podem ser tratados como uma categoria separada por si só. Podemos criar outra categoria para os valores em falta e usá-los como um nível diferente. Este é o método mais simples.
  3. Modelos de previsão: Aqui, nós criamos um modelo de previsão para estimar valores que irão substituir os dados em falta. Neste caso, dividimos o nosso conjunto de dados em dois conjuntos: Um conjunto sem valores em falta para a variável (treinamento) e outro com valores em falta (teste). Podemos usar métodos como regressão logística e ANOVA para predição
  4. Imputação múltipla

KNN (K Nearest Neighbors)

Existem outras técnicas de aprendizagem de máquinas como XGBoost e Random Forest para a imputação de dados, mas estaremos discutindo KNN como é amplamente utilizado. Neste método, k vizinhos são escolhidos com base em alguma medida de distância e sua média é usada como uma estimativa de imputação. O método requer a seleção do número de vizinhos mais próximos, e uma métrica de distância. KNN pode prever tanto atributos discretos (o valor mais frequente entre os k vizinhos mais próximos) como atributos contínuos (a média entre os k vizinhos mais próximos)
A métrica de distância varia de acordo com o tipo de dados:
1. Dados Contínuos: As métricas de distância comumente usadas para dados contínuos são Euclidean, Manhattan e Cosine
2. Dados categóricos: A distância de Hamming é geralmente usada neste caso. São necessários todos os atributos categóricos e para cada um deles, contar um se o valor não for o mesmo entre dois pontos. A distância de Hamming é então igual ao número de atributos para os quais o valor foi diferente.
Uma das características mais atraentes do algoritmo KNN é que ele é simples de entender e fácil de implementar. A natureza não paramétrica do KNN dá-lhe uma vantagem em certas configurações onde os dados podem ser altamente “incomuns”.
Uma das desvantagens óbvias do algoritmo KNN é que ele se torna demorado ao analisar grandes conjuntos de dados porque ele procura por instâncias similares através de todo o conjunto de dados. Além disso, a precisão do KNN pode ser severamente degradada com dados de alta dimensão porque há pouca diferença entre o vizinho mais próximo e o mais distante.

library(DMwR)
knnOutput <- knnImputation(mydata)In python
from fancyimpute import KNN
# Use 5 nearest rows which have a feature to fill in each row's missing features
knnOutput = KNN(k=5).complete(mydata)

De todos os métodos discutidos acima, imputação múltipla e KNN são amplamente utilizados, e a imputação múltipla sendo mais simples é geralmente preferida.

Se você tiver alguma dúvida sobre este post, por favor pergunte nos comentários e farei o meu melhor para responder.

Deixe uma resposta

O seu endereço de email não será publicado.