Email             :
RPubs            : https://rpubs.com/karennatalie/
Jurusan          : Statistika
Address         : ARA Center, Matana University Tower
                         Jl. CBD Barat Kav, RT.1, Curug Sangereng, Kelapa Dua, Tangerang, Banten 15810.


1 Pengenalan Time Series

Deret waktu adalah kumpulan fakta sepanjang waktu untuk satu entitas. Hal ini berbeda dengan data cross-section, yang merupakan informasi tentang banyak hal pada waktu yang bersamaan. Pengaruh perubahan X pada Y dapat diperkirakan dengan menggunakan data deret waktu. Ahli ekonometrika menyebut ini sebagai efek kausal yang dinamis.
Plotting data adalah langkah awal dalam setiap kegiatan analisis deret waktu. Banyak aspek data, seperti pola, temuan aneh, perubahan sepanjang waktu, dan korelasi antar variabel, dapat ditampilkan menggunakan grafik. Ciri-ciri yang mungkin diperhatikan dalam plot data selanjutnya harus dimasukkan ke dalam algoritma peramalan sebanyak mungkin. Jenis data menentukan hasil, sama seperti jenis data mempengaruhi hasil.

2 Objek-objek Time Series

Deret waktu adalah kumpulan angka yang disertai dengan informasi tentang kapan angka-angka itu dicatat. Di R, data ini dapat disimpan sebagai objek ts().
Asumsikan kita memiliki beberapa tahun pengamatan tahunan:

annual observations for a last few year

Setelah itu diubah menjadi objek ts menggunakan fungsi ts() :

dt <- ts(c(30, 60, 90, 120, 150, 180, 210, 240, 270, 300, 330, 360, 390, 420), start=2007)
dt

Kita hanya perlu menentukan tahun awal jika kita memiliki data tahunan dengan satu pengamatan setiap tahun (atau tahun akhir).
Cukup menambahkan argumen frekuensi untuk pengamatan yang terjadi lebih dari sekali dalam setahun. Jika data bulanan sudah direkam dalam vektor numerik dt, misalnya, data tersebut dapat diubah menjadi objek ts sebagai berikut:

y <- ts(dt, start=2020, frequency = 12)
y

Disini frekuensi adalah pengamatan sebelum pola musiman berulang lagi.1 Opsi berikut harus disediakan saat memanggil fungsi ts() di R.

3 Plot Waktu

Untuk data deret waktu, grafik yang jelas untuk memulai adalah plot waktu. Artinya, pengamatan diplot terhadap waktu pengamatan, dengan pengamatan berurutan bergabung dengan garis lurus.
Pada contoh di bawah ini menunjukkan beban penumpang ekonomi mingguan di Ansett Airlines antara dua kota terbesar di Australia sebagai berikut:

library(fpp)
library(DT)
datatable(melsyd,
          caption = htmltools::tags$caption(
            style = 'caption-side: bottom; text-align: center;',
            htmltools::em('Table 1: Passengers: Melbourne-Sydney')
          ),
          options = list(dom = 't'))
library(ggplot2)
autoplot(melsyd[,"Economy.Class"])+
  ggtitle("Figure 1: Economy Class Paseengers: Melbourne-Sydney")+
  xlab("Year")+
  ylab("Thousands")

Dalam kasus diatas, fungsi autoplot() berfungsi untuk mengenali melsyd[,"economy.class"] sebagai deret waktu dan menghasilkan plot waktu.
Dari plot diatas dapat kita lihat ada beberapa fitur menarik yaitu:
- Ada periode pada tahun 1989 ketika tidak ada penumpang yang diangkut - ini karena perselisihan industri.
- Ada masa pengurangan beban pada tahun 1992. Hal ini disebabkan oleh uji coba di mana beberapa kursi kelas ekonomi digantikan oleh kursi kelas bisnis.
- Peningkatan besar dalam beban penumpang terjadi pada paruh kedua tahun 1991.
- Ada beberapa penurunan besar dalam beban sekitar awal setiap tahun. Ini karena efek liburan.
- Ada fluktuasi jangka panjang dalam tingkat seri yang meningkat selama tahun 1987, menurun pada tahun 1989, dan meningkat lagi melalui tahun 1990 dan 1991.
- Ada beberapa periode pengamatan yang hilang.
- Model apa pun perlu mempertimbangkan semua fitur ini untuk memperkirakan beban penumpang secara efektif di masa mendatang.
Deret waktu yang lebih sederhana ditunjukkan pada Gambar 2: Penjualan bulanan obat antidiabetes di Australia.

