Интересное что-то
517 subscribers
2.72K photos
253 videos
139 files
4.52K links
Материалы и мысли, понадерганные отовсюду
Блог: https://t.me/asisakov_channel
Чат: https://t.me/youknowds_chat
Download Telegram
Forwarded from Записки из горящего дома (Anastasia Abrashitova)
ЗВОНИЛ И НЕ ДОЗВОНИЛСЯ

Недавно жизнь занесла меня на Белградский митап QA. Кстати, очень приятное сообщество, всем его очень рекомендую. Надеюсь, я не сильно пошатнула ребят экзистенциальными вопросами к докладам.

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

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

Так вот, стажеру можно, а старшему нельзя. Потому что старший отвечает не за процесс — с кем ты там поговоришь, кому письмо напишешь, кому встречу назначишь, о чем вы поговорите. Старший отвечает за результат: интерфейсы согласованы. Можно было, не дозвонившись, написать в мессенджер или сходить ногами. Можно было связаться с тимлидом соседней команды и узнать, как выйти на контакт с нужным разработчиком. Можно было в конце концов попросить, чтобы интерфейсы с той стороны согласовал кто-то другой. Важно, чтобы они были согласованы, результат, а не процесс.

Младшему говорят, что и как делать.
Мидлу говорят, что делать.
Старшему говорят, какую задачу надо решить.
Ведущему говорят, в какой области надо приложить усилия, задачи он найдет себе сам.

Может показаться, что это только про софты, но нет. Без хардов этого тоже не достичь, просто харды в каждой профессии свои, а софты примерно одинаковые.

QA со мной, кстати, согласились.

#softskills
Тап-аргументация

Это продолжение темы об аргументации. Вот первая заметка, в которой мы определили цель, сформулировали проблему и усилили её, чтобы босс оторвался от телефона и послушал.

Напомню, что всё это значит на примере:

Ситуация: пришёл босс и просит меня взять в работу его идею, обходя существующие процессы.

Цель (то, что я держу в голове на протяжении всего разговора): не брать задачи в бэклог, если они обходят установленные процессы. Даже если задача идёт от босса.

Проблема (то, что я озвучиваю на встрече): «Мы не можем взять эту задачу прямо сейчас.»

Усилитель проблемы (озвучиваю, если вижу, что собеседник слушает невнимательно или не понимает важность вопроса, либо если хочется вызвать эмоцию): «Босс, текущий бэклог уже полностью заполнен задачами, согласованными с тобой и смежными командами. Многие из них имеют строгие сроки и стратегическое значение. Если добавить твою задачу, это приведёт к двум вариантам: либо другие проекты будут задержаны, либо твоя задача останется нерешённой. В итоге возникнет хаос в управлении приоритетами, и эффективность команды снизится.»


___

ТАП-аргументация — это аббревиатура ключевых этапов аргументации: тезис, аргумент, поддержка.


Тезис — это утверждение или предложение, основное послание собеседнику.


Вот три шага, которые сделают из вашего тезиса настоящего мужикотавра:


Шаг №1: тезис однозначен. Он точно передаёт ключевую мысль так, чтобы оставалась только одна интерпретация твоих слов.

Плохой тезис: «Я посмотрю эту задачу и позже дам знать.»

Хороший тезис: «Мы оценим эту задачу так же, как остальные новые задачи, и после 2 апреля вернусь к тебе с более точным ответом.»

Однозначные советы по однозначности: проверить, указаны ли в тезисе место, количество, время, кто даст ответ, ограничения и т.д. Убедиться, что формулировки настолько ясны, что собеседник поймёт их так же, как и ты.



Шаг №2: тезис сформулирован ясно. Он состоит из понятных для аудитории слов и терминов.

Плохой тезис: «Мы проведем небольшой кастдев, посмотрим на Гант (аналогично остальным инновационным инициативам), и в апреле вернусь к тебе с более детализированным, эмпирически обоснованным ответом.»

Хороший тезис: «Мы оценим эту задачу так же, как остальные новые задачи, и после 2 апреля вернусь к тебе с более точным ответом.»


Почему сложная речь не работает?

