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