autoplot(a10) +
  ggtitle("Figure2: Antidiabetic drug sales") +
  ylab("$ million") +
  xlab("Year")

Penurunan mendadak setiap awal tahun disebabkan oleh skema subsidi pemerintah yang membuat pasien hemat biaya untuk menimbun obat di akhir tahun kalender.

4 Pola Deret Waktu

Dalam menggambarkan rangkaian waktu ini, kami telah menggunakan kata-kata seperti “trend” dan “seasonal” yang perlu didefinisikan lebih hati-hati.

4.1 Trend

Tren adalah ketika data naik atau turun dalam jangka panjang. Tidak harus linier. Ketika sebuah tren dapat beralih dari tren naik ke tren turun, tren terkadang disebut sebagai “putaran”. Terdapat tren data penjualan obat antidiabetes yang ditunjukkan pada Figure 2.

4.2 Seasonal

Pola musiman terjadi ketika deret waktu dipengaruhi oleh faktor musiman seperti waktu dalam setahun atau hari dalam seminggu. Musiman selalu dalam frekuensi yang tetap dan diketahui. Penjualan bulanan obat antidiabetes di atas menunjukkan musim yang sebagian disebabkan oleh perubahan harga obat pada akhir tahun kalender.

4.3 Cyclic

Siklus terjadi ketika data naik dan turun tidak tetap dalam frekuensi. Fluktuasi ini biasanya disebabkan oleh kondisi ekonomi dan sering dikaitkan dengan “siklus bisnis”. Durasi fluktuasi ini biasanya setidaknya dua tahun.
Banyak orang mengacaukan perilaku periodik dengan perilaku musiman, tetapi kenyataannya, keduanya sangat berbeda. Jika fluktuasi tidak memiliki frekuensi tetap, fluktuasi itu periodik. Polanya musiman jika frekuensinya tidak berubah dan terkait dengan beberapa aspek kalender. Pada umumnya panjang siklus rata-rata lebih panjang daripada panjang pola musiman, dan ukuran siklus cenderung lebih bervariasi daripada ukuran pola musiman.
Banyak deret waktu mencakup tren, siklus, dan musiman. Saat memilih metode peramalan, Anda harus terlebih dahulu mengidentifikasi pola deret waktu dalam data Anda, lalu memilih metode yang dapat menangkap pola dengan tepat.
Contoh pada Gambar 3 menunjukkan kombinasi yang berbeda dari komponen di atas.

Keterangan dari gambar diatas:
- Penjualan perumahan bulanan (kiri atas) menunjukkan musim yang kuat dalam setiap tahun, serta beberapa perilaku siklus yang kuat dengan jangka waktu sekitar 6-10 tahun. Tidak ada tren yang jelas dalam data selama periode ini.
- Kontrak treasury bill AS (kanan atas) menunjukkan hasil dari pasar Chicago selama 100 hari perdagangan berturut-turut pada tahun 1981. Di sini tidak ada musim, tetapi tren penurunan yang jelas.
- Produksi listrik triwulanan Australia (kiri bawah) menunjukkan tren peningkatan yang kuat, dengan musim yang kuat. Tidak ada bukti perilaku siklik di sini.
- Perubahan harian pada harga saham penutupan Google (kanan bawah) tidak memiliki tren, musiman, atau perilaku siklus. Ada fluktuasi acak yang tampaknya tidak dapat diprediksi, dan tidak ada pola kuat yang akan membantu mengembangkan model peramalan.

5 Plot Musiman

Seasonal Plot mirip dengan plot waktu kecuali bahwa data diplot terhadap “musim” individu di mana data diamati. Sebuah contoh diberikan di bawah ini menunjukkan penjualan obat antidiabetes.

ggseasonplot(a10, year.labels=TRUE, year.labels.left=TRUE) +
  ylab("$ million") +
  ggtitle("Figure4: Seasonal plot ~ antidiabetic drug sales")

