Я хочу создать код для построения ACF и PACF из данных временных рядов. Так же, как этот сгенерированный сюжет из Minitab (ниже).
Я пытался найти формулу, но до сих пор не понимаю ее. Не могли бы вы рассказать мне формулу и как ее использовать, пожалуйста? Какова горизонтальная красная линия на графике ACF и PACF выше? Какая формула?
Спасибо,
correlation
data-visualization
autocorrelation
partial-correlation
Сурия Девангга
источник
источник
Ответы:
автокорреляции
Соотношение между двумя переменными определяется как:y1,y2
где E - оператор ожидания, и - средние значения для а и - их стандартные отклонения.μ1 μ2 y1 y2 σ1,σ2
В контексте одной переменной, то есть автокорреляции , - исходный ряд, а - его запаздывающая версия. После приведенного выше определения выборочные автокорреляции порядка могут быть получены путем вычисления следующего выражения с наблюдаемым рядом , :y1 y2 k=0,1,2,... yt t=1,2,...,n
где - среднее значение выборки данных.y¯
Частичные автокорреляции
Частичные автокорреляции измеряют линейную зависимость одной переменной после устранения влияния других переменных, которые влияют на обе переменные. Например, частичная автокорреляция порядка измеряет влияние (линейная зависимость) на после устранения влияния на и .Yт - 2 YT Yт - 1 YT Yт - 2
Каждая частичная автокорреляция может быть получена в виде серии регрессий вида:
где - исходная серия минус среднее значение выборки, . Оценка даст значение частичной автокорреляции порядка 2. При расширении регрессии на дополнительных лагов оценка последнего члена даст частичную автокорреляцию порядка .Y~T YT- у¯ φ22 К К
Альтернативный способ вычисления частичных автокорреляций образца заключается в решении следующей системы для каждого порядка :К
где - пример автокорреляции. Это отображение между автокорреляциями образца и частичными автокорреляциями известно как рекурсия Дурбина-Левинсона . Этот подход относительно легко реализовать для иллюстрации. Например, в программном обеспечении R мы можем получить частичную автокорреляцию порядка 5 следующим образом:ρ ( ⋅ )
Полосы доверия
Полосы достоверности могут быть вычислены как значение автокорреляции образца , где - квантиль в распределении Гаусса, например, 1,96 для 95% доверительных интервалов.± z1 - α / 2N√ Z1 - α / 2 1 - α / 2
Иногда используются доверительные интервалы, которые увеличиваются с увеличением порядка. В этом случае полосы могут быть определены как .± z1 - α / 21N( 1 + 2 ∑Кя = 1ρ ( я )2)----------------√
источник
Хотя OP немного расплывчатый, он может быть более нацелен на формулировку кодирования в стиле «рецепт», чем на формулировку модели линейной алгебры.
ACF довольно проста: мы имеем временной ряд, и в основном делают несколько «копий» (как в «скопировать и вставить») из него, понимая , что каждая копия будет компенсировано одной записи из предыдущего экземпляра, так как исходные данные содержат точек данных, тогда как предыдущая длина временного ряда (исключая последнюю точку данных) составляет только . Мы можем сделать практически столько же копий, сколько строк. Каждая копия соотносится с оригиналом, имея в виду, что нам нужны идентичные длины, и для этого нам нужно будет обрезать хвостовую часть исходных рядов данных, чтобы сделать их сопоставимыми. Например, чтобы соотнести исходные данные с нам нужно избавиться от последнихT т - 1 т ст - 3 3 данные точек исходного временного ряда (первые хронологическом порядке).3
Пример:
Мы создадим временные ряды с циклическим синусоидальным шаблоном, наложенным на линию тренда, и шумом, и построим R, сгенерированный ACF. Я взял этот пример из интернет-сообщения Кристофа Шербера и просто добавил к нему шум:
Обычно мы должны были бы проверить данные на стационарность (или просто посмотреть на график выше), но мы знаем, что в этом есть тенденция, поэтому давайте пропустим эту часть и перейдем непосредственно к шагу устранения тенденций:
Теперь мы готовы взять этот временной ряд, сначала сгенерировав ACF с
acf()
функцией в R, а затем сравнив результаты с временным циклом, который я собрал:OK. Это было успешно. На PACF . Гораздо сложнее взломать ... Идея состоит в том, чтобы снова клонировать начальные значения несколько раз, а затем выбрать несколько временных точек. Однако вместо того, чтобы просто коррелировать с начальным временным рядом, мы собираем все промежуточные лаги и проводим регрессионный анализ, чтобы можно было исключить (контролировать) дисперсию, объясненную предыдущими временными точками. Например, если мы фокусируемся на окончании в момент времени , мы сохраняем , , и , а также , и мы регресс черезт ст - 4 т сT т ст - 1 т ст - 2 т ст - 3 т ст - 4 т сT~ Т ыт - 1+ т ст - 2+ т ст - 3+ т ст - 4 Происхождение и сохранение только коэффициента для :т ст - 4
И, наконец, построение графиков снова и снова, сгенерированные R и ручные вычисления:
То, что идея верна, кроме возможных вычислительных проблем, можно увидеть в сравнении
PACF
сpacf(st.y, plot = F)
.код здесь .
источник
Что ж, на практике мы обнаружили ошибку (шум), которая представлена как доверительные полосы помогают вам определить, можно ли рассматривать уровень как только шум (потому что около 95% будет в полосах). еT
источник
Вот код Python для вычисления ACF:
источник