Single Moving Average: Tutorial dengan R
Hai hai sobat Exsight! Pada artikel sebelumnya kita sudah mempelajari tutorial Single Moving Average (SMA) dengan Excel. Pada artikel ini kita akan membahas tutorial Single Moving Average dengan bahasa pemrograman R. Single Moving Average ini adalah metode yang cukup sederhana dalam analisis data runtun waktu. Konsep dalam SMA sering jadi pilihan pertama karena konsepnya mudah dipahami. Seperti namanya, Single Moving Average menggunakan rata-rata dalam prosesnya. Lebih tepatnya menggunakan rata-rata periode terakhir data untuk mepredikasi periode berikutnya.
Sebelum kita terjun ke sintaks, penting untuk memahami kapan Single Moving Average bekerja dengan baik dan kapan tidak. Metode ini unggul ketika data relatif stabil, artinya tidak ada tren naik/turun yang jelas dan tidak ada pola musiman berulang. Single Moving Average tidak dapat menangkap arah perubahan jangka panjang atau pengulangan musiman. Hal ini dikarenakan SMA hanya menggunakan rata-rata untuk mengecilkan fluktuasi data.
Setelah mengulas secara singkat mengenai Single Moving Average, ada hal yang perlu kita ketahui terlebih dahulu, yaitu persamaan matematis dari Single Moving Average. Kita akan membahas secara singkat untuk hal ini. Kemudian, kita akan belajar penggunaan metode SMA untuk data menggunakan bahasa pemrograman R. Kita akan membahas tahapannya satu persatu secara mendetail. Yuk kita simak bersama !
Persamaan Single Moving Average
Secara matematis, peramalan Single Moving Average ditulis sebagai berikut:
F_{t+1} = \frac{1}{N}\left(X_t + X_{t-1} + \cdots + X_{t-N+1}\right) dengan
\begin{aligned}
F_{t+1} &= \text{nilai rata-rata bergerak tunggal pada periode } (t+1),\\[4pt]
X_{t} &= \text{data pada periode } t,\\[4pt]
N &= \text{jangka waktu moving\ average (banyak periode pengamatan)}.
\end{aligned}Tutorial Single Moving Average
Selanjutnya kita akan mempelajari bagaimana cara menggunakan metode Single Moving Average (SMA) dengan bahasa pemrograman R. Pada tutorial ini, kita akan bekerja menggunakan data time series yang sudah disediakan. Kamu bisa mengunduh dataset tersebut di sini.
Install packages
Hal pertama yang harus kita lakukan adalah meng-install packages. Pada metode Single Moving Average kita memerlukan packages TTR dan readxl.
install.packages("TTR")
install.packages("readxl")
Package TTR digunakan untuk technical analysis pada data time series. Pada tutorial ini akan kita gunakan untuk metode Single Moving Average, sedangkan Package readxl digunakan untuk membaca file Excel (.xls dan .xlsx). Kemudian tahap selanjutnya kita panggil library tersebut sehingga packages yang telah kita install dapat digunakan.
Panggil Library
Pada tahap ini kita akan memanggil library dengan menggunakan fungsi library(). Sintaks yang kita gunakan yaitu sebagai berikut
library(readxl)
library(TTR)
Setelah memanggil library. Tahap selanjutnya adalah meng-input data
Input Data
Pada tahap ini kita akan memasukan data, melihat data kita, dan melihat dimensi data. Sintaks yang diperlukan yaitu sebagai berikut:
# Membaca sheet pertama
data <- read_excel("D:/Data Latihan SMA.xlsx")
# Melihat data
data
# Melihat dimensi data
dim(data)
Peng-input-an data pada tahap ini menggunakan fungsi read_excel(). Kemudian untuk melihat dimensi data digunakan fungsi dim(). Jika sintaks di atas kita jalankan, maka didapatkan hasil sebagai berikut:


