Deret waktu adalah sekumpulan pengamatan yang disusun secara berurutan berdasarkan waktu. Dalam analisis deret waktu, kestasioneran data adalah salah satu faktor penting yang harus dipenuhi. Stasioneritas deret waktu dapat mempengaruhi sifat dan perilaku prediksinya secara signifikan. Oleh karena itu, suatu deret waktu dianggap stasioner jika rata-rata, varians, dan kovarian tetap konstan sepanjang waktu.
Salah satu bidang yang sering menerapkan analisis deret waktu yaitu penjualan. Analisis deret waktu diterapkan untuk memprediksi naik turunnya penjualan di masa depan. Dalam kasus ini digunakan contoh penerapan analisis deret waktu pada penjualan sampanye Perris Freren dari tahun 1964 sampai 1972.
Data deret waktu terdiri dari empat komponen utama: tren, musiman, siklus, dan irregular. Tren menggambarkan pola yang menunjukkan peningkatan atau penurunan dalam jangka waktu panjang, seperti beberapa tahun, yang dapat disebabkan oleh teknologi, perubahan perilaku penduduk, atau faktor lainnya. Contohnya adalah tren peningkatan belanja online dari tahun ke tahun. Komponen musiman mengacu pada pola yang berulang secara teratur dalam periode tertentu, biasanya satu tahun, akibat faktor seperti cuaca atau hari libur. Contohnya adalah kenaikan harga daging menjelang Hari Raya Idul Fitri atau peningkatan produksi rumput laut selama musim kemarau. Siklus adalah pola pengulangan peningkatan atau penurunan yang terjadi dalam jangka waktu menengah, misalnya mingguan hingga beberapa tahun, yang dipengaruhi oleh isu ekonomi atau politik, seperti siklus bisnis suatu produk. Terakhir, komponen irregular mencakup pola yang tidak teratur, tidak sistematis, durasinya pendek, dan tidak berulang, yang disebabkan oleh peristiwa tak terduga seperti perang atau fenomena alam. Misalnya, penurunan produksi padi akibat wabah wereng atau letusan gunung berapi.
Ada beberapa cara untuk menguji stasioneritas dalam suatu deret waktu. Salah satu metode yang umum digunakan adalah tes Augmented Dickey-Fuller (ADF). Tes ini menguji hipotesis nol bahwa deret waktu memiliki akar unit (yaitu, deret waktu tidak stasioner). Jika hipotesis nol ditolak, maka deret waktu dianggap stasioner.
Selain itu, pemeriksaan diagram urutan data juga dapat digunakan untuk menguji stasioneritas. Jika data tidak menunjukkan tren naik atau turun dan variansnya tampak konsisten sepanjang waktu, maka data tersebut dapat dianggap stasioner.
Penerapan analisis deret waktu dengan software RStudio menggunakan data yang diperoleh dari website Kaggle yang berjudul Perrin Freres Champagne Monthly Sales (1964-1972). Data ini berisi list penjualan sampanye bulanan dari Januari 1964 sampai September 1972.
Analisis deret waktu pada Perrin Freres Champagne Monthly Sales (1964-1972) dilakukan untuk mengetahui apakah data sudah stasioner sebelum dilakukan pemodelan dan peramalan pada data.
> library("knitr")
> library("rmarkdown")
> library("prettydoc")
> library("readxl")
> library("MASS")
> library("tseries")
> Perrin_Freres_Champagne_Monthly_Sales_1964_1971_ <-
+ read_excel("D:/4th Semester/Komputasi Statistika/praktikum/laprak 2/Perrin Freres Champagne Monthly Sales (1964-1972).xlsx")
> champsales <- c(Perrin_Freres_Champagne_Monthly_Sales_1964_1971_$`Perrin Freres monthly champagne sales millions`)
> champsales
[1] 2815 2672 2755 2721 2946 3036 2282 2212 2922 4301 5764 7312
[13] 2541 2475 3031 3266 3776 3230 3028 1759 3595 4474 6838 8357
[25] 3113 3006 4047 3523 3937 3986 3260 1573 3528 5211 7614 9254
[37] 5375 3088 3718 4514 4520 4539 3663 1643 4739 5428 8314 10651
[49] 3633 4292 4154 4121 4647 4753 3965 1723 5048 6922 9858 11331
[61] 4016 3957 4510 4276 4968 4677 3523 1821 5222 6872 10803 13916
[73] 2639 2899 3370 3740 2927 3986 4217 1738 5221 6424 9842 13076
[85] 3934 3162 4286 4676 5010 4874 4633 1659 5951 6981 9851 12670
[97] 4348 3564 4577 4788 4618 5312 4298 1413 5877
> monthlychampsales <- ts(data = champsales, start = 1964,
+ frequency = 12)
> monthlychampsales
Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
1964 2815 2672 2755 2721 2946 3036 2282 2212 2922 4301 5764 7312
1965 2541 2475 3031 3266 3776 3230 3028 1759 3595 4474 6838 8357
1966 3113 3006 4047 3523 3937 3986 3260 1573 3528 5211 7614 9254
1967 5375 3088 3718 4514 4520 4539 3663 1643 4739 5428 8314 10651
1968 3633 4292 4154 4121 4647 4753 3965 1723 5048 6922 9858 11331
1969 4016 3957 4510 4276 4968 4677 3523 1821 5222 6872 10803 13916
1970 2639 2899 3370 3740 2927 3986 4217 1738 5221 6424 9842 13076
1971 3934 3162 4286 4676 5010 4874 4633 1659 5951 6981 9851 12670
1972 4348 3564 4577 4788 4618 5312 4298 1413 5877
> plot(monthlychampsales, main = "Perrin Freres Champagne Sales",
+ xlab = "Tahun", ylab = "Champagne Sales (millions)")
Plot deret waktu penjualan sampanye Perrin Freres di atas menunjukkan pola musiman. Pencilan tidak terlihat pada plot dan ada tren peningkatan penjualan dari tahun ke tahun.
Hipotesis: \[H_0: Data\ tidak\ stasioner\] \[H_1: Data\ stasioner\]
> adf.test(monthlychampsales)
Augmented Dickey-Fuller Test
data: monthlychampsales
Dickey-Fuller = -4.8873, Lag order = 4, p-value = 0.01
alternative hypothesis: stationary
Karena nilai 𝑝 − 𝑣𝑎𝑙𝑢𝑒 < 𝛼 yaitu 0.01 < 0.05, maka 𝐻0 ditolak. Dengan tingkat kepercayaan 95% dapat disimpulkan bahwa data sudah stasioner terhadap rata-rata.
> bxcx <- boxcox(lm(monthlychampsales~1))
> bxcx
$x
[1] -2.00000000 -1.95959596 -1.91919192 -1.87878788 -1.83838384 -1.79797980
[7] -1.75757576 -1.71717172 -1.67676768 -1.63636364 -1.59595960 -1.55555556
[13] -1.51515152 -1.47474747 -1.43434343 -1.39393939 -1.35353535 -1.31313131
[19] -1.27272727 -1.23232323 -1.19191919 -1.15151515 -1.11111111 -1.07070707
[25] -1.03030303 -0.98989899 -0.94949495 -0.90909091 -0.86868687 -0.82828283
[31] -0.78787879 -0.74747475 -0.70707071 -0.66666667 -0.62626263 -0.58585859
[37] -0.54545455 -0.50505051 -0.46464646 -0.42424242 -0.38383838 -0.34343434
[43] -0.30303030 -0.26262626 -0.22222222 -0.18181818 -0.14141414 -0.10101010
[49] -0.06060606 -0.02020202 0.02020202 0.06060606 0.10101010 0.14141414
[55] 0.18181818 0.22222222 0.26262626 0.30303030 0.34343434 0.38383838
[61] 0.42424242 0.46464646 0.50505051 0.54545455 0.58585859 0.62626263
[67] 0.66666667 0.70707071 0.74747475 0.78787879 0.82828283 0.86868687
[73] 0.90909091 0.94949495 0.98989899 1.03030303 1.07070707 1.11111111
[79] 1.15151515 1.19191919 1.23232323 1.27272727 1.31313131 1.35353535
[85] 1.39393939 1.43434343 1.47474747 1.51515152 1.55555556 1.59595960
[91] 1.63636364 1.67676768 1.71717172 1.75757576 1.79797980 1.83838384
[97] 1.87878788 1.91919192 1.95959596 2.00000000
$y
[1] -223.2915 -221.0844 -218.9089 -216.7659 -214.6561 -212.5801 -210.5388
[8] -208.5329 -206.5631 -204.6302 -202.7351 -200.8785 -199.0613 -197.2843
[15] -195.5483 -193.8542 -192.2028 -190.5950 -189.0316 -187.5136 -186.0417
[22] -184.6169 -183.2399 -181.9117 -180.6332 -179.4051 -178.2282 -177.1035
[29] -176.0316 -175.0135 -174.0498 -173.1413 -172.2887 -171.4928 -170.7540
[36] -170.0732 -169.4509 -168.8875 -168.3838 -167.9401 -167.5568 -167.2344
[43] -166.9732 -166.7734 -166.6355 -166.5594 -166.5455 -166.5937 -166.7042
[50] -166.8769 -167.1117 -167.4087 -167.7676 -168.1882 -168.6702 -169.2135
[57] -169.8176 -170.4821 -171.2068 -171.9909 -172.8342 -173.7360 -174.6958
[64] -175.7130 -176.7869 -177.9170 -179.1025 -180.3428 -181.6370 -182.9846
[71] -184.3848 -185.8367 -187.3397 -188.8930 -190.4957 -192.1472 -193.8466
[78] -195.5931 -197.3859 -199.2243 -201.1074 -203.0346 -205.0050 -207.0178
[85] -209.0724 -211.1679 -213.3036 -215.4788 -217.6928 -219.9448 -222.2342
[92] -224.5602 -226.9222 -229.3196 -231.7516 -234.2177 -236.7172 -239.2495
[99] -241.8140 -244.4101
> lambda <- bxcx$x[which.max(bxcx$y)]
> lambda
[1] -0.1414141
Rentang 𝜆 tidak mengandung angka 1. Jadi, dapat disimpulkan bahwa data belum stasioner terhadap ragam sehingga perlu ditransformasi.
> monthlychampsales2 = monthlychampsales^lambda
> monthlychampsales2
Jan Feb Mar Apr May Jun Jul
1964 0.3252333 0.3276400 0.3262257 0.3267991 0.3231480 0.3217757 0.3350323
1965 0.3299774 0.3312077 0.3218507 0.3184699 0.3120018 0.3189695 0.3218958
1966 0.3206381 0.3222279 0.3089586 0.3150768 0.3101650 0.3096229 0.3185527
1967 0.2968054 0.3210039 0.3126855 0.3042239 0.3041667 0.3039864 0.3133452
1968 0.3137098 0.3064013 0.3078206 0.3081680 0.3029772 0.3020124 0.3098543
1969 0.3092948 0.3099428 0.3042620 0.3065631 0.3001288 0.3027016 0.3150768
1970 0.3282163 0.3238837 0.3170613 0.3124247 0.3234438 0.3096229 0.3071661
1971 0.3101984 0.3199307 0.3064619 0.3027108 0.2997717 0.3009406 0.3031065
1972 0.3058401 0.3145617 0.3036282 0.3016992 0.3032455 0.2973006 0.3063407
Aug Sep Oct Nov Dec
1964 0.3365116 0.3235220 0.3063105 0.2938870 0.2841650
1965 0.3475950 0.3141766 0.3046071 0.2868711 0.2788474
1966 0.3531322 0.3150136 0.2981088 0.2825433 0.2748558
1967 0.3509646 0.3021384 0.2963938 0.2790509 0.2694449
1968 0.3486129 0.2994515 0.2863762 0.2724092 0.2670971
1969 0.3458964 0.2980199 0.2866700 0.2689056 0.2594469
1970 0.3481859 0.2980280 0.2894159 0.2724718 0.2617413
1971 0.3504840 0.2925631 0.2860327 0.2724366 0.2629114
1972 0.3585299 0.2930813
> par(mfrow = (c(1,2)))
> plot(monthlychampsales2, main = "Perrin Freres Champagne Sales After Trans",
+ xlab = "Tahun", ylab = "Champagne Sales (millions)")
> boxcox2 <- boxcox(lm(monthlychampsales2~1))
> boxcox2
$x
[1] -2.00000000 -1.95959596 -1.91919192 -1.87878788 -1.83838384 -1.79797980
[7] -1.75757576 -1.71717172 -1.67676768 -1.63636364 -1.59595960 -1.55555556
[13] -1.51515152 -1.47474747 -1.43434343 -1.39393939 -1.35353535 -1.31313131
[19] -1.27272727 -1.23232323 -1.19191919 -1.15151515 -1.11111111 -1.07070707
[25] -1.03030303 -0.98989899 -0.94949495 -0.90909091 -0.86868687 -0.82828283
[31] -0.78787879 -0.74747475 -0.70707071 -0.66666667 -0.62626263 -0.58585859
[37] -0.54545455 -0.50505051 -0.46464646 -0.42424242 -0.38383838 -0.34343434
[43] -0.30303030 -0.26262626 -0.22222222 -0.18181818 -0.14141414 -0.10101010
[49] -0.06060606 -0.02020202 0.02020202 0.06060606 0.10101010 0.14141414
[55] 0.18181818 0.22222222 0.26262626 0.30303030 0.34343434 0.38383838
[61] 0.42424242 0.46464646 0.50505051 0.54545455 0.58585859 0.62626263
[67] 0.66666667 0.70707071 0.74747475 0.78787879 0.82828283 0.86868687
[73] 0.90909091 0.94949495 0.98989899 1.03030303 1.07070707 1.11111111
[79] 1.15151515 1.19191919 1.23232323 1.27272727 1.31313131 1.35353535
[85] 1.39393939 1.43434343 1.47474747 1.51515152 1.55555556 1.59595960
[91] 1.63636364 1.67676768 1.71717172 1.75757576 1.79797980 1.83838384
[97] 1.87878788 1.91919192 1.95959596 2.00000000
$y
[1] 35.24423 35.33761 35.42978 35.52075 35.61050 35.69905 35.78638 35.87251
[9] 35.95742 36.04111 36.12359 36.20486 36.28491 36.36374 36.44135 36.51774
[17] 36.59291 36.66685 36.73958 36.81108 36.88135 36.95040 37.01823 37.08482
[25] 37.15019 37.21433 37.27724 37.33892 37.39936 37.45858 37.51656 37.57331
[33] 37.62883 37.68311 37.73616 37.78797 37.83854 37.88788 37.93598 37.98285
[41] 38.02847 38.07285 38.11600 38.15790 38.19857 38.23799 38.27618 38.31312
[49] 38.34882 38.38328 38.41649 38.44847 38.47920 38.50868 38.53692 38.56392
[57] 38.58968 38.61419 38.63746 38.65948 38.68026 38.69979 38.71808 38.73512
[65] 38.75092 38.76548 38.77879 38.79085 38.80167 38.81125 38.81958 38.82667
[73] 38.83251 38.83711 38.84046 38.84257 38.84344 38.84306 38.84145 38.83858
[81] 38.83448 38.82913 38.82255 38.81472 38.80565 38.79533 38.78378 38.77099
[89] 38.75696 38.74169 38.72518 38.70743 38.68845 38.66823 38.64677 38.62408
[97] 38.60015 38.57499 38.54860 38.52097
> lambda2 <- boxcox2$x[which.max(boxcox2$y)]
> lambda2
[1] 1.070707
Rentang 𝜆 pada plot yang telah ditrasformasi mengandung angka 1. Jadi, dapat disimpulkan bahwa data sudah stasioner terhadap ragam setelah ditransformasi.
> par(mfrow = (c(1,2)))
> acf(monthlychampsales, lag.max = 200)
> pacf(monthlychampsales, lag.max = 200)
Berdasarkan korelogram di atas, pada banyak batang time lag, banyak
nilai autokorelasi yang berada di luar selang kepercayaan. Hal ini
mengindikasikan sifat data deret waktu yang tidak stasioner dan perlu
dilakukan differencing atau juga transformasi pada data.
> monthlychampsales3 <- ts(monthlychampsales, 1)
> monthlychampsales3
Time Series:
Start = 1
End = 105
Frequency = 1
[1] 2815 2672 2755 2721 2946 3036 2282 2212 2922 4301 5764 7312
[13] 2541 2475 3031 3266 3776 3230 3028 1759 3595 4474 6838 8357
[25] 3113 3006 4047 3523 3937 3986 3260 1573 3528 5211 7614 9254
[37] 5375 3088 3718 4514 4520 4539 3663 1643 4739 5428 8314 10651
[49] 3633 4292 4154 4121 4647 4753 3965 1723 5048 6922 9858 11331
[61] 4016 3957 4510 4276 4968 4677 3523 1821 5222 6872 10803 13916
[73] 2639 2899 3370 3740 2927 3986 4217 1738 5221 6424 9842 13076
[85] 3934 3162 4286 4676 5010 4874 4633 1659 5951 6981 9851 12670
[97] 4348 3564 4577 4788 4618 5312 4298 1413 5877
> plot(monthlychampsales3, main = "Perrin Freres Champagne Sales
+ After Diff", xlab = "Tahun",
+ ylab = "Champagne Sales (millions)")
> boxcox3 <- boxcox(lm(monthlychampsales3~1))
> boxcox3
$x
[1] -2.00000000 -1.95959596 -1.91919192 -1.87878788 -1.83838384 -1.79797980
[7] -1.75757576 -1.71717172 -1.67676768 -1.63636364 -1.59595960 -1.55555556
[13] -1.51515152 -1.47474747 -1.43434343 -1.39393939 -1.35353535 -1.31313131
[19] -1.27272727 -1.23232323 -1.19191919 -1.15151515 -1.11111111 -1.07070707
[25] -1.03030303 -0.98989899 -0.94949495 -0.90909091 -0.86868687 -0.82828283
[31] -0.78787879 -0.74747475 -0.70707071 -0.66666667 -0.62626263 -0.58585859
[37] -0.54545455 -0.50505051 -0.46464646 -0.42424242 -0.38383838 -0.34343434
[43] -0.30303030 -0.26262626 -0.22222222 -0.18181818 -0.14141414 -0.10101010
[49] -0.06060606 -0.02020202 0.02020202 0.06060606 0.10101010 0.14141414
[55] 0.18181818 0.22222222 0.26262626 0.30303030 0.34343434 0.38383838
[61] 0.42424242 0.46464646 0.50505051 0.54545455 0.58585859 0.62626263
[67] 0.66666667 0.70707071 0.74747475 0.78787879 0.82828283 0.86868687
[73] 0.90909091 0.94949495 0.98989899 1.03030303 1.07070707 1.11111111
[79] 1.15151515 1.19191919 1.23232323 1.27272727 1.31313131 1.35353535
[85] 1.39393939 1.43434343 1.47474747 1.51515152 1.55555556 1.59595960
[91] 1.63636364 1.67676768 1.71717172 1.75757576 1.79797980 1.83838384
[97] 1.87878788 1.91919192 1.95959596 2.00000000
$y
[1] -223.2915 -221.0844 -218.9089 -216.7659 -214.6561 -212.5801 -210.5388
[8] -208.5329 -206.5631 -204.6302 -202.7351 -200.8785 -199.0613 -197.2843
[15] -195.5483 -193.8542 -192.2028 -190.5950 -189.0316 -187.5136 -186.0417
[22] -184.6169 -183.2399 -181.9117 -180.6332 -179.4051 -178.2282 -177.1035
[29] -176.0316 -175.0135 -174.0498 -173.1413 -172.2887 -171.4928 -170.7540
[36] -170.0732 -169.4509 -168.8875 -168.3838 -167.9401 -167.5568 -167.2344
[43] -166.9732 -166.7734 -166.6355 -166.5594 -166.5455 -166.5937 -166.7042
[50] -166.8769 -167.1117 -167.4087 -167.7676 -168.1882 -168.6702 -169.2135
[57] -169.8176 -170.4821 -171.2068 -171.9909 -172.8342 -173.7360 -174.6958
[64] -175.7130 -176.7869 -177.9170 -179.1025 -180.3428 -181.6370 -182.9846
[71] -184.3848 -185.8367 -187.3397 -188.8930 -190.4957 -192.1472 -193.8466
[78] -195.5931 -197.3859 -199.2243 -201.1074 -203.0346 -205.0050 -207.0178
[85] -209.0724 -211.1679 -213.3036 -215.4788 -217.6928 -219.9448 -222.2342
[92] -224.5602 -226.9222 -229.3196 -231.7516 -234.2177 -236.7172 -239.2495
[99] -241.8140 -244.4101
Setelah dilakukan differencing 1, tidak terlihat adanya perbedaan yang signifikan antara plot boxcox yang lama dengan yang baru dilihat dari tidak adanya angka 1 pada rentang 𝜆. Jadi, perlu dilakukan differencing dan transformasi lagi untuk mendapatkan data yang stasioner.
Dari uji yang telah dilakukan, data belum stasioner dan perlu ditransformasi terlebih dahulu dan diuji sampai data sudah stasioner sebelum mendapatkan model.
Monthly Sales of French Champagne. Diakses pada 31 Mei 2024 dari https://www.kaggle.com/code/vainero/monthly-sales-of-french-champagne-arima-models
Kurnia, M., Nugraheni, E., Sumarno, H. (2014). ANALISIS WAVELET DAN ARIMA UNTUK PERAMALAN HARGA EMAS PT. ANTAM TBK INDONESIA. Jurnal Manajemen & Agribisnis, 13(2), 11-22.
Aktivani, S. (2020). Uji Stasioneritas Data Inflasi Kota Padang Periode 2014-2019. Jurnal Statistika, 20(2), 83–90.