我是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)
我已经阅读了类似查询的一些答案,但无法找出我的代码的解决方案。请帮忙。
最佳答案
导致此错误的一个可能原因是您的回归变量不是线性独立的。回归程序通常需要线性独立的回归变量(也就是回归矩阵的全等级)。
违反此假设的示例:
在模型中包含变量X和常数倍数aX。
在模型中包括全零的列。这是(1)的特殊情况,其中a = 0。
如果不想手动检查独立性,则可以使用“矩阵”包中的rankMatrix
函数。如果您的回归变量是线性独立的,则矩阵将具有“完整等级”,即等级等于列数。
即,rankMatrix(xreg)
的结果应等于ncol(xreg)
。