Відсутні дані - причини, ідентифікація та атрибуція - ThinkR - Сертифікація; Навчання

Але де вони? Зараз справа не в тому, куди вони пішли, а в тому, як їх замінити. Протягом своєї кар’єри ми всі мали досвід розбиття голови, щоб знати, як ми зможемо використовувати ці дані, пронизані відсутніми значеннями, тому що ми знаємо, що якість наших даних є одним з головних ключів до проект даних.
Перше, що потрібно зробити, зіткнувшись із незнайомими або незнайомими нам даними, - це поглянути на голову, яку вона має: швидко подивіться на резюме і деякі графіки пізніше (див. статтю, присвячену пасткам, щоб уникнути, коли ви хочете переглянути свої дані: https://thinkr.fr/les-pieges-de-la-representation-de-donnees/), ми вже маємо більш чітке уявлення про Попереду роботи з прибирання.
Ще одна функція, яка може бути корисною для отримання першого уявлення про наші дані, і яка надає кількість відсутніх значень на змінну: skim () пакету або функція glimpse () пакета:
| Ім'я | райдужка. пропустити |
| Кількість рядів | 150 |
| Кількість стовпців | 5 |
| _______________________ | |
| Частота типу стовпця: | |
| фактор | 1 |
| числовий | 4 |
| ________________________ | |
| Змінні групи | Жоден |
Тип змінної: коефіцієнт
| Види | 33 | 0,78 | ПОМИЛКОВИЙ | 3 | ver: 40, vir: 40, set: 37 |
Тип змінної: числовий
| Сепал.Довжина | 20 | 0,87 | 5.82 | 0,83 | 4.4 | 5.1 | 5.75 | 6.4 | 7.9 | ▇▇▇▃ |
| Ширина | 32 | 0,79 | 3.08 | 0,42 | 2.2 | 2.8 | 3,00 | 3.3 | 4.4 | ▃▇▆▂ |
| Пелюстка. Довжина | 30 | 0,80 | 3.81 | 1,74 | 1.0 | 1.6 | 4.45 | 5.1 | 6.7 | ▇▅▇▃ |
| Пелюстка. Ширина | 35 | 0,77 | 1.14 | 0,76 | 0,1 | 0,3 | 1.30 | 1.8 | 2.5 | ▇▂▆▅▃ |
Але будьте обережні! Перш ніж з головою приступати до вивчення різних методів обчислення, чи потрібно вам уже знати визначити відсутні дані. Насправді вони не завжди матеріалізуються чітким “НС”. Це також корисно зрозуміти причини.
Чому у мене відсутні дані ?
Оскільки ми ще не живемо в найкращому з усіх можливих світів (не жартуй!), багато факторів можуть бути враховані залежно від характеру та походження ваших даних. Відсутні дані класифікуються за механізмом, що призвів до їх відсутності:
- MCAR: Відсутні повністю навмання: ймовірність того, що дані відсутні для тієї чи іншої змінної, не залежить від інших змінних, таких як втрата диска, що містить 10% даних, випадання аналізу крові, ...
- MAR: Випадково відсутні Наприклад, саме вимірювання ваги буде залежати від віку (тобто дорослі менше, ніж діти).
- MNAR: відсутні випадково: ймовірність того, що дані відсутні для змінної, залежить від непоміченого значення. Це приклад людей з високими доходами, які менше відповідають на питання про свою зарплату, або ВІЛ-позитивних пацієнтів, які менше відповідають на питання про ВІЛ-позитивний статус.
Відсутні дані, знайте, як їх розпізнати
"NA" - це символ відсутніх даних у R, як і багато інших мов (не плутайте його з "NaN", що означає "не число", яке може з'явитися, наприклад, при діленні на нуль). Але відсутні дані не завжди передаються в НА. Нижче наведено неповний перелік випадків, з якими ми можемо зіткнутися:
- Найпростіший випадок ідентифікувати - це порожній символ або пробіл для змінних типу рядка. Також можна мати справу з "відсутністю даних".
- У тому ж типі справи, але для числових змінних, регулярно знаходять "999", а інші добровільно невідповідні числа.
- Значення викидів також відсутні
- У часових рядах кілька випадків:
- Останнє спостереження повторюється, поки не спостерігаються нові дані
- Повторюються цілі послідовності: попередній день/тиждень/місяць
- 0 замість NA або іноді інше низьке постійне значення
У певній кількості випадків, згаданих вище, зокрема, повторення послідовностей, це той випадок, коли дані вже оброблені третьою стороною, щоб вони не були відсутні. Виявлення їх може становити справжню проблему, оскільки метод заміни, який застосовується апріорі, може бути не найбільш адекватним (заміна відсутнього значення нулем, коли це змінна, значення якої завжди між 100 і 150, насправді не можна вважати хорошим ідея). Ми повинні пам’ятати, що без якісних даних (і, отже, без відповідного методу управління відсутніми даними), неможливо буде осмислити наш аналіз.
Візуалізація відсутніх даних
“Візуалізуйте щось, що не існує ... (але що ви викурили?)” Ви подумаєте ... Насправді існує багато пакетів R, які мають спеціальні функції для графіку відсутніх даних - так що ні, це не божевільна ідея. Ідея полягає в тому, щоб зрозуміти наші відсутні дані та визначити закономірності, якщо такі є.
Пакунок
- це пакет, який дозволяє переглядати цілий набір даних. Функція vis_miss () фокусується на відсутніх значеннях усіх наших даних: відсоток NA для кожної змінної та загальний, візуалізація
Пакунок
Цей пакет повністю призначений для відсутніх даних, зокрема з 4 функціями, що дозволяють візуалізувати їх, не лише змінну за змінною, а й відносини між ними.
- функція geom_miss_points () замінює NA зі значеннями на 10% нижчими, ніж спостережуване мінімальне значення змінної, що дозволяє їх переглядати, як показано нижче:
- Функція gg_miss_var () представляє інший підхід для візуалізації відсутніх даних:
- Функція gg_miss_case ():
- Функція gg_miss_fct () відображає кількість відсутніх значень кожного стовпця відповідно до категоріальної змінної в наборі даних:
Пакунок
Функція gg_miss_upset () може бути корисною для візуалізації комбінацій НС і перетинів змінних.
Різні стратегії імпутації
Імпу ... що?імпутація відсутні дані - це просто результат замінити ці значення за допомогою найбільш підходящого методу.
Якщо кількість відсутніх даних можна розглядати як незначно, Враховуючи розмір нашої вибірки, можна просто розглянути відповідні спостереження і, таким чином, не вводити упередження в наш аналіз. Варіант R, що відповідає цьому рішенню, має встановити для параметра na.rm значення TRUE, але це не варіант за замовчуванням, насправді він передбачає втрата інформації, і ми не завжди готові піти на цю жертву.
Ну, а якщо ні, то що ми робимо ?
Методологія, яку ми застосовуємо для заміни відомих нам відсутніх даних, дуже тісно пов’язана з набором даних; багато методів покладаються на інші змінні, якими ми маємо у своєму розпорядженні, деякі з наведених нижче прикладів ілюструють цю думку.
У деяких випадках можуть бути застосовані дуже прості методи. Кілька прикладів:
- Для категоріальних змінних:
- Заміна на домінантне значення (тобто найчастіше)
- Заміна на домінуюче значення за класом (якщо врахувати, наприклад, зріст людини, класифікований: домінуюче значення буде різним залежно від статі)
- Подумайте про значення відсутніх даних: чи немає значення цієї нестачі даних ? Можливо, це заслуговує на створення нової категорії
- Щодо числових змінних, пакет пропонує безліч рішень:
- Заміна на усесвітнє середнє або в середньому по класу: na.aggregate. Це найпопулярніший метод, але рідко є життєздатним рішенням. Подивимось простий приклад:
- Повторення останній або наступне спостережуване значення: na.locf ()
- Інтерполяція між точками: для змінних, відсортованих за часом або за іншою змінною. Інтерполяція лінійна завдяки функції na.approx (), інтерполяції кубічний сплайн з функцією na.spline (). Зверніть увагу, тут ми припускаємо, що кожне спостереження віддалене на одну одиницю, а не індексується змінною сортування.
- Інтерполяція через метод kNN: ідея полягає в тому, щоб обчислити відстані між спостереженнями та віднести до відсутніх значень середнє значення, яке спостерігається у k найближчих сусідів: функція kNN () пакету .
- Для часових рядів:
- Ми бачили це раніше, повторення послідовності може бути життєздатним рішенням
- Для цього використовується функція na.StructTS () пакета відтворювати сезонність серії із використанням сезонного фільтра Кальмана
Це все добре, але це не трохи саморобки ?
Якщо ці методи можуть бути задовільними в одних випадках, вони недостатньо сильні в інших, саме тому є набагато складніші алгоритми імпутації, і нам пощастило, велика спільнота R вже вивчила цю тему і пропонує нам дуже добре зробив пакети.
Пакунок
Функція impute.svd () пакету дозволяє застосувати алгоритм декомпозиції сингулярних значень, щоб передбачити відсутні значення.
Пакет (багатовимірне введення за допомогою ланцюгових рівнянь)
Це одна із зірок пакетів імпутації відсутніх даних. Його використання передбачає, що дані є МАР (Відсутні випадково). Кожна змінна асоціюється з моделлю імпутації, умовно з іншими змінними набору даних: якщо у нас є змінні Xk, відсутні дані змінної Xi будуть замінені прогнозами моделі, створеної з інших змінних. Цей пакет представляє цілком повне рішення, враховуючи кількість впроваджених методів, я пропоную вам проконсультуватися з допомогою пакету для вичерпного списку. Якщо назвати декілька, параметр методу функції миші () може приймати такі значення:
- Для будь-якого типу змінної:
- pmm: прогнозне середнє збіг
- візок: дерева регресії та класифікація
- rf: випадкова лісова модель
- Для числових змінних:
- норма: лінійна регресія
- квадратичний
- Для двійкових змінних:
- logreg: логістична регресія
- Для факторіальних змінних:
- polyreg: множинна логістична регресія
- lda: лінійний дискримінантний аналіз
- Для впорядкованих факторних змінних:
- polr: модель пропорційних шансів
Ще однією причиною того, чому цей пакет схвалює спільнота, є те, що він має так багато можливостей, щоб робити багато речей, крім імпутації, таких як:
- Переглянути відсутні дані
- Діагностуйте якість приписаних значень
- Проаналізуйте кожен заповнений набір даних
- Включіть персоналізовані методи імпутації
Нижче наведено приклад використання цього пакета:
Ця візуалізація дозволяє нам швидко визначити, де відсутні значення у нашому наборі даних. Тут ми бачимо:
- 13 спостережень не мають відсутніх значень
- для 3 спостережень значення chl відсутнє
- для 1 спостереження значення bmi відсутнє
- тощо ...
Параметр m, що представляє кількість проведених імпутацій. Функція Complete () дозволяє вибрати одну з міркувань, щоб заповнити наш набір даних:
Функція with () дозволяє створювати моделі для кожного згенерованого набору даних:
Функція pool () дозволяє, як випливає з назви, поєднувати моделі:
Пакунок
Від імені першої жінки-авіатора, яка перетнула Атлантику сама (Амелія Ерхарт), яка нібито пропала під час перельоту Тихого океану (вона "відсутня", як і наші зниклі дані: я не можу знати, чи мені це круто на поганий смак, якщо його так назвали), цей пакет, як і раніше описаний пакет, дозволяє проводити багаторазові імпутації, що має перевагу у зменшенні упередженості, одночасно збільшуючи релевантність імпутації. Ще один спільний момент: відсутніми даними вважається MAR, але тут додається умова, що змінні набору даних повинні мати багатовимірний нормальний розподіл, що передбачає трансформацію змінних апріорі, а отже, більше роботи, ніж якщо l '' ми використовуємо пакет, який підтримує будь-який тип даних.
Функція amelia () представляє алгоритм, що поєднує класичний алгоритм максимальна ймовірність з бустрап підхід, що робить його швидким та надійним методом.
Пакунок
Як випливає з назви, цей пакет пропонує використовувати метод завершення на основі випадкові ліси. Швидко: для кожної змінної будується випадкова лісова модель, прогнози якої дозволять замінити відсутні значення. Можливість повернути помилку, що вийшла з мішка, пов’язану з кожною змінною, забезпечує високий рівень контролю за імпутаціями на рівні кожної змінної.
Пакунок
Цей пакет, відомий з багатьох причин, окрім імпутації, також має своє місце в цій статті завдяки своїм функціям impute () (що замінює відсутні значення змінної на середнє, максимальне чи мінімальне значення) та aregImpute (), що дозволяє обчислення за допомогою методів адитивні регресійні моделі, завантаження та з PMM (Прогнозне середнє збіг).
Пакунок
ІМ, ви можете собі уявити, для Багаторазова імпутація. Як і деякі пакунки вище, цей пропонує кілька моделей імпутації, поєднаних із методом PMM, але він має деякі додаткові переваги, такі як, наприклад, функції hist () та Rhats () дозволяють a графічна діагностика моделі імпутації та збіжність процесів імпутації.
Прийти до висновку:
Як підкреслює Ів Галлієн у коментарі нижче, алгоритми імпутації можуть бути дуже ефективними, все залежить від механізму, що призвів до наявності відсутніх даних та наявності інших даних, які можуть або не можуть допомогти знайти дані. Відсутні дані. Якщо у вас є багато відсутніх даних, але мало змінних, магічного рішення не буде ...