Вопрос или проблема
В следующей статье,
[Ponce-Flores, M., Frausto-Solís, J., Santamaría-Bonfil, G., Pérez-Ortega, J., & González-Barbosa, J. J. (2020). Сложности временных рядов и их связь с производительностью прогнозирования. Entropy, 22(1), 89.][1]
несколько величин использованы для выражения вычислительной сложности прогнозирования временных рядов, например:
- Спектральная энтропия (внутреннее определение использует автовариационную функцию и функцию автокорреляции)
- Пермутационная энтропия (внутреннее определение использует реконструкцию фазового пространства и распределение перестановок)
Каков наилучший способ выразить Спектральную энтропию и Пермутационную энтропию с точки зрения функции накопленного распределения (CDF) временного ряда?
Вы можете использовать обратную выборку по преобразованию на спектральной и пермутационной энтропии.
Вот псевдокод для спектральной энтропии:
import numpy as np
import scipy.stats
import spectral_entropy
from numpy.random import random
from scipy import interpolate
import matplotlib.pyplot as plt
import cProfile
#Spectral entropy function
def f(x):
# does not need to be normalized
entropy = []
for i in range(0,len(x)):
spectrum = spectral_entropy.clean_spectrum(x[i])
entropy.append(scipy.stats.entropy(spectrum[:, 1]))
return entropy
def sample(g):
x = [[-2,2,5],[3,5,9],[1,-3,6]]
y = g(x) # probability density function, pdf
cdf_y = np.cumsum(y) # cumulative distribution function, cdf
cdf_y = cdf_y/cdf_y.max() # takes care of normalizing cdf to 1.0
inverse_cdf = interpolate.interp1d(cdf_y,x) # this is a function
return inverse_cdf
def return_samples(N=1e6):
# let's generate some samples according to the chosen pdf, f(x)
uniform_samples = random(int(N))
required_samples = sample(f)(uniform_samples)
return required_samples
cProfile.run('return_samples()')
## plot
x = np.linspace(-3,3,1e4)
fig,ax = plt.subplots()
ax.set_xlabel('x')
ax.set_ylabel('probability density')
ax.plot(x,f(x)/np.sum(f(x)*(x[1]-x[0])) )
ax.hist(return_samples(1e6),bins="auto",normed=True,range=(x.min(),x.max()))
plt.show()
Пожалуйста, дайте знать, если это работает.
Источник: https://gist.github.com/amarvutha/c2a3ea9d42d238551c694480019a6ce1
Ответ или решение
Вопрос о выражении спектральной энтропии и энтропии перестановок через функцию кумулятивного распределения (CDF) представляет собой интересную задачу в сфере анализа временных рядов. Данная проблема акцентирована в исследованиях сложности временных рядов и их связи с прогнозированием, как это освещено в статье, которую вы упомянули.
Понимание спектральной и перестановочной энтропии
-
Спектральная энтропия — это метрика, оценивающая неопределенность путем анализа энергетического распределения сигнала по частотам. Она часто использует автоковариационную и автокорреляционную функции для определения спектра.
-
Энтропия перестановок — это методика, основанная на реконструкции фазового пространства и распределения перестановок временного ряда. Она служит для выявления сложности и неслучайности в данных временного ряда.
Применение функции кумулятивного распределения
Связь спектральной и перестановочной энтропии с CDF может быть реализована с помощью метода инверсного преобразования, что позволяет генерировать случайные величины с заданным распределением. Это достигается через следующие шаги:
-
Рассчет спектральной энтропии: используете спектральное распределение сигнала и вычисляете CDF исходя из его плотности вероятности (PDF).
-
Рассчет распределения перестановок: аналогично, путем вычисления распределений перестановок и их CDF.
В предлагаемом вами коде используется библиотека scipy.stats
для работы с плотностью распределения и инверсной функции для получения выборок, основываясь на спектральной энтропии. Код выполняет следующие основные действия:
- Создает выборку данных для анализа.
- Вычисляет спектральную энтропию этой выборки.
- Проводит нормализацию CDF.
- Использует интерполяцию для выполнения инверсного преобразования, выводя функцию.
Практическая реализация
Ваш псевдокод предоставляет основу для реализации данного процесса. Однако, важно учитывать особую специфику и тонкости анализа временных рядов и их приложений. Реализация данных методов должна учитывать конкретное распределение и характеристику вашего временного ряда.
Таким образом, предлагаемая методика поможет интегрировать спектральную и перестановочную энтропию в анализ временных рядов, предоставляя более полное понимание их распределений и позволяя улучшить прогнозы. В бизнесе и науке это может повысить качество моделей, приводя к более точным и обоснованным выводам и стратегиям.