xts时间序列与if(ncol(x)== 1){中的参数的长度为零的误差之间的关系

时间:2018-12-07 01:46:15

标签: r

我在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

我尝试过traceback()是否要找到任何线索来解决错误。我收到了:

 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)

我已经阅读了很多有关此错误的文章,但是,他们都没有解决这个问题,该错误可能与时间序列有关。我在整个数据集中都没有丢失的数据。 ("Error in 1:ncol(x) : argument of length 0" when using Amelia in R)但是,我认为错误在第一列中,因此是我存储日期和时间的列。

这是我的数据集的预览,也许它将有助于解决问题: Data preview

此外,我变得非常绝望,因为我不知道此错误仍然弹出的原因是什么以及如何处理。

我在哪里犯了错误?

1 个答案:

答案 0 :(得分:0)

将其从xts转换回数值数组即可解决。是的,问题似乎出在xts对象上。您可以按以下步骤解决它:

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

其中xts1,xts2,xts3是其中具有一个时间序列的xts对象。