2013-09-05 14 views
6

Sono nuovo a R ed avere usando auto.arima funzione con xreg. Ho trovato un codice in rete e ho cercato di replicare per i miei dati. Tuttavia, sto ottenendo i seguenti messaggi di errore:R errore auto.arima

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 

Il mio codice è il seguente:

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) 

Ho letto alcune risposte sulle query simili, ma non sono riuscito a capire la soluzione per il mio codice. Per favore aiuto.

+0

vedere anche http://stats.stackexchange.com/questions/72244/is-this-a-bug-in-auto-arima-or-am-i-doing-something-wrong – RockScience

risposta

5

Una possibile causa di questo errore è che i regressori non sono linearmente indipendenti. L'indipendenza lineare dei regressori (a.k. un rango completo della matrice di regressione) è tipicamente richiesta per le procedure di regressione.

Esempi di violare questo assunto:

  1. Compreso una variabile X e un'ascia più costante nel modello.
  2. Inclusa una colonna di tutti gli zeri nel modello. Questo è un caso speciale di (1), dove a = 0.

Se non si desidera verificare manualmente l'indipendenza, è possibile utilizzare la funzione rankMatrix nel pacchetto "Matrix". Se i tuoi regressori sono linearmente indipendenti, la tua matrice avrà un "rank completo", che significa rank uguale al numero di colonne.

Vale a dire, il risultato di rankMatrix(xreg) deve essere uguale a ncol(xreg).

+0

cosa succede se rankMatrix (xreg) == ncol (xreg) 'ma ancora errori? perché? – rilut

+0

Non sono sicuro di @rilut, ma inizierei confermando che il tuo errore è uguale a quello riportato qui. E se è diverso (ho il sospetto che sia), magari apri una domanda SO separata. –