Як боротися з розривами / NaN в даних часових рядів при використанні Matlab для автокореляції та нейронних мереж?


9

У мене є часовий ряд вимірювань (висоти - одновимірний ряд). У період спостереження процес вимірювання за деякий час знижувався. Таким чином, отримані дані є вектором з NaN, де у даних були прогалини. Використовуючи MATLAB, це викликає у мене проблеми при обчисленні автокореляції ( autocorr) та застосуванні нейронних мереж ( nnstart).

Як слід вирішувати ці прогалини / NaN? Чи потрібно просто видалити їх з вектора? Або замінити їх запис інтерпольованим значенням? (якщо так, то в MATLAB)

Відповіді:


4

Я б взагалі не торкався даних. Використовуйте це для автокореляції з NaN:

http://www.mathworks.com/matlabcentral/fileexchange/43840-autocorrelation-and-partial-autocorrelation-with-nans/content/nanautocorr.m

"не торкатися даних" означає не видаляти будь-які дані або часовий крок або замінювати 0 або середнє значення, це може поставити під загрозу інформацію про лінійну залежність від конкретного часу. Я також уникав би імітувати значення в прогалинах, якщо ви зацікавлені в автокореляції "SAMPLE", так чи інакше навіть найкраща техніка моделювання не додасть більше інформації про автокореляцію, будуючи на основі самих даних. Я частково перекодував функції автокореляції матлаба (посилання вище) та часткову автокореляцію для роботи з NaN: будь-які пари даних, включаючи NaN, виключаються з обчислень. Це робиться для кожного відставання. Це працювало для мене. Будь-яка пропозиція добре прийнята.


Ласкаво просимо @Fabio: Не могли б ви пояснити, що ви маєте на увазі під "не торкатися даних"? Ви маєте на увазі нічого не видаляти? Це також допоможе познайомити з вами зміст та пояснити, чому це допомагає ОП.
Момо

Привіт Момо, дякую за коментар. "не торкатися даних" означає не видаляти будь-які дані або часовий крок або замінювати 0 або середнє значення, це може поставити під загрозу інформацію про лінійну залежність від конкретного часу. Я частково перекодував функції автокореляції матлаба (посилання вище) та часткову автокореляцію для роботи з NaN: будь-які пари даних, включаючи NaN, виключаються з обчислень. Це робиться для кожного відставання. Це працювало для мене. Будь-яка пропозиція добре прийнята.
Фабіо

3

Існують деякі алгоритми, які не захищені від відсутніх значень, тому кращим рішенням є пошук їх (наприклад, R acfдля автокореляції).

Загалом, шлях - або просто відкинути дані з відсутніми спостереженнями (це може бути дуже боляче), або просто приписати їхні значення - середніх сусідів може бути достатньо для плавних рядів і невеликих прогалин, але, звичайно, є безліч інших більш потужних методів, з використанням сплайнів, випадкових / найчастіших значень, імпутації з моделей тощо.


2
ACF з пропущеним значенням обчислюється у звичайному порядку, але пропущені значення "пропускаються" у сумах (тобто формула ACF для заданого відставання виглядає як сума, поділена на суму, у кожному з цих сум пропущені значення можуть бути пропустити). Це не те саме, що видалення пропущених значень з вихідних даних. Проблема з matlab полягає в тому, що він не пропускає NaN, і включаючи те, що в розрахунку все перетворює на NaN.
Нуль

1

Використовуйте функцію виявлення втручання для імпульсування відсутніх долин, що використовують корисну структуру ARIMA та будь-які місцеві тенденції часу та / або зрушення рівня.


1

тут є 2 проблеми. перший - надання значущої числової основи для вашої відповіді на автокореляцію в matlab. щоб це сталося, вам потрібно розтягнути та / або зафіксувати частину часових рядів своїх векторів даних ... цей компонент «цілісності даних» є найбільш фундаментальним.

по-друге, вам потрібно вирішити, як обробити компонент "значення" вашого вектора ... це значною мірою залежить від конкретної програми щодо того, що найкраще припустити (наприклад, малі пропущені часові позначки та відповідні NaNs або Nulls можна було б безпечно інтерполювати від своїх сусідів ... при більших проміжках встановлення значення нуля, ймовірно, безпечніше ... або замінити, як рекомендовано вище - очевидно, щоб це було значимим, прогалини знову повинні бути порівняно невеликими.) .

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.