Создание симметричной автокорреляционной матрицы
Я выполняю процесс автокорреляции для вектора данных временного ряда. Я ищу, чтобы создать симметричную матрицу, составленную из автокорреляции для данного временного ряда.
Я использую acf()
функция для проверки моих значений и возвращает:
Автокорреляции серии 'acfData', по лагу
0 1 2 3 4 5 6 7 8 9 10 11 12 13
1.000 -0.038 0.253 0.266 0.250 0.267 -0.182 0.281 -0.013 -0.067 -0.122 -0.115 -0.023 -0.337
Чтобы получить матрицу, я затем выполняю изменение data.frame для данных, чтобы позволить мне скользить значения по любой заданной задержке:
dataF <- data.frame("data" = acfData)
names(dataF)[1] <- "acfData"
dataLag <- slide(dataF, "acfData", slideBy = -1)
Дать:
> head(dataLag)
acfData acfData-1
1 -7 NA
2 5 -7
3 4 5
4 -17 4
5 6 -17
6 -10 6
Это дает правильную матрицу 2x2, когда я просто выполняю cor()
функция:
> cor(na.omit(dataLag))
acfData acfData-1
acfData 1.00000000 -0.03842146
acfData-1 -0.03842146 1.00000000
Однако расширение этой матрицы до второй временной задержки приводит к изменению предыдущих значений.
dataLag <- cbind(dataLag, slide(dataF, "acfData", slideBy = -2)[2])
> head(dataLag)
acfData acfData-1 acfData-2
1 -7 NA NA
2 5 -7 NA
3 4 5 -7
4 -17 4 5
5 6 -17 4
6 -10 6 -17
Выполнение cor()
функция снова приводит к:
> cor(na.omit(dataLag))
acfData acfData-1 acfData-2
acfData 1.00000000 -0.03156163 0.27502462
acfData-1 -0.03156163 1.00000000 -0.07361449
acfData-2 0.27502462 -0.07361449 1.00000000
Как видите, корреляция данных с задержкой на 1 шаг изменилась. Я полагаю, это связано с na.omit()
возможно, удалив целые первые два ряда из-за вступления второго лага, дающего два NA
s, но я не уверен, как правильно их опустить при первом вычислении задержки.
1 ответ
Как упомянуто Беном Болкером в комментариях, простое добавление аргумента "use" для "pairwise.complete.obs" дает правильное пропускание NA.
Новое возвращение для функции:
> cor(dataLag, use="pairwise.complete.obs")
acfData acfData-1 acfData-2
acfData 1.00000000 -0.03842146 0.27502462
acfData-1 -0.03842146 1.00000000 -0.07361449
acfData-2 0.27502462 -0.07361449 1.00000000