Package

library(readxl)
library(TTR)
library(TSA)
library(tseries)
library(graphics)
library(forecast)
library(lmtest)
  1. Display the time series plot of these data. Interpret the plot.
dataUTS <- read_excel("C:\\Users\\Cintia\\Documents\\R Prediktif\\UTS2023.xlsx")

Data <- ts(dataUTS)
ts.plot(Data, col="dodgerblue2")
points(Data, pch = 20, col = "red2")

Berdasarkan hasil plot di atas, terlihat bahwa data mengalami kenaikan (tren) seiring waktu, yang terlihat dari pergerakan titik-titik data yang secara umum cenderung naik, meskipun terdapat fluktuasi (naik-turun) pada setiap periode. Hal ini menunjukkan bahwa data tidak stasioner dalam rata-rata. Selain itu, fluktuasi data tampak meningkat seiring waktu, sehingga terdapat indikasi ketidakstasioneran dalam ragam, meskipun hal ini perlu dikonfirmasi melalui analisis lebih lanjut. Untuk memastikan ini, analisis statistik lebih lanjut seperti uji stasioneritas menggunakan ADF Test.

adf_result <- adf.test(Data)
print(adf_result)
## 
##  Augmented Dickey-Fuller Test
## 
## data:  Data
## Dickey-Fuller = -2.991, Lag order = 3, p-value = 0.1792
## alternative hypothesis: stationary

Karena nilai \(p-value > 0.05\), kita gagal menolak hipotesis nol \((H_0)\) yang menyatakan bahwa data tidak stasioner.

  1. Display the time series plot of the differences of the logarithms of these data. Comment this plot please.
Data.log <- log(Data)
ts.plot(Data.log, col="dodgerblue2")
points(Data.log, pch = 20, col = "red")

Berikut adalah plot data hasil transformasi logaritma. Plot tersebut masih menunjukkan adanya pola kenaikan (tren) seiring waktu.

DIFFERENCING

#melakukan differencing pertama
Data.diff1 <- diff(Data.log, differences = 1)

ts.plot(Data.diff1, col="dodgerblue2")
points(Data.diff1, pch = 20, col = "red")

Berdasarkan hasil plot di atas, terlihat bahwa data hasil differencing pertama berfluktuasi di sekitar rata-rata nol tanpa menunjukkan pola perubahan nilai tengah atau ragam yang signifikan dari waktu ke waktu. Hal ini mengindikasikan bahwa data kemungkinan telah stasioner dalam rata-rata dan ragam. Namun, untuk memastikan stasioneritas, diperlukan uji statistik ADF test kembali.

adf_result_diff1 <- adf.test(Data.diff1)
print(adf_result_diff1)
## 
##  Augmented Dickey-Fuller Test
## 
## data:  Data.diff1
## Dickey-Fuller = -4.3151, Lag order = 3, p-value = 0.01
## alternative hypothesis: stationary

Karena nilai \(p-value < 0.05\), kita berhasil menolak hipotesis nol \((H_0)\) yang menyatakan bahwa data telah stasioner.

  1. Calculate and describe the sample ACF for the differences of the logarithms of these data and comment the resulting ACF.
#identifikasi model MA(q) dengan plot ACF
acf(Data.diff1, lag.max=30, main="Plot ACF MA(q)")

Pada plot ACF di atas, terlihat bahwa terdapat cut-off pada lag pertama. Hal ini menunjukkan bahwa model IMA(1,1) adalah kandidat yang sesuai untuk data yang telah melalui proses differencing.

  1. Use ARIMA models to find the most appropriate model for these data. Explain the result.
#identifikasi model AR(p) dengan plot PACF
pacf(Data.diff1, lag.max=30, main="Plot PACF AR(p)", ylab="PACF")

Pada plot PACF terlihat bahwa terdapat cut-off setelah lag ke-2, yang mengindikasikan bahwa komponen AR memiliki orde 2. Karena data telah melalui differencing, model sementara yang akan diidentifikasi adalah ARIMA(2,1,0).

#identifikasi model ARMA(p,q) dengan EACF
eacf(Data.diff1)
## AR/MA
##   0 1 2 3 4 5 6 7 8 9 10 11 12 13
## 0 x o x o o o o o o o o  o  o  o 
## 1 x o x o x o o o o o o  o  o  o 
## 2 x o o o o o o o o o o  o  o  o 
## 3 o o o o o o o o o o o  o  o  o 
## 4 o o o o o o o o o o o  o  o  o 
## 5 o o x o o o o o o o o  o  o  o 
## 6 o x o o o o o o o o o  o  o  o 
## 7 o o o o o o o o o o o  o  o  o

