Как вычислить вейвлет-когерентность двух заданных временных рядов в Python?Python

Программы на Python
Ответить
Anonymous
 Как вычислить вейвлет-когерентность двух заданных временных рядов в Python?

Сообщение Anonymous »

Я хочу вычислить вейвлет-когерентность двух заданных временных рядов в Python.
Я пробовал работать с pycwt, но при вычислении перекрестного вейвлет-преобразования я обнаружил проблемы из-за нехватки данных или слишком большого количества тенденций (обе вещи уже позаботились, так что я мало что могу сделать). Я вычисляю перекрестный вейвлет вручную и продолжаю делать то же самое с когерентностью вейвлета, но мне нужна функция сглаживания, и все становится запутанным и сложным. Я не думаю, что есть простой способ сделать это, но, возможно, у кого-то есть более ясная идея.
Я следую статье «Частичная вейвлет-когерентность как надежный метод оценки нейрососудистой связи у новорожденных с гипоксически-ишемической энцефалопатией». ", Т. Херманс и др.
Мне также известна очень полезная реализация когерентности вейвлетов на языке R, которая очень легко ее вычисляет, но меня попросили выполнить реализацию на Python именно так.
Спасибо всем!
Пробовал пакет pycwt и еще много интересного... Я работаю над этим уже некоторое время. Код прилагается.
Первая попытка, где TS — моя таймсерия:

Код: Выделить всё

import numpy as np
import pycwt as wv

#Parameters:
N = len(TS['signal1']) # Length of time series.
mother = Morlet(6)
dt = 1
s0 = float(2 * dt)
dj = 1/12
J = round(np.log2((N*dt)/s0) / dj)
#J = 7 / dj
scales = s0 * 2**(dj * np.arange(J))

cwt_y1 = wv.cwt(TS['signal1'], dt, dj, s0, J, wavelet='morlet', freqs=None)
cwt_y2 = wv.cwt(TS['signal2'], dt, dj, s0, J, wavelet='morlet', freqs=None)

# Compute cross-wavelet transform
cross_wvt, _, _ = wv.wct(TS['signal1'], TS['signal2'], dt, dj, s0, J, wavelet='morlet', freqs=None)

# Compute wavelet coherence
coherence, phases, _, _, _ = wv.wct(TS['signal1'], TS['signal2'], dt, dj, s0, J, wavelet='morlet', freqs=None, coherence=True)

# Normalize coherence matrix
coherence /= np.max(coherence)
Ошибка:
cross_wvt, _, _ = wv.wct(TS['ave_TOI1'], TS['TOTPOW08_BIS'], dt, dj, s0, J, вейвлет ='morlet', freqs=None)
Внимание: невозможно установить верхнюю границу для несмещенного AR(1). Ряд слишком короткий или тренд слишком велик.
Я ожидал вычисления матрицы вейвлет-когерентности, как в более быстрой реализации R: wtc(signal1, signal2, dj=dj, J1=J , s0=s0, мать=мать, nrands=итерации)

Подробнее здесь: https://stackoverflow.com/questions/793 ... -in-python
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»