У меня есть набор данных. Есть много пропущенных значений. Для некоторых столбцов отсутствующее значение было заменено на -999, но для других столбцов отсутствующее значение было отмечено как «NA».
Почему мы используем -999 для замены отсутствующего значения?
missing-data
qqqwww
источник
источник
Ответы:
Это воздержание от более ранних времен, когда компьютерное программное обеспечение сохраняло числовые векторы как числовые векторы. Ни у одного действительного числа нет семантики "Я скучаю". Поэтому, когда раннему статистическому программному обеспечению приходилось различать «истинные» числа и пропущенные значения, они вводили что-то, что было «явно» недопустимым числом, например -999 или -9999.
Конечно, то, что -999 или -9999 обозначали пропущенное значение, вовсе не «очевидно». Довольно часто это может быть допустимым значением. Если вы явно не проверите для таких значений, вы можете иметь все виды «интересных» ошибок в ваших анализах.
В настоящее время числовые векторы, которые могут содержать отсутствующие значения, внутренне представляются как «обогащенные» числовые векторы, то есть числовые векторы с дополнительной информацией о том, какие значения отсутствуют. Это, конечно, намного лучше, потому что тогда пропущенные значения будут рассматриваться как таковые, а не ошибочно рассматриваться как действительные.
К сожалению, некоторые программы все еще используют такое соглашение, возможно, для совместимости. И некоторые пользователи впитали это соглашение с помощью неформального осмоса и вводят -999 вместо NA, даже если их программное обеспечение поддерживает чистый ввод пропущенных значений.
Мораль: не кодировать пропущенные значения как -999.
источник
Такие значения для баз данных. Многие базы данных давно и многие сегодня выделяют фиксированное количество цифр для целочисленных данных. Число, подобное -999, является наименьшим из четырех символов, -9999 - из пяти символов и т. Д.
(Само собой разумеется, что - по определению - числовое поле не может хранить буквенно-цифровые символы, такие как «NA». Некоторый числовой код должен использоваться для представления отсутствующих или недействительных данных.)
Зачем использовать самое отрицательное число, которое можно сохранить, чтобы обозначить пропущенное значение? Потому что, если вы ошибочно относитесь к нему как к действительному числу, вы хотите, чтобы результаты были резко неверными. Чем дальше ваши коды пропущенных значений получаются от реалистичности, тем вы безопаснее, потому что неправильный ввод обычно портит вывод. (Надежные статистические методы являются заметным исключением!)
Как могла произойти такая ошибка? Это происходит все время, когда данные обмениваются между системами. Система, которая предполагает, что -9999 представляет пропущенное значение, будет беспечно выводить это значение, когда вы записываете данные в большинстве форматов, таких как CSV. Система, которая считывает этот CSV-файл, может не «знать» (или не «говорить»), чтобы рассматривать такие значения как отсутствующие.
Другая причина заключается в том, что хорошие статистические данные и вычислительные платформы распознают много разных видов пропущенных значений: NaN, действительно пропущенные значения, переполнения, недополнения, неполучения ответов и т. Д. И т. Д. Посредством выделения наиболее отрицательных возможных значений (таких как -9999, - 9998, -9997 и т. Д.), Вы можете легко запросить все пропущенные значения из любой таблицы или массива.
Еще одним является то, что такие значения обычно отображаются на графических дисплеях как экстремальные выбросы. Из всех значений, которые вы могли бы выделить на графике, наиболее отрицательное из всех возможных дает наибольший шанс оказаться далеко от ваших данных.
Есть полезные последствия и обобщения:
Хорошее значение для использования для пропущенных данных в полях с плавающей запятой - это наиболее отрицательное действительное число, примерно равное- 10303 для поплавков двойной точности. (Представьте себе эффект, который будет иметь место для любого среднего значения!). По тому же принципу многие старые программы, которые использовали числа с плавающей запятой одинарной точности, использовали несколько произвольных больших чисел, таких как 1E + 30, для пропущенных значений.
Примите стандартное правило этого типа, чтобы упростить изобретение кодов NoData в новых условиях (когда вы разрабатываете свое собственное программное обеспечение для баз данных).
Спроектируйте свое программное обеспечение и системы, чтобы резко потерпеть неудачу, если они вообще терпят неудачу. Худшие ошибки - это случайные, случайные или крошечные ошибки, потому что они могут остаться незамеченными и их трудно выследить.
источник
NaN
для пропущенных значений. Это не имеет никакой двусмысленности относительно того, является ли это действительное числовое значение или нет, и (учитывая, что большинство стандартных операций с плавающей запятой распространяются на NaN), все вычисления, которые ошибочно воспринимают его как действительную точку данных, даже более надежно и очевидно, чем, сказать,Вы можете использовать что угодно для кодирования пропущенных значений. Некоторые программы, такие как R, используют специальные значения для кодирования отсутствующих данных, но существуют также пакеты программ, например SPSS, которые не имеют специальных кодов для отсутствующих данных. Во втором случае вам нужно сделать произвольный выбор для таких значений. Вы можете выбрать что угодно , но, как правило, хорошей идеей является выбор некоторого значения, которое заметно отличается от ваших данных (например, ваши данные представляют собой проценты в диапазоне 0-100, поэтому вы выбираете 999 для кодирования отсутствующих данных, или ваши данные соответствуют человеческому возрасту и вы используете отрицательные значения для пропущенных наблюдений). Идея заключается в том, что таким образом вы сможете заметить, если что-то пошло не так и цифры не складываются.
Однако проблема с такой кодировкой заключается в том, что вы фактически не можете заметить специальную кодировку и в итоге получите результаты с мусором.
источник
Есть ли вычисленные переменные в наборе данных? Или это аналитический набор данных, который поступает из объединенных / отсортированных данных? Некоторые программы используют очень большие отрицательные значения для обозначения пропущенных данных. Но другое программное обеспечение создает недостающие значения с помощью NA или
.
. Когда они не совпадают, обычно некоторая последующая обработка приводит к разногласиям.источник
Of course, in SPSS, the missing value(s) 999 or whatever IS tagged as a special missing code and handled separately from other values. It may be tabulated separately or excluded entirely. A distinction is made from the result of things like zero division or log(0).
источник