Я пытаюсь обезвредить данные финансовых временных рядов (секунда за секундой). У меня очень длинный временной ряд, но я работал со 100 000 наблюдений, просто чтобы проверить, насколько хорошо работает шумоподавление (хаар). Это не так.
Что бы я ни делал, восстановленный сигнал неизменно почти идентичен оригиналу. Очевидно, я хочу сохранить исходный сигнал, но мне кажется, что ряд просто не очищается от шума - финансовый временной ряд, единственный шум которого возникает в разрешении в несколько секунд? Более того, даже на самых малых временных масштабах график восстановленного и исходного графа остается практически неизменным.
Я пробовал изменить материнский вейвлет, длину временного ряда, режим, в котором выполняется реконструкция временного ряда (мягкий против жесткого), и, очевидно, я испортил само пороговое значение. Я начал с рекомендуемого / стандартного порогового значения sqrt (2 * log (len (signal))), но это практически ничего не дало мне, поэтому я постепенно увеличивал его, пока не дошел до совершенно нелепого 2 * len (signal) * * 2 - что должно было сгладить график до неузнаваемости, но практически ничего не дало.
WAVELET = "haar"
LEVEL = 2
signal = training_series
mean = signal.mean()
mean_series = [mean] * len(signal)
signal = [a - b for a, b in zip(signal, mean_series)]
coeffs = pywt.wavedec(signal, WAVELET, level=LEVEL)
sigma = mad(coeffs[-LEVEL])
threshold = sigma * np.sqrt(2*np.log(len(signal)))
coeffs[1:] = (pywt.threshold(i, value=threshold, mode="soft" ) for i in coeffs[1:])
reconstructed_signal = pywt.waverec(coeffs, WAVELET)
Я ожидал, что восстановленный сигнал будет значительно отличаться от исходного сигнала (например, сглаженный, шумоподавленный, менее ... идентичный оригиналу), но это не так. В самом маленьком масштабе (подумайте, каждые 10 или 20 секунд в масштабе 100000 секунд) есть очень незначительное сглаживание, которое по сути просто игнорирует пики и впадины размера 0,01 (наименьшее возможное изменение), но оно почти незначительно.
Я ожидал, что сигнал будет ... ну не знаю ... с шумоподавлением? Я делаю что-то неправильно?