library(readxl)

MonthlyRates <- read_excel("./quarterly-cpi.xls", sheet = "Monthly", skip = 2)
monthlyrates <- MonthlyRates[101:475, 4]

monthlyrates_ts <- ts(monthlyrates, start = c(1985, 1), frequency = 12)

plot.ts(monthlyrates_ts, col="red", ylab = "Inflation rate")

From the plot the original time series does not appear to be stationaryowards the means.
For these lets difference the series once to see if we will acquire a stationary data toward the mean.

monthlyrates_df1_ts <- diff(monthlyrates_ts, 1)

plot.ts(monthlyrates_df1_ts, col="red", ylab = "Inflation rate")

The time series of first differences(above) does appear to be stationary in mean and variance, as the level of the series stays roughly constant over time, and the variance of the series appears roughly constant over time. Thus,it appears that we need to difference the original inflation time series once in order to achieve a stationary series.
If you need to difference your original time series data d times in order to obtain a stationary time series, this means that you can use an ARIMA(p,d,q) model for your time series, where d is the order of differencing used.
In this case we had to difference the time series once, and so the order of differencing (d) is 1. This means that we can use an ARIMA(p,1,q) model for our time series.
The next step is to figure out the values of p and q for the ARIMA model, where we utilize the ACF and PACF.

ACF

acf(monthlyrates_df1_ts, lag.max = 20, plot = FALSE)
## 
## Autocorrelations of series 'monthlyrates_df1_ts', by lag
## 
## 0.0000 0.0833 0.1667 0.2500 0.3333 0.4167 0.5000 0.5833 0.6667 0.7500 
##  1.000  0.173  0.253  0.162  0.003  0.018  0.068  0.019  0.091  0.022 
## 0.8333 0.9167 1.0000 1.0833 1.1667 1.2500 1.3333 1.4167 1.5000 1.5833 
##  0.012  0.020 -0.424 -0.054 -0.217 -0.008 -0.060  0.010 -0.056 -0.026 
## 1.6667 
## -0.064
acf(monthlyrates_df1_ts, col = "red")

PACF

pacf(monthlyrates_df1_ts, lag.max = 20, plot = FALSE)
## 
## Partial autocorrelations of series 'monthlyrates_df1_ts', by lag
## 
## 0.0833 0.1667 0.2500 0.3333 0.4167 0.5000 0.5833 0.6667 0.7500 0.8333 
##  0.173  0.230  0.096 -0.095 -0.035  0.083  0.023  0.061 -0.027 -0.025 
## 0.9167 1.0000 1.0833 1.1667 1.2500 1.3333 1.4167 1.5000 1.5833 1.6667 
##  0.008 -0.468  0.067 -0.030  0.200 -0.109  0.003 -0.031 -0.001  0.031
pacf(monthlyrates_df1_ts, col = "red")

From the result of ACF and PACF we get the following choices of models:
* Arima(0, 1, 2) * Arima(4, 1, 0)
Here we use the principle of parsimony to decide which model is best: that is, we assume that the model with the fewest parameters is best.
In this case the best model is Arima(0, 1, 2)

Arimamodel <- arima(monthlyrates_ts, order = c(0, 1, 2))

From the model of our choice lets make predictions for the next six months

library(forecast)

forecast.Arima(Arimamodel, 6)
##          Point Forecast      Lo 80     Hi 80       Lo 95    Hi 95
## Apr 2016       6.175004  3.4804230  8.869585  2.05399807 10.29601
## May 2016       6.119263  2.1759660 10.062560  0.08851062 12.15002
## Jun 2016       6.119263  0.7979769 11.440550 -2.01894196 14.25747
## Jul 2016       6.119263 -0.2903065 12.528833 -3.68332778 15.92185
## Aug 2016       6.119263 -1.2189300 13.457456 -5.10353487 17.34206
## Sep 2016       6.119263 -2.0425733 14.281100 -6.36318861 18.60172