Eu tenho um conjunto de dados. Existem muitos valores ausentes. Para algumas colunas, o valor ausente foi substituído por -999, mas em outras colunas, o valor ausente foi marcado como 'NA'.
Por que usaríamos -999 para substituir o valor ausente?
Eu tenho um conjunto de dados. Existem muitos valores ausentes. Para algumas colunas, o valor ausente foi substituído por -999, mas em outras colunas, o valor ausente foi marcado como 'NA'.
Por que usaríamos -999 para substituir o valor ausente?
Respostas:
Este é um destaque de épocas anteriores, quando o software de computador armazenava vetores numéricos como vetores numéricos. Nenhum número real tem a semântica "Estou ausente". Portanto, quando os primeiros softwares estatísticos tiveram que diferenciar números "verdadeiros" e valores ausentes, eles colocaram algo que "obviamente" não era um número válido, como -999 ou -9999.
Obviamente, que -999 ou -9999 significava um valor ausente não é "óbvio". Muitas vezes, certamente pode ser um valor válido. A menos que você verifique explicitamente esses valores, você pode ter todos os tipos de erros "interessantes" em suas análises.
Atualmente, vetores numéricos que podem conter valores ausentes são representados internamente como vetores numéricos "enriquecidos", ou seja, vetores numéricos com informações adicionais sobre quais valores estão ausentes. É claro que isso é muito melhor, porque os valores ausentes serão tratados como tal e não serão tratados por engano como válidos.
Infelizmente, alguns softwares ainda usam essa convenção, talvez para compatibilidade. E alguns usuários adotaram essa convenção por osmose informal e inseriram -999 em vez de NA, mesmo que seu software suporte a entrada limpa de valores ausentes.
Moral: não codifique valores ausentes como -999.
Esses valores são para bancos de dados. A maioria dos bancos de dados há muito tempo, e muitos hoje, alocou um número fixo de dígitos para dados com valor inteiro. Um número como -999 é o menor que pode ser armazenado em quatro caracteres, -9999 em cinco caracteres e assim por diante.
(Não é necessário dizer que, por definição, um campo numérico não pode armazenar caracteres alfanuméricos como "NA". É necessário usar algum código numérico para representar dados ausentes ou inválidos.)
Por que usar o número mais negativo que pode ser armazenado para indicar um valor ausente? Porque se você tratá-lo por engano como um número válido, deseja que os resultados sejam dramaticamente incorretos. Quanto mais seus códigos para valores ausentes forem realistas, mais seguro você fica, porque entradas extremamente erradas geralmente estragam a saída. (Métodos estatísticos robustos são exceções notáveis!)
Como esse erro pode acontecer? Isso ocorre o tempo todo quando os dados são trocados entre sistemas. Um sistema que assume que -9999 representa um valor ausente, emitirá esse valor alegremente quando você gravar os dados na maioria dos formatos, como CSV. O sistema que lê esse arquivo CSV pode não "saber" (ou não ser "informado") para tratar esses valores como ausentes.
Outro motivo é que bons dados estatísticos e plataformas de computação reconhecem muitos tipos diferentes de valores ausentes: NaNs, valores realmente ausentes, estouros, subfluxos, não respostas, etc. etc. Dedicando os valores mais negativos possíveis (como -9999, - 9998, -9997, etc), facilita a consulta de todos os valores ausentes de qualquer tabela ou matriz.
Ainda outro é que esses valores geralmente aparecem em exibições gráficas como valores extremos extremos. De todos os valores que você pode escolher destacar em um gráfico, o mais negativo possível tem a maior chance de estar longe de seus dados.
Existem implicações e generalizações úteis:
Adote uma regra padrão desse tipo para facilitar a invenção de códigos NoData em novas circunstâncias (quando você estiver projetando seu próprio software de banco de dados).
Projete seu software e sistemas para falhar drasticamente se eles falharem. Os piores erros são aqueles que são intermitentes, aleatórios ou minúsculos, porque podem passar despercebidos e difíceis de caçar.
Você pode usar qualquer coisa para codificar valores ausentes. Alguns softwares, como R, usam valores especiais para codificar dados ausentes, mas também existem pacotes de software, por exemplo, SPSS, que não possuem códigos especiais para dados ausentes. No segundo caso, você precisa fazer uma escolha arbitrária para esses valores. Você pode escolher qualquer coisa , mas geralmente é uma boa ideia escolher algum valor que difira visivelmente dos seus dados (por exemplo, seus dados são porcentagens no intervalo de 0 a 100); portanto, você escolhe 999 para codificar dados ausentes ou os dados são da idade humana e você usa valores negativos para observações ausentes). A idéia por trás disso é que, ao fazer isso, você poderá perceber se algo deu errado e os números não se somam.
O problema com essa codificação é, no entanto, que você realmente não pode perceber a codificação especial e acabar com os resultados do lixo.
Existem variáveis computadas no conjunto de dados? Ou esse é um conjunto de dados analíticos que vem de dados mesclados / classificados? Alguns softwares usam valores negativos muito grandes para indicar dados ausentes. Mas outro software cria valores ausentes com NA ou .
. Quando são discrepantes, geralmente algum pós-processamento leva a discordâncias.
Obviamente, no SPSS, o (s) valor (es) ausente (s) 999 ou o que IS está marcado como um código faltante especial e tratado separadamente de outros valores. Pode ser tabulado separadamente ou totalmente excluído. É feita uma distinção a partir do resultado de coisas como divisão zero ou log (0).