Как сделать корреляционный график с определенной задержкой двух временных рядов - PullRequest
0 голосов
/ 05 апреля 2019

Я пытаюсь построить автокорреляцию между двумя временными рядами в поисках необходимой задержки.Библиотека Python statsmodels.graphics.tsaplots предлагает plot_acf для исследования запаздывающего воздействия временных рядов на себя.

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

Ответы [ 2 ]

0 голосов
/ 06 апреля 2019

https://stackoverflow.com/users/7094244/michael-grogan спасибо за объяснение "автокорреляции" и "кросс-корреляции".Я бы предпочел преобразовать изображение вашего сюжета в более «статистический».Например, как этот, который я сделал:

plt.xcorr(TS1, TS2, usevlines=True, maxlags=20, normed=True, lw=2)
plt.grid(True)
plt.axhline(0.2, color='blue', linestyle='dashed', lw=2)
plt.ylim([0, 0.3])
plt.title("Cross-correlation")

Изображение графика взаимной корреляции

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

plt.set_ylim([0, 0.3])

как

plt.set_ylim([0, 1]) 

, чтобы увидеть все корреляционные границы.И, как правило, корреляция> = 0,2 считается статистически значимой.

0 голосов
/ 05 апреля 2019

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

Существуетнет такой вещи, как «автокорреляция между двумя временными рядами» - автокорреляция означает корреляции внутри одного временного ряда между отдельными лагами.

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

Для данных построена взаимная корреляция:

# Import Libraries
import numpy as np
import pandas as pd
import statsmodels
import statsmodels.tsa.stattools as ts
from statsmodels.tsa.stattools import acf, pacf
import matplotlib as mpl
import matplotlib.pyplot as plt
import quandl
import scipy.stats as ss

import os;
path="directory"
os.chdir(path)
os.getcwd()

#Variables
dataset=np.loadtxt("weather.csv", delimiter=",")
x=dataset[:,0]
y=dataset[:,1]
plt.xcorr(x, y, normed=True, usevlines=True, maxlags=365)
plt.title("Sunlight Hours versus Maximum Temperature")
plt.show()

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

sunlight

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

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

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