Terdapat 2 output, yaitu berupa data dan dimensi. Pada output dimensi data didapatkan 11 dan 2. Hal ini menunjukan bahwa terdapat 11 baris dan 2 kolom pada data. Setelah meng-input, data tahap selanjutnya adalah melihat pola data terlebih dahulu. Jika pola data stabil, maka metode Single Moving Average bisa untuk digunakan.
Plot Data
Pada tahap ini kita akan mem-plot-kan data dengan menggunakan fungsi plot.ts(). Namun, sebelum itu kita akan mengubah tipe data menjadi data time series dengan menggunakan fungsi ts(). Sintaks yang kita perlukan sebagai berikut
data.ts<- ts(data$biaya_promosi, start = 1, end = 11)
plot.ts(data.ts, col = "blue", ylab = "Biaya Promosi", xlab = "Bulan")
title(main = "Plot Biaya Promosi per Bulan",
cex.sub = 0.8)
points(data.ts, pch = 20, col = "red")
Setelah kita jalankan sintaks di atas, maka kita akan mendapatkan plot seperti berikut

Dapat dilihat bahwa kita sudah mendapatkan plot data dengan Bulan sebagai sumbu x dan Biaya Promosi sebagai sumbu y. Kemudian dari plot ini lah kita melihat kestabilan data. Dapat dilihat dari plot tersebut bahwa data dalam keadaan stabil. Dengan demikian, kita dapat menerapkan metode SIngle Moving Average ke data. Langkah selanjutnya yang harus kita lakukan adalah menerapkan metode Single Moving Average ke data.
Single Moving Average
Pada tahap ini kita akan menerapkan metode Single Moving Average ke data. Pada tahap awal, kita harus menentukan jumlah orde terlebih dahulu. Orde pada Single Moving Average adalah jumlah periode data terakhir yang digunakan untuk menghitung nilai rata-ratanya. Pada Single Moving Average, biasanya kita mulai dari orde 3. Hal ini dikarenakan orde 3 merupakan ukuran yang paling sederhana namun cukup mampu menghaluskan fluktuasi. Dengan kata lain, kita akan menggunakan 3 data terakhir untuk setiap nilai Single Moving Average. Kita akan menggunakan fungsi SMA().
Single Moving Average Orde 3
Prediksi dengan Single Moving Average Orde 3
# SMA orde 3
pemulusan.sma3 <- SMA(data.ts, n = 3)
pemulusan.sma3
Dapat dilihat bahwa pada fungsi SMA kita perlu memasukan data dan nilai orde yang diinginkan. Pada kasus ini yaitu n=3. Dengan sintaks di atas kita mendapatkan output sebagai berikut:

Karena untuk menghitung Single Moving Average orde 3 maka kita membutuhkan 3 data pertama dulu. Jadi pada posisi pertama dan kedua belum ada nilai Single Moving Average yang bisa kita peroleh. Oleh karena itu, nilai pada posisi pertama dan kedua bernilai NA. Pada fungsi SMA() di R (dari package TTR), hasil moving average untuk periode ke-t ditulis pada posisi t, padahal secara konsep peramalan, nilai SMA untuk orde n adalah prediksi untuk periode berikutnya (t+1). Karena itu, jika ingin SMA digunakan sebagai ramalan untuk periode selanjutnya, maka hasilnya perlu digeser maju satu langkah (t+1).
Gabungkan Data Asli dengan Data Ramalan Orde 3
Dengan menggunakan sintaks dibawah ini kita akan mengubah menjadi hasil prediksi untuk periode berikutnya. Berikut ini sintaks yang kita perlukan
# Tambahkan sebagai baris baru
data_gabungan_3 <- data.frame(
biaya_promosi = c(data$biaya_promosi,c(rep(NA, 1))),
SMA3 = c(c(rep(NA, 1),pemulusan.sma3))
)
data_gabungan_3

Dapat dilihat bahwa, hasil dari SMA() sudah menjadi nilai prediksi untuk data selanjutnya. Kemudian, kita akan menghitung akurasi modelnya dengan menggunakan matrik akurasi MSE.
Hitung Akurasi Single Moving Average Orde 3
Perhitungan akurasi ini dilakukan secara manual, tidak menggunakan fungsi bawaan R.
MSE_SMA3 <- mean((data_gabungan_3$biaya_promosi[4:11] - data_gabungan_3$SMA3[4:11])^2)
MSE_SMA3