Иногда мы начинаем заменять простые слова на сложные просто чтобы казаться умнее. Такой ход может сработать с одними, а других, наоборот, раздражает, ведь это выглядит как дешевая манипуляция. Лучше не применять дешевые трюки — выбирайте качественные методы!

Фанфакт: Трамп, например, использует в своих речах лексикон начальной школы, и, по мнению экспертов из Carnegie Mellon University, это помогает ему быть максимально понятным и побеждать в дебатах.


___

Продолжение будет в понедельник.

А с какими ошибками в построении тезисов вы сталкивались? Может, узнали себя или коллегу?
Шаг №3, тезис неизменен в процессе обсуждения — собеседник заявляет свою позицию и придерживается её в течение дискуссии.

Часто вижу как люди умышленно и не очень пользуются сменой тезиса в процессе спора. Обычно это происходит, когда одной стороне не хватает аргументов, но она принципиально не хочет соглашаться с другой.


1. Пример начального тезиса исполнителя

Учитывая ограниченность моего временного ресурса и текущую операционную загрузку, я вынужден отложить детальный анализ данной задачи до момента, когда появится возможность уделить ей должное внимание — это, скорее всего, произойдет не ранее конца апреля.



2. Исполнитель сменил тезис после того, как босс объяснил, что часть задач можно отложить

Хорошо, допустим я найду время заняться этой задачей. Но из-за того, что многие ключевые участники уходят в отпуск, а праздники не за горами, мы вынуждены отложить подробное рассмотрение задачи.



3. Исполнитель в третий раз сменил тезис, т. к. босс предложил декомпозировать задачу и оценить только первую часть

Мы оценим эту задачу так же, как остальные новые задачи, и после 2 апреля вернусь к тебе с более точным ответом.



Кто-то скажет: «И что? Поторговались, договорились».

Проблема в том, что исполнитель показывает себя как ненадёжного собеседника, его слова необходимо «челленджить», т. к. он меняет ключевой тезис «на ходу» (читай: переобувается в воздухе). Он то ли ленивый, то ли недостатчно ответственный, то ли хитрый, то ли недостаточно опытен. В общем, он «Не свой».


В следующей заметке поговорим об аргументах.

___

С какими ошибками в построении тезисов вы сталкиваетесь? Может бы узнали себя или коллегу?
Forwarded from NoML Digest
Запись семинара

Ярослав Шмулев (R77 AI), Рекомендательная система для завода по оптимизации процесса производства стали. YouTube | Дзен | RuTube (~1 час 10 минут).
Forwarded from Concise Research (Sergey Kastryulin)
Diffusability of Autoencoders

Латентная диффузия (LDM) - доминирующая парадигма генерации картинок и видео. Фреймворк LDM состоит из автоэнкодера (AE), кодирующего картинки или видео в латенты и диффузионного денойзера, который учат эти латенты расшумлять, а после - генерировать.

Большинство работ в контексте LDM посвящены диффузии, однако АЕ - не менее важный компонент системы. Энкодер АЕ задаёт распределение, которое выучит диффузия, а декодер определяет верхний предел качества реконструкции.

В этом посте речь пройдет про распределение латентов: как сделать его таким, чтобы максимизировать качество обученной на нем диффузии? Ниже представлены две одновременно вышедшие работы. Они решают проблему похожим образом, но исходят из разных предпосылок.

Improving the Diffusability of Autoencoders

Интуиция
Авторы используют интуицию о том что диффузия - это спектральная авторегрессия: на ранних шагах генерации модель предсказывает низкие частоты, после чего, обуславливаясь на них, генерирует всё более высокие. При этом, если АЕ продуцирует латенты со слишком большим количеством высоких частот, то это мешает ходу авторегрессии и, как следствие, генерации.

Инструменты анализа
Для оценки количества высоких частот авторы используют discrete cosine transform (DCT). Этот метод позволяет закодировать информацию последовательностью, каждый элемент которой хранит информацию о том сколько блоков картинки (или латента) содержат ту или иную частоту. Результат очень напоминает кодирующую матрицу JPEG, а её линеаризованный вариант - основа для большинства графиков в статье.

Анализ
Используя DCT, авторы показывают что:
🔜Современные картиночные (FluxAE, CMS-AE) и видео (CogVideoX-AE, LTX-
AE
) АЕ делают латенты более высокочастотными чем исходные картинки
🔜Использование KL этому никак не препятствует
🔜Увеличение числа каналов в латентах делает проблему более выраженной

