Data deret waktu merupakan data yang diamati berdasarkan urutan waktu dengan rentang yang sama (jam, hari, minggu, bulan, tahun, dll). Beberapa contoh data deret waktu antara lain nilai tukar rupiah harian, jumlah pasien covid-19 di Indonesia, curah hujan, dll.
Data deret waktu dibedakan menjadi dua, yaitu data stasioner dan tidak stasioner. Data dikatakan stasioner jika memiliki nilai tengah dan ragam yang konstan dari waktu ke waktu. Adapun pola data deret waktu secara garis besar dibedakan menjadi horizontal, trend, siklis, dan musiman. Dalam analisis data deret waktu, identifikasi pola data merupakan hal yang sangat penting untuk menentukan jenis analisis yang akan digunakan.
Berikut akan dibahas mengenai beberapa teknik eksplorasi data deret waktu menggunakan library graphics di R. Data pertama yang digunakan adalah data tentang kasus kecelakaan tahun 2009-2019. Sumber data berasal dari (http://bappeda.jogjaprov.go.id/)
# set directory
setwd("D:/ASPRAK/ADW/PERTEMUAN 2")
# Import data
library(readxl)
mdata<- read_excel("data_acc.xlsx", sheet = 1)
# Statistik deskriptif
str(mdata)
## tibble [11 x 3] (S3: tbl_df/tbl/data.frame)
## $ Tahun : num [1:11] 2009 2010 2011 2012 2013 ...
## $ Jumlah Kecelakaan: num [1:11] 4381 4613 4508 4457 3631 ...
## $ Korban Meninggal : num [1:11] 200 169 334 429 353 315 396 464 442 485 ...
dim(mdata)
## [1] 11 3
summary(mdata)
## Tahun Jumlah Kecelakaan Korban Meninggal
## Min. :2009 Min. :3472 Min. :169.0
## 1st Qu.:2012 1st Qu.:3894 1st Qu.:324.5
## Median :2014 Median :4381 Median :396.0
## Mean :2014 Mean :4379 Mean :364.2
## 3rd Qu.:2016 3rd Qu.:4560 3rd Qu.:435.5
## Max. :2019 Max. :5944 Max. :485.0
# Menghitung simpangan baku data
apply(mdata[,2:3], 2, sd)
## Jumlah Kecelakaan Korban Meninggal
## 698.2958 103.6058
Data diamati pada rentang waktu 2009- 2019 (11 amatan) yang terdiri dari dua peubah yaitu Jumlah Kecelakaan dan Korban Meninggal. Adapun rata-rata kasus kecelakan dalam periode tersebut sebesar 4379 kasus dengan rata-rata kematian sebesar 364.2 jiwa. Adapun simpangan baku dari masing-masing peubah cukup besar yaitu 698.3 dan 103.6. Hal tersebut menunjukkan bahwa data kasus kecelakaan dan korban meninggal cukup beragam dari waktu ke waktu. Selanjutnya akan dilakukan eksplorasi lebih lanjut terhadap data kecelakaan tesebut.
# Mengubah data menjadi data deret waktu
library(graphics)
dts<- ts(mdata[,2:3], start = 2009, end = 2019)
head(dts)
## Jumlah Kecelakaan Korban Meninggal
## [1,] 4381 200
## [2,] 4613 169
## [3,] 4508 334
## [4,] 4457 429
## [5,] 3631 353
## [6,] 3472 315
# Multiple Graph (membagi jendela menjadi 1 baris dua kolom)
par(mfrow = c(1,2))
ts.plot(dts[,1], ylab = "Jumlah Kasus", xlab = "Tahun", col = "darkred", lwd = 1)
title(main = 'Jumlah Kasus Kecelakaan Tahun 2009-2019',
sub = "Sumber: http://bappeda.jogjaprov.go.id/", cex.main = 0.8, cex.sub = 0.7)
points(dts[,1], pch = 20, col = 'darkred')
ts.plot(dts[,2], ylab = "Jumlah Korban (jiwa)", xlab = "Tahun", col = "black", lwd = 1)
points(dts[,2], pch = 20, col = 'black')
title(main = 'Jumlah Korban Meninggal Tahun 2009-2019',
sub = "Sumber: http://bappeda.jogjaprov.go.id/", cex.main = 0.8, cex.sub = 0.7)
Berdasarkan hasil plot diatas, terlihat bahwa data tidak stasioner. Kasus kecelakaan di setiap tahun berubah secara fluktuatif. Adapun sejak tahun 2016 hingga tahun 2019 terjadi peningkatan jumlah kasus kecelakaan setiap tahunnya. Adapun korban meninggal akibat kecelakaan cenderung meningkat tiap tahunnya. Sejak tahun 2011, jumlah korban meninggal akibat kecelakaan lebih dari 300 jiwa setiap tahunnya.
newdata <- read_xlsx('Data P1_1.xlsx', sheet = 'Sheet1')
head(newdata, n = 5)
## # A tibble: 5 x 4
## week aktual pemulusan peramalan
## <dbl> <dbl> <dbl> <dbl>
## 1 1 10618. NA NA
## 2 2 10538. NA NA
## 3 3 10209. 10455. NA
## 4 4 10553 10433. 10455.
## 5 5 9935. 10232. 10433.
data1_1.ts<-ts(newdata$aktual)
data1_2.ts<-ts(newdata$pemulusan)
data1_3.ts<-ts(newdata$peramalan)
# Plot 1
ts.plot(data1_1.ts, xlab="Time Period ",
ylab="Reading", main= "Time Series Plot N=4")
points(data1_1.ts)
lines(data1_2.ts,col="green",lwd=2)
lines(data1_3.ts,col="red",lwd=2)
legend("topleft",c("data aktual","data pemulusan","data peramalan"), lty=8,
col=c("black","green","red"), cex=0.8)
# Plot 1
ts.plot(data1_1.ts, xlab="Time Period ",
ylab="Reading")
title(main= "Time Series Plot N=4", sub = "Hasil Pemulusan MA(4)", cex.main = 1, cex.sub = 0.7)
points(data1_1.ts)
lines(data1_2.ts,col="blue",lwd=2)
lines(data1_3.ts,col="red",lwd=2)
legend("bottomright",c("data aktual","data pemulusan","data peramalan"), lty=3,
col=c("black","blue","red"), cex=1)
Metode pemulusan (smoothing) digunakan untuk mengurangi ketidak beraturan data dengan cara membuat keseimbangan rata-rata dari data pada masa lampau. Beberapa metode pemulusan pada data deret waktu antara lain :
Untuk data stasioner
Rata-rata bergerak tunggal (single moving avreage)
Pemulusan eksponensial tunggal (single exponential smoothing)
Untuk data berpola trend
Rata-rata bergerak ganda (double moving average)
Pemulusan eksponensial ganda (double exponential smoothing)
Untuk data musiman