Berdasarkan hasil plot EACF di atas, diperoleh model dugaan tentatif untuk data penjualan produk farmasi, yaitu ARIMA(0,1,3). Untuk memastikan model ini, dilakukan uji signifikansi parameter dan diagnostik model.

#Dugaan model MA(1)
ARIMA_011 <- arima(x = Data.diff1, order=c(0,1,1), method = "ML")
coeftest(ARIMA_011)
## 
## z test of coefficients:
## 
##      Estimate Std. Error z value  Pr(>|z|)    
## ma1 -0.999987   0.055137 -18.136 < 2.2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Berdasarkan hasil uji signifikansi parameter pada model ARIMA(0,1,1), diperoleh \(p-value\) untuk parameter ma1 yang lebih kecil dari \(0.05 (p-value < 2.2e-16)\), yang menunjukkan bahwa parameter tersebut teruji signifikan pada level alfa \(0.05\).

#Dugaan model ARIMA(2,1,0)
ARIMA_210 <- arima(x = Data.diff1, order=c(2,1,0), method = "ML")
coeftest(ARIMA_210)
## 
## z test of coefficients:
## 
##      Estimate Std. Error  z value  Pr(>|z|)    
## ar1 -1.155842   0.097933 -11.8023 < 2.2e-16 ***
## ar2 -0.714767   0.094925  -7.5298 5.082e-14 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Berdasarkan hasil uji signifikansi parameter pada model ARIMA(2,1,0), diperoleh \(p-value\) yang sangat kecil \((p-value < 0.05)\) untuk seluruh parameter (ar1 dan ar2). Hal ini menunjukkan bahwa kedua parameter tersebut signifikan pada tingkat signifikansi \(0.05\). Oleh karena itu, model ARIMA(2,1,0) dapat diterima dan parameter-parameter yang ada dalam model ini terbukti berpengaruh secara signifikan terhadap variabel yang dianalisis.

#Dugaan model ARIMA(0,1,3)
ARIMA_013 <- arima(x = Data.diff1, order=c(0,1,3), method = "ML")
coeftest(ARIMA_013)
## 
## z test of coefficients:
## 
##     Estimate Std. Error  z value  Pr(>|z|)    
## ma1 -2.15336    0.15040 -14.3174 < 2.2e-16 ***
## ma2  1.59471    0.23321   6.8382  8.02e-12 ***
## ma3 -0.44135    0.13512  -3.2663   0.00109 ** 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Berdasarkan hasil uji signifikansi parameter untuk model ARIMA(0,1,3), semua parameter teruji signifikan pada tingkat signifikansi \(\alpha = 0.05\).

ARIMA_011
## 
## Call:
## arima(x = Data.diff1, order = c(0, 1, 1), method = "ML")
## 
## Coefficients:
##           ma1
##       -1.0000
## s.e.   0.0551
## 
## sigma^2 estimated as 0.0984:  log likelihood = -13.59,  aic = 29.19
ARIMA_210
## 
## Call:
## arima(x = Data.diff1, order = c(2, 1, 0), method = "ML")
## 
## Coefficients:
##           ar1      ar2
##       -1.1558  -0.7148
## s.e.   0.0979   0.0949
## 
## sigma^2 estimated as 0.07753:  log likelihood = -7.34,  aic = 18.67
ARIMA_013
## 
## Call:
## arima(x = Data.diff1, order = c(0, 1, 3), method = "ML")
## 
## Coefficients:
##           ma1     ma2      ma3
##       -2.1534  1.5947  -0.4413
## s.e.   0.1504  0.2332   0.1351
## 
## sigma^2 estimated as 0.03588:  log likelihood = 7.15,  aic = -8.3

Berdasarkan perbandingan nilai AIC model ARIMA(0,1,1), ARIMA(2,1,0), dan ARIMA(0,1,3) diperoleh nilai AIC terkecil sebesar -8.3 yaitu model ARIMA(0,1,3). Sehingga model ARIMA(0,1,3) merupakan model terbaik yang dapat digunakan untuk meramalkan data tersebut.