data("AirPassengers")
str(AirPassengers)
##  Time-Series [1:144] from 1949 to 1961: 112 118 132 129 121 135 148 148 136 119 ...
class(AirPassengers)
## [1] "ts"
sum(is.na(AirPassengers))
## [1] 0
start(AirPassengers)
## [1] 1949    1
end(AirPassengers)
## [1] 1960   12
frequency(AirPassengers)
## [1] 12
summary(AirPassengers)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   104.0   180.0   265.5   280.3   360.5   622.0
plot(AirPassengers, xlab = "Time", ylab = "Passenger Count", main = "AirPassengers Time Series - 21MIC0065")
plot.ts(AirPassengers, xlab = "Time", ylab = "Passenger Count", main = "AirPassengers Time Series - 21MIC0065")
abline(reg=lm(AirPassengers~time(AirPassengers)))

cycle(AirPassengers)
##      Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
## 1949   1   2   3   4   5   6   7   8   9  10  11  12
## 1950   1   2   3   4   5   6   7   8   9  10  11  12
## 1951   1   2   3   4   5   6   7   8   9  10  11  12
## 1952   1   2   3   4   5   6   7   8   9  10  11  12
## 1953   1   2   3   4   5   6   7   8   9  10  11  12
## 1954   1   2   3   4   5   6   7   8   9  10  11  12
## 1955   1   2   3   4   5   6   7   8   9  10  11  12
## 1956   1   2   3   4   5   6   7   8   9  10  11  12
## 1957   1   2   3   4   5   6   7   8   9  10  11  12
## 1958   1   2   3   4   5   6   7   8   9  10  11  12
## 1959   1   2   3   4   5   6   7   8   9  10  11  12
## 1960   1   2   3   4   5   6   7   8   9  10  11  12
plot(log(AirPassengers), xlab = "Time", ylab = "Log(Passenger Count)", main = "Log of AirPassengers Time Series - 21MIC0065")

plot(diff(log(AirPassengers)), xlab = "Time", ylab = "Differenced Log(Passenger Count)", main = "AirPassengers Time Series - 21MIC0065")

plot(aggregate(AirPassengers, FUN = mean), xlab = "Time", ylab = "Mean Passenger Count", main = "Mean AirPassengers Time Series - 21MIC0065")

boxplot(AirPassengers, xlab = "Time", ylab = "Passenger Count", main = "AirPassengers Boxplot - 21MIC0065")

boxplot(AirPassengers~cycle(AirPassengers), xlab = "Cycle", ylab = "Passenger Count", main = "AirPassengers Boxplot by Cycle - 21MIC0065")

# Decomposition plot
plot(decompose(AirPassengers), xlab="Time")+title(" - 21MIC0065")

## integer(0)
# Model Identification and Estimation
# AR I MA
# p d q

acf(AirPassengers, xlab = "Lag", ylab = "ACF", main = "ACF Function Plot - 21MIC0065")

acf(diff(log(AirPassengers)), xlab = "Lag", ylab = "ACF", main = "ACF Function Plot (Differenced Log) - 21MIC0065")

pacf(diff(log(AirPassengers)), xlab = "Lag", ylab = "PACF", main = "PACF Function Plot (Differenced Log) - 21MIC0065")

plot(diff(log(AirPassengers)), xlab = "Time", ylab = "Differenced Log(Passenger Count)", main = "Differenced Log function- 21MIC0065")

fit <- arima(log(AirPassengers), c(0,1,1), seasonal = list(order = c(0,1,1), period = 12))

# Prediction
pred <- predict(fit, n.ahead = 41*12)
pred1 <- round(2.718^pred$pred, 0)
ts.plot(AirPassengers, pred1, log = 'y', lty = c(1,3), xlab = "Time", ylab = "Passenger Count", main = "AirPassengers with ARIMA Model - 21MIC0065")