Dalam kasus yang sama, Seasonal Plot dapat mengidentifikasi tahun-tahun dimana pola tersebut berubah dilihat dari lonjakan penjualan yang besar di bulan Januari setiap tahunnya. Grafik juga menunjukkan bahwa ada jumlah penjualan yang sangat kecil di bulan Maret 2008 (sebagian besar tahun lainnya menunjukkan peningkatan antara bulan Februari dan Maret). Sedikitnya jumlah penjualan pada bulan Juni 2008 kemungkinan disebabkan karena belum lengkapnya penghitungan penjualan pada saat pendataan.
Pengaturan polar=TRUE membuat sumbu deret waktu menjadi melingkar dan bukan horizontal, seperti yang ditunjukkan di bawah ini.

ggseasonplot(a10, polar=TRUE) +
  ylab("S million") +
  ggtitle("Figure 5: Polar seasonal plot ~ antidiabetic drug sales")

6 Plot Subseri Musiman

Plot alternatif yang menekankan pola musiman adalah dimana data untuk setiap musim dikumpulkan bersama dalam plot waktu mini yang terpisah.

ggsubseriesplot(a10) +
  ylab(" $ million") +
  ggtitle("Figure 6: Seasonal subseries plot ~ antidiabetic drug sales")

Garis horizontal menunjukkan rata-rata untuk setiap bulan. Bentuk plot ini memungkinkan pola musim yang mendasarinya terlihat jelas, dan juga menunjukkan perubahan musim dari waktu ke waktu.

7 Petak Sebar / ScatterPlot

Grafik yang dibahas sejauh ini berguna untuk memvisualisasikan deret waktu individual. Hal ini juga berguna untuk mengeksplorasi hubungan antara deret waktu.
Figure 7 menunjukkan dua deret waktu: permintaan listrik setengah jam (dalam Gigawatt) dan suhu (dalam derajat Celcius), untuk tahun 2014 di Victoria, Australia. Suhu untuk Melbourne, kota terbesar di Victoria, sedangkan nilai permintaan untuk seluruh negara bagian.

library(fpp2)
autoplot(elecdemand[,c("Demand", "Temperature")], facets=TRUE) +
  xlab("Year:2014") + ylab("") +
  ggtitle("Figure 7: Half-hourly electricity demand ~ Victoria, Australia")

(Kode sebenarnya untuk plot ini sedikit lebih rumit daripada yang ditampilkan untuk memasukkan bulan pada sumbu x.)
Kita dapat mempelajari hubungan antara permintaan dan suhu dengan memplot satu seri terhadap yang lain.

qplot(Temperature, Demand, data=as.data.frame(elecdemand)) +
  ylab("Demand (GW)") + xlab("Temperature (Celcius")

7.1 Matriks Sebaran Plot

Ketika ada beberapa variabel prediktor potensial, akan berguna untuk memplot setiap variabel terhadap satu sama lain variabel. Perhatikan deret lima waktu yang ditunjukkan di bawah ini, yang menunjukkan jumlah pengunjung triwulanan untuk lima wilayah New South Wales, Australia.

autoplot(visnights[,1:5], facets=TRUE) +
  ylab("Number of Visitor nights each quarter (millions)")

Untuk melihat hubungan antara lima deret waktu ini, kita dapat memplot setiap deret waktu terhadap deret lainnya. Plot-plot ini dapat diatur dalam matriks scatterplot, seperti yang ditunjukkan pada figure di bawah.

GGally::ggpairs(as.data.frame(visnights[,1:5]))

Nilai dari matriks scatterplot adalah memungkinkan tampilan cepat dari hubungan antara semua pasangan variabel. Dalam contoh ini, plot kolom kedua menunjukkan ada hubungan positif yang kuat antara pengunjung pantai utara NSW dan pengunjung pantai selatan NSW, tetapi tidak ada hubungan yang terdeteksi antara pengunjung pantai utara NSW dan pengunjung ke pedalaman selatan NSW. Pencilan juga bisa terlihat. Ada satu kuartal yang sangat tinggi untuk wilayah Metropolitan NSW, sesuai dengan Olimpiade Sydney 2000. Hal ini paling mudah terlihat pada dua plot pertama di kolom kiri Gambar di atas, di mana nilai terbesar untuk NSW Metro terpisah dari awan utama pengamatan.

