Profile

FEBRIANO FARREL NAUFAL

Information System Major

Tanjungpura University
🎓

Major

Information System

🆔

Student ID

H1101251078

👨‍🏫

Lecturer

Dr EVY SULISTIANINGSIH, S.Si, M.Sc

📊

Subject

Statistic and Probability

Pendahuluan

Dokumen interaktif ini disusun sebagai bentuk penyelesaian tugas Ujian Tengah Semester (UTS) Statistika dan Probabilitas. Laporan ini dirancang untuk mendemonstrasikan implementasi komputasi statistika berbasis R melalui dua studi kasus utama:

  • Pemodelan Prediktif (Nomor 1): Menggunakan Multiple Linear Regression dengan metode Kuadrat Terkecil untuk membaca pola pengaruh antar-variabel eksperimen.
  • Peramalan Bisnis (Nomor 2): Menerapkan algoritma Single Exponential Smoothing (SES) untuk memproyeksikan volume penjualan masa depan berdasarkan data historis.

Nomor 1: Analisis Regresi Linier Berganda

Pada studi kasus pertama ini, saya akan membedah hubungan antara dua variabel independen (\(X_1\) dan \(X_2\)) terhadap variabel dependen (\(Z\)) berdasarkan 15 runtunan percobaan yang telah dilakukan. Untuk memudahkan pembacaan alur pengerjaannya, saya telah membagi laporan ini ke dalam beberapa tab di bawah.

1a. Eksplorasi Data

Langkah paling awal yang saya lakukan tentu saja memindahkan data hasil percobaan ke dalam environment R agar bisa diolah. Data ini terdiri dari 15 baris observasi. Berikut adalah tampilan datanya:

data_regresi <- data.frame(
  Z = c(14.8, 12.1, 19.0, 14.5, 16.6, 17.2, 17.5, 14.1, 13.8, 14.7, 17.7, 17.0, 17.6, 16.3, 18.2),
  X1 = c(11.5, 14.3, 9.4, 15.2, 8.8, 9.8, 11.2, 10.9, 14.7, 15.1, 8.7, 8.6, 9.3, 10.8, 11.9),
  X2 = c(6.3, 7.4, 5.9, 8.7, 9.1, 5.6, 6.8, 7.4, 8.2, 9.2, 4.7, 5.5, 6.6, 8.7, 5.4)
)

datatable(data_regresi, rownames = FALSE, 
          caption = "Tabel 1. Rincian 15 Runtunan Percobaan",
          options = list(pageLength = 5, dom = 'tp'))

1b. Pemodelan & Estimasi Koefisien

Setelah data siap, sekarang saatnya membangun model regresi. Di sini, saya menggunakan metode kuadrat terkecil (Ordinary Least Squares / OLS) yang pada bahasa R bisa dieksekusi dengan sangat mudah menggunakan fungsi bawaan lm() (Linear Model).

Tujuan utama dari tahapan ini adalah untuk mencari tahu seberapa besar sebenarnya bobot (koefisien) dari masing-masing variabel \(X_1\) dan \(X_2\) dalam memengaruhi \(Z\). Mari kita lihat output ringkasan modelnya:

model_regresi <- lm(Z ~ X1 + X2, data = data_regresi)

ringkasan_koef <- summary(model_regresi)$coefficients
kable(ringkasan_koef, digits = 3, caption = "Tabel 2. Estimasi Koefisien Model Regresi")
Tabel 2. Estimasi Koefisien Model Regresi
Estimate Std. Error t value Pr(>|t|)
(Intercept) 23.675 2.032 11.649 0.000
X1 -0.488 0.187 -2.609 0.023
X2 -0.293 0.304 -0.965 0.353

Dari tabel perhitungan di atas, kita bisa menyusun persamaan regresi linier bergandanya menjadi: \[ \hat{Z} = 23.678 - 0.488X_1 - 0.294X_2 \]

1c. Interpretasi & Prediksi

Membaca Makna Persamaan Regresi

