Analisis deret waktu merupakan salah satu metode statistik yang digunakan untuk memahami, memodelkan, dan meramalkan data yang dikumpulkan dari waktu ke waktu. Deret waktu tidak hanya berguna untuk menggambarkan kondisi masa lalu, tetapi juga untuk memproyeksikan kondisi masa depan berdasarkan pola yang telah teridentifikasi. Analisis deret waktu terdiri dari beberapa komponen utama yaitu tren, musiman, siklus, dan komponen acak. Tren menunjukkan arah pergerakan data dalam jangka panjang, sedangkan komponen musiman menggambarkan pola yang berulang dalam periode tertentu seperti bulanan atau tahunan.
Pada analisis kali ini, digunakan data harga tomat di Desa Cipulus, yang mana harga tomat cenderung berfluktuasi sepanjang tahun. Fluktuasi ini disebabkan oleh berbagai faktor seperti musim panen, kondisi cuaca, permintaan pasar, biaya produksi, dan distribusi. Dalam upaya untuk memahami pola fluktuasi harga tomat dan membuat prediksi yang akurat mengenai pergerakan harga di masa depan, analisis deret waktu menjadi metode yang sangat berguna. Analisis deret waktu memungkinkan kita untuk mengidentifikasi tren, pola musiman, dan siklus yang terdapat dalam data harga tomat dari waktu ke waktu.
Laporan ini bertujuan untuk menganalisis data harga tomat menggunakan metode analisis deret waktu. Dengan menganalisis data historis harga tomat, kita dapat mengidentifikasi pola-pola penting yang dapat digunakan untuk memprediksi harga di masa depan.
Analisis deret waktu adalah teknik yang digunakan untuk menganalisis data dengan mempertimbangkan faktor waktu. Data dikumpulkan secara berkala berdasarkan urutan waktu, seperti per jam, harian, mingguan, bulanan, kuartalan, atau tahunan. Analisis ini bertujuan untuk membantu perencanaan masa depan dengan lebih baik. Untuk menentukan metode peramalan yang tepat pada data deret waktu, perlu diidentifikasi pola dalam data tersebut sehingga peramalan dapat dilakukan dengan metode yang paling sesuai. Pola data dapat dikategorikan menjadi empat jenis utama yaitu, pola musiman, siklis, tren, dan acak. Pola musiman adalah fluktuasi data yang terjadi secara periodik dalam satu tahun, seperti triwulanan, kuartalan, bulanan, mingguan, atau harian. Untuk data model stokastik, terdapat beberapa model yang dapat digunakan, seperti Autoregressive (AR), Moving Average (MA), Autoregressive Moving Average (ARMA), Autoregressive Integrated Moving Average (ARIMA), Seasonal ARIMA (SARIMA), dan lainnya.
Data yang dimodelkan dengan analisis deret waktu diasumsikan memiliki sifat stasioner, artinya tidak mengalami tren dalam nilai rata-rata dan variansinya. Dalam analisis deret waktu, data diharapkan mengikuti proses stokastik, yaitu suatu proses yang dinyatakan dalam variabel acak \(Z(t)\) dan dinotasikan dengan \(Z_t\) dan memiliki fungsi kepekatan \(f(Z_t)\) yang berarti nilai \(Z_{t1}, Z_{t2},...,Z_{tn}\) pada deret waktu \(t_1, t_2, …, t_n\) secara acak mengikuti distribusi probabilitas \(f(Z_t)\).
\(Cov (Z_t, Z_s)\) (autokorelasi) adalah suatu fungi dari perbedaan waktu \(|t-s|\). Covarian antara \(Z_t\) dan \(Z_{t+k}\) yang di definisikan sebagai berikut :
\[ 𝛾_k=Cov (Z_t, Z_{t+k})=E(Z_t-𝜇)(Z_{t+k}-𝜇) \] korelasi antara \(Z_t\) dan \(Z_{t+k}\) adalah:
\[ 𝜌_k=\frac{Cov(Z_t,Z_{t+k})}{\sqrt{Var(Z_t)}\sqrt{Var(Z_{t+k})}}=\frac {𝛾_k}{𝛾_0} \]
dangan \(Var (Z_t)=Var (Z_{t+k})=𝛾_0\) .
Autokorelasi parsial digunakan untuk mengukur korelasi antara \(Z_t\) dan \(Z_{t+k}\) setelah menghilangkan dependensi linier. Autokorelasi parsial dapat diperoleh berdasarkan model regresi dengan variabel dependen adalah \(Z_{t+k}\) dan variabel independensi adalah \(Z_{t+k-1}, Z_{t+k-2}, …, Z_t\) sehingga terbentuklah model sebagai berikut:
\[ Z_{t+k}=∅_{k1}Z_{t+k_1}+∅_{k2}Z_{t+k-2}+...+∅_{kk}Z_t+e_{t+k} \]
Model ARIMA merupakan teknik yang digunakan untuk memodelkan dan memprediksi data deret waktu. Model ini menggabungkan model AR yang menggunakan nilai data sebelumnya untuk memprediksi, model MA yang menggunakan rata-rata kesalahan prediksi di masa lalu, dan proses differencing untuk mengubah data menjadi statis. Model ARIMA non musiman dapat ditulis sebagai ARIMA (p,d,q) dengan bentuk umum sebagai berikut:
\[ 𝜙_p(B)(1-B)^dZ_t=𝜃_0+𝜃_q(B)a_t \]
dimana:
\((p,d,q)\) : orde AR(p), orde differencing(d), dan orde MA(q)
\(𝜙_p\) (B) :koefisien komponen AR orde p
\(𝜃_q\) (B) :koefisien komponen MA orde q
\(𝜃_0\) :koefisien tren deterministic
\(a_t\) : nilai residual pada saat t
Identifikasi model ARIMA dapat dilakukan dengan melihat plot time series, plot ACF, dan PACF. Plot ACF dan PACF dapat digunakan untuk menentukan orde p dan orde q dari model ARIMA non musiman.
Data yang digunakan adalah tentang harga tomat di Desa Cipulus, data ini didapatkan dari sebuah prosiding seminar yang berjudul “Pentingnya Data Deret Waktu dalam Melakukan Perencanaan Produksi”.
| Periode | Harga |
|---|---|
| Juni 2016 | 4.100 |
| Juli 2016 | 1.700 |
| Agustus 2016 | 1.600 |
| September 2016 | 2.300 |
| Oktober 2016 | 3.500 |
| November 2016 | 5.500 |
| Desember 2016 | 1.500 |
| Januari 2017 | 3.000 |
| Februari 2017 | 3.300 |
| Maret 2017 | 4.500 |
| April 2017 | 4.000 |
| Mei 2017 | 5.000 |
Tujuan dari dilakukan analisis ini adalah untuk mengetahui pergeseran harga tomat, perubahan harga tomat, dan peramalan harga tomat untuk periode selanjutnya.
> # Library
> library(readxl)
> library(tseries)
> library(TSA)
> library(forecast)
> data_laprak <- read_excel("C:/Users/User/Downloads/data laprak adv.xlsx")
> View(data_laprak)
Data di import dari file excel yang sudah disimpan. Function
read_excel digunakan untuk membaca dan mengimport data dari
file excel ke dalam R.
> harga<-data_laprak$harga
Mengekstrak kolom bernama harga dari dataframe
data_laprak dan menyimpannya dalam variabel baru bernama
harga.
> test.ts <- ts(harga,start=c(2016,6),frequency = 12)
> test.ts
Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
2016 4100 1700 1600 2300 3500 5500 1500
2017 3000 3300 4500 4000 5000
Data didefinisikan ke bentuk data deret waktu dan diberi nama
test.ts. Function ts digunakan untuk mengubah
data menjadi sebuah deret waktu. Argument yang diisikan dalam function
adalah harga yang merupakan vektor data yang berisi harga
tomat, start=c(2016,6) yang digunakan untuk menentukan
titik awal deret waktu sebagai Juni 2016, dan
frequency = 12 yang digunakan untuk frekuensi data dimana
hal ini menunjukan bahwa titik data dikumpulkan per bulan.
> plot.ts(test.ts, col = "navyblue", lty=1, xlab="waktu", ylab="harga tomat",
+ main="harga tomat juni 2016 - mei 2017")
Menampilkan plot time series. Function plot.ts digunakan
untuk membuat plot time series. Argument yang diisikan dalam function
adalah tets.ts yang merupakan objek deret waktu yang akan
diplot, col = "navyblue" yang digunakan untuk mengatur
garis warna garis menjadi biru tua, lty=1 yang digunakan
untuk mengatur jenis garis menjadi garis solid,
xlab="waktu" yang digunakan untuk menetapkan “waktu”
sebagai label sumbu x, ylab="harga tomat" yang digunakan
untuk menetapkan “harga tomat” sebagai label sumbu y, dan
main="harga tomat juni 2016 - mei 2017" yang digunakan
untuk menetapkan “harga tomat Juni 2016 - Mei 2017” sebagai judul
plot.
> l_harga<- zlag(harga,1)
> l_harga
[1] NA 4100 1700 1600 2300 3500 5500 1500 3000 3300 4500 4000
Menghitung pergeseran data dalam variabel harga satu
periode ke belakang kemudian disimpan dalam variabel
l_harga. Function zlag digunakan untuk
menehitung pergeseran dalam data deret waktu. Argument yang diisikan
dalam function adalah harga yang merupakan objek derek
waktu yang akan dihitung lagnya, dan 1 yang menunjukkan
bahwa yang dihitung adalah lag 1.
> d_harga1<-diff(harga)
> d_harga1
[1] -2400 -100 700 1200 2000 -4000 1500 300 1200 -500 1000
Menghitung perubahan harga dari satu periode ke periode yang lain
kemudian menyimpannya dalam variabel d_harga1. Function
diff digunakan untuk menghitung diferensiasi dalam data
deret waktu. Argument yang diisikan dalam function adalah
harga yang merupan objek deret waktu yang akan dihitung
perubahan harganya.
> plot(d_harga1,type = "l",main="harga tomat ,hasil pembedaan pertama",xlab="waktu",ylab="harga tomat")
Menampilkan plot yang menunjukan perubahan harga tomat dari satu
periode ke periode berikutnya. Function plot digunakan
untuk membuat plot. Argument yang diisikan dalam function adalah
d_harga1 yang merupakan objek yang akan disajikan plotnya,
type = "l" yang digunakan untuk mengatur jenis garis,
main="harga tomat ,hasil pembedaan pertama" yang digunakan
untuk mengatur “harga tomat ,hasil pembedaan pertama” sebagai judul
plot, xlab="waktu" yang digunakan untuk menetapkan “waktu”
sebagai label sumbu x, dan ylab="harga tomat" yang
digunakan untuk menetapkan “harga tomat” sebagai label sumbu y.
> acf(harga)
Menghitung dan menampilkan plot autokorelasi dari data harga.
Function acf yang digunakan untuk menghitung autokorelasi
dari deret waktu. Argument yang diisikan dalam function adalah
harga yang merupakan objek deret waktu yang akan dilihat
autokorelasinya.
> acf(harga,lag.max = 10)
sama seperti sebelumnya, tetapi terdapat argument tambahan yaitu
lag.max = 10 yang menunjukan bahwa autokorelasi akan
dihitung hingga lag ke-10.
> pacf(harga, lag.max = 10, main = "PACF Harga")
Menghitung dan menampilkan plot partial autokorelasi dari data harga.
Function pacf yang digunakan untuk menghitung partial
autokorelasi dari deret waktu. Argument yang diisikan dalam function
adalah harga yang merupakan objek deret waktu yang akan
dilihat autokorelasinya, lag.max = 10 yang menunjukan bahwa
autokorelasi akan dihitung hingga lag ke-10, dan
main = "PACF Harga" yang digunakan untuk menetapkan “PACH
harga” sebagai judul plot.
> acf(d_harga1)
Menghitung dan menampilkan plot autokorelasi dari data perubahan
harga. Function acf yang digunakan untuk menghitung
autokorelasi dari deret waktu. Argument yang diisikan dalam function
adalah d_harga1 yang merupakan objek deret waktu yang akan
dilihat autokorelasinya.
> fit <- auto.arima(test.ts)
> summary(fit)
Series: test.ts
ARIMA(0,0,0) with non-zero mean
Coefficients:
mean
3333.3333
s.e. 373.6722
sigma^2 = 1827879: log likelihood = -103.02
AIC=210.03 AICc=211.37 BIC=211
Training set error measures:
ME RMSE MAE MPE MAPE MASE ACF1
Training set -6.063391e-13 1294.433 1100 -20.40848 43.53864 NaN 0.1023983
Memilih model ARIMA secara otomatis kemudian menyimpannya dalam
variabel fit. Function auto.arima digunakan
untuk memilih model ARIMA yang optimal untuk data deret waktu secara
otomatis. Argument yang diisikan dalam function adalah
test.ts yang merupakan objek deret waktu yang akan dipilih
model ARIMAnya. Setelah itu, ringkasan dari variabel fit
akan ditampilkan dengan menggunakan fungsi
summary(fit).
> forecasted <- forecast(fit, h=12)
> forecasted
Point Forecast Lo 80 Hi 80 Lo 95 Hi 95
Jun 2017 3333.333 1600.688 5065.979 683.4803 5983.186
Jul 2017 3333.333 1600.688 5065.979 683.4803 5983.186
Aug 2017 3333.333 1600.688 5065.979 683.4803 5983.186
Sep 2017 3333.333 1600.688 5065.979 683.4803 5983.186
Oct 2017 3333.333 1600.688 5065.979 683.4803 5983.186
Nov 2017 3333.333 1600.688 5065.979 683.4803 5983.186
Dec 2017 3333.333 1600.688 5065.979 683.4803 5983.186
Jan 2018 3333.333 1600.688 5065.979 683.4803 5983.186
Feb 2018 3333.333 1600.688 5065.979 683.4803 5983.186
Mar 2018 3333.333 1600.688 5065.979 683.4803 5983.186
Apr 2018 3333.333 1600.688 5065.979 683.4803 5983.186
May 2018 3333.333 1600.688 5065.979 683.4803 5983.186
Meramalkan harga tomat 12 bulan kedepan kemudian nilai disimpan dalam
variabel forecasted. Function forecast
digunakan untuk memprediksi nilai untuk setiap periode kedepannya bagi
data deret waktu. Argument yang diisikan dalam function adalah
fit yang merupakan objek deret waktu yang berisi harga
tomat yang akan diperdiksi nilai kedepannya, dan h=12 yang
menunjukan bahwa harga tomat akan diperdiksi untuk 12 bulan kedepan.
> plot(forecasted, main="Peramalan Harga Tomat", xlab="Waktu", ylab="Harga Tomat")
Menampilkan plot yang menunjukan peramalan harga tomat untuk 12 bulan
kedepan. Function plot digunakan untuk membuat plot.
Argument yang diisikan dalam function adalah forecasted
yang merupakan objek yang akan disajikan plotnya,
main="Peramalan Harga Tomat" yang digunakan untuk mengatur
“Peramalan Harga Tomat” sebagai judul plot, xlab="waktu"
yang digunakan untuk menetapkan “waktu” sebagai label sumbu x, dan
ylab="harga tomat" yang digunakan untuk menetapkan “harga
tomat” sebagai label sumbu y.
Dari gambar plot pertama dapat disimpulkan bahwa:
Tren harga tomat secara keseluruhan meningkat dari Juni 2016 hingga Mei 2017.
Perubahan harga tidak merata dimana sepanjang periode, dimana kenaikan paling signifikan September 2016 dan april 2017 sedangkan penurunan paling signifikan terjadi pada desember 2016.
Adapun harga tertinggi yang dicapai adalah Rp.5.500 dan harga terendahnya adalah Rp.1.500.
Dari hasil perhitungan dapat dilihat bahwa :
Terdapat 12 amatan mulai dari Juni 2016 sampai Mei 2017.
Pada time lag 1 didapatkan bahwa:
Pada Juni 2016 : NA (merujuk pada Mei 2016, yang tidak ada)
Pada Juli 2016 : digunakan pengamatan Juni 2016.
Pada Agustus 2016 : digunakan pengamatan Juli 2016.
Pada September 2016 : digunakan pengamatan agustus 2016.
Pada Oktober 2016 : digunakan pengamatan September 2016.
Pada November 2016 : digunakan pengamatan Oktober 2016.
Pada Desember 2016 : digunakan pengamatan November 2016.
Pada Januari 2017 : digunakan pengamatan Desember 2016.
Pada Februari 2017 : digunakan pengamatan Januari 2017.
Pada Maret 2017: digunakan pengamatan Februari 2017.
Pada April 2017 : digunakan pengamatan Maret 2017.
Pada Mei 2017 : digunakan pengamatan April 2017.
Dari gambar plot kedua dapat disimpulkan bahwa:
Harga tomat meningkat secara konsisten selama 10 bulan terakhir.
Harga tomat mengalami fluktuasi musiman, dimana harga tomat cenderung lebih tinggi pada musim tertentu.
Dari plot ketiga dan keempat yang berisi grafik ACF didapatkan bahwa terdapat autokorelasi yang signifikan pada lag 1. Hal ini menunjukkan bahwa terdapat ketergantungan antara residu antara harga tomat bulan ini dan bulan bulan sebelumnya. Kemudian setelah dilakukuan pengecekan partial autokorelasi yang dapat dilihat pada plot kelima didapatkan bahwa terdapat autokorelasi parsial yang signifikan pada lag 1. Hal ini menunjukkan bahwa terdapat ketergantungan antara residu harga tomat bulan ini dan bulan bulan sebelumnya, setelah memperhitungkan autokorelasi pada lag sebelumnya.
Kemudian dilakukan juga pengecekan autokorelasi pada perbedaan harga tomat yang mana bisa dilihat pada plot keenam dimana didapatkan bahwa autokorelasi yang signifikan pada lag 1. Hal ini menunjukkan bahwa terdapat ketergantungan antara residu antara perubahan harga tomat bulan ini dan bulan bulan sebelumnya.
Dari perhitungan dan plot ketujuh dapat dilihat bahwa prediksi harga tomat di masa depan menunjukkan tren kenaikan. Pada bulan Juni 2017, harga tomat diprediksi mencapai rata-rata 3.333,333 rupiah, dengan harga terendah 1.600,688 rupiah dan harga tertinggi 5.065,979 rupiah. Prediksi harga tomat terus meningkat hingga mencapai puncaknya pada bulan Juni 2017 dengan rata-rata 5.983,186 rupiah, harga terendah 683,4803 rupiah, dan harga tertinggi 5.983,186 rupiah.
Kesimpulannya adalah harga tomat dari Juni 2016 hingga Mei 2017 menunjukkan tren kenaikan dengan fluktuasi musiman. Prediksi harga tomat menunjukkan tren kenaikan hingga mencapai puncaknya pada Juni 2017.
Mariana, I., & Lestari, D. A. (2017). Pentingnya Data Deret Waktu dalam Melakukan Perencanaan Produksi. Prosiding Seminar Nasional Multi Disiplin & Call For Papers Unisbank ke-3 (SENDI_U3), (pp.582-589). Majalengka.
Maulana, H. A. (2018). Pemodelan Deret Waktu dan Peramalan Curah Hujan pada Dua Belas Stasiun di Bogor. Jurnal Matematika, Statistika, dan Komputasi, vol.15, 50-63.
putri, G. A., Hendayanti, N. P., & Nurhidayati, M. (2017). Pemodelan Data Deret Waktu dengan Autogressive Integrated Moving Averge dan Logistic Smoothing Transition Autoregressive. Jurnal Varian, 54-63.