Связь величин временных рядов с функцией распределения (CDF)

Вопрос или проблема

В следующей статье,

[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]

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

  1. Спектральная энтропия (внутреннее определение использует автовариационную функцию и функцию автокорреляции)
  2. Пермутационная энтропия (внутреннее определение использует реконструкцию фазового пространства и распределение перестановок)

Каков наилучший способ выразить Спектральную энтропию и Пермутационную энтропию с точки зрения функции накопленного распределения (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) представляет собой интересную задачу в сфере анализа временных рядов. Данная проблема акцентирована в исследованиях сложности временных рядов и их связи с прогнозированием, как это освещено в статье, которую вы упомянули.

Понимание спектральной и перестановочной энтропии

  1. Спектральная энтропия — это метрика, оценивающая неопределенность путем анализа энергетического распределения сигнала по частотам. Она часто использует автоковариационную и автокорреляционную функции для определения спектра.

  2. Энтропия перестановок — это методика, основанная на реконструкции фазового пространства и распределения перестановок временного ряда. Она служит для выявления сложности и неслучайности в данных временного ряда.

Применение функции кумулятивного распределения

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

  • Рассчет спектральной энтропии: используете спектральное распределение сигнала и вычисляете CDF исходя из его плотности вероятности (PDF).

  • Рассчет распределения перестановок: аналогично, путем вычисления распределений перестановок и их CDF.

В предлагаемом вами коде используется библиотека scipy.stats для работы с плотностью распределения и инверсной функции для получения выборок, основываясь на спектральной энтропии. Код выполняет следующие основные действия:

  • Создает выборку данных для анализа.
  • Вычисляет спектральную энтропию этой выборки.
  • Проводит нормализацию CDF.
  • Использует интерполяцию для выполнения инверсного преобразования, выводя функцию.

Практическая реализация

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

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

Оцените материал
Добавить комментарий

Капча загружается...