1 PENDAHULUAN

1.1 Latar Belakang

Analisis deret waktu adalah suatu analisis statistika yang dapat diterapkan pada data yang berhubungan dengan waktu. Pemodelan dari data deret waktu ini banyak dikaitkan dengan proses peramalan suatu karakteristik tertentu pada periode mendatang. Peramalan sendiri merupakan suatu pendugaan atau perkiraan suatu keadaan di masa yang akan datang berdasarkan keadaan masa lalu dan masa sekarang yang diperlukan untuk menetapkan kapan suatu peristiwa akan terjadi, sehingga tindakan yang tepat dapat dilakukan.

Analisis deret waktu dapat diterapkan di berbagai sektor kehidupan, salah satunya sektor pertanian. Sektor pertanian memerlukan analisis deret waktu untuk memprediksi berbagai kemungkinan di masa yang akan datang sehingga kebijakan-kebijakan yang tepat dapat diterapkan untuk menghadapi kemungkinan tersebut. Peramalan tentang banyaknya beras lokal (ton) yang masuk melalui Perum Bulog setiap bulannya sangat penting dilakukan untuk berbagai aspek manajemen dan kebijakan. Hal ini mendukung perencanaan stok dan logistik, stabilisasi harga, pengambilan keputusan kebijakan, ketahanan pangan, perencanaan keuangan, manajemen risiko, pemenuhan kebutuhan sosial, dan kebijakan pertanian. Dengan peramalan yang akurat, Perum Bulog dapat menjalankan tugasnya dengan lebih efektif dan efisien, memastikan bahwa kebutuhan beras nasional terpenuhi dan ketahanan pangan akan terjaga.

Berdasarkan paparan di atas dan pentingnya mengetahui peramalan, maka dilakukan analisis deret waktu dengan menggunakan model ARIMA.

1.2 Tinjauan Pustaka

1.2.1 Analisis Deret Waktu

Data deret waktu adalah sebuah kumpulan observasi terhadap nilai-nilai sebuah variabel dari beberapa periode yang reguler, seperti harian, mingguan, bulanan, kuartalan, tahunan, dll. Box dan Jenkin (1976) menambahkan bahwa selisih waktu antar pengamatan adalah sama. Dengan demikian, jika pengamatan suatu data deret waktu dilakukan secara mingguan maka selisih waktu antar pengamatan adalah sama, yaitu 7 hari. Data deret waktu yang merupakan data harian dapat berupa data harga saham, dan laporan cuaca. Data mingguan dapat berupa informasi uang yang beredar. Data kuartalan dapat berupa data PDRB dan data tahunan dapat berupa data anggaran pemerintah.

Analisis deret waktu merupakan metode statistika yang digunakan untuk menganalisis data yang dikumpulkan atau dicatat secara berurutan berdasarkan waktu. Suatu data yang dimodelkan dengan analisis deret waktu dapat diasumsikan bahwa data tersebut dalam keadaan stasioner. Artinya tidak terjadi trend dalam mean dan varian. Dalam analisis deret waktu, data diharapkan mengikuti proses stokastik yaitu suatu proses yang dinyatakan dalam suatu variabel random \(Z(t)\) dinotasikan dengan \(Z_{t}\) yang mempunyai fungsi kepadatan \(f(Z_{t})\). Artinya data deret waktu pada \(t_{1},t_{2},...,t_{n}\) mempunyai nilai \(Z_{(t_{1})},Z_{(t_{2})},...,Z_{(t_{n})}\) secara acak dari suatu distribusi probabilitas \(f(Z_{(t_{i})})\).

1.2.2 Uji Stasioneritas

Asumsi stasioneritas data merupakan sifat yang penting. Pada model stasioner, sifat-sifat statistik di masa yang akan datang dapat diramalkan berdasarkan data historis yang telah terjadi dimasa yang lalu. Pengujian statsioneritas dari suatu data time series dapat dilakukan dengan beberapa cara, salah satunya adalah pendeteksian ketidakstasioneran data dilakukan dengan menggunakan uji akar unit. Pengujian dengan menggunakan akar unit dilakukan untuk mengamati apakah data time series memiliki komponen tren berupa random walk dalam data. Salah satu metode yang dapat digunakan adalah Augmented Dickey Fuller atau ADF.

