DJI <- read.csv("/cloud/project/^DJI.csv")
library(xts)
## Loading required package: zoo
## 
## Attaching package: 'zoo'
## The following objects are masked from 'package:base':
## 
##     as.Date, as.Date.numeric
library(forecast)
## Registered S3 method overwritten by 'quantmod':
##   method            from
##   as.zoo.data.frame zoo
library(TTR)
library(tseries)
dj<-DJI
names(dj)
## [1] "Week"  "Close"
names(dj)[2]<-c("close.price")

#plotting data
head(dj)
##        Week close.price
## 1 3/20/2017    20596.72
## 2 3/27/2017    20663.22
## 3  4/3/2017    20656.10
## 4 4/10/2017    20453.25
## 5 4/17/2017    20547.76
## 6 4/24/2017    20940.51
plot(dj$close.price,type="l",xlab="Week",ylab="closing price",main="historical data")

# boxplots by month//Qtr
dj.ts.q<-ts(dj,frequency = 4)
dj.ts.m<-ts(dj,frequency = 12)
boxplot(dj.ts.m[[1]],dj.ts.m["close.price"])

#forecasting data
mul<-decompose(ts(dj[,2],frequency = 12), type="multiplicative")
add<-decompose(ts(dj[,2],frequency = 12), type="additive")


#plot forecast
par(mfrow=c(1,2))
plot(mul)

plot(add)

#results
mul.me<-mean(na.omit(mul$random))
mul.mae<-mean(na.omit(abs(mul$random)))
mul.mse<-mean(na.omit(mul$random)^2)
mul.rmse<-sqrt(mul.mse)
mul.mape<-mean(abs(na.omit(mul$random/mul$x)))

add.me<-mean(na.omit(add$random))
add.mae<-mean(na.omit(abs(add$random)))
add.mse<-mean(na.omit(add$random)^2)
add.rmse<-sqrt(add.mse)
add.mape<-mean(abs(na.omit(add$random/add$x)))

r<-c("Mean Error","Mean Absolute Error", "Mean Squared Error", "Root Mean Sq Error", "Mean Absolute Percentage Error")
m<-c(mul.me,mul.mae,mul.mse,mul.rmse,mul.mape)
a<-c(add.me,add.mae,add.mse,add.rmse,add.mape)
bv<-c("Bias","Variance","Variance","Bias","Variance")
result<- data.frame(cbind(m,a,bv))
row.names(result)<-r
result
##                                                   m                  a       bv
## Mean Error                          1.0006447931247   20.2190170584062     Bias
## Mean Absolute Error                 1.0006447931247   341.231225015572 Variance
## Mean Squared Error                 1.00163549050497   223653.383901565 Variance
## Root Mean Sq Error                 1.00081741117197   472.920060794174     Bias
## Mean Absolute Percentage Error 4.01805161233233e-05 0.0135054171020523 Variance
calc_me<- function(objectname) {
   ME<-sum(na.omit(abs(objectname$random)))/length(objectname$random)
    print("Mean Error : ")
    return(ME)
   }
  
  calc_me(mul)
## [1] "Mean Error : "
## [1] 0.9241624
   calc_me(add)
## [1] "Mean Error : "
## [1] 315.1499