Pendahuluan

Forecasting adalah suatu aspek kunci dalam manajemen bisnis yang memungkinkan perusahaan untuk mengantisipasi dan merencanakan tindakan berdasarkan data masa lalu. Prediksi ini penting untuk menghindari risiko bisnis yang dapat timbul akibat ketidakpastian. Sebagai contoh, saat perayaan tahun baru, perusahaan bir dapat menggunakan data historis untuk memprediksi peningkatan permintaan dan merencanakan produksi mereka. Namun, perusahaan juga harus berhati-hati agar tidak memproduksi terlalu banyak bir yang tidak dibutuhkan. Dengan pendekatan yang tepat dalam peramalan, perusahaan dapat mengambil keputusan yang lebih cerdas, mengatur anggaran, dan menghindari kerugian. Hal ini memungkinkan mereka untuk meminimalkan pemborosan waktu dan biaya, serta memastikan bahwa produk mereka tidak mengalami pemborosan karena tidak terjual.

Dalam prakteknya, penggunaan forecasting akan memungkinkan perusahaan produksi bir untuk memaksimalkan efisiensi produksi mereka. Dengan memahami permintaan masa depan, mereka dapat mengatur waktu dan jumlah produksi secara lebih akurat, menghindari pemborosan bahan baku, dan meminimalkan risiko kerugian. Dengan demikian, forecasting bukan hanya alat penting dalam manajemen bisnis, tetapi juga merupakan elemen kunci untuk mencapai keberhasilan jangka panjang dan pertumbuhan bisnis dengan lebih baik.

Data dan Sumber Data

Berikut merupakan daftar jumlah produksi beer perbulan selama 10 tahun di Australia pada tahun 1985 sampai dengan tahun 1994 yang dikumpulkan berdasarkan data pada Kaggle dengan website https://www.kaggle.com/sergiomora823/monthly-beer-production

data <- read.table(file.choose(), sep = ";", header = T)
head(data)
##   Tahun    Bulan Monthly.beer.production
## 1  1985  January                   166.5
## 2  1985 February                   151.3
## 3  1985    March                   146.2
## 4  1985    April                   148.3
## 5  1985      May                   144.7
## 6  1985     June                   123.6

Analisis Data

Time Series Plot

plot(data$Monthly.beer.production, type = 'l')

JIka dilihat dari plot diatas, maka plot menunjukan bentuk pola data seasonal pada time series analysis. Pola seasonal adalah pola data yang dipengaruhi oleh musiman yang ditandai dengan adanya pola perubahan yang berulang yang sama berkali-kali pada interval waktu tertentu. Sehingga misalkan pada bulan januari terjadi penurunan, kemudian pada bulan April terjadi kenaikan, dan pada bulan Agustus terjadi penurunan lagi, dan Pada bulan November terjadi kenaikan lagi, maka pengulangan akan terjadi dari tahun ke tahun. Dapat dilihat pada time series plot bahwa data jumlah produksi beer di Australia dari tahun 1985 sampai tahun 1994 mengalami pengulangan setiap tahunnya.

Selanjutnya kita akan menganalisis data dengan menggunakan metode time series untuk ARIMA.

Pemanggilan library yang digunakan

library (tseries)
library(lmtest)
library(nortest)
library(car)

Kemudian dengan ts(data) untuk membuat data menjadi time series