Pengujian dengan ADF dilakukan dengan menggunakan \(H_{0}: \rho =0\) (terdapat akar unit) dengan persamaan regresinya adalah \[ Z_{t} = \beta + \delta t + \rho Z_{t-1} + \sum_{j=1}^{k}\phi _{j}Z_{t-j} + a_{t} \] Hipotesis nol tersebut ditolak jika nilai statistik uji ADF memiliki nilai kurang dari nilai daerah kritisnya. Jika hipotesis nol ditolak, dapat disimpulkan bahwa data stasioner (tidak mengandung akar unit).

Di dalam mengaplikasikan uji ADF, pertama-tama harus menentukan banyaknya lag dari komponen deferens yang akan dimasukkan ke dalam model. Dalam praktik, biasanya dipilih k yang dapat menghapus korelasi serial dari residual, yang dapat dilihat dengan lag yang masih signifikan dalam model regresi ADF. Selanjutnya perlu dispesifikasikan apakah dalam model harus dimasukkan komponen konstanta, konstanta diambah komponen tren, atau memasukkan keduanya. Salah satu pendekatan yang mungkin dilakukan adalah memasukkan kedua komponen konstanta dan tren dalam model karena kedua keadaan lain adalah kasus khusus dari keadaan ini.

1.2.3 Kriteria Pemilihan Model Terbaik

Akaike’s Information Criteria (AIC) adalah suatu kriteria pemilihan model terbaik yang diperkenalkan oleh Akaike dengan mempertimbangkan banyaknya parameter dalam model. Semakin kecil nilai AIC yang diperoleh semakin baik model yang digunakan. Kriteria AIC dapat dirumuskan sebagai berikut: \[ AIC (M) = -2 ln \left [ maksimum likelihood \right ] + 2M = N ln \left ( \frac{SSE}{N} \right ) + 2M \] dengan

  • \(SSE\) : sum square error

  • \(M\) : banyaknya parameter dalam model

1.3 Data

Data berikut merupakan data mengenai banyaknya beras yang masuk per bulan melalui Perum Bulog (ton). Data berikut diperoleh dari website www.Kaggle.com.

> setwd("C:/Users/kathrine/Downloads")
> berasmasuk <- read.csv("Beras yang Masuk Melalui Perum Bulog (Ton).csv",
+                        header = TRUE, sep = ";")
> head(berasmasuk)
   Bulan Beras.Lokal
1 2011-1      157.50
2 2011-2     1117.94
3 2011-3      953.72
4 2011-4      731.07
5 2011-5     1851.33
6 2011-6     2364.14

Keterangan:

  • Bulan = bulan dan tahun beras yang masuk melalui Perum Bulog

  • Beras.Lokal = banyaknya beras yang masuk per bulan melalui Perum Bulog (ton)

Sumber : https://www.kaggle.com/code/taufikhidayatzaza/data-beras-final

1.4 Tujuan

Penelitian ini bertujuan untuk memprediksi atau meramalkan jumlah beras lokal yang masuk per bulan melalui Perum Bulog sehingga dapat menentukan kebijakan yang tepat.

2 SOURCE CODE

2.1 Library

> library(knitr)
> library(rmarkdown)
> library(prettydoc)
> library(equatiomatic)

2.2 Impor Data

> setwd("C:/Users/kathrine/Downloads")
> berasmasuk <- read.csv("Beras yang Masuk Melalui Perum Bulog (Ton).csv",
+                        header = TRUE, sep = ";")
> berasmasuk
     Bulan Beras.Lokal
