Альтернатива стандартному отклонению для обозначения беспокойства сигнала - PullRequest
1 голос
/ 19 февраля 2020

Я хочу получить показатель «беспокойства» сигнала.

Я думал, что стандартное отклонение может быть правильным.

(В конце концов, я хочу получить Перемещение окна над моим сигналом, где индикатор говорит мне, насколько беспокойным является мой сигнал. Но для начала я просто проанализировал некоторые игрушечные данные по фиксированному и фиксированному количеству данных c.

К сожалению, если я Возьмем некоторые сгенерированные сигналы, как в приведенном ниже примере. Я вижу, что совершенно разные сигналы приводят к одному и тому же значению для стандартного отклонения.

Я мог бы представить, что преобразование Фурье или спектр мощности может дать лучшую индикацию того, как Неустойчивый мой сигнал, но мой вопрос: есть ли другие (более простые в использовании) индикаторы для моего варианта использования?

Пример:

import numpy as np
import matplotlib

matplotlib.use('QT5Agg')
import matplotlib.pyplot as plt

x = np.linspace(0, 2 * np.pi, 1000)
y1 = np.sin(x)
print("y1.std()=", y1.std())

y2 = np.sin(10 * x)
print("y2.std()=", y2.std())


plt.plot(x,y1, '-o', markersize=2, c='r')
plt.plot(x,y2, '-o', markersize=2, c='g')
plt.grid()

plt.show()

Вывод:

y1.std()= 0.7067531393633848
y2.std()= 0.7067531393633849

enter image description here

1 Ответ

1 голос
/ 19 февраля 2020

Звучит так, будто вы хотите сочетание «Как быстро это изменится» и «насколько это изменится». На некотором уровне различие произвольно - очевидно, что линии в ваших данных идентичны, только в разных масштабах. Обратите внимание, что я не математик и не специалист по данным, и хотя мне пришлось написать код, чтобы сделать то же самое, что вы пытаетесь сделать, ни одно из моих предположений, скорее всего, не будет чем-то большим, чем приближение, в каком-то произвольном scale.


Тем не менее:

Возможно, вы могли бы попробовать некоторую комбинацию stdev и stdev аппроксимаций первой и второй производных.

You можно также изучить фильтры Калмана, и вместо использования отфильтрованного вывода просто измерить, как далеко фактическое значение от отфильтрованного.

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


Кроме того, я увидел это на панели «Связанные вопросы» и просто хочу прочно связать их: Как эффективно рассчитать текущее стандартное отклонение? (основной вывод алгоритм Уэлфорда )

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...