library(tidyverse)
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr 1.1.4 ✔ readr 2.1.5
## ✔ forcats 1.0.0 ✔ stringr 1.5.1
## ✔ ggplot2 3.5.1 ✔ tibble 3.2.1
## ✔ lubridate 1.9.3 ✔ tidyr 1.3.1
## ✔ purrr 1.0.2
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag() masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
library(readxl)
# Memuat dataset
data <- readxl::read_excel("datamit.xlsx")
data
## # A tibble: 60 × 3
## Tahun Bulan `Curah Hujan`
## <dbl> <dbl> <dbl>
## 1 2019 1 263
## 2 2019 2 236
## 3 2019 3 445
## 4 2019 4 364
## 5 2019 5 60
## 6 2019 6 61
## 7 2019 7 2
## 8 2019 8 238
## 9 2019 9 238
## 10 2019 10 238
## # ℹ 50 more rows
# Menghapus baris dengan nilai nol pada kolom Curah Hujan
data <- data %>% filter(`Curah Hujan` != 0)
# Mengidentifikasi outliers
boxplot(data$`Curah Hujan`, main = "Boxplot Curah Hujan", ylab = "Curah Hujan (mm)")
# Mengidentifikasi outliers
outliers <- boxplot.stats(data$`Curah Hujan`)$out
# Menghapus outliers dari data
data <- data[!data$`Curah Hujan` %in% outliers, ]
boxplot yang digunakan untuk mengidentifikasi outlier dalam data curah hujan. Sumbu vertikal pada plot ini menunjukkan nilai curah hujan dalam milimeter (mm). Kotak dalam boxplot tersebut mewakili rentang interkuartil (interquartile range, IQR) yang terdiri dari kuartil pertama (Q1) hingga kuartil ketiga (Q3), di mana bagian bawah kotak adalah Q1 (25% dari data) dan bagian atas kotak adalah Q3 (75% dari data). Garis yang berada di dalam kotak menunjukkan median (Q2), yaitu nilai tengah dari data.
Garis vertikal atau whisker yang memanjang dari kotak menunjukkan rentang data yang bukan outlier, dengan batas bawah whisker sebagai nilai minimum yang tidak dianggap outlier dan batas atas whisker sebagai nilai maksimum yang tidak dianggap outlier. Titik-titik yang berada di atas whisker menunjukkan nilai yang dianggap sebagai outlier, yaitu nilai yang lebih tinggi dari Q3 + 1.5IQR atau lebih rendah dari Q1 - 1.5IQR.
Dari boxplot ini, kita dapat melihat beberapa outlier di bagian atas yang menunjukkan adanya periode dengan curah hujan yang sangat tinggi dibandingkan dengan sebagian besar data lainnya. Rentang utama curah hujan berada antara sekitar 0 mm hingga 600 mm, dengan beberapa nilai ekstrem di atas 800 mm. Boxplot ini memberikan gambaran yang jelas tentang distribusi data curah hujan serta mengidentifikasi nilai-nilai yang tidak biasa atau ekstrem
# Transformasi logaritmik
data$`Curah Hujan` <- log(data$`Curah Hujan`)
# Mengonversi dataset menjadi objek time series
Data <- ts(data$`Curah Hujan`, start = c(data$Tahun[1], data$Bulan[1]),frequency = 12)
Data
## Jan Feb Mar Apr May Jun Jul
## 2019 5.5721540 5.4638318 6.0980743 5.8971539 4.0943446 4.1108739 0.6931472
## 2020 6.2672005 6.2897156 5.5759491 4.6051702 5.2257467 4.2904594 2.1972246
## 2021 6.5250297 6.0684256 4.1896547 4.3438054 3.7376696 4.1588831 4.7449321
## 2022 4.1588831 5.7493930 4.6728288 1.9459101 3.7376696 3.8501476 5.9661467
## 2023 4.2484952 3.6888795 4.2046926 5.4806389 2.0794415 4.6539604 5.0814044
## Aug Sep Oct Nov Dec
## 2019 5.4722707 5.4722707 5.4722707 4.3567088 5.6383547
## 2020 2.7725887 3.1354942 3.9889840 5.5174529 6.0730445
## 2021 4.7004804 5.8021184 6.4861608 6.4922398 5.4722707
## 2022 5.8377304 6.6187390 6.5352413 5.0937502 5.4595855
## 2023
Data yang sudah di import dilakukan modifikasi susunan data agar menjadi time series seperti data di atas. Data dibagi 5 periode dengan setiap periode 12 bulan
library(TSstudio)
# Plot data time series
ts_plot(Data,
title = "Data Curah Hujan",
Xtitle = "Bulan",
Ytitle = "Curah Hujan (mm)")
# Ringkasan data time series
summary(Data)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 0.6931 4.1589 5.0938 4.8376 5.7758 6.6187
# Dekomposisi data time series
vis.data <- decompose(Data)
plot(vis.data)
grafik garis yang menunjukkan data curah hujan dari tahun 2019 hingga 2023. Sumbu vertikal pada grafik menunjukkan curah hujan dalam milimeter (mm), sedangkan sumbu horizontal menunjukkan rentang waktu dari tahun 2019 hingga 2023. Grafik ini memperlihatkan fluktuasi yang signifikan dalam curah hujan dari tahun ke tahun, dengan beberapa periode menunjukkan curah hujan yang sangat tinggi dan periode lainnya dengan curah hujan yang lebih rendah. Terdapat beberapa puncak curah hujan tinggi sekitar tahun 2020 dan 2021, serta beberapa lembah curah hujan rendah di akhir tahun 2019 dan pertengahan 2021. Setiap tahun memiliki pola curah hujan yang berbeda, dengan beberapa tahun menunjukkan variasi yang lebih tajam dibandingkan tahun lainnya. Meskipun terdapat fluktuasi, tidak ada tren umum yang jelas terlihat apakah curah hujan secara keseluruhan meningkat atau menurun selama periode ini. Grafik ini membantu dalam memahami pola curah hujan selama beberapa tahun terakhir dan dapat digunakan untuk analisis lebih lanjut, seperti melihat dampak perubahan iklim atau perencanaan pengelolaan air berdasarkan data historis curah hujan
ringkasan statistik deskriptif dari data curah hujan. Statistik ini mencakup beberapa metrik penting yang memberikan gambaran umum tentang distribusi data. Nilai minimum curah hujan yang tercatat adalah 0.6931 mm, sementara nilai maksimum adalah 6.6187 mm. Kuartil pertama (1st Qu.) atau persentil ke-25 adalah 4.1589 mm, yang berarti 25% dari data berada di bawah nilai ini. Median, atau nilai tengah dari data, adalah 5.0938 mm, yang menunjukkan bahwa setengah dari data berada di bawah dan setengahnya lagi berada di atas nilai ini. Rata-rata (mean) curah hujan adalah 4.8376 mm, yang merupakan nilai rata-rata dari seluruh data. Kuartil ketiga (3rd Qu.) atau persentil ke-75 adalah 5.7758 mm, menunjukkan bahwa 75% dari data berada di bawah nilai ini. Data ini memberikan gambaran yang jelas tentang distribusi dan rentang curah hujan, serta membantu dalam memahami variasi dan kecenderungan dalam data curah hujan
dekomposisi dari seri waktu aditif yang terdiri dari empat komponen: observed, trend, seasonal, dan random. Panel observed menampilkan data asli curah hujan dari tahun 2019 hingga 2023, memperlihatkan fluktuasi curah hujan sepanjang periode tersebut. Panel trend menunjukkan komponen tren, menggambarkan pola jangka panjang dalam data dengan adanya peningkatan dan penurunan yang lambat dari tahun ke tahun. Panel seasonal menggambarkan komponen musiman, menangkap pola berulang yang terjadi pada interval yang konsisten setiap tahun. Panel random menunjukkan komponen acak atau residual yang mencakup variasi acak dan kebisingan dalam data yang tidak memiliki pola yang jelas. Dekomposisi ini membantu dalam memahami berbagai komponen yang berkontribusi terhadap variasi dalam data curah hujan, memisahkan efek tren jangka panjang, pola musiman, dan variasi acak
library(forecast)
## Registered S3 method overwritten by 'quantmod':
## method from
## as.zoo.data.frame zoo
# Menerapkan metode Holt-Winters untuk peramalan
model <- HoltWinters(Data)
model
## Holt-Winters exponential smoothing with trend and additive seasonal component.
##
## Call:
## HoltWinters(x = Data)
##
## Smoothing parameters:
## alpha: 0.0400089
## beta : 0.01858577
## gamma: 0.7913545
##
## Coefficients:
## [,1]
## a 4.14831124
## b -0.02512585
## s1 1.13745547
## s2 1.91461565
## s3 1.97923894
## s4 0.92368141
## s5 1.09606023
## s6 -0.01399181
## s7 -0.12277034
## s8 0.06662880
## s9 0.56183124
## s10 -1.76968147
## s11 0.29099056
## s12 0.99243526
# Peramalan untuk 12 bulan ke depan
prediksi <- forecast(object = model, h = 12)
prediksi
## Point Forecast Lo 80 Hi 80 Lo 95 Hi 95
## Aug 2023 5.260641 3.4266249 7.094657 2.455755 8.065526
## Sep 2023 6.012675 4.1771369 7.848213 3.205462 8.819889
## Oct 2023 6.052173 4.2150573 7.889288 3.242547 8.861798
## Nov 2023 4.971489 3.1327413 6.810237 2.159367 7.783612
## Dec 2023 5.118742 3.2783052 6.959179 2.304037 7.933448
## Jan 2024 3.983564 2.1413809 5.825748 1.166188 6.800941
## Feb 2024 3.849660 2.0056720 5.693648 1.029524 6.669796
## Mar 2024 4.013933 2.1680817 5.859785 1.190947 6.836920
## Apr 2024 4.484010 2.6362349 6.331785 1.658082 7.309938
## May 2024 2.127371 0.2776123 3.977130 -0.701591 4.956334
## Jun 2024 4.162917 2.3111129 6.014722 1.330827 6.995008
## Jul 2024 4.839236 2.9853240 6.693149 2.003922 7.674550
hasil dari pemulusan eksponensial Holt-Winters dengan tren dan komponen musiman aditif untuk data curah hujan. Parameter pemulusan yang digunakan adalah alpha sebesar 0.0400089, beta sebesar 0.01858577, dan gamma sebesar 0.7913545. Koefisien yang dihasilkan meliputi nilai awal a sebesar 4.14831124 dan nilai b sebesar -0.02512585, serta koefisien musiman untuk masing-masing periode: s1 sebesar 1.13745547, s2 sebesar 1.91461565, s3 sebesar 1.97923894, s4 sebesar 0.92368141, s5 sebesar 1.09606023, s6 sebesar -0.01399181, s7 sebesar -0.12277034, s8 sebesar 0.06662880, s9 sebesar 0.56183124, s10 sebesar -1.76968147, s11 sebesar 0.20999056, dan s12 sebesar 0.99245326. Hasil ini menunjukkan bagaimana metode Holt-Winters digunakan untuk menghaluskan data curah hujan dengan mempertimbangkan tren jangka panjang dan pola musiman yang berulang
perkiraan curah hujan bulanan beserta interval kepercayaan untuk tahun 2024. Berikut adalah data yang telah dikoreksi dengan bulan dimulai dari Januari 2024:
Januari 2024: Point Forecast sebesar 5.206041 mm dengan interval kepercayaan 80% antara 3.4266249 mm hingga 7.094657 mm, dan interval kepercayaan 95% antara 2.455755 mm hingga 8.065526 mm.
Februari 2024: Point Forecast sebesar 6.012675 mm dengan interval kepercayaan 80% antara 4.1771369 mm hingga 7.848213 mm, dan interval kepercayaan 95% antara 3.205462 mm hingga 8.819889 mm.
Maret 2024: Point Forecast sebesar 6.052173 mm dengan interval kepercayaan 80% antara 4.2150573 mm hingga 7.889288 mm, dan interval kepercayaan 95% antara 3.242547 mm hingga 8.861798 mm.
April 2024: Point Forecast sebesar 4.971489 mm dengan interval kepercayaan 80% antara 3.1327413 mm hingga 6.810237 mm, dan interval kepercayaan 95% antara 2.159367 mm hingga 7.783612 mm.
Mei 2024: Point Forecast sebesar 5.118742 mm dengan interval kepercayaan 80% antara 3.2783052 mm hingga 6.959179 mm, dan interval kepercayaan 95% antara 2.304037 mm hingga 7.933448 mm.
Juni 2024: Point Forecast sebesar 3.983564 mm dengan interval kepercayaan 80% antara 2.1413809 mm hingga 5.825748 mm, dan interval kepercayaan 95% antara 1.166188 mm hingga 6.800941 mm.
Juli 2024: Point Forecast sebesar 3.849660 mm dengan interval kepercayaan 80% antara 2.0056720 mm hingga 5.693648 mm, dan interval kepercayaan 95% antara 1.029524 mm hingga 6.669796 mm.
Agustus 2024: Point Forecast sebesar 4.019333 mm dengan interval kepercayaan 80% antara 2.1680817 mm hingga 5.859785 mm, dan interval kepercayaan 95% antara 1.190947 mm hingga 6.836920 mm.
September 2024: Point Forecast sebesar 4.480410 mm dengan interval kepercayaan 80% antara 2.6362439 mm hingga 6.331785 mm, dan interval kepercayaan 95% antara 1.658082 mm hingga 7.309938 mm.
Oktober 2024: Point Forecast sebesar 2.127371 mm dengan interval kepercayaan 80% antara 0.2776123 mm hingga 3.977130 mm, dan interval kepercayaan 95% antara -0.701591 mm hingga 4.956334 mm.
November 2024: Point Forecast sebesar 4.162917 mm dengan interval kepercayaan 80% antara 2.311129 mm hingga 6.014722 mm, dan interval kepercayaan 95% antara 1.330827 mm hingga 6.995008 mm.
Desember 2024: Point Forecast sebesar 4.839236 mm dengan interval kepercayaan 80% antara 2.9853240 mm hingga 6.693149 mm, dan interval kepercayaan 95% antara 2.003922 mm hingga 7.674550 mm.
Perkiraan ini memberikan gambaran tentang curah hujan yang diharapkan untuk setiap bulan di tahun 2024, termasuk rentang kemungkinan berdasarkan interval kepercayaan 80% dan 95%.
# Memisahkan data menjadi set pelatihan dan pengujian
train <- head(Data, length(Data) - 12)
test <- tail(Data, 12)
# Plot data peramalan dengan data aktual
library(ggplot2)
autoplot(prediksi) + autolayer(test)
# Menghitung akurasi model
accuracy(model$fitted[,1], Data)
## ME RMSE MAE MPE MAPE ACF1 Theil's U
## Test set 0.2160142 1.430753 1.08268 -1.105561 26.58261 0.2314613 1.083669
hasil perkiraan curah hujan menggunakan metode Holt-Winters. Grafik ini menampilkan data historis curah hujan dari tahun 2019 hingga 2023, dengan garis hitam menunjukkan data aktual. Bagian merah dari grafik mewakili data uji, sedangkan bagian biru menunjukkan perkiraan curah hujan untuk tahun 2024. Area berwarna biru muda di sekitar garis perkiraan menunjukkan interval kepercayaan, yang mencerminkan ketidakpastian dalam perkiraan. Semakin lebar area biru muda, semakin tinggi ketidakpastiannya. Grafik ini memberikan visualisasi yang jelas tentang bagaimana metode Holt-Winters digunakan untuk memprediksi curah hujan masa depan berdasarkan tren dan pola musiman dari data historis.
metrik evaluasi untuk model prediksi curah hujan menggunakan metode Holt-Winters pada set data uji. Metrik yang disajikan meliputi Mean Error (ME) sebesar 0.2160142, Root Mean Square Error (RMSE) sebesar 1.430753, Mean Absolute Error (MAE) sebesar 1.08268, Mean Percentage Error (MPE) sebesar -1.105561, dan Mean Absolute Percentage Error (MAPE) sebesar 26.58261. Selain itu, metrik ACF1 menunjukkan autokorelasi lag pertama sebesar 0.2314613, dan nilai Theil’s U sebesar 1.083669. Nilai-nilai ini memberikan gambaran tentang akurasi dan performa model prediksi, di mana RMSE dan MAE menunjukkan rata-rata kesalahan dalam satuan asli data, sedangkan MAPE menunjukkan rata-rata kesalahan dalam persentase. Theil’s U yang mendekati 1 menunjukkan bahwa model memiliki performa yang cukup baik dalam memprediksi curah hujan dibandingkan dengan model prediksi naive.