1   2011-1      157.50
2   2011-2     1117.94
3   2011-3      953.72
4   2011-4      731.07
5   2011-5     1851.33
6   2011-6     2364.14
7   2011-7     3312.80
8   2011-8     3115.46
9   2011-9     2104.07
10 2011-10     2400.81
11 2011-11     1711.11
12 2011-12      930.08
13  2012-1        0.00
14  2012-2      115.50
15  2012-3       78.00
16  2012-4     2587.17
17  2012-5     6050.48
18  2012-6     3550.53
19  2012-7     5529.76
20  2012-8     4354.16
21  2012-9     3764.22
22 2012-10     4072.71
23 2012-11     3290.84
24 2012-12     2606.65
25  2013-1      195.00
26  2013-2      750.00
27  2013-3     1332.00
28  2013-4     1008.00
29  2013-5     4016.19
30  2013-6     6077.87
31  2013-7     5779.56
32  2013-8     5191.28
33  2013-9     6463.80
34 2013-10     6714.62
35 2013-11     3967.26
36 2013-12     2004.44
37  2014-1      105.00
38  2014-2      285.00
39  2014-3      416.12
40  2014-4     3806.54
41  2014-5     9108.29
42  2014-6     3926.81
43  2014-7     3607.38
44  2014-8     3797.63
45  2014-9     3237.00
46 2014-10     1763.01
47 2014-11      394.70
48 2014-12        0.00
49  2015-1        0.00
50  2015-2        0.00
51  2015-3        0.00
52  2015-4      588.00
53  2015-5     6759.00
54  2015-6     6340.00
55  2015-7     6453.00
56  2015-8     1426.00
57  2015-9       41.00
58 2015-10      103.00
59 2015-11      284.00
60 2015-12      110.00
61  2016-1        0.00
62  2016-2        0.00
63  2016-3        0.00
64  2016-4       41.00
65  2016-5     2118.00
66  2016-6     7463.00
67  2016-7     5192.00
68  2016-8     2574.00
69  2016-9      523.00
70 2016-10     1331.00
71 2016-11     3871.00
72 2016-12      901.00
73  2017-1        0.00
74  2017-2        0.00
75  2017-3     8456.00
76  2017-4     7570.00
77  2017-5    15209.50
78  2017-6    17402.50
79  2017-7    58436.40
80  2017-8    22327.45
81  2017-9    16784.70
82 2017-10    33125.80
83 2017-11    30913.75
84 2017-12    14263.35

2.3 Analisis

> # Pembentukan Data Time series
> berasmasuk.ts <- ts(berasmasuk$Beras.Lokal, start=c(2011, 1), freq=12)
> berasmasuk.ts
          Jan      Feb      Mar      Apr      May      Jun      Jul      Aug
2011   157.50  1117.94   953.72   731.07  1851.33  2364.14  3312.80  3115.46
2012     0.00   115.50    78.00  2587.17  6050.48  3550.53  5529.76  4354.16
2013   195.00   750.00  1332.00  1008.00  4016.19  6077.87  5779.56  5191.28
2014   105.00   285.00   416.12  3806.54  9108.29  3926.81  3607.38  3797.63
2015     0.00     0.00     0.00   588.00  6759.00  6340.00  6453.00  1426.00
2016     0.00     0.00     0.00    41.00  2118.00  7463.00  5192.00  2574.00
2017     0.00     0.00  8456.00  7570.00 15209.50 17402.50 58436.40 22327.45
          Sep      Oct      Nov      Dec
2011  2104.07  2400.81  1711.11   930.08
2012  3764.22  4072.71  3290.84  2606.65
2013  6463.80  6714.62  3967.26  2004.44
2014  3237.00  1763.01   394.70     0.00
2015    41.00   103.00   284.00   110.00
2016   523.00  1331.00  3871.00   901.00
2017 16784.70 33125.80 30913.75 14263.35
> # Visualisasi Data
> library(forecast)
> ts.plot(berasmasuk.ts, main="Plot Deret Waktu Beras Masuk", xlab="Waktu",
+         ylab="Berat", type="o")

> # Stasioneritas terhadap Rata-Rata
> library(tseries)
> adf.test(berasmasuk.ts)

    Augmented Dickey-Fuller Test