Dapat dilihat bahwa nilai MSE sebesar 93.59653. Nilai ini akan kita bandingkan dengan orde yang lain untuk melihat orde mana yang terbaik. Sebelum kita melakukan hal tersebut, kita akan mem-plot data asli dengan data prediksinya terlebih dahulu. Hal ini untuk melihat apakah pola data prediksi mengikuti pola data aslinya atau tidak.
Plot Data Asli dengan Data Prediksi Orde 3
# Plot data asli
plot(data_gabungan_3$biaya_promosi, type = "l", col = "blue", lwd = 2,
xlab = "Bulan", ylab = "Biaya Promosi",
main = "Plot Data Asli vs MA(3)")
# Tambahkan garis MA3
lines(data_gabungan_3$SMA3, col = "red", lwd = 2, lty = 2)
# Tambahkan legenda
legend("topleft", legend = c("Data Asli", "SMA(3)"),
col = c("blue", "red"), lty = c(1, 2), lwd = 2)
Sintaks di atas digunakan untuk mem-plot-kan data asli dengan data prediksi. Setelah sintaks dijalankan maka didapatkan output sebagai berikut

Dapat dilihat bahwa hasil prediksi tidak terlalu mengikuti pola data asli dan orde 3 menghasilkan pemulusan yang tidak besar. Kemudian kita akan melakukan pemodelan dengan SMA orde 4. Dengan kata lain kita akan menggunakan 4 data terakhir untuk setiap nilai Single Moving Average .
Single Moving Average Orde 4
Prediksi dengan Single Moving Average Orde 4
# SMA orde 4
pemulusan.sma4 <- SMA(data.ts, n = 4)
pemulusan.sma4
Seperti sebelumnya kita akan memasukan data dan memasukan orde yang kita inginkan. Pada langkah ini kita akan memasukan n=4. Didapatkan hasil sebagai berikut:

Karena untuk menghitung Single Moving Average orde 4 kita membutuhkan 4 data pertama dulu, maka pada posisi pertama, kedua, dan ketiga belum ada nilai Single Moving Average yang bisa kita peroleh. Oleh karena itu, nilai pada posisi tersebut bernilai NA. Untuk tahap selanjutnya, sama seperti tahap sebelumnya kita akan mengubah hasil SMA sebagai hasil prediksi untuk periode selanjutnya,
Gabungkan Data Asli dengan Data Ramalan Orde 4
# Tambahkan sebagai baris baru
data_gabungan_4 <- data.frame(
biaya_promosi = c(data$biaya_promosi,c(rep(NA, 1))),
SMA4 = c(c(rep(NA, 1),pemulusan.sma4))
)
data_gabungan_4
Dari sintaks di atas kita dapatkan data frame sebagai berikut:

Di mana didapatkan bahwa nilai pada posisi pertama hingga keempat bernilai NA. Dapat dilihat bahwa hasil dari SMA() sudah menjadi nilai prediksi untuk data selanjutnya. Kemudian, kita akan menghitung akurasi modelnya dengan menggunakan matrik akurasi MSE. Sintaks yang diperlukan sebagai berikut:
Hitung Akurasi Single Moving Average Orde 4
MSE_SMA4 <- mean((data_gabungan_4$biaya_promosi[5:11] - data_gabungan_4$SMA4[5:11])^2)
MSE_SMA4

Dapat dilihat bahwa nilai MSE untuk SMA orde 4 lebih kecil dibandingkan SMA orde 3. Jadi dapat dikatakan bahwa SMA dengan orde 4 lebih baik dari pada SMA orde 3. Tahap selanjutnya adalah kita akan membandingkan data asli vs data ramalan dengan cara membuat plot data asli dengan data prediksinya.
Plot Data Asli dengan Data Prediksi Orde 4
# Plot data asli
plot(data_gabungan_4$biaya_promosi, type = "l", col = "blue", lwd = 2,
xlab = "Bulan", ylab = "Biaya Promosi",
main = "Plot Data Asli vs MA(4)")
# Tambahkan garis MA4
lines(data_gabungan_4$SMA4, col = "red", lwd = 2, lty = 2)
# Tambahkan legenda
legend("topleft", legend = c("Data Asli", "SMA(4)"),
col = c("blue", "red"), lty = c(1, 2), lwd = 2)
Menggunakan sintaks di atas kita dapatkan plot sebagai berikut :

