我有一个数据集。有很多缺失值。对于某些列,缺失值被替换为-999,而对于其他列,缺失值被标记为“ NA”。
为什么我们用-999代替缺失值?
我有一个数据集。有很多缺失值。对于某些列,缺失值被替换为-999,而对于其他列,缺失值被标记为“ NA”。
为什么我们用-999代替缺失值?
Answers:
当计算机软件将数值向量存储为数值向量时,这是较早时期的坚持。没有实数具有“我不见了”的语义。因此,当早期的统计软件不得不区分“真实”数字和缺失值时,他们输入了“显然”不是有效数字的值,例如-999或-9999。
当然,-999或-9999代表缺失值根本不是“显而易见的”。通常,它肯定是一个有效值。除非您明确检查这些值,否则分析中可能会出现各种“有趣的”错误。
如今,可以包含缺失值的数字向量在内部表示为“丰富的”数字向量,即具有关于哪些值缺失的附加信息的数字向量。这当然好得多,因为缺失的值将被照这样处理,而不会被错误地视为有效。
不幸的是,某些软件可能仍使用这种约定,也许是出于兼容性考虑。而且,即使他们的软件支持干净地输入缺失值,一些用户也通过非正式渗透吸收了该约定,并输入-999而不是NA。
道德:不要将缺失值编码为-999。
这些值适用于数据库。很久以前的大多数数据库,今天的许多数据库,为整数值数据分配了固定数量的数字。像-999这样的数字是最小的,可以存储四个字符,-9999可以存储五个字符,依此类推。
(不言而喻,根据定义,数字字段不能存储字母数字字符,例如“ NA”。 必须使用某些数字代码来表示丢失或无效的数据。)
为什么使用可以存储的最大负数来表示缺失值? 因为如果您错误地将其视为有效数字,则希望结果显着不正确。 缺少值的代码越接近现实,您就越安全,因为严重错误的输入通常会破坏输出。(强大的统计方法是个例外!)
这样的错误怎么会发生?在系统之间交换数据时,始终会发生这种情况。当您以大多数格式(例如CSV)写出数据时,假设-9999表示缺少值的系统将自动输出该值。读取该CSV文件的系统可能不会“知道”(或不会被“告知”)以将此类值视为丢失。
另一个原因是,良好的统计数据和计算平台会识别许多不同类型的缺失值:NaN,真正的缺失值,上溢,下溢,无响应等。通过投入尽可能多的负值(例如-9999,- 9998,-9997等),您可以轻松查询任何表或数组中的所有缺失值。
还有另一个是,这些值通常在图形显示中显示为极端异常值。在您可以选择在图形中脱颖而出的所有值中,最大可能的负值是远离数据的最大机会。
有一些有用的含义和概括:
采用这种类型的标准规则可以使在新情况下(设计自己的数据库软件时)轻松发明NoData代码。
如果软件和系统完全失败,则将它们设计为严重失效。最严重的错误是断断续续的,随机的或微小的错误,因为它们可能会被发现而难以发现。