data:  berasmasuk.ts
Dickey-Fuller = -2.5113, Lag order = 4, p-value = 0.3662
alternative hypothesis: stationary
> # Differensiasi Data
> berasmasuk.ts.diff.1 <- diff(berasmasuk.ts, differences = 1)
> berasmasuk.ts.diff.1
           Jan       Feb       Mar       Apr       May       Jun       Jul
2011              960.44   -164.22   -222.65   1120.26    512.81    948.66
2012   -930.08    115.50    -37.50   2509.17   3463.31  -2499.95   1979.23
2013  -2411.65    555.00    582.00   -324.00   3008.19   2061.68   -298.31
2014  -1899.44    180.00    131.12   3390.42   5301.75  -5181.48   -319.43
2015      0.00      0.00      0.00    588.00   6171.00   -419.00    113.00
2016   -110.00      0.00      0.00     41.00   2077.00   5345.00  -2271.00
2017   -901.00      0.00   8456.00   -886.00   7639.50   2193.00  41033.90
           Aug       Sep       Oct       Nov       Dec
2011   -197.34  -1011.39    296.74   -689.70   -781.03
2012  -1175.60   -589.94    308.49   -781.87   -684.19
2013   -588.28   1272.52    250.82  -2747.36  -1962.82
2014    190.25   -560.63  -1473.99  -1368.31   -394.70
2015  -5027.00  -1385.00     62.00    181.00   -174.00
2016  -2618.00  -2051.00    808.00   2540.00  -2970.00
2017 -36108.95  -5542.75  16341.10  -2212.05 -16650.40
> # Plot Hasil Differensiasi Pertama
> ts.plot(berasmasuk.ts.diff.1, main="Plot Differencing Pertama Beras Masuk",
+         xlab="Waktu", ylab="Berat", type="o")

> # Stasioneritas terhadap Rata-Rata Hasil Differensiasi Pertama
> adf.test(berasmasuk.ts.diff.1)

    Augmented Dickey-Fuller Test

data:  berasmasuk.ts.diff.1
Dickey-Fuller = -4.6137, Lag order = 4, p-value = 0.01
alternative hypothesis: stationary
> # Identifikasi Model
> par(mfrow=c(1, 2))
> Acf(berasmasuk.ts.diff.1, lag.max = 24)
> Pacf(berasmasuk.ts.diff.1, lag.max = 24)

> # Estimasi Parameter
> library(lmtest)
> modelarima.1 <- Arima(berasmasuk.ts, order=c(1,1,0), method = "ML")
> coeftest(modelarima.1)

z test of coefficients:

    Estimate Std. Error z value Pr(>|z|)   
ar1 -0.33651    0.10666 -3.1551 0.001605 **
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
> 
> modelarima.2 <- Arima(berasmasuk.ts, order=c(2,1,0), method = "ML")
> coeftest(modelarima.2)

z test of coefficients:

    Estimate Std. Error z value  Pr(>|z|)    
ar1 -0.47191    0.10598 -4.4527 8.479e-06 ***
ar2 -0.38177    0.10472 -3.6457 0.0002667 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
> 
> modelarima.3 <- Arima(berasmasuk.ts, order=c(0,1,1), method = "ML")
> coeftest(modelarima.3)

z test of coefficients:

     Estimate Std. Error z value Pr(>|z|)    
ma1 -0.536974   0.098989 -5.4246 5.81e-08 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
> 
> modelarima.4 <- Arima(berasmasuk.ts, order=c(1,1,1), method = "ML")
> coeftest(modelarima.4)

z test of coefficients:

    Estimate Std. Error z value  Pr(>|z|)    
ar1  0.11702    0.22995  0.5089 0.6108427    
ma1 -0.62075    0.18455 -3.3636 0.0007693 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
> 
> modelarima.5 <- Arima(berasmasuk.ts, order=c(2,1,1), method = "ML")
> coeftest(modelarima.5)

z test of coefficients:

    Estimate Std. Error z value Pr(>|z|)   
