Методы определения временной ковариации среди многих временных рядов?
Мы пытаемся определить синхронность изменения химического состава воды среди нескольких сотен участков. Для каждого сайта у нас есть временной ряд концентрации.
Мы хотели бы количественно определить общую временную ковариацию (концентрации повышаются и понижаются одновременно) между участками и заинтересованы в различных статистических подходах, чтобы сделать это.
Различные химические параметры имеют очень разные абсолютные концентрации (например, 1-100 ч / млн для углерода, от 0,001 до 1 ч / млн для фосфора), поэтому необходим относительный показатель. Ранее мы делали это с помощью среднего значения попарно масштабированных ковариаций, но, безусловно, есть более элегантный метод.
Мы рады использовать R, Pyton или Matlab. Спасибо!
1 ответ
Я не гидролог и не статистик; Вы можете сделать репост на Cross Validated.
Я с нетерпением жду встречи с тем, что еще это сообщество хочет донести до стола.
Когда вы говорите среднее значение попарно масштабированных ковариаций, я предполагаю, что вы получаете матрицу результатов, в которой каждый элемент является средним для удобства углерода и фосфора.
Эта матрица может использоваться для кластеризации путем преобразования диапазона в матрицу расстояний. [-1,1] -> [+n,0]
, Например, вы можете взять среднее значение зависимости углерода и фосфора |-(1-x)|
так что антикоррелированные выборки (-1) приближаются к расстоянию 2, где высоко коррелированные выборки (1) приближаются к 0. Вы также можете взять евклидово расстояние между векторами ковариаций.
У меня есть скрипт на GitHub, который будет генерировать указанное количество кластеров, используя Spectral, Agglomerative или Kmeans кластеризацию на пандах и sklearn в python.
Также R hclust
Метод (иерархическая кластеризация прихода) дает хорошие результаты, а у jmp есть приятный интерактивный иерархический вид кластера, где вы можете вращать узлы с помощью кнопок щелчка.
Проверка того, что образцы образуют кластеры как в пространстве, так и в физическом пространстве, проверяет зависимость в системе, но как насчет времени и синхронности!?
Для атаки на время я бы выполнил сравнительный оконный анализ синхронных подмножеств из вашего временного ряда (множественное число). Например, если ваши 2 сайта имеют год перекрывающихся данных с выборками 3 раза в день, вы можете рассчитать корреляцию по неделям для недель, начиная с каждого дня jan(1-7), jan(2-7) и т. Д. Распределение соответствует Ваш набор всех элементов во всех временных рядах ковариаций обеспечивает значения p для ковариации в заданные недели, чтобы определить, когда уровни углерода и фосфора значительно изменялись.