Метод
Авторы считают, что моделям АЕ выгодно амплифицировать высокие частоты в латентах потому что качество их декодирования - ключевой критерий успеха обучения моделей. Для борьбы с этим предлагается простая регуляризация: давайте одновременно с подсчетом L1 и KL делать даунсемплинг (интерполяцию вниз) картинки и добавлять L1 для её реконструкции слагаемым в лосс. Таким образом зафорсится Scale Equivariance, которая будет мешать амплификации высоких частот

Эксперименты
Обучая разноразмерные DiT’ы поверх нескольких АЕ потюненных с регуляризацией, существенно снижаются FID/FDD и выравниваются DCT спектры. Сам тюн занимает всего 10к итераций с bs=32, что реально быстро и не дорого.

EQ-VAE: Equivariance Regularized Latent Space for Improved Generative Image Modeling

Интуиция
Авторы также замечают, что у современных АЕ отсутствует scale и rotation equivariance, однако их интуиция о том почему это плохо заключается в том что семантически близкие картинки не переводятся в семантически близкие латенты, что усложняет структуру латентного пространства, на которой учится диффузия

Метод
Вместо добавления регуляризационного слагаемого, авторы предлагают всегда учить модель на распределении картинок разного разрешения. Вариативность разрешений также достигается даунсемплиногом исходных картинок с переменным скейлинг фактором. Поскольку в изначальной постановке авторы используют смесь L1 и адверсариального лосса, то заскеленные картинки подаются в оба слагаемых

Эксперименты
Сетап и результаты похожи на описанные в предыдущей статье, хотя значения прироста FID чуть менее громкие. В сапмате интересные визуализации того как после файнтюна латенты становятся более гладкими

▶️ Discuss?
Всегда интересно, когда одновременно выходит несколько работ про примерно одно и то же. Это сильно повышает вероятность того, что в сказанном что-то есть
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Евгений Козлов пишет про IT (Eugene Kozlov)
Решил написать серию постов о недавно прочитанной книге. Я считаю её хорошей стартовой точкой для специалистов в области данных. В постах раскрою почему😊

———

Fundamentals of Data Engineering. Chapter #1: Data Engineering Described

🔵 Определение Data Engineering

DE - набор процессов включающий в себя: проектирование разработку и эксплуатацию систем принимающих сырые данные и производящих качественную, непротиворечивую информацию которую могут использовать другие системы и потребители (Аналитики, системы Machine Learning)

DE можно считать пересечением областей: Security, Data Management, DataOps, Data Architecture, Orchestration, Software Engineering.

🔵 Основные вехи Data Engineering

- Термин DWH (хранилище данных) был придуман Биллом Инмоном в 1989 году.

- IBM разработала реляционную базу данных и сам язык SQL.

- MPP и реляционные базы данных доминировали до тех пор, пока зарождающийся BigTech не задумался о том что пора бы начать экономить деньги.

- 2004: WhitePaper Google GFS. MapReduce положил начало парадигме сверхмасштабируемой обработки данных.

- 2006: Yahoo разработала Hadoop. AWS стало первым популярным общедоступным облаком.

- 2015: Появление Apache Spark. Охлаждение интереса к Hadoop стеку.

🔵 Цели Data инженера. На чем стоит фокусироваться специалисту?

1) постоянно проводить работу над cистемой по направлениям:
- Cost (стоимость)
- Agility (гибкость)
- Scalability (масштабируемость)
- Simplicity (простота)
- Reuse (повторное использование)
- Interoperability (совместимость)

2) максимизировать ценность и полезность данных.

3) работать над снижением рисков (безопасность, качество данных)

🔵 C кем взаимодействует Data Engineer?
С теми кто создает системы ответственные за генерацию / появление данных в продукте (upstream stakeholders):
- Software Engineers
- DevOps
- Data Architects