ts(data)
## Time Series:
## Start = 1 
## End = 120 
## Frequency = 1 
##     Tahun Bulan Monthly.beer.production
##   1  1985     5                   166.5
##   2  1985     4                   151.3
##   3  1985     8                   146.2
##   4  1985     1                   148.3
##   5  1985     9                   144.7
##   6  1985     7                   123.6
##   7  1985     6                   151.6
##   8  1985     2                   133.9
##   9  1985    12                   137.4
##  10  1985    11                   181.6
##  11  1985    10                   182.0
##  12  1985     3                   190.0
##  13  1986     5                   161.2
##  14  1986     4                   155.5
##  15  1986     8                   141.9
##  16  1986     1                   164.6
##  17  1986     9                   136.2
##  18  1986     7                   126.8
##  19  1986     6                   152.5
##  20  1986     2                   126.6
##  21  1986    12                   150.1
##  22  1986    11                   186.3
##  23  1986    10                   147.5
##  24  1986     3                   200.4
##  25  1987     5                   177.2
##  26  1987     4                   127.4
##  27  1987     8                   177.1
##  28  1987     1                   154.4
##  29  1987     9                   135.2
##  30  1987     7                   126.4
##  31  1987     6                   147.3
##  32  1987     2                   140.6
##  33  1987    12                   152.3
##  34  1987    11                   151.2
##  35  1987    10                   172.2
##  36  1987     3                   215.3
##  37  1988     5                   154.1
##  38  1988     4                   159.3
##  39  1988     8                   160.4
##  40  1988     1                   151.9
##  41  1988     9                   148.4
##  42  1988     7                   139.6
##  43  1988     6                   148.2
##  44  1988     2                   153.5
##  45  1988    12                   145.1
##  46  1988    11                   183.7
##  47  1988    10                   210.5
##  48  1988     3                   203.3
##  49  1989     5                   153.3
##  50  1989     4                   144.3
##  51  1989     8                   169.6
##  52  1989     1                   143.7
##  53  1989     9                   160.1
##  54  1989     7                   135.6
##  55  1989     6                   141.8
##  56  1989     2                   159.9
##  57  1989    12                   145.7
##  58  1989    11                   183.5
##  59  1989    10                   198.2
##  60  1989     3                   186.8
##  61  1990     5                   172.0
##  62  1990     4                   150.6
##  63  1990     8                   163.3
##  64  1990     1                   153.7
##  65  1990     9                   152.9
##  66  1990     7                   135.5
##  67  1990     6                   148.5
##  68  1990     2                   148.4
##  69  1990    12                   133.6
##  70  1990    11                   194.1
##  71  1990    10                   208.6
##  72  1990     3                   197.3
##  73  1991     5                   164.4
##  74  1991     4                   148.1
##  75  1991     8                   152.0
##  76  1991     1                   144.1
##  77  1991     9                   155.0
##  78  1991     7                   124.5
##  79  1991     6                   153.0
##  80  1991     2                   146.0
##  81  1991    12                   138.0
##  82  1991    11                   190.0
##  83  1991    10                   192.0
##  84  1991     3                   192.0
##  85  1992     5                   147.0
##  86  1992     4                   133.0
##  87  1992     8                   163.0
##  88  1992     1                   150.0
##  89  1992     9                   129.0
##  90  1992     7                   131.0
##  91  1992     6                   145.0
##  92  1992     2                   137.0
##  93  1992    12                   138.0
##  94  1992    11                   168.0
##  95  1992    10                   176.0
##  96  1992     3                   188.0
##  97  1993     5                   139.0
##  98  1993     4                   143.0
##  99  1993     8                   150.0
## 100  1993     1                   154.0
## 101  1993     9                   137.0
## 102  1993     7                   129.0
## 103  1993     6                   128.0
## 104  1993     2                   140.0
## 105  1993    12                   143.0
## 106  1993    11                   151.0
## 107  1993    10                   177.0
## 108  1993     3                   184.0
## 109  1994     5                   151.0
## 110  1994     4                   134.0
## 111  1994     8                   164.0
## 112  1994     1                   126.0
## 113  1994     9                   131.0
## 114  1994     7                   125.0
## 115  1994     6                   127.0
## 116  1994     2                   143.0
## 117  1994    12                   143.0
## 118  1994    11                   160.0
## 119  1994    10                   190.0
## 120  1994     3                   182.0

kemudian kita membuat variabel prodcution untuk menampung data production.

production <- data$Monthly.beer.production
head(production)
## [1] 166.5 151.3 146.2 148.3 144.7 123.6

PACF dan ACF

Melihat pola PACF (Partial Auto Correlation Function) dan ACF (Auto Correlation Function) untuk menentukan order yang sesuai

pacf(production)

ACF (Auto Correlation Function)

acf(production)

Berdasarkan PACF di atas, dapat kita lihat nlai PACF nya signifikan pada lag 1 dan lag 2 sampai lag 10 tidak signifikan (karena nilai masih berada di dalam garis interval), kemudian signifikan lagi pada lag 11 dan lag 12. Kemudian pada ACF diatas, dapat dilihat nilai ACF nya signifikan pada lag 1 dan lag 2 , kemudian pada lag 3 sampai lag 10 tidak signifikan karena masih beda di dalam garis interval, lalu signifikan lagi pada lag 11, lag 12 dan lag 13. Sehingga hal ini menandakan adanya perulangan atau musiman di dalamnya.