8 Plot Lag

Figure di bawah ini menampilkan sebar produksi bir Australia triwulanan, di mana sumbu horizontal menunjukkan nilai lag dari deret waktu. Setiap grafik menunjukkan \(y_t\) diplot terhadap \(y_t−k\) untuk nilai k yang berbeda.

library(tsibbledata)
library(tsibble)
library(stats)
library(dplyr)
library(feasts)
library(fabletools)
library(lubridate)
recent_production <- aus_production %>%
  filter(year(Quarter) >= 2000)
recent_production %>%
  gg_lag(Beer, geom = "point") +
  labs(x = "lag(Beer, k)")

Di sini warna menunjukkan seperempat variabel pada sumbu vertikal. Garis menghubungkan titik-titik dalam urutan kronologis. Hubungannya sangat positif pada lag 4 dan 8, mencerminkan musim yang kuat dalam data. Hubungan negatif terlihat untuk lag 2 dan 6 terjadi karena puncak (di Q4) diplot melawan palung (di Q2)
Fungsi window() yang digunakan di sini sangat berguna saat mengekstrak sebagian dari deret waktu. Dalam hal ini, kami telah mengekstrak data dari ausbeer, mulai tahun 1992.

9 Autokorelasi

Ada beberapa koefisien autokorelasi, sesuai dengan setiap panel di plot lag. Misalnya, r_1 mengukur hubungan antara y_t dan yt−1,r2 mengukur hubungan antara y_t dan yt−2,$ dan seterusnya.
Nilai rk dapat ditulis sebagai

di mana T adalah panjang deret waktu.
Sembilan koefisien autokorelasi pertama untuk data produksi beer diberikan dalam tabel berikut.

Ini sesuai dengan sembilan scatterplot pada Gambar di bawah. Koefisien autokorelasi diplot untuk menunjukkan fungsi autokorelasi atau ACF.

recent_production %>% ACF(Beer, lag_max = 9)

Nilai pada kolom acf adalah r1,⋯,r9, sesuai dengan sembilan scatterplot pada Gambar di bawah. Kami biasanya memplot ACF untuk melihat bagaimana korelasi berubah dengan lag k. Plot kadang-kadang dikenal sebagai correlogram.

recent_production %>%
  ACF(Beer) %>%
  autoplot() + labs(title="Australian beer production")

Dalam grafik ini:
- r4 lebih tinggi daripada lag lainnya. Hal ini disebabkan pola musiman dalam data: puncak cenderung terpisah empat perempat dan palung cenderung terpisah empat perempat.
- r2 lebih negatif daripada lag lainnya karena lembah cenderung dua perempat di belakang puncak.
- Garis putus-putus berwarna biru menunjukkan apakah korelasi berbeda nyata dari nol. Ini dijelaskan di bagian berikutnya (White Noise).
Saat data sedang tren dan musiman, kita ingin melihat kombinasi dari efek ini. Deret permintaan listrik bulanan Australia yang diplot pada figure 2.15 menunjukkan tren dan musiman. ACF-nya ditunjukkan pada Gambar di bawah ini:

aelec <- window(elec, start=1980)
autoplot(aelec) + xlab("Year") + ylab("GWh")
ggAcf(aelec, lag=40)

Penurunan ACF yang lambat seiring dengan peningkatan lag disebabkan oleh tren, sedangkan bentuk “bergigi” disebabkan oleh musim.

10 kebisingan putih

Deret waktu yang tidak menunjukkan autokorelasi disebut white noise. Gambar di bawah ini memberikan contoh rangkaian white noise.

set.seed(30)
y <- ts(rnorm(50))
autoplot(y) + ggtitle("White Noise")
ggAcf(y)

Untuk deret derau putih, kami memperkirakan 95% lonjakan di ACF berada dalam ±2/√T di mana T adalah panjang deret waktu. Adalah umum untuk memplot batas-batas ini pada grafik ACF (garis putus-putus biru di atas). Jika satu atau lebih paku besar berada di luar batas ini, atau jika secara substansial lebih dari 5% paku berada di luar batas ini, maka rangkaian tersebut mungkin bukan white noise.