Я задал этот вопрос в StackOverflow, и мне было рекомендовано задать его здесь.
У меня есть два временных ряда данных трехмерного акселерометра, которые имеют разные временные базы (часы запускались в разное время, с небольшим ползучестью во время выборки), а также содержат много пробелов разного размера (из-за задержек, связанных с записью в отдельные флеш устройства).
Используемые акселерометры - недорогой GCDC X250-2 . Я использую акселерометры с максимальным усилением, поэтому данные имеют значительный минимальный уровень шума.
Каждый временной ряд имеет около 2 миллионов точек данных (более часа при 512 выборках в секунду) и содержит около 500 интересных событий, где типичное событие охватывает 100–150 выборок (по 200–300 мс каждая). На многие из этих событий влияют сбои данных во время флэш-записи.
Таким образом, данные не являются первозданными и даже не очень красивыми. Но мой осмотр глазного яблока показывает, что он явно содержит информацию, которая мне интересна. (При необходимости я могу публиковать графики).
Акселерометры находятся в схожих средах, но они только умеренно связаны, то есть я могу наглядно определить, какие события соответствуют каждому акселерометру, но я до сих пор не добился успеха в программном обеспечении. Из-за физических ограничений устройства также монтируются в разных ориентациях, где оси не совпадают, но они настолько близки к ортогональным, насколько я мог сделать их. Так, например, для 3-осевых акселерометров A & B, + Ax отображается на -By (вверх-вниз), + Az отображается на -Bx (слева-справа), а + Ay отображается на -Bz (спереди назад) ,
Моя первоначальная цель - сопоставить шоковые события на вертикальной оси, хотя в конечном итоге я хотел бы: а) автоматически обнаружить сопоставление оси, б) сопоставить активность на сопоставленных тузах и в) извлечь различия в поведении между двумя акселерометрами (например, скручивание) или сгибание).
Природа данных временных рядов делает Python numpy.correlate () непригодным для использования. Я также посмотрел на пакет R's Zoo, но не добился успеха. Я обращался за помощью в различные области анализа сигналов, но я не добился прогресса.
У кого-нибудь есть подсказки, что я могу сделать, или подходы, которые я должен исследовать?
Обновление 28 Фев 2011: Добавлены некоторые участки здесь показывают примеры данных.
Ответы:
Вопрос касается расчета корреляции между двумя нерегулярно дискретизированными временными рядами (одномерные случайные процессы) и их использования для определения временного сдвига, в котором они максимально коррелированы (их «разность фаз»).
Эта проблема обычно не решается при анализе временных рядов, поскольку предполагается, что данные временных рядов собираются систематически (через регулярные промежутки времени). Это скорее область геостатистики , которая касается многомерных обобщений временных рядов. Архетипический набор геостатистических данных состоит из измерений геологических образцов в неравномерно расположенных местах.
С двумя миллионами очков вы сможете обнаружить небольшие отклонения от стационарности. Вполне возможно, что разность фаз между двумя временными рядами также может изменяться со временем. Чтобы справиться с этим, рассчитайте кросс-вариограмму отдельно для разных окон, разнесенных на протяжении периода времени.
источник