Giovani Carrara Rodrigues 7151669
Diego Aoki 5991861
Vitor Bonini 8065859
A série que vamos gerar segue o modelo:
\(X_t=T_t+Z_t\) onde \(T_t=\alpha_0+\alpha_1 t\) e \(Z_tS=0.5Z_{t-1}+a_t\), com \(Z_0=0\) e \(a_t\sim N(0,\sigma_b) {i.i.d.}\)
#rm(list=ls(TRUE))
set.seed(2015)
N <- 100 # quantidade de valores gerados
vari <- 1 # atribuindo variância do erro aleatório "a"
aver <- 0 # atribuindo média do erro aleatório "a"
# declarando vetores de cada componente da série temporal
z <- rep(0,N) # componente estocástica
a <- rep(0,N) # erro aletório gerado por uma dist. normal
tre <- rep(0,N) # tendencia
x <- rep(0,N) # valor fake da série
trend <- function(j){
# Coeficientes tendencia dada pelo polinômio trend = alpha0 + alpha1*t + alpha2*(t^2)
alpha0 <- 1
alpha1 <- 0.5
alpha2 <- 0
aux <- alpha0 + alpha1*j + alpha2*(j^2)
return(aux)
}
#trend[1] <- alpha0 + alpha1*1 + alpha2*(1^2)
# atribuindo valor à primeira posição de x
a[1] <- rnorm(1,0,1)
z[1] <- 0
tre[1] <- trend(1)
x[1] <- trend(1) + z[1]
#Gerando a série temporal
for(i in 2:N){
a[i] <- rnorm(1,aver,vari)
z[i] <- 0.5*z[i-1] + a[i]
tre[i] <- trend(i)
x[i] <- tre[i] + z[i]
#cat(i,"\n")
}
maf <- function(t,j) {
if(j>length(t)) return("jumento, o tamanho da média móvel nao pode ser maior que o tamanho da série")
size <- length(t)-2*j # tamanho da nova série
p <-j # atribuindo para nao dar problema
aux <- rep(0,size) # criando vetor da série filtrada
for(k in 1:size){ # gerando a série filtrada
o <- 1
aux[k] <- t[k+p] # atribuindo valor central
while(o <= j){
aux[k] <- aux[k]+t[k+p-o] + t[k+p+o] #atribuindo valores com mesma distância
o <- o+1
}
aux[k] <- aux[k]/(2*j+1) # dividindo pela quantidade de valores na média móvel
}
return(aux) # retornando a série filtrada
}
exps <- function(t,a){
if(a<0 || a>1) return("Para de ser burro vc errou o segundo parametro da função")
size <- length(t) # tamanho do vetor de retorno
aux <- rep(0,size) # criando o vetor de retorno
aux[1] <- t[1] # atribuindo o primeiro passo
for(i in 2:size){ # calculando a suavização exponencial
aux[i] <- a*t[i] + (1-a)*t[i-1]
}
return(aux) # retornando o vetor com a suavização esponencial
}