我是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)
我已经阅读了类似查询的一些答案,但无法找出我的代码的解决方案。请帮忙。
答案 0 :(得分:5)
此错误的一个可能原因是您的回归量不是线性独立的。回归程序通常需要回归量的线性独立性(a.k.a.回归矩阵的满级)。
违反此假设的例子:
如果您不想手动检查独立性,可以使用“Matrix”包中的rankMatrix
功能。如果您的回归量是线性独立的,那么您的矩阵将具有“满级”,意味着等级等于列数。
也就是说,rankMatrix(xreg)
的结果应该等于ncol(xreg)
。