Time series atau deret waktu merupakan serangkaian pengamatan yang diambil selama beberapa periode waktu yang teratur. Dalam deret waktu, observasi bersifat tidak bebas melainkan saling berkorelasi. Akibatnya tidak bisa digunakan metode-metode statistika yang berdasarkan pada asumsi kebebasan (independent). Diperlukan pendekatan lain yang dinamakan analisis deret waktu.
Tujuan utama dari analisis deret waktu adalah mendeteksi adanya komponen tren (trend), musiman (seasonal), siklus (cyclic), dan fluktuasi acak dalam data. Dengan melihat komponen tersebut, dapat dipahami perilaku historis data sehingga dipilih pemodelan yang tepat dalam peramalan (forecasting).
Di dunia bisnis, analisis deret waktu dapat digunakan untuk mengamati suku bunga mingguan, hasil penjualan tahunan/bulanan, dan harga saham harian. Di bidang meteorologi, diterapkan untuk mengamati curah hujan tahunan, kecepatan angin setiap jam, dan temperatur suhu harian. Analisis deret waktu juga berperan dalam mengamati hasil produksi tanaman dan penjualan ekspor di bidang pertanian. Cakupan penggunaannya yang luas membuat analisis deret waktu menjadi alat yang esensial dalam berbagai ilmu.
Dalam analisis deret waktu, plot berperan penting dalam membuat interpretasi dari suatu kasus. Membuat plot secara manual merupakan sebuah resiko karena bisa menyebabkan ketidakakuratan hasil. Selain itu, pemodelan juga menjadi tantangan dalam analisis deret waktu. Untungnya, dengan adanya software Rstudio, dapat mempermudah peneliti dalam analisis deret waktu secara efisien dan akurat.
Analisis deret waktu diterapkan khusus pada data (time series). Data yang dimodelkan dalam analisis deret waktu diasumsikan berada dalam keadaan stasioner. Data yang tidak stasioner akan mengakibatkan kurang baiknya model yang akan diestimasi (Widarjono, 2009:315).
Secara umum, (time series) pada variabel \(Y\) dapat dinotasikan sebagai: \[ Y_t \] Keterangan:
\(t\) = Indeks waktu
\(t = 1\) dinyatakan sebagai observasi pertama pada variabel \(Y\) dan \(t = T\) merupakan observasi terakhir pada waktu ke - \(T\)
Observasi diukur pada interval yang sama misal dalam setiap tahun, bulan, hari, semester, dan lain-lain.
Tren merupakan pola naik seiring waktu yang terus menerus.
Pergerakan naik dan turun yang berulang. Berlangsung selama 2 hingga 10 tahun.
Fluktuasi naik dan turun dengan pola yang teratur, akibat cuaca, kebiasaan dan faktor lainnya. Fluktuasi terjadi di dalam satu tahun.
Fluktuasi yang tidak berpola. Terjadi akibat keragaman acak yang di luar prediksi. Bisa terjadi karena faktor: bencana alam, pemogokan buruh, dan faktor lainnya. Biasanya berlangsung dalam jangka pendek dan tidak berulang.
Asumsi penting yang harus dipenuhi dalam analisis deret waktu adalah stasioneritas. Konsep umum dari stasioneritas adalah tidak terjadi perubahan yang drastis dalam selang waktu tertentu. Plot yang memiliki pola atau tren perlu ditransformasi agar memenuhi asumsi stasioneritas.
Data time series dikatakan stasionser terhadap ragam apabila fluktasi datanya bernilai konstan. Untuk melakukan uji ini, perlu membuat plot Box-Cox. Syntax sebagai berikut membantu dalam pembuatan plot Box-Cox:
boxcox(lm())
Dinyatakan stasioner terhadap ragam apabila dalam plot, lambda Box-Cox bernilai di sekitar satu.
Data time series dikatakan stasioner terhadap rata-rata apabila data berada di sekitar suatu nilai rata-rata yang konstan (horizontal). Dilakukan uji akar unit untuk melihat stasioneritas terhadap rata-rata. Uji akar unit yang sering digunakan adalah Augmented Dickey-Fuller (ADF) test. Syntax sebagai berikut dapat membantu dalam melakukan pengujian ini dalam Rstudio.
adf.test()
Dirumuskan hipotesis sebagai berikut:
\(H_0\) : Data tidak stasioner
\(H_1\) : Data stasioner
Daerah Kritis: \(p-value\) < \(α\) maka tolak \(H_0\)
Akan didapatkan keputusan berdasarkan \(p-value\) dari output Rstudio.
Lagging suatu deret waktu berarti untuk menggeser nilainya ke satu atau lebih periode lebih awal. Time lags bisa juga diartikan sebagai beda waktu.
Lag ke-\(j\) dari suatu deret waktu \(Y_t\), \(t\) = 1,…\(T\) adalah: \[ Y_{t-j} \]
Apabila data dalam kondisi tidak stasioner, dapat dilakukan differencing. Differencing/ pembedaan merupakan metode dimana nilai data asli diganti dengan selisih.
Pembedaan pertama (first difference), d=1: \[ \Delta Y_t = Y_t - Y_{t-1} \] Pembedaan kedua (second difference), d=2: \[ \Delta^2 Y_t = \Delta Y_t - \Delta Y_{t-1} \]
Keterangan:
\(Y_t\) = Data periode ke-\(t\)
\(Y_{t-1}\) = Data periode ke-\(t-1\)
Fungsi autokorelasi menunjukkan besarnya korelasi antara pengamatan pada \(Y_t\) dengan pengamatan pada \(Y_{t-j}\).
Fungsi autokorelasi parsial menunjukkn besarnya korelasi antara pengamatan pada \(Y_t\) dengan pengamatan pada \(Y_{t-j}\) tetapi menghilangkan data yang ada di antara \(Y_t\) dan \(Y_{t-j}\) terlebih dahulu. Jadi pengaruh di antara keduanya dihilangkan.
> install.packages("knitr")
> install.packages("rmarkdown")
Error in contrib.url(repos, "source"): trying to use CRAN without setting a mirror
> install.packages("prettydoc")
Error in contrib.url(repos, "source"): trying to use CRAN without setting a mirror
> install.packages("equatiomatic")
Error in contrib.url(repos, "source"): trying to use CRAN without setting a mirror
Berikut merupakan data yang digunakan untuk analisis deret waktu:
> setwd("C:/Users/Raissa Oktaviani/Downloads/komstat")
> input<-read.csv("DATA_MOBIL.csv")
> head(input)
Year Month Quantity
1 2007 1 12685
2 2007 2 9793
3 2007 3 11264
4 2007 4 8854
5 2007 5 12007
6 2007 6 11083
> str(input)
'data.frame': 121 obs. of 3 variables:
$ Year : int 2007 2007 2007 2007 2007 2007 2007 2007 2007 2007 ...
$ Month : int 1 2 3 4 5 6 7 8 9 10 ...
$ Quantity: int 12685 9793 11264 8854 12007 11083 12062 10786 9340 11646 ...
> data<-input$Quantity
> data
[1] 12685 9793 11264 8854 12007 11083 12062 10786 9340 11646 10453 9222
[13] 9901 10567 9506 11704 10217 9670 9605 7833 8453 8390 6952 7819
[25] 5353 6287 7601 7504 7421 7581 9394 7967 9530 10187 9600 10250
[37] 9697 9094 11486 10677 9896 11119 11507 10414 11137 10683 11908 10136
[49] 10372 10543 12901 11330 13005 10354 11189 11464 11737 11543 12357 11550
[61] 10838 10925 13051 10876 12612 11053 11920 11790 11134 12413 11986 9369
[73] 11639 11322 10735 13988 12012 10948 11312 11660 12168 12893 12079 11395
[85] 11385 11246 13861 12115 12337 11441 11690 11444 11585 12963 11486 12649
[97] 10523 10685 14159 12782 12036 14207 12394 12604 12421 13197 12600 13078
[109] 10991 12222 13875 14116 12864 13681 11040 13232 13854 11932 13194 13602
[121] 13055
Sumber = https://www.kaggle.com/datasets/dmi3kno/newcarsalesnorway?select=norway_new_car_sales_by_month.csv
Untuk mengetahui pola hasil penjualan mobil tiap bulannya berdasarkan data milik website resmi OFV, organisasi yang bekerja untuk mengajak politisi dan pihak berwenang membangun jalan yang lebih aman dan efisien di Norwegia. Data yang diambil merupakan data tiap bulan sejak tahun 2007 hingga awalan 2017.
Muat paket yang diperlukan:
> library(MASS)
> library(tseries)
> library(TSA)
Pendefinsian data deret waktu dan pembentukkan plot dalam Rstudio
> data_time <- ts(data, start = c(2007,1), frequency = 12)
> data_time
Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
2007 12685 9793 11264 8854 12007 11083 12062 10786 9340 11646 10453 9222
2008 9901 10567 9506 11704 10217 9670 9605 7833 8453 8390 6952 7819
2009 5353 6287 7601 7504 7421 7581 9394 7967 9530 10187 9600 10250
2010 9697 9094 11486 10677 9896 11119 11507 10414 11137 10683 11908 10136
2011 10372 10543 12901 11330 13005 10354 11189 11464 11737 11543 12357 11550
2012 10838 10925 13051 10876 12612 11053 11920 11790 11134 12413 11986 9369
2013 11639 11322 10735 13988 12012 10948 11312 11660 12168 12893 12079 11395
2014 11385 11246 13861 12115 12337 11441 11690 11444 11585 12963 11486 12649
2015 10523 10685 14159 12782 12036 14207 12394 12604 12421 13197 12600 13078
2016 10991 12222 13875 14116 12864 13681 11040 13232 13854 11932 13194 13602
2017 13055
> plot(data_time, main = 'Rata-Rata Penjualan Mobil di Norway', ylab = "Kuantitas", xlab = "Bulan")
Uji Stasioneritas terhadap ragam:
> boxcox(lm(data_time~1))
Uji Stasioneritas terhadap rata-rata
> adf.test(data_time)
Augmented Dickey-Fuller Test
data: data_time
Dickey-Fuller = -2.6751, Lag order = 4, p-value = 0.2961
alternative hypothesis: stationary
Pembentukkan time lag dengan lag=1
> l_deret<-zlag(data_time,1)
> l_deret
[1] NA 12685 9793 11264 8854 12007 11083 12062 10786 9340 11646 10453
[13] 9222 9901 10567 9506 11704 10217 9670 9605 7833 8453 8390 6952
[25] 7819 5353 6287 7601 7504 7421 7581 9394 7967 9530 10187 9600
[37] 10250 9697 9094 11486 10677 9896 11119 11507 10414 11137 10683 11908
[49] 10136 10372 10543 12901 11330 13005 10354 11189 11464 11737 11543 12357
[61] 11550 10838 10925 13051 10876 12612 11053 11920 11790 11134 12413 11986
[73] 9369 11639 11322 10735 13988 12012 10948 11312 11660 12168 12893 12079
[85] 11395 11385 11246 13861 12115 12337 11441 11690 11444 11585 12963 11486
[97] 12649 10523 10685 14159 12782 12036 14207 12394 12604 12421 13197 12600
[109] 13078 10991 12222 13875 14116 12864 13681 11040 13232 13854 11932 13194
[121] 13602
Pembentukkan time lag dengan lag=2
> l2_deret<-zlag(data_time,2)
> l2_deret
[1] NA NA 12685 9793 11264 8854 12007 11083 12062 10786 9340 11646
[13] 10453 9222 9901 10567 9506 11704 10217 9670 9605 7833 8453 8390
[25] 6952 7819 5353 6287 7601 7504 7421 7581 9394 7967 9530 10187
[37] 9600 10250 9697 9094 11486 10677 9896 11119 11507 10414 11137 10683
[49] 11908 10136 10372 10543 12901 11330 13005 10354 11189 11464 11737 11543
[61] 12357 11550 10838 10925 13051 10876 12612 11053 11920 11790 11134 12413
[73] 11986 9369 11639 11322 10735 13988 12012 10948 11312 11660 12168 12893
[85] 12079 11395 11385 11246 13861 12115 12337 11441 11690 11444 11585 12963
[97] 11486 12649 10523 10685 14159 12782 12036 14207 12394 12604 12421 13197
[109] 12600 13078 10991 12222 13875 14116 12864 13681 11040 13232 13854 11932
[121] 13194
Dilakukan differencing sekali dan pembentukkan plot:
> d_deret<-diff(data_time,lag=1, differences=1)
> d_deret
Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
2007 -2892 1471 -2410 3153 -924 979 -1276 -1446 2306 -1193 -1231
2008 679 666 -1061 2198 -1487 -547 -65 -1772 620 -63 -1438 867
2009 -2466 934 1314 -97 -83 160 1813 -1427 1563 657 -587 650
2010 -553 -603 2392 -809 -781 1223 388 -1093 723 -454 1225 -1772
2011 236 171 2358 -1571 1675 -2651 835 275 273 -194 814 -807
2012 -712 87 2126 -2175 1736 -1559 867 -130 -656 1279 -427 -2617
2013 2270 -317 -587 3253 -1976 -1064 364 348 508 725 -814 -684
2014 -10 -139 2615 -1746 222 -896 249 -246 141 1378 -1477 1163
2015 -2126 162 3474 -1377 -746 2171 -1813 210 -183 776 -597 478
2016 -2087 1231 1653 241 -1252 817 -2641 2192 622 -1922 1262 408
2017 -547
> plot(d_deret,main='Rata-Rata Differencing Pertama Penjualan Mobil di Norway', ylab = "Kuantitas", xlab = "Bulan")
Uji Stasioneritas terhadap ragam (data hasil differencing)
> boxcox(lm(d_deret~1))
Error in boxcox.default(lm(d_deret ~ 1)): response variable must be positive
Uji Stasioneritas terhadap rata-rata (data hasil differencing)
> adf.test(d_deret)
Augmented Dickey-Fuller Test
data: d_deret
Dickey-Fuller = -8.1476, Lag order = 4, p-value = 0.01
alternative hypothesis: stationary
Autokorelasi data deret waktu
> acf(data_time)
Autokorelasi data hasil differencing
> acf(d_deret)
Autokorelasi data deret waktu dengan lag maximum sebesar 25
> acf(data_time,lag.max=25)
Autokorelasi data hasil differencing dengan lag
maximum sebesar 25
> acf(d_deret, lag.max=25)
Autokorelasi parsial data deret waktu
> acf(data_time, type=c("partial"))
Autokorelasi parsial data hasil differencing
> acf(d_deret, type=c("partial"))
Plot di atas tampak tidak stasioner. Awalnya pada tahun 2007-2008 tampak
konstan namun terjadi penurunan di tahun 2009. Lalu terjadi peningkatan
drastis hingga tahun 2017. Dapat dilakukan pengujian stasioneritas
terhadap ragam dan rata-rata bila ingin mendapatkan kesimpulan yang
tepat mengenai stasioneritas.
Nilai λ yang dihasilkan tidak memiliki selang yang memuat nilai 1,
artinya secara statistik dapat dikatakan bahwa data perlu ditransformasi
karena belum stasioner terhadap ragam.
> p_value
[1] 0.296143
Didapatkan \(p-value\) = 0,2961 dari Rstudio. \(P-value\) (0,2961) > \(α\) (0,05) Keputusannya adalah terima \(H0\) maka dapat disimpulkan bahwa data tidak stasioner. Perlu dilakukan transformasi.
> l_deret
[1] NA 12685 9793 11264 8854 12007 11083 12062 10786 9340 11646 10453
[13] 9222 9901 10567 9506 11704 10217 9670 9605 7833 8453 8390 6952
[25] 7819 5353 6287 7601 7504 7421 7581 9394 7967 9530 10187 9600
[37] 10250 9697 9094 11486 10677 9896 11119 11507 10414 11137 10683 11908
[49] 10136 10372 10543 12901 11330 13005 10354 11189 11464 11737 11543 12357
[61] 11550 10838 10925 13051 10876 12612 11053 11920 11790 11134 12413 11986
[73] 9369 11639 11322 10735 13988 12012 10948 11312 11660 12168 12893 12079
[85] 11395 11385 11246 13861 12115 12337 11441 11690 11444 11585 12963 11486
[97] 12649 10523 10685 14159 12782 12036 14207 12394 12604 12421 13197 12600
[109] 13078 10991 12222 13875 14116 12864 13681 11040 13232 13854 11932 13194
[121] 13602
Tahun 2007 bulan Januari ini merujuk ke tahun 2006 bulan Desember akibat time lag sebesar 1. Tahun 2006 bulan Desember ini tidak ada dalam vektor makanya output adalah NA. Tahun 2007 bulan Februari merujuk ke bulan Januari 2007. Oleh sebab itu, output yang muncul adalah hasil penjualan pada Januari 2007.
> l2_deret
[1] NA NA 12685 9793 11264 8854 12007 11083 12062 10786 9340 11646
[13] 10453 9222 9901 10567 9506 11704 10217 9670 9605 7833 8453 8390
[25] 6952 7819 5353 6287 7601 7504 7421 7581 9394 7967 9530 10187
[37] 9600 10250 9697 9094 11486 10677 9896 11119 11507 10414 11137 10683
[49] 11908 10136 10372 10543 12901 11330 13005 10354 11189 11464 11737 11543
[61] 12357 11550 10838 10925 13051 10876 12612 11053 11920 11790 11134 12413
[73] 11986 9369 11639 11322 10735 13988 12012 10948 11312 11660 12168 12893
[85] 12079 11395 11385 11246 13861 12115 12337 11441 11690 11444 11585 12963
[97] 11486 12649 10523 10685 14159 12782 12036 14207 12394 12604 12421 13197
[109] 12600 13078 10991 12222 13875 14116 12864 13681 11040 13232 13854 11932
[121] 13194
Januari 2007 ini merujuk ke November 2006 akibat time lag sebesar 2. November tahun 2006 ini tidak ada dalam vektor makanya output adalah NA. Tahun 2007 bulan Februari merujuk ke bulan Desember 2006. Oleh sebab itu, output yang muncul juga berupa NA. Sedangkan pada bulan Maret 2007 merujuk ke data pada bulan Januari 2007. Makanya output yang muncul adalah 12685, yaitu data penjualan mobil bulan Januari 2007.
> d_deret
Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
2007 -2892 1471 -2410 3153 -924 979 -1276 -1446 2306 -1193 -1231
2008 679 666 -1061 2198 -1487 -547 -65 -1772 620 -63 -1438 867
2009 -2466 934 1314 -97 -83 160 1813 -1427 1563 657 -587 650
2010 -553 -603 2392 -809 -781 1223 388 -1093 723 -454 1225 -1772
2011 236 171 2358 -1571 1675 -2651 835 275 273 -194 814 -807
2012 -712 87 2126 -2175 1736 -1559 867 -130 -656 1279 -427 -2617
2013 2270 -317 -587 3253 -1976 -1064 364 348 508 725 -814 -684
2014 -10 -139 2615 -1746 222 -896 249 -246 141 1378 -1477 1163
2015 -2126 162 3474 -1377 -746 2171 -1813 210 -183 776 -597 478
2016 -2087 1231 1653 241 -1252 817 -2641 2192 622 -1922 1262 408
2017 -547
Dari plot terlihat bahwa data sudah stasioner. Untuk memastikannya,
dapat dilakukan uji stasioneritas.
> boxcox(lm(d_deret~1))
Error in boxcox.default(lm(d_deret ~ 1)): response variable must be positive
Beberapa data jadi bernilai negatif sehingga uji stasioneritas terhadap ragam tidak dapat dilakukan.
> p_value
[1] 0.01
Didapatkan \(p-value\) sebesar 0,01. \(P-value\) (0,01) < 0,05 (α). Maka dapat disimpulkan bahwa data bersifat stasioner terhadap rata-rata. Uji stasioneritas terhadap ragam tidak dapat dilanjutkan karena vektor bernilai negatif. Dari plot dan uji stasioneritas terhadap rata-rata, didapatkan kesimpulan bahwa data sudah bersifat stasioner. Sehingga data hasil differencing tersebut cocok untuk dilakukan pemodelan.
Garis biru putus-putus merupakan batas selang kepercayaan. Pada data
sebelum dilakukan differencing, dapat dilihat bahwa semua lag berada di
luar batas selang kepercayaan. Nilai autokorelasi di luar selang
kepercayaan menunjukkan bahwa data memiliki pola yang berulang. Ini
dapat terjadi karena adanya tren dalam data.
Dicoba untuk dibatasi jumlah lag-nya.
Didapatkan hasil yang tidak jauh berbeda dengan sebelumnya. Masih
terdapat banyak lag yang keluar dari batas selang kepercayaan.
Dilakukan autokorelasi parsial
Terdapat beberapa lag yang keluar dari batas selang kepercayaan.
Hubungan antara Y dengan 0,1 periode yang lalu memiliki korelasi sebesar
0,4. Angka ini bernilai cukup besar. Jadi hasil penjualan kedua periode
tersebut berkaitan.
Setelah data asli dilakukan differencing, terdapat pengamatan yang
keluar dari batas selang kepercayaan. Yaitu saat lag = 0,5. Jadi Y
dengan 0,5 periode sebelumnya memiliki korelasi sebesar 0,2. Saat lag=
0,1 juga keluar dari batas selang kepercayaan. Jadi Y saat ini dengan Y
0,1 periode yang lalu berkorelasi sebesar -0.5. Hanya sedikit data yang
berada di luar selang kepercayaan sehingga model bernilai cukup
bagus.
Dilakukan pembatasan banyak lag
Terdapat lebih banyak lag yang keluar dari batas selang kepercayaan
daripada sebelumnya saat belum diberi batasan maksimum = 25.
Dilakukan autokorelasi parsial
Terdapat beberapa lag yang keluar dari batas selang kepercayaan.
Korelasi terbesar terjadi pada lag 0,1. Hubungan antara Y dengan 0,1
periode sebelumnya memiliki hubungan sebesar -0,3. Angka ini bernilai
cukup besar. Jadi hasil penjualan pada 2 periode tersebut berkaitan.
Dari hasil analisis deret waktu, dapat dilihat bahwa dengan sekali differencing bisa didapatkan data yang stasioner pada data hasil penjualan bulanan mobil di Norway. Setelah dilakukan differencing, baik autokorelasi parsial dan autokorelasi biasa, dapat dilihat bahwa terjadi korelasi yang kuat antara Y saat ini dengan Y 0,1 periode sebelumnya. Penyebab korelasi tersebut bisa akibat adanya perubahan kebijakan pemerintah yang serupa, bencana alam yang serupa, dan sebagainya.
Jonathan D. Cryer, Kung-Sik Chan. (2008). Time Series Analysis With Applications in R. Springer
DMI3KNO. 2020. New Car Sales in Norway. Diakses pada 25 Mei 2024, dari https://www.kaggle.com/datasets/dmi3kno/newcarsalesnorway
Terence C. Mills. (2019). Applied Time Series Analysis. London: Academic Press
Gusti Ayu Made Arna Putri, dkk. (2017). PEMODELAN DATA DERET WAKTU DENGAN AUTOREGRESSIVE INTEGRATEDMOVING AVERAGE DAN LOGISTIC SMOOTHING TRANSITION AUTOREGRESSIVE 1(1), 54-63. Nusa Tenggara Barat: Universitas Bumigora
Santi Deviana, dkk. (2021). Analisis Model Autoregressive Integrated Moving Average Data Deret Waktu Dengan Metode Momen Sebagai Estimasi Parameter 2(2), 57-67. Lampung: Jurnal Siger Matematika