Eksplorasi Data Deret Waktu

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.

Tambahan Teknik Eksplorasi Data Deret Waktu

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 Data Deret Waktu

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

Untuk data berpola trend

Untuk data musiman