ar1 -0.36096    0.21314 -1.6935 0.090358 . 
ar2 -0.34674    0.12705 -2.7293 0.006347 **
ma1 -0.12842    0.20775 -0.6181 0.536487   
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
> # Diagnosis Model
> aic.modelarima <- data.frame(Nama=c("modelarima.1", "modelarima.2",
+                                     "modelarima.3", "modelarima.4", 
+                                     "modelarima.5"),
+                              Model=c("ARIMA(1,1,0)", "ARIMA(2,1,0)",
+                                      "ARIMA(0,1,1)", "ARIMA(1,1,1)",
+                                      "ARIMA(2,1,1)"),
+                              AIC=c(modelarima.1$aic, modelarima.2$aic,
+                                    modelarima.3$aic, modelarima.4$aic,
+                                    modelarima.5$aic))
> print(aic.modelarima)
          Nama        Model      AIC
1 modelarima.1 ARIMA(1,1,0) 1698.100
2 modelarima.2 ARIMA(2,1,0) 1687.884
3 modelarima.3 ARIMA(0,1,1) 1689.764
4 modelarima.4 ARIMA(1,1,1) 1691.484
5 modelarima.5 ARIMA(2,1,1) 1689.488
> # Uji Independensi Residual Antar Lag pada Model Terbaik
> checkresiduals(modelarima.2)


    Ljung-Box test

data:  Residuals from ARIMA(2,1,0)
Q* = 16.059, df = 15, p-value = 0.3782

Model df: 2.   Total lags used: 17
> # Prediksi
> ramalan <- forecast(berasmasuk.ts, model=modelarima.2, h=12)
> ramalan
         Point Forecast     Lo 80    Hi 80      Lo 95    Hi 95
Jan 2018       22965.37 15097.731 30833.02 10932.8515 34997.90
Feb 2018       25215.47 16318.152 34112.79 11608.1962 38822.74
Mar 2018       20831.42 11472.397 30190.44  6518.0296 35144.81
Apr 2018       22041.28 11471.855 32610.70  5876.7403 38205.82
May 2018       23144.05 11679.325 34608.77  5610.2691 40677.82
Jun 2018       22161.74 10052.930 34270.56  3642.9103 40680.58
Jul 2018       22204.30  9343.526 35065.07  2535.4453 41873.15
Aug 2018       22559.23  8987.458 36131.01  1802.9942 43315.47
Sep 2018       22375.49  8178.251 36572.73   662.6868 44088.29
Oct 2018       22326.69  7508.158 37145.23  -336.3012 44989.69
Nov 2018       22419.87  6997.589 37842.15 -1166.4724 46006.21
Dec 2018       22394.53  6402.601 38386.45 -2063.0135 46852.07
> # Plot Prediksi
> plot(ramalan)

3 HASIL DAN PEMBAHASAN

3.1 Pembentukan Data Time Series

> berasmasuk.ts <- ts(berasmasuk$Beras.Lokal,
+                     start=c(2011, 1), freq=12)
> berasmasuk.ts
          Jan      Feb      Mar      Apr      May      Jun      Jul      Aug
2011   157.50  1117.94   953.72   731.07  1851.33  2364.14  3312.80  3115.46
2012     0.00   115.50    78.00  2587.17  6050.48  3550.53  5529.76  4354.16
2013   195.00   750.00  1332.00  1008.00  4016.19  6077.87  5779.56  5191.28
2014   105.00   285.00   416.12  3806.54  9108.29  3926.81  3607.38  3797.63
2015     0.00     0.00     0.00   588.00  6759.00  6340.00  6453.00  1426.00
2016     0.00     0.00     0.00    41.00  2118.00  7463.00  5192.00  2574.00
2017     0.00     0.00  8456.00  7570.00 15209.50 17402.50 58436.40 22327.45
          Sep      Oct      Nov      Dec
2011  2104.07  2400.81  1711.11   930.08
2012  3764.22  4072.71  3290.84  2606.65
2013  6463.80  6714.62  3967.26  2004.44
2014  3237.00  1763.01   394.70     0.00
2015    41.00   103.00   284.00   110.00
2016   523.00  1331.00  3871.00   901.00
2017 16784.70 33125.80 30913.75 14263.35

