Trabalho 4 - Séries Temporais

Helen Lourenço

2024-12-06

Nota: O trabalho está incompleto, pois não tive tempo de fazer as outras questões.

Questão 1

require(ggfortify)
require(astsa)

autoplot(Nile)

a)

 # Estimação inicial e alisamento de Kalman
 num=length(Nile)
 A=array(1,dim= c(1,1,num)) # Matriz de observação para todo o período
 mu0=mean(Nile[1:20]) # Estimativa inicial da média
 Sigma0=var(Nile) # Variância inicial
 Phi=1 # Matriz de transição (modelo estacionário)
 cQ=1 # Variância do ruído do processo
 cR=1 # Variância do ruído de observação
 # Aplicao alisamento de Kalman
 ks=astsa::Ksmooth(Nile,A,mu0,Sigma0,Phi,cQ,cR)
 # Calcula a média dos valores suavizados
 mean_predicted=mean(ks$Xp) ; mean_predicted
## [1] 925.0205
 plot(Nile,main="Valores Preditos",ylab= expression(mu[t]))
 lines(ts(as.vector(ks$Xp),start= start(Nile)),type = "b", pch = 19, col = "brown", cex = 0.8)
 grid()
 
 # IC
 pu = ts(as.vector(ks$Xp + 2 * sqrt(ks$Pp)), start = start(Nile))
 pl = ts(as.vector(ks$Xp- 2 * sqrt(ks$Pp)), start = start(Nile))
 lines(pl, lty = 2, col = "brown")
 lines(pu, lty = 2, col = "blue")

b)

O modelo se ajusta bem aos dados.

res=ts(as.vector(ks$innov),start=start(Nile))
sarima(res,0,0,0,no.constant = TRUE)
## <><><><><><><><><><><><><><>
##  
## Coefficients: 
##      Estimate
## 
## sigma^2 estimated as 22108.12 on 100 degrees of freedom 
##  
## AIC = 12.86158  AICc = 12.86158  BIC = 12.88763 
## 

c)

# Ajustar um modelo de espaço de estados com nível e tendência
 fit <- StructTS(Nile, type = "trend")

 # Previsão para os próximos 5 anos (1971 a 1975)
 forecast_horizon <- 5
 pred <- predict(fit, n.ahead = forecast_horizon)
 
 # Visualização dos resultados
 plot(Nile, xlim = c(1870, 1975))
 lines(pred$pred, col = "red", type = "b", pch = 19, lwd = 2)
 lines(pred$pred + 2 * pred$se, col = "red", lty = 2)
 lines(pred$pred- 2 * pred$se, col = "red", lty = 2)
 grid()
 
 years_pred <- seq(1971, 1975)
 points(years_pred, pred$pred, col = "black", pch = 19)