Тест причинно-следственной связи Роллинг Грейнджер

Я пытаюсь использовать функцию rollapply из пакета zoo для оценки причинно-следственной связи Грейнджера с скользящим окном, функция grangertest из пакета lmtest, у меня есть ежемесячный диапазон данных за период с 1976 по 1984 год.

            y       y1
Jan 1970 7.468513 7.672292
Feb 1970 7.475906 7.468513
Mar 1970 7.448334 7.475906
Apr 1970 7.351158 7.448334
May 1970 7.362011 7.351158
Jun 1970 7.326466 7.362011

Я использовал описанные ниже коды, но ни один из них не работает.

rol.c <- rollapply(mydata, width = 24,
FUN = function(z) coef(grangertest(mydata, order = 6)), 
by.column = FALSE, align = "right")

rol.cs <- function(x) c(granger.test(x, p = 6))
rollapplyr(mydata, 24, granger.test, by.column = FALSE )

Любая помощь приветствуется.


person Ameer    schedule 24.03.2019    source источник


Ответы (1)


Функция, используемая в rollapply, должна возвращать вектор или матрицу.

rollapplyr(z, 24, function(x) as.matrix(grangertest(x)), by.column = FALSE)
person G. Grothendieck    schedule 24.03.2019
comment
когда я обращаюсь к данным в коде, по умолчанию он принимает первую переменную как зависимую, а вторую переменную как независимую, но что, если я хочу указать причинно-следственную связь от y1 к y y~y1 и наоборот y1~y, как я могу настроить код для этого? - person Ameer; 25.03.2019
comment
Можно использовать z[, c("abc", "xyz")] для использования указанных столбцов или function(x) as.matrix(grangertest(x[, "abc"], x[, "xyz"])) - person G. Grothendieck; 25.03.2019
comment
Я попытался использовать ту же функцию с пакетом rcorr' from Hmisc` следующим образом: rollapplyr(z, 24, function(x) rcorr(x, type=c("spearman")), by.column = FALSE) и вернул следующие строки Dec 1996 Numeric,4 Integer,4 Numeric,4, все остальные строки выглядят так, не могли бы вы помочь мне решить эту проблему? - person Ameer; 29.03.2019
comment
Вы должны обернуть rcorr функцией, которая преобразует вывод rcorr в вектор или матрицу, и использовать эту функцию в rollapply. - person G. Grothendieck; 29.03.2019