berasmasuk$Beras.Lokal merupakan data yang akan diambil yaitu data banyaknya beras lokal (ton) yang masuk melalui Perum Bulog, lalu start=c(2011, 1), freq=12 merupakan data yang dimulai dari bulan Januari tahun 2011 dengan frekuensi 12 bulan.

3.2 Visualisasi Data

> ts.plot(berasmasuk.ts, main="Plot Deret Waktu Beras Masuk", xlab="Waktu",
+         ylab="Berat", type="o")

Membentuk plot dari data Beras yang Masuk Melalui Perum Bulog (Ton) di mana sumbu X merupakan variabel waktu, sedangkan sumbu Y merupakan variabel berat.

3.3 Stasioneritas terhadap Rata-Rata

Digunakan uji ADF untuk melihat apakah data stasioner terhadap rata-rata atau tidak

  • Hipotesis:

    \(H_{0}\) : data tidak stasioner vs

    \(H_{1}\) : data stasioner

> adf.test(berasmasuk.ts)

    Augmented Dickey-Fuller Test

data:  berasmasuk.ts
Dickey-Fuller = -2.5113, Lag order = 4, p-value = 0.3662
alternative hypothesis: stationary
  • Statistik Uji

    p-value = 0.3662

  • Keputusan

    p-value (0.3662) > \(\alpha\) (0.05), maka terima \(H_{0}\).

  • Kesimpulan

    Dengan tingkat kepercayaan 95%, dapat disimpulkan bahwa data tidak stasioner.

3.4 Differensiasi Data

Karena data tidak stasioner, maka perlu dilakukan differensiasi agar data stasioner, kemudian dilakukan uji stasioneritas kembali

Berikut merupakan data hasil differensiasi pertama:

> berasmasuk.ts.diff.1
           Jan       Feb       Mar       Apr       May       Jun       Jul
2011              960.44   -164.22   -222.65   1120.26    512.81    948.66
2012   -930.08    115.50    -37.50   2509.17   3463.31  -2499.95   1979.23
2013  -2411.65    555.00    582.00   -324.00   3008.19   2061.68   -298.31
2014  -1899.44    180.00    131.12   3390.42   5301.75  -5181.48   -319.43
2015      0.00      0.00      0.00    588.00   6171.00   -419.00    113.00
2016   -110.00      0.00      0.00     41.00   2077.00   5345.00  -2271.00
2017   -901.00      0.00   8456.00   -886.00   7639.50   2193.00  41033.90
           Aug       Sep       Oct       Nov       Dec
2011   -197.34  -1011.39    296.74   -689.70   -781.03
2012  -1175.60   -589.94    308.49   -781.87   -684.19
2013   -588.28   1272.52    250.82  -2747.36  -1962.82
2014    190.25   -560.63  -1473.99  -1368.31   -394.70
2015  -5027.00  -1385.00     62.00    181.00   -174.00
2016  -2618.00  -2051.00    808.00   2540.00  -2970.00
2017 -36108.95  -5542.75  16341.10  -2212.05 -16650.40

3.5 Plot Hasil Differensiasi Pertama

Plot data yang telah dilakukan differensiasi

> ts.plot(berasmasuk.ts.diff.1, main="Plot Differencing Pertama Beras Masuk",
+         xlab="Waktu", ylab="Berat", type="o")

3.6 Stasioneritas terhadap Rata-Rata Hasil Differensiasi Pertama

Digunakan uji ADF untuk melihat apakah data hasil differensiasi stasioner terhadap rata-rata atau tidak

  • Hipotesis:

    \(H_{0}\) : data tidak stasioner vs

    \(H_{1}\) : data stasioner

> adf.test(berasmasuk.ts.diff.1)

    Augmented Dickey-Fuller Test

data:  berasmasuk.ts.diff.1
Dickey-Fuller = -4.6137, Lag order = 4, p-value = 0.01
alternative hypothesis: stationary
  • Statistik Uji

    p-value = 0.01

  • Keputusan

    p-value (0.01) > \(\alpha\) (0.05), maka terima \(H_{0}\).

  • Kesimpulan

    Dengan tingkat kepercayaan 95%, dapat disimpulkan bahwa data stasioner.

