Як має рухатися середня середня кількість відсутніх точок даних?


10

Я пишу програму, яка в середньому важить користувача за різні дні. Я планую використовувати середню середню в 5 балів (поточний день, два до і два після). Іноді точка даних відсутня протягом 1-2 днів. Як зазвичай розглядаються ці справи?

(якщо є кращий фільтр низьких частот, який я міг би використовувати, я б радив пропозицій)


Перше, що спадає на думку - це інтерполювати точки перед використанням фільтра ковзних середніх
someguy

3
Дійсно більше статистичного питання, ніж питання обробки сигналів, принаймні за відсутності більше контексту. Але ви можете просто пропустити перерахунок середнього значення, використовувати поточне середнє як значення заміщення, або чекати подальших вимірювань та спроб інтерполяції, лінійної чи іншої.
Даніель Р Хікс

Як зазначали інші, це, як правило, рішення, яке стосується конкретної програми, засноване на вашому розгляді того, як ви хочете вести себе відфільтрований вихід. Більшість теорій обробки сигналів базується на рівномірно розподілених зразках, тому ви не збираєтесь отримати те, що об'єктивно можна назвати "правильною відповіддю".
Джейсон R

@JasonR Я фільтрую, щоб дати більш обґрунтовану оцінку ваги користувача в цей момент. Дані є рівномірно вибіреними (частота вибірки = 1 / день), за винятком деяких точок даних.
Анна

@Anna: Правильно, я розумію, чому ти фільтруєш дані. Однак ваші дані не є вибірково відібраними, оскільки у вас відсутні точки даних. Тому, як я зазначив, ви, швидше за все, не знайдете задовільної теоретичної відповіді на свою проблему. Можливо, відповідь буде тимчасовим рішенням, яке, на вашу думку, "має сенс" для вашої конкретної програми.
Джейсон R

Відповіді:


4

Як загальне враження, регресія буде краще працювати в автоматичному встановленні пропущених точок, а не середній середній фільтр, який ви вибрали.

Якщо ви використовуєте AR (авторегресивний фільтр) або фільтр ARMA - ви можете мати передбачуване значення вибіркового виходу на основі минулих входів.

Х^[i]=ωкх[i-1-к]+η

Де - передбачуване значення.Х^[i]

Зокрема, у вашому випадку скажіть, що ви знаєте, що вага людини має певний діапазон . Тепер, якщо у вас немає значення - застосуйте дві різні заміни - одну з Min та одну з Max і на основі доступної моделі у вас буде два крайні результати для і ви можете вибрати щось серед них.Хмах,Хмiнх[i-1]Х^[i]

Існують різні інші альтернативи - ви можете зберегти

Х^[i]=Х[i-1]
Х^[i]=Середня тривалість вибірки X 

По суті це гра передбачення цього значення і продовжувати використовувати його як сигнал. Звичайно, прогноз не буде таким, як оригінальний зразок, але це не ціна, яку ви платите за відсутність даних.


2
Чому ви кажете, що регресія краще спрацює? Спасибі
Spacey

3

Простий і загальний метод заповнення відсутніх даних, якщо у вас є пробіли повних даних, - це використовувати
лінійну регресію . Скажімо, у вас 1000 прогонів із 5 підряд, при цьому жодного не пропускається.
Налаштуйте вектор 1000 x 1 y та 1000 x 4 матрицю X:

y       X
wt[0]   wt[-2] wt[-1] wt[1] wt[2]
---------------------------------
68      67     70     70    68
...

Регресія дасть вам 4 числа abcd, які дають найкращу відповідність

wt[0] ~= a * wt[-2]  + b * wt[-1]  + c * wt[1]  + d * wt[2]

для ваших 1000 рядків даних - різні дані, різні абс.
Потім ви використовуєте ці abcd для оцінки (прогнозування, інтерполяції) відсутнього wt [0].
(Для людських ваг я б очікував, що abcd буде навколо 1/4.)

У python див. Numpy.linalg.lstsq .

(Існують мільйони книг і паперів про регресію на всіх рівнях. Щодо зв’язку з інтерполяцією, я не знаю хорошого вступу; хтось?)


1

[а,б,c,?,е]

а+б+c+е4

1

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

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