А также с потребителями информации произведенной Data продуктом (downstream stakeholders):
- Data Analysts
- Data Scientists
- Machine Learning Engineers
———
На этом всё, в следующем посте сделаю небольшое отвлечение, разберемся почему тема данных сейчас на хайпе, какую из этого них извлекают компании. В книге мне этого не хватило, автор сразу ушел в технику.
Forwarded from Евгений Козлов пишет про IT (Eugene Kozlov)
Fundamentals of Data Engineering. Глава №2. Жизненный цикл

Продолжаем обзор книги, сегодня будет краткое саммари жизненного цикла Data Engineering, узнаем какой путь проходят данные от зарождения / появления до нанесения непоправимой пользы всем потребителям.

1️⃣ Генерация
Что важно учитывать на данном этапе:

- Тип источника данных (приложение/IoT/база данных)
- Скорость генерации данных
- Качество данных
- Схема данных
- Частота приема данных
- Влияние на производительность исходной системы при чтении данных

2️⃣ Хранение (Storage)
- Характеристики данных, такие как объем, частота приема и формат файла.
- Возможности масштабирования, а именно: доступное место, скорость чтения/записи, пропускная способность
- Сбор метаданных для эволюции схемы, происхождения данных и потоков данных
- Тип решения для хранения данных: объектное хранилище или облачное хранилище данных
- Схема данных
- Data Management: золотые записи, контроль качества и происхождения данных
- Соблюдение нормативных требований.

3️⃣Приём (Ingestion)
Что важно учитывать?

- Доступность данных и надежность источника.
- Способ обработки: Пакетная или потоковая
- Push / Pull модель
- Масштабирование приемника, как он будет справляться с всплесками траффика.

Batch ingestion: обработка потока большими порциями — например, обработка данных за целый день в одном пакете.

Streaming ingestion: предоставляем данные нижестоящим системам непрерывно в режиме реального времени. Реальное время означает, что данные доступны нижестоящей системе через короткое время после их создания (например, менее чем через одну секунду).

Micro-batching: используется, например, в Spark Streaming с данными, взятыми за период в 1 секунду.

Push model: исходная система записывает данные в целевую систему, будь то база данных, хранилище объектов или файловая система. Примером может служить стандартный процесс ETL.

Pull model: данные извлекаются из исходной системы. Примером может служить CDC.

4️⃣ Преобразование / Трансформация

Примеры преобразований:

- преобразование данных в правильные типы
- преобразование схемы данных и применение нормализации
- агрегация для отчетности
- feature engineering для машинного обучения
- обогащение данных

5️⃣ Предоставление данных потребителям

Примеры классических потребителей данных в организациях:
- Операционная аналитика (реал-тайм отчетность, быстрая реакция)
- Внутренняя аналитика (когда клиент может смотреть свою собственную аналитику в вашем продукте)
- Business intelligence. Важная отчетность по бизнес процессам, прибыли итп. Не требуется реалтайм, но требуется точность и максимальное доверие к данным.
- Machine Learning.
Forwarded from Евгений Козлов пишет про IT (Eugene Kozlov)
Визуальное представление Data Engineering lifecycle
Забираем правила vibe coding

Пока что мои лучшие промпт на 50% состоят из мата 😢

Такими темпами и экран не нужен будет скоро
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Кирилл
Давно не было длинных постов, в этом будет обзор мини ресерча по теме TDA(топологический анализ данных) в time series forecasting, а именно TDA временных рядов с помощью облаков точек.

Естественно, временные ряды сразу не могут быть представлены как облака точек. Перед тем как приступить к TDA, они должны быть преобразованы с помощью теоремы Такенса о встраивании (Takens et al.,1981).
Этот подход широко использовался в научной литературе для различных целей:
🔵количественной оценки периодичности временных рядов (Perea and Harer, 2015);
🔵кластеризации временных рядов (Seversky et al., 2016);
🔵классификации временных рядов (Umeda, 2017);
🔵обнаружения ранних сигналов о критических изменениях (Gidea, 2017; Гидея и Кац, 2018).
Встраивание Такенса позволяет сохранить топологические свойства временного ряда, но не его геометрические характеристики.


Встраивание Такенса для временных рядов:
Пусть
{xt,t = 1,2,...,T}

обозначает наблюдаемый временной ряд. Я использую встраивание Такенса для преобразования
временного ряда в облако точек с точками
vi = (xi,xi+τ,...,xi+(d−1)τ)

