Why my prediction is too different from my testing data? I have a problem with Time Series Analysis. Here is the link to my data. It is monthly data, starting from June 2008 until December 2016. I'm trying to build the ARIMA model on it.
First, I split the data into training and testing sets. The testing set contains data from 12 months in 2016.
# Spare the last year for testing
trainData <- df[1:91, ]
testData <- df[92:103, ]

Create the time series for the trainData
# Create time series
trainData.ts <-
  ts(trainData$total,
     frequency = 12,
     start = c(2008, 6))
plot(
  trainData.ts,
  xlab = "Year",
  xaxp = c(2008, 2016, 8),
  main = "Training Data"
)

And here is the plot:

Then, I decompose the data.

Finally, I build an ARIMA model, make a prediction, plot it together with the testing data.
# Build ARIMA model
model <- auto.arima(trainData.ts)

# Forecast the next 12 months
prediction <- forecast(model, h = 12)

# Plot the prediction and the Test Data
plot(prediction, xlab = "Lag (year)", xaxp = c(2008, 2018, 10))
lines(testData.ts, col = "red")

Here is my model:
> model
Series: trainData.ts 
ARIMA(0,1,2)                    

Coefficients:
          ma1      ma2
      -0.7115  -0.1775
s.e.   0.1130   0.1123

sigma^2 estimated as 118.3:  log likelihood=-342.23
AIC=690.45   AICc=690.73   BIC=697.95

And the plot of my prediction:

From the plot, I can see that my prediction is too different from the test data. I would like to know why. Did I do anything wrong? Or could you suggest me a better way for this?
Thank you so much for your help.
EDIT 2
I cleaned the data a bit. Then I force the auto.arima() to difference the seasonality by using
model <- auto.arima(trainData.ts, D = 1)

It seems the result is better with lower AIC, AICc, BIC.
> model
Series: trainData.ts 
ARIMA(1,0,0)(2,1,1)[12] with drift         

Coefficients:
         ar1     sar1     sar2     sma1    drift
      0.1844  -0.2707  -0.0719  -0.8335  -0.1849
s.e.  0.1187   0.2253   0.1967   0.3912   0.0409

sigma^2 estimated as 107.5:  log likelihood=-304.28
AIC=620.57   AICc=621.73   BIC=634.78


 A: 
From the plot, I can see that my prediction is too different from the test data. I would like to know why. Did I do anything wrong?

The model does not contain seasonal components. Maybe the seasonal fluctuations are found too small to be predictable with enough accuracy (by the OCSB test). You could experiment to force them into your model and see how it performs. 
Also, the fact that the forecast does not look like the data used to produce it should not necessarily come as a surprise. If your data was a random walk, your best forecast would be a horizontal line – very much unlike the historical development, but still the best there is.


I cleaned the data a bit. Then I force the auto.arima to difference the seasonality by using model <- auto.arima(trainData.ts, D = 1). It seems the result is better with lower AIC, AICc, BIC.

Information criteria are not directly comparable for original vs. differenced data, so AIC comparison is not useful. But if forecast errors are smaller (check MSE, MAE, MAPE or similar for the out-of-sample period), then the model may be more appropriate. 


For test set, my MAE = 8.59 and MAPE = 35.86. I think those values are high, aren't they? Does it mean my prediction is not good? What should I do to improve it?

MAE depends on scale, so depending on the data 8.59 can be good or bad. MAPE does not depend on scale, but it's goodness must be judged depending on the context. If your series is highly predictable, 35.86 can be a lot, but if a series is mostly just noise, then it may be fine.


Base on the plot of my decomposition, I think that my data is not highly predictable because the season and trend are not clear while the noise is large. Am I correct? 

Looking at your seasonal-trend-remainder decomposition, remainder has the highest amplitude while trend and seasonal have smaller; so you are right.
