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)