Persamaan regresi yang kita dapatkan tadi sebenarnya bercerita banyak hal tentang pola data kita. Bisa kita lihat bahwa nilai konstanta atau intercept (\(b_0\)) adalah 23.678. Angka ini merepresentasikan estimasi awal untuk nilai \(Z\) apabila kedua variabel independen (\(X_1\) dan \(X_2\)) bernilai nol.

Menariknya, kedua variabel independen kita ternyata memberikan dampak yang berlawanan arah (negatif) terhadap \(Z\):

  • Untuk variabel \(X_1\) (koefisien -0.488): Artinya, setiap kali nilai \(X_1\) naik sebesar 1 satuan, maka nilai \(Z\) diprediksi akan mengalami penurunan sebesar 0.488 satuan. Asumsinya, nilai \(X_2\) sedang tidak berubah (konstan).
  • Untuk variabel \(X_2\) (koefisien -0.294): Konsepnya serupa. Setiap ada kenaikan 1 satuan pada \(X_2\), nilai \(Z\) diprediksi akan turun sebesar 0.294 satuan, asalkan nilai \(X_1\)-nya konstan.


Implementasi Model: Estimasi Nilai Z Baru

Untuk membuktikan kegunaan model ini, mari kita jawab persoalan bagian c: Berapa estimasi nilai \(Z\) jika kita memiliki data baru di mana \(X_1 = 10.3\) dan \(X_2 = 5.8\)? Daripada menghitungnya secara manual, saya langsung menyuntikkan nilai baru tersebut ke dalam fungsi predict() di R untuk mendapatkan hasil yang lebih presisi:

data_baru <- data.frame(X1 = 10.3, X2 = 5.8)

estimasi_Z <- predict(model_regresi, newdata = data_baru)
estimasi_Z
##        1 
## 16.94602

Kesimpulan Akhir: Berdasarkan model regresi linier berganda yang telah dibangun, estimasi nilai Z untuk kombinasi \(X_1 = 10.3\) dan \(X_2 = 5.8\) adalah sebesar 16.946.





Nomor 2: Peramalan Penjualan (Time Series)

Beralih ke persoalan kedua, saya mendapatkan studi kasus dari seorang General Manager yang meminta analisis peramalan (forecasting) penjualan untuk 6 bulan pertama di tahun 2026. Data yang diberikan adalah data historis bulanan selama 5 tahun (2021 hingga 2025). Sesuai instruksi soal, permasalahan ini akan diselesaikan menggunakan metode Single Exponential Smoothing (SES).

Untuk memudahkan pembacaan, proses komputasi dan analisis saya bagi ke dalam tiga tahapan tab di bawah ini:

Persiapan Data Historis

Langkah krusial pertama dalam analisis deret waktu (time series) adalah menyusun ulang format data. Data laporan dari General Manager yang berbentuk matriks tahunan harus dibentangkan menjadi satu garis waktu yang berurutan dari Januari 2021 hingga Desember 2025 (total 60 bulan observasi).

Data tersebut kemudian saya ubah menjadi objek khusus time series (ts) di lingkungan R agar sistem memahami bahwa ini adalah data berkesinambungan dengan frekuensi bulanan.

# Menyusun 60 data penjualan secara kronologis (Jan 2021 - Des 2025)
penjualan <- c(
  499.35, 396.26, 523.87, 559.52, 578.45, 602.44, 514.99, 544.99, 590.25, 636.01, 694.34, 813.93,
  521.22, 781.89, 596.25, 618.15, 597.22, 808.23, 784.83, 765.42, 776.79, 732.26, 852.20, 770.19,
  666.12, 608.54, 636.95, 731.72, 768.36, 814.85, 850.22, 789.31, 729.38, 860.26, 946.79, 1054.60,
  808.48, 806.51, 844.53, 786.62, 1036.40, 927.45, 1029.59, 909.87, 1073.03, 1081.46, 1134.69, 924.78,
  843.21, 1037.61, 1043.92, 1126.90, 1062.83, 1130.69, 1011.44, 1184.32, 1117.89, 969.68, 1031.34, 1273.54
)

