######################################################
############### Econometria Aplicada #################
####################### AR95 ######################### 
######## Pedro Valls - FGV-EESP ######
######################################################

# Packages ----------------------------------------------------------------

load_package<-function(x){
  x<-as.character(match.call()[[2]])
  if (!require(x,character.only=TRUE)){
    install.packages(pkgs=x,repos="http://cran.r-project.org")
    require(x,character.only=TRUE)
  }
}

load_package('tseries')
## Loading required package: tseries
###

# Fix the random seed
set.seed(02011921)
u<-rnorm(1000)
# Generate AR(1) with f=0.80
yar80<-u[1]
for(i in 2:1000){
  yar80[i]<-0.80*yar80[i-1]+u[i]
}
plot(yar80, type='l', col=4)

# Scatterplot between the series and it's lags idea of temporal dependence
par(mfrow=c(3,1))
plot(embed(yar80,2)[,c(2,1)], col='blue') # Y and Y(-1)
plot(embed(yar80,3)[,c(3,1)], col='blue') # Y and Y(-2)
plot(embed(yar80,20)[,c(20,1)], col='blue') # Y and Y(-20)

# Normality test 

par(mfrow=c(1,1))
hist(yar80, breaks = 50, freq=F,
     xlab='', ylab='', main='')
dist<-function(n){
  dnorm(n, mean(yar80), sd(yar80))
}
curve(dist, add=T, col='red')
d<-density(yar80)
lines(d, col='blue')
legend('topleft', legend=c('yar80','Normal','Kernel'),
       col=c(1,2,4), pch=15)

# Testando normalidade usando qq plot
par(mfrow=c(1,1))
qqnorm(yar80); qqline(yar80, col=2) 

jarque.bera.test(yar80)
## 
##  Jarque Bera Test
## 
## data:  yar80
## X-squared = 0.020144, df = 2, p-value = 0.99
# Test for constant mean and variance
mean_yar80<-mean(yar80[1:100])
stdev_yar80<-sd(yar80[1:100])
plot(yar80, type='l', col='blue')
abline(h=mean_yar80+1.96*stdev_yar80, col='red', lty=2)
abline(h=mean_yar80-1.96*stdev_yar80, col='red', lty=2)

# ACF for yar80
par(mfrow=c(2,1))
acf(yar80, lag.max=12)
pacf(yar80, lag.max=12)