3.7 Identifikasi Model

Setelah data sudah stasioner, maka selanjutnya adalah menentukan model ARIMA yang diperolah melalui korelogram

> par(mfrow=c(1, 2))
> Acf(berasmasuk.ts.diff.1, lag.max = 24)
> Pacf(berasmasuk.ts.diff.1, lag.max = 24)

Berdasarkan korelogram, batang ACF keluar hingga lag ke-1 yang menunjukkan orde MA yaitu q = 1. Sementara batang pada PACF keluar pada lag ke-2, yang menunjukkan orde AR yaitu p = 2. Dengan sebelumnya dilakukan differensiasi orde 1, d = 1, diperoleh model ARIMA(2,1,1).

3.8 Estimasi Parameter

Overfitting terhadap model dapat dilakukan dengan memilih model yang memiliki orde lebih rendah atau kombinasi dari orde pada model utama, yaitu:

  • ARIMA(1,1,0)
  • ARIMA(2,1,0)
  • ARIMA(0,1,1)
  • ARIMA(1,1,1)
  • ARIMA(2,1,1)

Setelah mendapatkan kelima model tersebut, akan dilihat apakah koefisiennya signifikan terhadap model atau tidak, dengan melakukan estimasi parameter model.

> # Model 1
> modelarima.1 <- Arima(berasmasuk.ts,
+                       order=c(1,1,0), method = "ML")
> coeftest(modelarima.1)

z test of coefficients:

    Estimate Std. Error z value Pr(>|z|)   
ar1 -0.33651    0.10666 -3.1551 0.001605 **
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
> # Model 2
> modelarima.2 <- Arima(berasmasuk.ts,
+                       order=c(2,1,0), method = "ML")
> coeftest(modelarima.2)

z test of coefficients:

    Estimate Std. Error z value  Pr(>|z|)    
ar1 -0.47191    0.10598 -4.4527 8.479e-06 ***
ar2 -0.38177    0.10472 -3.6457 0.0002667 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
> # Model 3
> modelarima.3 <- Arima(berasmasuk.ts,
+                       order=c(0,1,1), method = "ML")
> coeftest(modelarima.3)

z test of coefficients:

     Estimate Std. Error z value Pr(>|z|)    
ma1 -0.536974   0.098989 -5.4246 5.81e-08 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
> # Model 4
> modelarima.4 <- Arima(berasmasuk.ts,
+                       order=c(1,1,1), method = "ML")
> coeftest(modelarima.4)

z test of coefficients:

    Estimate Std. Error z value  Pr(>|z|)    
ar1  0.11702    0.22995  0.5089 0.6108427    
ma1 -0.62075    0.18455 -3.3636 0.0007693 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
> # Model 5
> modelarima.5 <- Arima(berasmasuk.ts,
+                       order=c(2,1,0), method = "ML")
> coeftest(modelarima.5)

z test of coefficients:

    Estimate Std. Error z value  Pr(>|z|)    
ar1 -0.47191    0.10598 -4.4527 8.479e-06 ***
ar2 -0.38177    0.10472 -3.6457 0.0002667 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

3.9 Diagnosis Model

Setelah melakukan estimasi parameter dari kelima model, selanjutnya adalah membandingkan kelima model yang telah dibentuk menggunakan AIC dengan melihat nilai AIC yang paling kecil.

> print(aic.modelarima)
          Nama        Model      AIC
1 modelarima.1 ARIMA(1,1,0) 1698.100
2 modelarima.2 ARIMA(2,1,0) 1687.884
3 modelarima.3 ARIMA(0,1,1) 1689.764
4 modelarima.4 ARIMA(1,1,1) 1691.484
5 modelarima.5 ARIMA(2,1,1) 1689.488

Diperoleh AIC yang paling kecil adalah model ARIMA(2,1,0) yang menjadi model terbaik.

