Отношение временных рядов xts и ошибки в if (ncol (x) == 1) {: аргумент имеет нулевую длину - PullRequest
0 голосов
/ 07 декабря 2018

Я довольно новичок в R, но я пытаюсь справиться.Я работаю с набором данных временных рядов, который я настроил с помощью этого кода:

myts <- as.xts(df[,-1], order.by = as.POSIXct(df$DATE_3, format="%Y-%m-%d %H:%M:%S"))

=> мой ряд данных представляет собой почасовые данные за период с 2006 по 2017 год

Я выполнил простую lmрегрессия без каких-либо проблем.Затем я начал проверять статистические предположения, у меня не было проблем с тестированием стационарных рядов и гетероскедастичности, однако при последовательной корреляции я попытался использовать следующий код:

library(car)
dwt(didreg6) 'didreg6 is the name of one of my regressions

, но получил эту ошибку.

Error in if (ncol(x) == 1) { : argument is of length zero

Я попытался отследить () смогу ли я найти какой-либо ключ к решению этой ошибки.Я получил:

 1: dwt(didreg6)
 2: durbinWatsonTest(...)
 3: durbinWatsonTest.lm(...)
 4: matrix(sample(residuals, n * reps, replace = TRUE), n, reps)
 5: as.vector(data)
 6: as.vector(x, mode)
 7: as.vector.zoo(x, mode)
 8: as.vector(as.matrix(x), mode = mode)
 9: as.matrix(x)
10: as.matrix.xts(x)

Поскольку я не смог определить, в чем проблема, я попробовал Ljung-Box, потому что я, хотя, может быть, это будет работать.

Res<-residuals(didreg6)
Box.test(Res, lag = 1, type = "Ljung-Box")

ОднакоЯ получил еще одну ошибку, которая, как я предполагаю, относится к временным рядам.

Error in if (frequency > 1 && abs(frequency - round(frequency)) < ts.eps) frequency 
<-   round(frequency) : 
missing value where TRUE/FALSE needed

После того, как я обнаружил, что моя ошибка в серии данных является гетероскедастической, я хотел использовать ошибки HAC вместо стандартных.Я набрал этот код:

library(estimatr)
didreg6_robust <- lm_robust(lnEL ~ sum of my explanatory variables, data = myts,      
se_type = "stata")
summary(didreg6_robust)

Но снова появилась та же ошибка:

Error in if (ncol(x) == 1) { : argument is of length zero

В конце концов я попытался использовать другое кодирование для ошибок HAC:

didreg6 <- lm(lnEL ~ sum of my explanatory variables, data = myts)       
summary(didreg6)
library(lmtest)
library(sandwich)
coeftest(didreg6, df = Inf, vcov = vcovHC(didreg6, type = "HC0"))

Однако по-прежнему получена ошибка в случае, если (ncol (x) == 1) {: аргумент имеет нулевую длину. Следит за traceback ():

 1: coeftest(didreg7_coef, df = Inf, vcov = vcovHC(didreg7_coef, type = "HC0"))
 2: coeftest.default(didreg7_coef, df = Inf, vcov = vcovHC(didreg7_coef, type = "HC0"))
 3: vcovHC(didreg7_coef, type = "HC0")
 4: vcovHC.default(didreg7_coef, type = "HC0")
 5: meatHC(x, type = type, omega = omega)
 6: estfun(x, ...)
 7: estfun.lm(x, ...)
 8: as.vector(res)
 9: as.vector(x, mode)
 10: as.vector.zoo(x, mode)
 11: as.vector(as.matrix(x), mode = mode)
 12: as.matrix(x)
 13: as.matrix.xts(x)

Я прочитал много статей об этой ошибке,однако, ни один из них не занимается проблемой, что ошибка, вероятно, связана с временными рядами.У меня нет пропущенных данных во всем наборе данных.( «Ошибка в 1: ncol (x): аргумент длины 0» при использовании Amelia в R ) Но я думаю, что ошибка находится в первом столбце, отсюда и столбец, где я храню дату и время.

Вот предварительный просмотр моего набора данных, возможно, он поможет в решении проблемы: Предварительный просмотр данных

Более того, я становлюсь действительно отчаявшимся, потому что не имею понятияв чем причина этой ошибки, которая все еще появляется, и как с ней бороться.

Где я допустил ошибку?

1 Ответ

0 голосов
/ 21 января 2019

Преобразование его обратно из xts в числовой массив решает его.Да, проблема, кажется, связана с объектом xts.Вы можете решить это следующим образом:

fit_dw <- lm( as.numeric(xts1) ~ as.numeric(xts2) + as.numeric(xts3) ) durbinWatsonTest(fit_dw )

, где xts1, xts2, xts3 - объекты xts с одним временным рядом внутри них.

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