You are on page 1of 8

20bce1205_lab3.

Shubham Ojha

20BCE1205

EDA LAB (L1+L2)

Time Series and Auto Correlation


HP

2023-02-06
# Simple Moving Average
years<-c(1:12)
years

## [1] 1 2 3 4 5 6 7 8 9 10 11 12

sales<-c(5.2,4.9,5.5,4.9,5.2,5.7,5.4,5.8,5.9,6,5.2,4.8)
df<-data.frame(years,sales)
df

## years sales
## 1 1 5.2
## 2 2 4.9
## 3 3 5.5
## 4 4 4.9
## 5 5 5.2
## 6 6 5.7
## 7 7 5.4
## 8 8 5.8
## 9 9 5.9
## 10 10 6.0
## 11 11 5.2
## 12 12 4.8

r<-nrow(df)
n=3
ma<-rep(0,r)
e<-rep(0,r)
abe<-rep(0,r)
e2<-rep(0,r)
pe<-rep(0,r)
ma

## [1] 0 0 0 0 0 0 0 0 0 0 0 0

for (i in 4:12) {
a<-((df$sales[i-3]+df$sales[i-2]+df$sales[i-1])/3)
ma[i]=a
}
ma

## [1] 0.000000 0.000000 0.000000 5.200000 5.100000 5.200000 5.266667


5.433333
## [9] 5.633333 5.700000 5.900000 5.700000

for (i in 4:12) {
b<-(df$sales[i]-ma[i])
e[i]=b
}
e

## [1] 0.0000000 0.0000000 0.0000000 -0.3000000 0.1000000 0.5000000


## [7] 0.1333333 0.3666667 0.2666667 0.3000000 -0.7000000 -0.9000000

for (i in 4:12) {
abe[i]=abs(e[i])
e2[i]=e[i]*e[i]
pe[i]=(abe[i]/sales[i])*100
}
abe

## [1] 0.0000000 0.0000000 0.0000000 0.3000000 0.1000000 0.5000000 0.1333333


## [8] 0.3666667 0.2666667 0.3000000 0.7000000 0.9000000

e2

## [1] 0.00000000 0.00000000 0.00000000 0.09000000 0.01000000 0.25000000


## [7] 0.01777778 0.13444444 0.07111111 0.09000000 0.49000000 0.81000000

pe

## [1] 0.000000 0.000000 0.000000 6.122449 1.923077 8.771930 2.469136


## [8] 6.321839 4.519774 5.000000 13.461538 18.750000

df<-cbind(df,e)
df<-cbind(df,abe)
df<-cbind(df,e2)
df<-cbind(df,pe)
df
## years sales e abe e2 pe
## 1 1 5.2 0.0000000 0.0000000 0.00000000 0.000000
## 2 2 4.9 0.0000000 0.0000000 0.00000000 0.000000
## 3 3 5.5 0.0000000 0.0000000 0.00000000 0.000000
## 4 4 4.9 -0.3000000 0.3000000 0.09000000 6.122449
## 5 5 5.2 0.1000000 0.1000000 0.01000000 1.923077
## 6 6 5.7 0.5000000 0.5000000 0.25000000 8.771930
## 7 7 5.4 0.1333333 0.1333333 0.01777778 2.469136
## 8 8 5.8 0.3666667 0.3666667 0.13444444 6.321839
## 9 9 5.9 0.2666667 0.2666667 0.07111111 4.519774
## 10 10 6.0 0.3000000 0.3000000 0.09000000 5.000000
## 11 11 5.2 -0.7000000 0.7000000 0.49000000 13.461538
## 12 12 4.8 -0.9000000 0.9000000 0.81000000 18.750000

mae<-sum(df$abe)/(r-n)
mae

## [1] 0.3962963

mse<-sum(df$e2)/(r-n)
mse

## [1] 0.2181481

rmse<-sqrt(mse)
rmse

## [1] 0.4670633

mape<-sum(df$pe)/(r-n)
mape

## [1] 7.482194

# Weighted Moving Average


years<-c(1:12)
years

## [1] 1 2 3 4 5 6 7 8 9 10 11 12

sales<-c(5.2,4.9,5.5,4.9,5.2,5.7,5.4,5.8,5.9,6,5.2,4.8)
df<-data.frame(years,sales)
df

## years sales
## 1 1 5.2
## 2 2 4.9
## 3 3 5.5
## 4 4 4.9
## 5 5 5.2
## 6 6 5.7
## 7 7 5.4
## 8 8 5.8
## 9 9 5.9
## 10 10 6.0
## 11 11 5.2
## 12 12 4.8

r<-nrow(df)
n=3
w=c(1,2,1)
ma<-rep(0,r)
e<-rep(0,r)
abe<-rep(0,r)
e2<-rep(0,r)
pe<-rep(0,r)
s=sum(w)
for (i in 4:12) {
a<-(((df$sales[i-3]*w[1])+(df$sales[i-2]*w[2])+(df$sales[i-1]*w[3]))/s)
ma[i]=a
}
ma

## [1] 0.000 0.000 0.000 5.125 5.200 5.125 5.250 5.500 5.575 5.725 5.900
5.775

for (i in 4:12) {
b<-(df$sales[i]-ma[i])
e[i]=b
}
e

## [1] 0.000 0.000 0.000 -0.225 0.000 0.575 0.150 0.300 0.325 0.275
## [11] -0.700 -0.975