Dapat dilihat bahwa hasil prediksi menggunakan Single Moving Average (SMA) orde 4 tampak lebih mulus dibandingkan dengan hasil pada SMA orde 3. Hal ini terjadi karena semakin besar orde moving average yang digunakan, semakin banyak data historis yang dirata-ratakan. Ketika jumlah periode yang dirata-ratakan bertambah, fluktuasi jangka pendek pada data akan semakin “diredam” sehingga garis hasil pemulusannya tampak lebih halus.
Dengan kata lain, SMA orde 4 memberikan tingkat smoothing yang lebih tinggi karena setiap titik prediksi atau nilai pemulusan mempertimbangkan empat data terakhir. Sementara pada orde 3 hanya tiga data yang dilibatkan, sehingga hasilnya sedikit lebih responsif terhadap perubahan mendadak dalam data.
Namun, perlu diperhatikan juga bahwa peningkatan orde tidak selalu lebih baik. Jika orde terlalu besar, model bisa menjadi terlalu lambat merespons perubahan tren, sehingga pola data terbaru kurang tercermin dalam prediksi. Jadi, pemilihan orde harus mempertimbangkan tujuan analisis: apakah ingin garis lebih halus atau ingin respons yang lebih cepat terhadap perubahan data.
Dengan melihat hasil grafik, terlihat bahwa SMA orde 4 memberi visualisasi yang lebih stabil dan lebih mudah ditangkap secara pola umum, sehingga cocok digunakan untuk mempelajari tren jangka panjang.
Langkah-langkah di atas adalah jika kita mengacu pada konsep dasar dalam penentuan orde pada metode Single Moving Average (SMA). Dimana, proses pemilihan orde biasanya dilakukan melalui pendekatan trial and error (coba-coba). Artinya, analis mencoba beberapa nilai orde. Misalnya 3, 4, 5, dan seterusnya. Kemudian membandingkan hasil pemulusan atau akurasi prediksi untuk menentukan orde mana yang paling sesuai dengan pola data.
Namun, ketika menggunakan fungsi SMA() pada package TTR di R, sebenarnya tersedia fleksibilitas tambahan. Kita dapat mengosongkan parameter orde, sehingga fungsi tersebut secara otomatis akan menghitung dan menentukan orde yang dianggap paling optimal untuk data yang kita miliki. Dengan demikian, pemilihan orde tidak lagi dilakukan secara manual, melainkan langsung dihitung berdasarkan algoritma internal fungsi tersebut.
Pendekatan otomatis ini tentu memberikan beberapa keuntungan. Pertama, prosesnya lebih efisien, karena kita tidak perlu menguji banyak nilai orde satu per satu. Kedua, pemilihan orde yang dilakukan oleh sistem dapat menghasilkan model pemulusan yang lebih stabil dan lebih akurat, karena orde terpilih benar-benar mempertimbangkan karakteristik statistik dari data yang dianalisis. Ketiga, hasil prediksi yang dihasilkan oleh SMA dengan orde otomatis cenderung lebih optimal dalam hal kinerja, sehingga cocok digunakan terutama ketika kita bekerja dengan data yang kompleks atau jumlah observasi yang cukup besar.
Dengan kata lain, meskipun pendekatan manual melalui trial and error tetap valid dan sering digunakan dalam pembelajaran konsep, penggunaan fitur otomatis pada fungsi SMA() dapat menjadi alternatif yang lebih praktis dan efektif dalam aplikasi nyata, terutama ketika tujuan utama adalah memperoleh hasil ramalan yang akurat.
Referensi
Hayuningtyas, R. Y., & Sari, R. (2021). Aplikasi Peramalan Alat Kesehatan Menggunakan Single Moving Average. Jurnal Infortech, 3(1), 40-45
GeeksforGeeks. (2025). Moving Averages in R. Diakses dari https://www.geeksforgeeks.org/r-machine-learning/moving-averages-in-r/
Utami, H. (n.d.). Modul Praktikum Metode Peramalan. Yogyakarta: Universitas Gadjah Mada.
Sampai di sini dulu penjelasan terkait Single Moving Average: Tutorial dengan R. Apabila sobat Exsight masih ada yang dibingungkan terkait pembahasan pada artikel ini, bisa langsung saja ramaikan kolom komentar atau hubungi admin melalui tombol bantuan di kanan bawah. Stay tuned di website https://exsight.id/blog/ agar tidak ketinggalan artikel-artikel menarik lainnya. See you in the next article yaa!
Single Moving Average: Tutorial dengan R Read More »