, где d указываетразмер точек, а τ обозначает параметр задержки. Например, если

, то
vi = (xi,xi+1), тогда как если d= 15 и τ = 2, то vi = (xi,...,xi+28).

Как d, так и τ неизвестны
и должны быть определены на практике.

Выбор параметра τ. Исследователи использовали различные подходы к выбору параметра задержки τ. Он
может быть выбран как наименьшая временная задержка h, при которой автокорреляционная функция выборки (ACF) ˆ ph
становится незначимой, т.е. меньше по абсолютной величине, чем критическая граница 2
√T (Хасауне и Мунк, 2016). Труонг (Truong, 2017) также использовал ACF, но несколько иным способом. Он выбрал τ в качественаименьшего запаздывания, для которого
 (ˆ ρτ− ˆρτ−1)/ˆρτ >1/e и ˆ ρτ < 2 √Т

Перейра и де Меллу (2015) определили τ, используя первый минимум автоматической взаимной информации (взаимная информация между сигналом и его версией с задержкой во времени

Выбор d.
Труонг (2017), Хасауне и Мунк (2016) использовали метод ложного ближайшего соседа
(Кеннел и др., 1992) для определения размера вложения в виде целого числа таким образом, что
ближайшие соседи каждой точки в измерении d остаются ближайшими соседями в измерении
d+ 1, и расстояния между ними также остаются неизменными. примерно то же самое. В качестве альтернативы может быть использована функция R false.nearest
в пакете tseriesChaos, которая реализует подход, предложенный Хеггером и др. (1999). Некоторые авторы (Перейра и де Мелло, 2015; Северский и др., 2016) просто предполагают, что значение d равно 2 или 3, в то время как Перея предложил использовать значение d= 15 для временных рядов после кубической сплайновой интерполяции.

Чистые сигналы преобразуются в диаграммы постоянства.
Я генерирую облака точек из трех периодических косинусоидальных сигналов длиной T = 480 с периодами 12, 48 и 96 соответственно, а затем строим их диаграммы постоянства. Я устанавливаю d= 2 и используя метод ACF, описанный выше, для выбора τ. Это код R для временного
ряда tsf1

per1=12; ts1 = cos(1:T*2*pi/per1); d=2;
tau <- which(abs(acf(ts.ex, plot = F)$acf) < 2/sqrt(T))[1]-1
PC=t(purrr::map_dfc(1:(T-(d-1)*tau+1),~ts.ex[seq(from=.x, by=tau, length.out=d)]))
diag=ripsDiag(PC, maxdimension=1, maxscale=max(dist(PC)))
ts.plot(ts.ex);plot(PC,xlab ="x1",ylab="x2",main="PC");plot(diag$diagram)
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Кирилл
На первом рисунке в верхнем ряду представлены сигналы, в среднем — облака точек, а в нижнем — диаграммы постоянства. Черные точки отражают появление и уничтожение 0-й гомологической группы, а диаграммы постоянства показывают, как эти точки распределяются в облаке.
Чем больше черных точек находится ближе к диагонали, тем более рассеянным выглядит облако точек. Например, облако точек PC.3 из временного ряда с периодом 96 имеет точки, расположенные ближе друг к другу по сравнению с PC.1. Из-за этого на диаграмме постоянства больше черных точек расположено ближе к диагонали.
Красные треугольники представляют генерацию и уничтожение 1-й гомологической группы, обозначая круги в облаке точек. Красный треугольник из временного ряда с периодом 96 находится дальше от диагонали по сравнению с рядом с периодом 12 и, следовательно, дольше сохраняется в 1-й гомологической группе. Если вы увидите кружок, это означает, что временной ряд является периодическим. Это отличается от диаграммы постоянства для того же временного ряда, основанной на изменении набора подуровней функции. Попарные расстояния между узкими местами между тремя диаграммами постоянства, рассчитанный с использованием кода, как показано ниже:
round(bottleneck(diag1$diagram, diag2$diagram, dimension = 0), digits= 2)


Построение облака точек с использованием SW1PerS:

Метод SW1PerS (скользящие окна и 1-балльная оценка постоянства) является альтернативным, более
комплексным подходом, предложенным Perea и соавторами (2015) для определения периодичности по зашумленным временным курсам, основные сигналы которых могут иметь различную форму. Этот подход направлен на решение следующих задач.

Шумопонижение: В этом подходе рассматриваются два типа шумоподавления, которые предоставляются пользователю в качестве опции.
Первый тип сглаживает исходный временной ряд с помощью скользящего среднего, чтобы упростить обнаружение сигнала. Второй тип - это скользящее среднее в облаке точек. В качестве альтернативы скользящему среднему для усреднения Перейра и де Меллу (2015) использовали эмпирическую модальную декомпозицию (EMD) (Huanget al., 1998) на необработанных временных рядах.

Сплайн-интерполяция. Сплайновая интерполяция позволяет обрабатывать временные ряды с неравномерными интервалами или
временные ряды с низким временным разрешением.

Стандартизация облака точек. Стандартизация помогает снизить уровень сигнала и
не учитывать амплитуду процедуры.
Схема этого подхода описана в следующих шагах.

Шаг 0. При необходимости (Переа и Харер, 2015) устраните шумы в наблюдаемом временном ряду
{xt,t= 1,2,...,T}

используя простое скользящее среднее, размер окна которого не превышает одной трети выбранного
измерения d. Они рекомендовали размерность встраивания d= 15 и N = 201 в качестве размера
облака точек; тогда
T1 = N + d= 216.


Шаг 1. Для выбранных значений d и τ (см. ниже) создайте облако точек из временных рядов (возможно, без шума), используя шаги 1.1 и 1.2.

Шаг 1.1. Восстановите непрерывную функцию g : [0,2π]→R, применив кубический сплайн к временному ряду без шума
{xt,t= 1,2,...,T}


Шаг 1.2. Используя значения g(t1),g(t2),...,g(t1 ) из непрерывного сплайна, найдите g(.) в равномерно распределенных
точках времени
0 = t1 ≤t2 ≤... ≤tT1 = (T1−1)τ = 2π

постройте облако точек с помощью
N= T1−точек v(0)
t = (g(t),g(t+τ),...,g(t(d−1)τ))'∈Rd,t= 0,τ,...,2π−(d−1)τ

и так далее
τ =2π/N+d−1


Шаг 2. Стандартизация точечного облака точек(рис. 2)Где
v(0)t = (v(0)t,1 ,v(0)t,2 ,...v(0)t,d)'

и 1 - это d-мерный вектор единиц.
Forwarded from Кирилл
Шаг 3. Постройте диаграмму постоянства, как описано в разделе 2.1, используя облако точек. Этот метод эффективен для выявления периодичности во временных рядах.
Чтобы разработать оценку для количественной оценки периодичности, Переа и его коллеги (Perea et al., 2015) впервые определили самый продолжительный период рождения-смерти у 1-й группы гомологий (λ1,kM,1, λ1,kM,2). Для указания максимальной устойчивости была выбрана величина kM, определяемая как arg maxk(λ1,k,2−λ1,k,1). Эта информация была использована для дальнейших вычислений.


Поскольку 0 ≤λ1,кМ , 1 ≤λ1,км ,2 ≤√3, для периодических (непериодических) временных рядов оценка близка к нулю. Ниже приведен код R для реализации шага 1-шага 3 для случая 1 (код для других случаев аналогичен)


x.ts = ts1; d=15; N=201; T1 = 216;
x.ts <- pracma::movavg(x.ts, 5, type = "s")
sp.ts <- stats::spline(1:T*2*pi/T, x.ts, n=T1)$y
PC <- plyr::ldply(map(1:N, ~sp.ts[.x:(.x+d-1)]))
X.PC=t(apply(PC,1,FUN=function(x){(x-mean(x))/sqrt(sum((x-mean(x))^2))}))
diag <- ripsDiag(X=x.PC, maxdimension = 1, maxscale = sqrt(3))


Основная заслуга Perea et al. (2015) заключается в том, что они провели масштабные имитационные исследования. В ходе которых они показали, что топологические характеристики временных рядов остаются практически неизменными, независимо от формы сигнала — синусоидальной или нет, а также от различий в амплитуде, фазе, среднем значении, частоте или тренде. Однако на результаты могут влиять вариации в дисперсиях шума и особенности распределения шума и сигнала.