for (i in 4:12) {
abe[i]=abs(e[i])
e2[i]=e[i]*e[i]
pe[i]=(abe[i]/sales[i])*100
}
abe

## [1] 0.000 0.000 0.000 0.225 0.000 0.575 0.150 0.300 0.325 0.275 0.700
0.975

e2

## [1] 0.000000 0.000000 0.000000 0.050625 0.000000 0.330625 0.022500


0.090000
## [9] 0.105625 0.075625 0.490000 0.950625

pe
## [1] 0.000000 0.000000 0.000000 4.591837 0.000000 10.087719 2.777778
## [8] 5.172414 5.508475 4.583333 13.461538 20.312500

df<-cbind(df,e)
df<-cbind(df,abe)
df<-cbind(df,e2)
df<-cbind(df,pe)
df

## years sales e abe e2 pe


## 1 1 5.2 0.000 0.000 0.000000 0.000000
## 2 2 4.9 0.000 0.000 0.000000 0.000000
## 3 3 5.5 0.000 0.000 0.000000 0.000000
## 4 4 4.9 -0.225 0.225 0.050625 4.591837
## 5 5 5.2 0.000 0.000 0.000000 0.000000
## 6 6 5.7 0.575 0.575 0.330625 10.087719
## 7 7 5.4 0.150 0.150 0.022500 2.777778
## 8 8 5.8 0.300 0.300 0.090000 5.172414
## 9 9 5.9 0.325 0.325 0.105625 5.508475
## 10 10 6.0 0.275 0.275 0.075625 4.583333
## 11 11 5.2 -0.700 0.700 0.490000 13.461538
## 12 12 4.8 -0.975 0.975 0.950625 20.312500

mae<-sum(df$abe)/(r-n)
mae

## [1] 0.3916667

mse<-sum(df$e2)/(r-n)
mse

## [1] 0.2350694

rmse<-sqrt(mse)
rmse

## [1] 0.4848396

mape<-sum(df$pe)/(r-n)
mape

## [1] 7.388399

# Exponential Moving Average


years<-c(1:10)
years

## [1] 1 2 3 4 5 6 7 8 9 10

sales<-c(30,25,35,25,20,30,35,40,30,45)
df<-data.frame(years,sales)
df
## years sales
## 1 1 30
## 2 2 25
## 3 3 35
## 4 4 25
## 5 5 20
## 6 6 30
## 7 7 35
## 8 8 40
## 9 9 30
## 10 10 45

r<-nrow(df)
n=3
alpha=0.3
ma<-rep(0,r+1)
e<-rep(0,r+1)
abe<-rep(0,r+1)
e2<-rep(0,r+1)
pe<-rep(0,r+1)
for (i in 1:(r+1)) {
if(i==1){
ma[i]=df$sales[i]
}else{
a<-((alpha*df$sales[i-1])+((1-alpha)*ma[i-1]))
ma[i]=a
}
}
ma<-ma[1:r]
ma

## [1] 30.00000 30.00000 28.50000 30.45000 28.81500 26.17050 27.31935


29.62354
## [9] 32.73648 31.91554

for (i in (n+1):r) {
b<-(df$sales[i]-ma[i])
e[i]=b
}
for (i in (n+1):r) {
abe[i]=abs(e[i])
e2[i]=e[i]*e[i]
pe[i]=(abe[i]/sales[i])*100
}
e<-e[1:r]
abe<-abe[1:r]
e2<-e2[1:r]
pe<-pe[1:r]
df<-cbind(df,e)
df<-cbind(df,abe)
df<-cbind(df,e2)
df<-cbind(df,pe)
df

## years sales e abe e2 pe


## 1 1 30 0.000000 0.000000 0.000000 0.000000
## 2 2 25 0.000000 0.000000 0.000000 0.000000
## 3 3 35 0.000000 0.000000 0.000000 0.000000
## 4 4 25 -5.450000 5.450000 29.702500 21.800000
## 5 5 20 -8.815000 8.815000 77.704225 44.075000
## 6 6 30 3.829500 3.829500 14.665070 12.765000
## 7 7 35 7.680650 7.680650 58.992384 21.944714
## 8 8 40 10.376455 10.376455 107.670818 25.941138
## 9 9 30 -2.736481 2.736481 7.488331 9.121605
## 10 10 45 13.084463 13.084463 171.203171 29.076584

mae<-sum(df$abe)/(r-n)
mae

## [1] 7.42465

mse<-sum(df$e2)/(r-n)
mse

## [1] 66.77521

rmse<-sqrt(mse)
rmse

## [1] 8.17161

mape<-sum(df$pe)/(r-n)
mape

## [1] 23.53201

# Auto Correlation
yt<-c(2,3,5,7,9,10)
df<-data.frame(yt)
df

## yt
## 1 2
## 2 3
## 3 5
## 4 7
## 5 9
## 6 10

r<-nrow(df)
yt1<-rep(0,r)
for (i in 2:r) {
yt1[i]<-yt[i-1]
}
yt1

## [1] 0 2 3 5 7 9

df<-cbind(df,yt1)
df

## yt yt1
## 1 2 0
## 2 3 2
## 3 5 3
## 4 7 5
## 5 9 7
## 6 10 9

my<-mean(df$yt)
num<-sum((df$yt[2:r]-my)*(df$yt1[2:r]-my))
dem<-sum((df$yt[1:r]-my)*(df$yt[1:r]-my))
num

## [1] 29

dem

## [1] 52

autocorrelation=num/dem
autocorrelation

## [1] 0.5576923

You might also like