我正在使用auto.arima处理大型数据集。数据集富含零。 排名不足的大多数问题都可以,但是,我仍然不知道如何处理“ NN类型”的数据。它与“ PP类型”非常相似(它计算确定)。 在我的数据中,NN类型非常罕见。有什么想法如何解决这个问题,或者至少如何快速检测NN类型?
library(forecast)
NN<-matrix(c(2, 2,2, 1, 1,1 ,
0, 0,0,0,0,1 ,
0, 0,0,1,1,0),
nrow=6)
PP<-matrix(c(2, 2,2, 1, 1,1 ,
0, 0,0,0,0,1 ,
0, 0,1,1,1,0),
nrow=6)
qty<-rpois(6,3000)
auto.arima(qty)
auto.arima(qty, xreg=PP)
auto.arima(qty, xreg=NN)
答案 0 :(得分:1)
分析auto.arima
函数的代码,很容易找到用于检查矩阵秩不足的代码。我建议使用以下功能:
is.rankdeficient <- function(xregg) {
constant_columns <- apply(xregg, 2, is.constant)
if (any(constant_columns)) {
xregg <- xregg[, -which(constant_columns)[1]]
}
sv <- svd(na.omit(cbind(rep(1, NROW(xregg)), xregg)))$d
min(sv)/sum(sv) < .Machine$double.eps
}
is.rankdeficient(PP)
# [1] FALSE
is.rankdeficient(NN)
# [1] TRUE