Выполнение многомерного dynlm на объекте xts - PullRequest
0 голосов
/ 11 февраля 2020

Я пытаюсь выполнить эту операцию в объекте xts, но получаю ошибку. Используемые библиотеки и данные:

#Libraries
library(xts)
library(dynlm)

#Data
index <- seq.Date(from = Sys.Date() - 999, to = Sys.Date(), by = "days")
x <- xts(1:1000, order.by = index)
y <- xts(2001:3000, order.by = index)
z <- xts(3001:4000, order.by = index)
data <- merge(x,y,z)

И я пытаюсь выполнить эту динамическую c регрессию

dynlm(x ~ L(y) + L(z,4), data = data)

Есть мысли? Или я должен просто преобразовать информацию в информационный блок и работать оттуда. Заранее спасибо!

Ответы [ 2 ]

1 голос
/ 11 февраля 2020

Один из способов - использовать пакет dyn. (Убедитесь, что dplyr НЕ загружен, поскольку dplyr перезаписывает lag своей собственной версией, несовместимой с остальной частью R.) *

library(dyn)
dyn$lm(x ~ lag(y) + lag(z, 4), data = data)

, что дает:

Call:
lm(formula = dyn(x ~ lag(y) + lag(z, 4)), data = data)

Coefficients:
(Intercept)       lag(y)    lag(z, 4)  
      -1999            1           NA  
0 голосов
/ 11 февраля 2020

Похоже, что dynlm плохо работает с объектами 'xts'.

Одно решение, данное Гротендиком, предлагает использовать другой пакет (который работает).

Другое решение состоит в изменении объект в зоопарк.

Тем не менее, это сбивало с толку, поскольку объект, с которым я работал, изначально был классом: "xts" "zoo"; и dynlm не распознал часть «zoo».

После изменения на «zoo» все работает, если кто-то хочет остаться с этим пакетом.

#Libraries
library(xts)
library(dynlm)

#Data
index <- seq.Date(from = Sys.Date() - 999, to = Sys.Date(), by = "days")
x <- xts(1:1000, order.by = index)
y <- xts(2001:3000, order.by = index)
z <- xts(3001:4000, order.by = index)
data <- merge(x,y,z)

data.zoo <- zoo(data, order.by = index(data))

dynlm(x ~ L(y) + L(z,4), data = data.zoo)

Предоставление

Time series regression with "zoo" data:
Start = 2017-05-23, End = 2020-02-12

Call:
dynlm(formula = x ~ L(y) + L(z, 4), data = data.zoo)

Coefficients:
(Intercept)         L(y)      L(z, 4)  
      -1999            1           NA  

Любопытно, что полученный перехват отличается.

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