##########Função para fazer o teste ADF #Sintaxe: adf(K,year,y,int,trend) #K = número de defasagens autoregressivas #year = nome da coluna do objeto de dados indicando os instantes de tempo #(p.ex., 1995,1996,...,2006,2007,...,2025) #y = nome da coluna com a série de tempo empírica (p.ex., "pib" ou "deflator" #no conjunto de dados macro_cn_2 (laboratório 3) #int = 1 se a constante (intercepto) está presente, 0 se não está; #trend = 1 se a tendência está presente, 0 se não está. #OBS: é gerado o objeto "mqo", o qual contém todos os resultados da estimação #de uma regressão linear, incluindo os resíduos. #com "summary(mqo)" é possível ver as estatísticas "t". adf<-function(K,year,y,int,trend) { a<-cbind(1,year=ts(year),ck=ts(y),ck=diff(ts(y)),ck_l1=lag(ts(y),-1)) for(i in 1:K) { eval(parse(text=paste("a<-cbind(a,diff_l",i,"=diff(lag(ts(y),-i)))",sep=""))) } colnames(a)<-c("inter","year","y","y_d","y_l1",paste("diff_l",1:K,sep="")) a<-data.frame(a[(K+2):nrow(a),]) a<-subset(a,is.na(year)==FALSE) a$uni<-1 xnam <- paste("diff_l",1:K,sep="") if (int == 1 & trend == 1) { fmla <- as.formula(paste("y_d ~ 1+ year+y_l1+", paste(xnam, collapse= "+"))) } if (int == 1 & trend == 0) { fmla <- as.formula(paste("y_d ~ 1+ y_l1+", paste(xnam, collapse= "+"))) } if (int == 0 & trend == 1) { fmla <- as.formula(paste("y_d ~ 0+ year+y_l1+", paste(xnam, collapse= "+"))) } if (int == 0 & trend == 0) { fmla <- as.formula(paste("y_d ~ 0+ y_l1+", paste(xnam, collapse= "+"))) } mqo<<-lm(fmla,data=a) return(mqo) }