6

我是 R 新手,并且可以auto.arima使用xreg. 我在网上找到了一个代码,并试图复制我的数据。但是,我收到以下错误消息:

Error in optim(init[mask], armaCSS, method = optim.method, hessian = FALSE,  : 
  non-finite value supplied by optim

Error in if (diffs == 1 & constant) { : argument is of length zero
In addition: Warning message:
In auto.arima(salesTS, xreg = xreg1) : Unable to calculate AIC offset

我的代码如下:

data <- read.csv("C:/Users/s.karkala.rao/Documents/Projects/ad-hoc/Hitesh/forARIMAX.csv", header=TRUE, stringsAsFactors=TRUE)
subdata <- subset(data, data$NG.code == "101451")
subdata <- subdata[, -1]
salesTS <- ts(subdata$Sales.Qty, frequency=7)
xreg1 <- subdata[,-1]
xreg1 <- xreg1[, -10]
xreg1 <- as.matrix(xreg1)
model <- auto.arima(salesTS, xreg=xreg1)

我已经阅读了类似查询的一些答案,但无法找出我的代码的解决方案。请帮忙。

4

1 回答 1

5

此错误的一个可能原因是您的回归量不是线性独立的。回归过程通常需要回归量的线性独立性(又名回归矩阵的满秩)。

违反此假设的示例:

  1. 在模型中包含一个变量 X 和一个常数倍数 aX。
  2. 在模型中包含一列全为零的列。这是 (1) 的一个特例,其中 a=0。

如果您不想手动检查独立性,可以使用rankMatrix“Matrix”包中的功能。如果您的回归量是线性独立的,则您的矩阵将具有“满秩”,即秩等于列数。

也就是说,rankMatrix(xreg)应该等于的结果ncol(xreg)

于 2013-10-25T10:11:18.890 回答