R/ARorder.R

Defines functions ARorder

Documented in ARorder

#' @importFrom stats anova as.formula convolve cov embed fft lm median pnorm cov var
#' @export

ARorder <- function (data, min = 1, max = 10,type='AIC')
{
if (type=='AIC'){

 AIC <- rep(Inf, max)
    d <- as.matrix(data)
    N <- NCOL(d)
        if(N > 1){
	      for (i in min:max) {
		z <- embed(d, i + 1)
		z2 <- z[, (1:N)]
		zlag <- z[, -(1:N)]
		fit <- lm(z2 ~ zlag)
		AIC[i] <- log(det(cov(fit$res))) + 2 * N^2 * i/NROW(d)
	                          }
    orr <- which(AIC == min(AIC[abs(AIC) != Inf]))

                  }
        else{
	      for (i in min:max) {
		z <- embed(d, i + 1)
		z2 <- z[, (1:N)]
		zlag <- z[, -(1:N)]
		fit <- lm(z2 ~ zlag)
		AIC[i] <- log(var(fit$res)) + 2 * N^2 * i/NROW(d)
	      }
             orr <- which(AIC == min(AIC[abs(AIC) != Inf]))

             }
}
if (type=='BIC'){
BIC <- rep(Inf,max)
    d <- as.matrix(data)
    N <- NCOL(d)
        if(N > 1){
           for (i in min:max){
             z  <-  embed(d,i+1)
             z2 <- z[,(1:N)]
             zlag <- z[,-(1:N)]
             fit <- lm(z2~zlag)
             BIC[i] <- log(det(cov(fit$res)))+log(NROW(d))*N^2*i/NROW(d)
                             }
          orr <- which(BIC==min(BIC[abs(BIC)!=Inf]))

                 }

	else{
	    for (i in min:max) {
	      z <- embed(d, i + 1)
	      z2 <- z[, (1:N)]
	      zlag <- z[, -(1:N)]
	      fit <- lm(z2 ~ zlag)
	      BIC[i] <- log(var(fit$res)) + log(NROW(d))*N^2*i/NROW(d)
	    }
	  orr <- which(BIC == min(BIC[abs(BIC) != Inf]))

             }

}
orr
}

Try the FIAR package in your browser

Any scripts or data that you put into this service are public.

FIAR documentation built on June 5, 2018, 5:03 p.m.