library(readxl)
library(tseries)
## Registered S3 method overwritten by 'quantmod':
##   method            from
##   as.zoo.data.frame zoo
library(urca)
library(tseries)

Import Data

data.sales = read_excel("C:\\Users\\MUTHI'AH IFFA\\Downloads\\Semester 5\\MPDW\\Praktikum\\Tugas Mandiri Iffa_MPDW_(store sales) 301_400.xlsx")

Cek Struktur Data

data.sales
## # A tibble: 100 Ɨ 2
##    Date                Total_Sales
##    <dttm>                    <dbl>
##  1 2022-10-28 00:00:00        238.
##  2 2022-10-29 00:00:00        204.
##  3 2022-10-30 00:00:00        207.
##  4 2022-10-31 00:00:00        250.
##  5 2022-11-01 00:00:00        236.
##  6 2022-11-02 00:00:00        286.
##  7 2022-11-03 00:00:00        226.
##  8 2022-11-04 00:00:00        214.
##  9 2022-11-05 00:00:00        230.
## 10 2022-11-06 00:00:00        204.
## # ℹ 90 more rows
str(data.sales)
## tibble [100 Ɨ 2] (S3: tbl_df/tbl/data.frame)
##  $ Date       : POSIXct[1:100], format: "2022-10-28" "2022-10-29" ...
##  $ Total_Sales: num [1:100] 238 204 207 250 236 ...
head(data.sales)
## # A tibble: 6 Ɨ 2
##   Date                Total_Sales
##   <dttm>                    <dbl>
## 1 2022-10-28 00:00:00        238.
## 2 2022-10-29 00:00:00        204.
## 3 2022-10-30 00:00:00        207.
## 4 2022-10-31 00:00:00        250.
## 5 2022-11-01 00:00:00        236.
## 6 2022-11-02 00:00:00        286.

Buat Data Time Series

# Ammbil kolom nilai penjualan
y = data.sales$Total_Sales
head(y)
## [1] 238.49 204.26 207.48 250.01 236.39 286.10
# Buat Objek Time series 
ts.data = ts(y, frequency = 1, start = 1) # frequency 1 karena data berjumlah 100
head(ts.data)
## Time Series:
## Start = 1 
## End = 6 
## Frequency = 1 
## [1] 238.49 204.26 207.48 250.01 236.39 286.10

data bulanan –> frquency = 12 (karena 12 bulan/tahun)

data kuartal –> frequency = 4

data harian satu tahun penuh –> frequency = 365

tidak tahu ada musiman/data pendek –> frequency = 1

# Plot deret waktu 
plot(ts.data, 
     main = "Total Sales (Time Series)",
     ylab = "Total Sales", 
     xlab = "Observation (1-100)")

Artinya dari grafik dapat diasumsikan bahwa data sudah stationer, namun agar lebih terlihat dan teruji bahwa data stationer akan dilakukan beberapa uji.

Cek Stationeritas

# Plot ACF dan PACF 
acf(ts.data, main = "ACF - Total Sales") # plot ACF

pacf(ts.data, main = "PACF - Total Sales") # plot PACF

Uji stationeritas

ADF Test

ADF test mendeteksi unit root

\(H_0\) = data tidak stationer

\(H_1\) = data stationer

tolak \(H_0\) ketika < 0.05

# Uji ADF 
adf.test(ts.data) 
## Warning in adf.test(ts.data): p-value smaller than printed p-value
## 
##  Augmented Dickey-Fuller Test
## 
## data:  ts.data
## Dickey-Fuller = -6.0915, Lag order = 4, p-value = 0.01
## alternative hypothesis: stationary

\(p-value\) berdasarkan uji ADF bernilai 0.01, artinya \(p-value\) < 0.05 maka tolak \(H_0\). Artinya dapat disimpulkan data sudah stationer.

KPSS (Kwiatkowski-Phillips-Schmidt-Shin) Test

KPSS test mendeteksi kestationeran di sekitar mean atau tren

\(H_0\) = data stationer

\(H_1\) = data tidak stationer

tolak \(H_0\) ketika p-value < 0.05

# Uji KPSS 
kpss.test(ts.data)
## Warning in kpss.test(ts.data): p-value greater than printed p-value
## 
##  KPSS Test for Level Stationarity
## 
## data:  ts.data
## KPSS Level = 0.21043, Truncation lag parameter = 4, p-value = 0.1

\(p-value\) berdasarkan uji KPSS bernilai 0.121043 artinya \(p-value\) > 0.05 maka gagal tolak \(H_0\). Artinya dapat disimpulkan data sudah stationer.