Я создаю приложение для Android, которое записывает данные акселерометра во время сна, чтобы анализировать тенденции сна и, по желанию, будить пользователя в нужное время во время легкого сна.
Я уже построил компонент, который собирает и хранит данные, а также сигнализацию. Мне все еще нужно разобраться с чудовищем отображения и сохранения данных сна действительно значимым и ясным способом, который предпочтительно также поддается анализу.
Пару картинок говорят две тысячи слов: (Я могу опубликовать только одну ссылку из-за низкой репутации)
Вот нефильтрованные данные, сумма движения, собранная с интервалом в 30 секунд
И те же данные, сглаженные моим собственным проявлением сглаживания скользящей средней
редактировать) обе диаграммы отражают калибровку - есть минимальный «шумовой» фильтр и максимальный фильтр отсечки, а также уровень срабатывания сигнализации (белая линия)
К сожалению, ни одно из этих решений не является оптимальным - первое довольно сложно понять для среднего пользователя, а второе, которое легче понять, скрывает многое из того, что происходит на самом деле. В частности, усреднение удаляет детали всплесков движения, и я думаю, что они могут быть значимыми.
Так почему же эти графики так важны? Эти временные ряды отображаются в течение ночи в качестве обратной связи с пользователем и будут сохранены для последующего просмотра / анализа. Сглаживание в идеале снизит стоимость памяти (как оперативной памяти, так и хранилища) и ускорит рендеринг на этих телефонах / устройствах с нехваткой ресурсов.
Очевидно, что есть лучший способ сгладить данные - у меня есть некоторые смутные идеи, такие как использование линейной регрессии для определения «резких» изменений в движении и изменение сглаживания моей скользящей средней в соответствии с этим. Мне действительно нужно больше руководства и информации, прежде чем я углублюсь в то, что можно решить более оптимально.
Благодарность!