Uji stasioner terhadap mean (adf test)

H0 : Tidak stasioner terhadap mean

H1 : Stasioner terhadap mean

Dengan alfa = 0,05

Tolak H0 jika p-value < alfa

adf.test(production)
## 
##  Augmented Dickey-Fuller Test
## 
## data:  production
## Dickey-Fuller = -5.8104, Lag order = 4, p-value = 0.01
## alternative hypothesis: stationary

Karena p-value < alfa yaitu 0,01 < 0,05 maka tolak H0

Kesimpulan data time series bersifat stasioner terhadap mean

Karena sudah stasioner terhadap mean maka tidak perlu dilakukan differencing Selanjutnya kita mencari model Arima kita

Pemodelan

Model 1

Dengan menggunakan order (1,0,2) dan seasonal order (1,0,1) dengan periode 12 dan menggunakan alfa = 0,05

model1 <- arima(production, order = c(3,0,2), seasonal = list(order = c(1,0,1), period = 12))
model1
## 
## Call:
## arima(x = production, order = c(3, 0, 2), seasonal = list(order = c(1, 0, 1), 
##     period = 12))
## 
## Coefficients:
##          ar1     ar2     ar3      ma1      ma2    sar1     sma1  intercept
##       0.0830  0.4415  0.3855  -0.1958  -0.5026  0.9953  -0.7791   153.2169
## s.e.  0.1718  0.1663  0.0920   0.1829   0.1688  0.0071   0.1500    22.8922
## 
## sigma^2 estimated as 108:  log likelihood = -467.53,  aic = 953.06

Uji signifikansi

H0 : SHI = 0

H1 : SHI ≠0

Tolak H0 jika p-value < alfa

coeftest(model1)
## 
## z test of coefficients:
## 
##              Estimate  Std. Error  z value  Pr(>|z|)    
## ar1         0.0830252   0.1717790   0.4833  0.628864    
## ar2         0.4415116   0.1663388   2.6543  0.007948 ** 
## ar3         0.3855373   0.0919845   4.1913 2.773e-05 ***
## ma1        -0.1958349   0.1828500  -1.0710  0.284163    
## ma2        -0.5025619   0.1688169  -2.9770  0.002911 ** 
## sar1        0.9952905   0.0070996 140.1906 < 2.2e-16 ***
## sma1       -0.7790825   0.1499677  -5.1950 2.047e-07 ***
## intercept 153.2169195  22.8921817   6.6930 2.187e-11 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Karena semua p-value < alfa yaitu < 0,05 maka tolak H0

Kesimpulan semua parameter signifikan

Uji Residual White Noise

H0 : Residual bersifat white noise

H1 : Residual tidak bersifat white noise

Alfa = 0,05

Tolak H0 jika p-value < alfa

Box.test(model1$residuals, type = "Ljung-Box")
## 
##  Box-Ljung test
## 
## data:  model1$residuals
## X-squared = 0.012333, df = 1, p-value = 0.9116

Karena p-value > alfa yaitu 0,9797 > 0,05 maka gagal tolak H0

Kesimpulan Residual bersifat white noise

Uji Residual berdistribusi normal

H0 : error berdistirbusi normal

H1 : error tidak berdistribui normal

Alfa = 0,05

Tolak H0 jika p-value < alfa

lillie.test(model1$residuals)
## 
##  Lilliefors (Kolmogorov-Smirnov) normality test
## 
## data:  model1$residuals
## D = 0.073398, p-value = 0.1165

Karena p-value < alfa yaitu 0,1781 > 0,05 maka gagal tolak H0

Kesimpulan error berdistribusi normal

Selanjutnya adalah menghitung nilai dari residual dan Mean Square Error (MSE) dari model 1

e1 <- resid(model1)
mse1 <- sum(e1^2)/length(e1)
mse1
## [1] 107.9766

Jadi kesimpulan dari model 1 adalah data yang kita gunakan memiliki signifikansi yang baik, dan residual bersifat white noise dan residual berdistribusi normal, kemudian dengan metode ARIMA order (1,0,2) dan seasonal order (1,0,1) dengan periode 12 didapatkan MSE sebesar 121,7115

Model 2

Dengan menggunakan order (2,0,3) dan seasonal order (1,0,1) dengan periode 12 dan menggunakan alfa = 0,05

