У мене є набір даних. Є багато відсутніх значень. Для деяких стовпців відсутнє значення було замінено на -999, а для інших стовпців значення пропущене було позначено як "NA".
Чому б ми використовували -999 для заміни відсутнього значення?
У мене є набір даних. Є багато відсутніх значень. Для деяких стовпців відсутнє значення було замінено на -999, а для інших стовпців значення пропущене було позначено як "NA".
Чому б ми використовували -999 для заміни відсутнього значення?
Відповіді:
Це утриманка з більш ранніх часів, коли програмне забезпечення комп'ютера зберігало числові вектори як числові вектори. Жодне реальне число не має семантики "Я відсутній". Тож коли ранній статистичний програмний апарат мав розмежовувати "справжні" числа та відсутні значення, вони вводили щось, що "очевидно" не було дійсним числом, як -999 чи -9999.
Звичайно, те, що -999 або -9999 означало відсутність значення, зовсім не є "очевидним". Досить часто це, безумовно, може бути дійсним значенням. Якщо ви чітко не перевірите наявність таких значень, у ваших аналізах можуть виникнути всілякі "цікаві" помилки.
В даний час числові вектори, які можуть містити пропущені значення, внутрішньо представлені як "збагачені" числові вектори, тобто числові вектори з додатковою інформацією про те, які значення відсутні. Звичайно, це набагато краще, тому що тоді відсутні значення будуть розглядатися як такі, а помилково не трактуватися як дійсні.
На жаль, деякі програми все ще використовують таку умову, можливо, для сумісності. А деякі користувачі розбавили цю конвенцію через неофіційний осмос і вводять -999 замість NA, навіть якщо їх програмне забезпечення підтримує чисто введення пропущених значень.
Мораль: не кодуйте пропущені значення як -999.
Такі значення є для баз даних. Більшість баз даних давно, і багато сьогодні виділили фіксовану кількість цифр для цілочисельних даних. Число на зразок -999 - це найменше, яке можна зберігати в чотири символи, -9999 - в п'ять символів тощо.
(Само собою зрозуміло, що - за визначенням, числове поле не може зберігати буквено-цифрові символи, такі як "NA". Для представлення відсутніх або недійсних даних слід використовувати деякий числовий код.)
Навіщо використовувати найнегативніше число, яке можна зберегти для позначення відсутнього значення? Тому що якщо ви помилково трактуєте це як дійсне число, ви хочете, щоб результати були різко неправильними. Чим далі ваші коди для пропущених значень стають реалістичними, тим безпечнішими ви є, оскільки сильно неправильний ввід зазвичай викручує вихід. (Надійні статистичні методи - помітні винятки!)
Як могла статися така помилка? Це відбувається весь час, коли обмінюються даними між системами. Система, яка передбачає, що -9999 являє собою відсутнє значення, буде блискавично виводити це значення, коли ви записуєте дані в більшість форматів, таких як CSV. Система, яка читає, що файл CSV, можливо, не "знає" (або не буде "сказано"), щоб вважати такі значення як відсутні.
Ще одна причина полягає в тому, що хороші статистичні дані та обчислювальні платформи розпізнають багато різних видів пропущених значень: NaNs, справді відсутні значення, переливи, підтоки, невідповіді тощо, тощо. Виділяючи найбільш негативні можливі значення (наприклад, -9999, - 9998, -9997 і т. Д.) Ви спрощуєте запит на всі пропущені значення з будь-якої таблиці або масиву.
Ще одне полягає в тому, що такі значення зазвичай відображаються на графічних екранах як екстремальні люди. З усіх значень, які ви могли виділити на графіці, найбільш негативним є найбільший шанс бути далеко від ваших даних.
Є корисні наслідки та узагальнення:
Прийміть стандартне правило такого типу, щоб полегшити винахід кодів NoData в нових обставинах (коли ви розробляєте власне програмне забезпечення бази даних).
Створіть, щоб ваше програмне забезпечення та системи різко вийшли з ладу, якщо вони взагалі вийшли з ладу. Найгірші помилки - це переривчасті, випадкові чи крихітні, тому що вони можуть залишатися непоміченими та важко полювати.
Ви можете використовувати що- небудь для кодування відсутніх значень. Деякі програми, як-от R, використовують спеціальні значення для кодування відсутніх даних, але існують також програмні пакети, наприклад, SPSS, які не мають спеціальних кодів для відсутніх даних. У другому випадку для таких значень потрібно зробити довільний вибір. Ви можете вибрати що завгодно , але, як правило, корисно вибрати якесь значення, яке помітно відрізняється від ваших даних (наприклад, ваші дані - це відсотки в діапазоні 0-100, тому ви вибираєте 999 для кодування відсутніх даних, або ваші дані є віком людини і ви використовуєте негативні значення для пропущених спостережень). Ідея цього полягає в тому, що, роблячи це, ви повинні мати можливість помітити, якщо щось пішло не так, а цифри не збігаються.
Проблема такого кодування полягає в тому, що ви насправді не можете помітити спеціальне кодування і закінчитись результатами сміття.
Чи є в наборі даних обчислені змінні? Або це аналітичний набір даних, який надходить у форму об'єднаних / відсортованих даних? Деякі програми використовують дуже великі негативні значення для позначення відсутніх даних. Але інше програмне забезпечення створює пропущені значення з NA або .
. Якщо вони відмовляються, зазвичай деяка постійна обробка призводить до розбіжностей.