3.10 Uji Independensi Residual Antar Lag pada Model Terbaik

Setelah mendapatkan model terbaik, yaitu ARIMA(2,1,0), kemudian kita uji apakah model terbaik yang terbentuk telah sesuai 20 dan layak digunakan untuk tahap peramalan data atau tidak, menggunakan uji Ljung-Box.

  • Hipotesis:

    \(H_{0}\) : tidak ada korelasi residual antar lag vs

    \(H_{1}\) : ada korelasi residual antar lag

> checkresiduals(modelarima.2)


    Ljung-Box test

data:  Residuals from ARIMA(2,1,0)
Q* = 16.059, df = 15, p-value = 0.3782

Model df: 2.   Total lags used: 17
  • Statistik Uji

    p-value = 0.3782

  • Keputusan

    p-value (0.3782) > \(\alpha\) (0.05), maka terima \(H_{0}\).

  • Kesimpulan

    Dengan tingkat kepercayaan 95%, dapat disimpulkan bahwa tidak ada korelasi residual antar lag. Dengan kata lain, model ARIMA(2,1,0) tampaknya menangkap struktur dalam data dengan baik, dan residualnya tidak berkorelasi

3.11 Prediksi

Hasil peramalan untuk 12 bulan ke depan adalah sebagai berikut:

> ramalan
         Point Forecast     Lo 80    Hi 80      Lo 95    Hi 95
Jan 2018       22965.37 15097.731 30833.02 10932.8515 34997.90
Feb 2018       25215.47 16318.152 34112.79 11608.1962 38822.74
Mar 2018       20831.42 11472.397 30190.44  6518.0296 35144.81
Apr 2018       22041.28 11471.855 32610.70  5876.7403 38205.82
May 2018       23144.05 11679.325 34608.77  5610.2691 40677.82
Jun 2018       22161.74 10052.930 34270.56  3642.9103 40680.58
Jul 2018       22204.30  9343.526 35065.07  2535.4453 41873.15
Aug 2018       22559.23  8987.458 36131.01  1802.9942 43315.47
Sep 2018       22375.49  8178.251 36572.73   662.6868 44088.29
Oct 2018       22326.69  7508.158 37145.23  -336.3012 44989.69
Nov 2018       22419.87  6997.589 37842.15 -1166.4724 46006.21
Dec 2018       22394.53  6402.601 38386.45 -2063.0135 46852.07

3.12 Plot Prediksi

> plot(ramalan)

  • Garis hitam merupakan data historis

  • Garis biru merupakan nilai peramalan

  • Area berwarna abu-abu/biru untuk interval prediksi 80% dan 95%

  • Lebarnya kipas interval prediksi mencerminkan ketidakpastian yang meningkat seiring dengan prediksi yang semakin jauh ke depan

  • Model ARIMA(2,1,0) tampaknya memperkirakan nilai yang cukup konstan di masa depan karena tidak adanya tren yang cukup kuat dalam data setelah differensiasi

  • Model ini cukup baik dalam menangkap pola acak dalam data tetapi mungkin tidak menangkap tren yang lebih kompleks

4 KESIMPULAN

Analisis deret waktu sangat bermanfaat untuk memprediksi atau meramalkan nilai sesuatu di masa yang akan datang. Pada kasus beras yang masuk per bulan melalui Perum Bulog (ton), analisis deret waktu bermanfaat dalam memberikan peramalan volume beras yang masuk untuk bulan-bulan mendatang, serta memberikan informasi yang sangat berharga untuk pengambilan keputusan strategis dalam manajemn stok beras dan kebijakan pangan nasional.

5 DAFTAR PUSTAKA

Sumarminingsih, E., Efendi, A. and Fernandes, A. A. R., 2022. Komputasi Statistika. Universitas Brawijaya Press.

Putri, G. A. M. A., Hendayanti, N. P. N., Nurhidayati, M. (2017). Pemodelan Data Deret Waktu dengan Autoregressive Integrated Moving Average dan Logistic Smoothing Transition Autoregressive. Jurnal Varian. 1(1), 54-60.