Главная страница

Как генерировать шумовой макет временных рядов или сигнала (в Python). Как генерировать шумовой макет временных рядов или сигнала (в Py. Python timeseries signalprocessing


Скачать 0.51 Mb.
НазваниеPython timeseries signalprocessing
АнкорКак генерировать шумовой макет временных рядов или сигнала (в Python
Дата21.12.2021
Размер0.51 Mb.
Формат файлаdocx
Имя файлаКак генерировать шумовой макет временных рядов или сигнала (в Py.docx
ТипДокументы
#312837

Как генерировать шумовой макет временных рядов или сигнала (в Python)

python time-series signal-processing

1241просмотра

1ответ

Довольно часто мне приходится работать с кучей шумных, несколько коррелированных временных рядов. Иногда мне нужны какие-то фиктивные данные, чтобы проверить мой код или предоставить пример данных для вопроса о переполнении стека. Я обычно заканчиваю тем, что загружаю некоторый подобный набор данных из другого проекта, или просто добавляю несколько синусоидальных функций и шумов и трачу некоторое время на его настройку.

Какой у тебя подход? Как вы генерируете шумовые сигналы с определенными характеристиками? Я только что пропустил какой-то явно очевидный стандартный пакет, который делает именно это?

Функции, которые я обычно хотел бы получить в моих макетных данных:

  • Изменение уровня шума с течением времени

  • Некоторая история в сигнале (как случайная прогулка?)

  • Периодичность в сигнале

  • Возможность создания другого временного ряда с аналогичными (но не точно такими же) функциями

  • Может быть, куча странных провалов / пиков / плато

  • Возможность воспроизвести его (немного семян и несколько параметров?)

Я хотел бы получить временные ряды, подобные двум ниже [A]:

 

Я обычно заканчиваю созданием временного ряда с небольшим количеством кода, подобного этому:

import numpy as np
n = 1000

limit_low = 0

limit_high = 0.48

my_data = np.random.normal(0, 0.5, n) \

+ np.abs(np.random.normal(0, 2, n) \

* np.sin(np.linspace(0, 3*np.pi, n)) ) \

+ np.sin(np.linspace(0, 5*np.pi, n))**2 \

+ np.sin(np.linspace(1, 6*np.pi, n))**2
scaling = (limit_high - limit_low) / (max(my_data) - min(my_data))

my_data = my_data * scaling

my_data = my_data + (limit_low - min(my_data))

Что приводит к временному ряду, как это:



С чем я могу работать, но все же не совсем то, что я хочу. Проблема здесь в основном в том, что:

  1. у него нет истории / случайного блуждания

  2. это довольно много кода и настройки (это особенно проблема, если я хочу поделиться примером временных рядов)

  3. Мне нужно перенастроить значения (частоту синусов и т. Д.), Чтобы получить другой похожий, но не точно такой же временной ряд.

[A]: Для тех, кто интересуется, временной ряд, изображенный на первых двух изображениях, представляет собой интенсивность движения в двух точках вдоль одной дороги в течение трех дней (с полуночи до 6 часов утра) в автомобилях в секунду (среднее значение скользящего окна Хеннинга за 2 минуты). ). Переделано до 1000 баллов.

Автор: Swier ИсточникРазмещён: 14.07.2019 02:10

Ответы (1)

1плюс

Решение

Вы смотрели в Цимулус ? Используя Generators, вы должны иметь возможность генерировать данные с конкретными шаблонами, периодичностью и циклами.

Проект TSimulus предоставляет инструменты для определения формы временного ряда (общие закономерности, циклы, важность добавленного шума и т. Д.) И для преобразования этой спецификации в значения временного ряда.


В противном случае вы можете попробовать «нарисовать» данные самостоятельно и экспортировать эти точки данных с помощью Time Series Maker .


написать администратору сайта