# Konversi vektor menjadi objek Time Series (frekuensi 12 untuk data bulanan)
ts_penjualan <- ts(penjualan, start = c(2021, 1), frequency = 12)

Untuk memahami pola dasar pergerakan penjualan sebelum dilakukan peramalan, berikut adalah visualisasi data historis selama 5 tahun terakhir. Terlihat bahwa penjualan mengalami fluktuasi namun memiliki kecenderungan tren yang meningkat secara keseluruhan.

plot_raw <- autoplot(ts_penjualan, color = "#2980b9", size = 1) +
  ggtitle("Pergerakan Volume Penjualan Aktual (Jan 2021 - Des 2025)") +
  xlab("Tahun") +
  ylab("Volume Penjualan") +
  theme_minimal() +
  theme(plot.title = element_text(face = "bold", hjust = 0.5))

ggplotly(plot_raw)

Proyeksi Penjualan (SES)

Untuk melakukan peramalan, saya menggunakan fungsi ses() dari package forecast. Algoritma ini akan secara otomatis melakukan komputasi iteratif untuk mencari nilai parameter pemulusan (Alpha / \(\alpha\)) yang paling optimal, yaitu nilai yang menghasilkan tingkat error peramalan terkecil pada data historis.

Berdasarkan komputasi R, didapatkan nilai Alpha optimal sebesar 0.3624. Saya menggunakan model ini untuk memproyeksikan penjualan 6 bulan ke depan (horizon = 6):

# Membangun model peramalan SES untuk 6 bulan ke depan (h = 6)
model_ses <- ses(ts_penjualan, h = 6)

tabel_forecast <- data.frame(
  Bulan = c("Januari 2026", "Februari 2026", "Maret 2026", "April 2026", "Mei 2026", "Juni 2026"),
  Estimasi_Penjualan = as.numeric(model_ses$mean)
)

kable(tabel_forecast, digits = 2, caption = "Tabel 3. Proyeksi Penjualan (Januari - Juni 2026)")
Tabel 3. Proyeksi Penjualan (Januari - Juni 2026)
Bulan Estimasi_Penjualan
Januari 2026 1129.98
Februari 2026 1129.98
Maret 2026 1129.98
April 2026 1129.98
Mei 2026 1129.98
Juni 2026 1129.98


Catatan Analisis Kritis: Angka proyeksi untuk bulan Januari hingga Juni 2026 pada tabel di atas menunjukkan nilai konstan yang sama persis. Hal ini bukanlah sebuah kesalahan komputasi, melainkan murni karakteristik matematis dari pemodelan Single Exponential Smoothing (Pemulusan Eksponensial Tunggal).

Metode SES didesain khusus untuk melakukan smoothing pada data stasioner, di mana metode ini tidak mengakomodasi unsur tren (kenaikan/penurunan jangka panjang) atau pola musiman secara eksplisit. Oleh karena itu, proyeksi jangka panjang dari model SES akan selalu berbentuk garis mendatar yang merepresentasikan level estimasi terbaik dari periode pemulusan terakhir.

Visualisasi Grafik

Untuk mempermudah pemangku kepentingan (General Manager) dalam melihat pola pertumbuhan penjualan historis dan membandingkannya dengan garis estimasi SES, saya memvisualisasikannya ke dalam grafik interaktif di bawah ini. Anda dapat mengarahkan kursor ke atas garis untuk melihat nilai eksaknya secara detail.

plot_ts <- autoplot(model_ses) +
  autolayer(model_ses$fitted, series="Data Historis Terhaluskan") +
  ggtitle("Tren Historis Penjualan (2021-2025) & Hasil Peramalan SES (2026)") +
  xlab("Pergerakan Waktu (Tahun)") +
  ylab("Volume Penjualan") +
  theme_minimal() +
  theme(
    legend.position = "bottom",
    plot.title = element_text(face = "bold", hjust = 0.5)
  )

ggplotly(plot_ts)