Python – генерировать массив определенной автокорреляции

Я заинтересован в генерации массива (или numpy Series) длины N, который будет демонстрировать определенную автокорреляцию при лаге 1. В идеале я хочу также указать среднее значение и дисперсию, а также данные, полученные из (мульти) нормального распределения. Но самое главное, я хочу указать автокорреляцию. Как мне это сделать с помощью numpy или scikit-learn?

Чтобы быть явным и точным, это автокорреляция, которую я хочу контролировать:

numpy.corrcoef(x[0:len(x) - 1], x[1:])[0][1] 

One Solution collect form web for “Python – генерировать массив определенной автокорреляции”

Если вас интересует только автокорреляция с запаздыванием, вы можете создать авторегрессивный процесс порядка с параметром, равным требуемой автокорреляции; это свойство упоминается на странице Википедии , но это не сложно доказать.

Вот пример кода:

 import numpy as np def sample_signal(n_samples, corr, mu=0, sigma=1): assert 0 < corr < 1, "Auto-correlation must be between 0 and 1" # Find out the offset `c` and the std of the white noise `sigma_e` # that produce a signal with the desired mean and variance. # See https://en.wikipedia.org/wiki/Autoregressive_model#Example:_An_AR.281.29_process c = mu * (1 - corr) sigma_e = np.sqrt((sigma ** 2) * (1 - corr ** 2)) # Sample the auto-regressive process. signal = [c + np.random.normal(0, sigma_e)] for _ in range(1, n_samples): signal.append(c + corr * signal[-1] + np.random.normal(0, sigma_e)) return np.array(signal) def compute_corr_lag_1(signal): return np.corrcoef(signal[:-1], signal[1:])[0][1] # Examples. print(compute_corr_lag_1(sample_signal(5000, 0.5))) print(np.mean(sample_signal(5000, 0.5, mu=2))) print(np.std(sample_signal(5000, 0.5, sigma=3))) 

Параметр corr позволяет вам установить желаемую автоматическую корреляцию с запаздыванием один и дополнительные параметры, mu и sigma , позволяя вам управлять средним и стандартным отклонением генерируемого сигнала.

  • Маска sklearn для onehotencoder не работает
  • классификаторы в scikit-learn, которые обрабатывают nan / null
  • ImportError: невозможно импортировать имя inplace_column_scale
  • Сочетание случайных моделей леса в изучении scikit
  • Оценка матрицы смешения Sklearn путем перекрестной проверки
  • Используя scikit-learn, как узнать SVM над небольшим набором данных?
  • Слияние мешков слов scikits классификатор с произвольными числовыми полями
  • Как вставить LabelKFold?
  • SciPy и scikit-learn - ValueError: несоответствие размеров
  • sklearn не имеет атрибутов 'dataatets'
  • обновить до версии scikit-learn на Anaconda?
  •  
    Interesting Posts for Van-Lav

    Обновление до Django 1.7: получение AppRegistryNotReady для инфраструктуры перевода

    Почему math.floor (x / y)! = X // y для двух равномерно делящихся поплавков в Python?

    Извлечение информации из таблицы на веб-сайте с использованием python, LXML и XPATH

    Как вы переопределите метод BaseHTTPRequestHandler log_message () для входа в файл, а не в консоль (sys.stderr)?

    Есть ли более питонический способ найти точку в списке, который ближе всего к другому?

    Python: cmd выполняет последнюю команду, пока строка приглашения и пустая строка

    zip переменная пустая после первого использования

    scikit узнать SVM, как сохранить / загрузить векторы поддержки?

    Как хранить фреймворк с помощью Pandas

    нет модуля с именем numpy python2.7

    Ошибка при использовании пеликан-quickstart «Нет модуля с именем html_parser»

    Pandon pandas: как указать типы данных при чтении файла Excel?

    Ошибка установки пакета: невозможно импортировать имя 'unpack_url'

    python cx oracle ожидает строку, юникод или буферный объект

    Django TemplateSyntaxError Не удалось проанализировать остаток: '()'

    Python - лучший язык программирования в мире.