model2 <- arima(production, order = c(2,0,3), seasonal = list(order = c(1,0,1), period = 12))
model2
## 
## Call:
## arima(x = production, order = c(2, 0, 3), seasonal = list(order = c(1, 0, 1), 
##     period = 12))
## 
## Coefficients:
##          ar1     ar2      ma1      ma2     ma3    sar1     sma1  intercept
##       0.1675  0.7628  -0.2252  -0.8774  0.3321  0.9929  -0.7252   153.0579
## s.e.  0.0793  0.0729   0.1094   0.0422  0.0969  0.0091   0.1510    22.6195
## 
## sigma^2 estimated as 108.3:  log likelihood = -466.21,  aic = 950.41

Uji signifikansi

H0 : SHI = 0

H1 : SHI ≠0

Tolak H0 jika p-value < alfa

coeftest(model2)
## 
## z test of coefficients:
## 
##              Estimate  Std. Error  z value  Pr(>|z|)    
## ar1         0.1675222   0.0792974   2.1126 0.0346366 *  
## ar2         0.7628444   0.0728776  10.4675 < 2.2e-16 ***
## ma1        -0.2252256   0.1093791  -2.0591 0.0394819 *  
## ma2        -0.8773555   0.0421612 -20.8095 < 2.2e-16 ***
## ma3         0.3320826   0.0969279   3.4261 0.0006124 ***
## sar1        0.9928576   0.0090741 109.4165 < 2.2e-16 ***
## sma1       -0.7251570   0.1509903  -4.8027 1.566e-06 ***
## intercept 153.0579340  22.6194538   6.7667 1.318e-11 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Karena semua p-value < alfa yaitu < 0,05 maka tolak H0

Kesimpulan semua parameter signifikan

Uji Residual White Noise

H0 : Residual bersifat white noise

H1 : Residual tidak bersifat white noise

Alfa = 0,05

Tolak H0 jika p-value < alfa

Box.test(model2$residuals, type = "Ljung-Box")
## 
##  Box-Ljung test
## 
## data:  model2$residuals
## X-squared = 0.089911, df = 1, p-value = 0.7643

Karena p-value > alfa yaitu 0,7643 > 0,05 maka gagal tolak H0

Kesimpulan Residual bersifat white noise

Uji Residual berdistribusi normal

H0 : error berdistirbusi normal

H1 : error tidak berdistribui normal

Alfa = 0,05

Tolak H0 jika p-value < alfa

lillie.test(model2$residuals)
## 
##  Lilliefors (Kolmogorov-Smirnov) normality test
## 
## data:  model2$residuals
## D = 0.068295, p-value = 0.1848

Karena p-value < alfa yaitu 0,1848 > 0,05 maka gagal tolak H0

Kesimpulan error berdistribusi normal

Selanjutnya adalah menghitung nilai dari residual dan Mean Square Error (MSE) dari model 2

e2 <- resid(model2)
mse2 <- sum(e2^2)/length(e2)
mse2
## [1] 108.2762

Jadi kesimpulan dari model 2 adalah data yang kita gunakan memiliki signifikansi yang baik, residual bersifat white noise dan residual berdistribusi normal, kemudan dengan metode ARIMA order (2,0,3) dan seasonal order (1,0,1) dengan periode 12 didapatkan MSE sebesar 108,2762

Pemilihan Model Terbaik

Cara untuk menentukan model terbaik antara model 1 dan model 2 untuk ARIMA adalah dengan membandingkan nilai MSE dari masing-masing model. Jika memiliki nilai MSE yang terkecil diantara kedua model, maka model tersebut merupakan model terbaik untuk ARIMA

Metode MSE
ARIMA order (1,0,2) dan seasonal order (1,0,1) 121.7115
ARIMA order (2,0,3) dan seasonal order (1,0,1) 108.2762

Setelah melihat perbandingan diatas, maka dapat dikatakan bahwa model terbaik untuk ARIMA adalah dengan menggunakan model 2 yaitu dengan ARIMA order (2,0,3) dan seasonal order (1,0,1) yang memiliki MSE sebesar 108,2762

Kesimpulan

Hasil peramalan terbaik untuk jumlah produksi bir per bulan di Australia menggunakan metode ARIMA adalah dengan menggunakan order (2,0,3) dan seasonal order (1,0,1). Oleh karena itu, kita dapat menggunakan teknik peramalan ini untuk memprediksi jumlah produksi bir di Australia di masa mendatang.