Lidando com conjunto de dados com NAs (MNAR)

Sep 18 2020

Tenho um dataframe com muitos (> 50%) valores de NAs e estou procurando uma maneira de lidar com isso. Pelo que descobri, acho que muitas pessoas recomendam o uso de imputação como a imputação múltipla ou o uso de floresta aleatória (rf lida com valores ausentes substituindo os NAs pela mediana). No entanto, deixe-me explicar minha situação com um subconjunto de dados:

         basket.Africa.1 basket.US.10 basket.France.20

apple           1              0                1

orange         NA              3                2

pear           NA              NA               2

peach           1              NA               NA

banana          1              2                3

Cada cesta é digitalizada por uma máquina (despeje as frutas da cesta e a máquina fará a varredura de cada fruta), e então a quantidade de frutas será registrada. Portanto, há 1 maçã, 1 pêssego e 1 banana em basket.Africa.1. Observe que basket.Africa.1se refere à cesta # 1 da África.

Os NAs aqui NÃO estão faltando ao acaso, isso significa que não é possível ter NAs. Por exemplo, basket.Africa.1tem NAs em laranja e pera, porque a África não produz nenhuma laranja e pera, então é certo que as contagens de laranja e pera são NAs.

Em outras palavras, o zero in basket.US.10(esta cesta é dos EUA) NÃO significa valor ausente, mas em vez disso, é possível ter maçã nesta cesta, mas não há nenhuma nesta cesta específica (cesta # 10 dos EUA) .

Meu objetivo é usar o conjunto de dados (~ 100 colunas de cestas diferentes de 5 países (África, EUA, França, China, Austrália) e ~ 10 linhas de frutas diferentes) e responder: se eu recebo uma cesta aleatória, como posso Eu determino a que país pertence esta cesta?

Não acho que seja apropriado preencher quaisquer valores para os NAs porque os NAs não deveriam ter valor! Eu também tento a imputação múltipla, mas meus dados contêm MUITOS valores ausentes, então este método também não funciona ...

Respostas

2 RobertLong Sep 22 2020 at 14:05

Embora eu possa entender por que algumas pessoas diriam que esses dados são MNAR (Missing Not At Random), eu preferiria dizer que eles estão ausentes por design. Outro termo que às vezes é usado é falta estrutural.

A maneira de lidar com isso vai depender muito do modelo que você encaixa. Uma abordagem é não fazer nada e reter os NAs. Alguns modelos imputarão um valor como a média ou mediana - e você não gostaria disso, mas pode não haver problema se eles ignorassem / excluíssem NAs. Outra abordagem que pode funcionar para você é usar uma codificação exclusiva para esses dados, como -1, que de outra forma seria impossível (já que você parece estar observando contagens). Obviamente, isso significaria um modelo que usa uma transformação de log, como poisson ou regressão binomial negativa, estaria fora de questão, mas deve haver muitos outros, talvez baseados em árvore, que podem funcionar. Isso não é ideal, então eu exploraria o desempenho usando diferentes métodos e modelos.

deemel Sep 19 2020 at 13:19

Não acho que seja apropriado preencher quaisquer valores para os NAs porque os NAs não deveriam ter valor!

Qual é o raciocínio por trás dessa afirmação? Considere o seguinte exemplo que você forneceu:

Por exemplo, basket.Africa.1 tem NAs em laranja e pera, porque a África não produz laranja e pêra, então é certo que as contagens de laranja e pera são NAs.

Bem, se você olhasse apenas para a cesta: quais são as frequências observadas de peras e laranjas neste aquecido? Eles são zero - preencha os NAs com isso.
Seu esforço para codificar 'resultado é impossível' com NA pode não ser necessário, uma vez que um evento sendo impossível de ocorrer em determinadas circunstâncias, quase certamente aparecerá nas frequências observadas.