我在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
此外,我变得非常绝望,因为我不知道此错误仍然弹出的原因是什么以及如何处理。
我在哪里犯了错误?
答案 0 :(得分:0)
将其从xts转换回数值数组即可解决。是的,问题似乎出在xts对象上。您可以按以下步骤解决它:
fit_dw <- lm( as.numeric(xts1) ~ as.numeric(xts2) + as.numeric(xts3) )
durbinWatsonTest(fit_dw )
其中xts1,xts2,xts3是其中具有一个时间序列的xts对象。