suhu_cilegon <- c(27.8, 27.9,28.3, 28.9, 29.1, 28.6, 28.0, 28.1, 28.4, 28.7, 28.2,27.9,28.0, 28.1, 28.6, 29.2, 29.4, 28.8, 28.2, 28.3, 28.6, 28.9, 28.4, 28.1)
df_suhu <- data.frame(
Bulan_Angka = rep(1:12, 2),
Tahun = rep(c(2023, 2024), each = 12),
Suhu = suhu_cilegon
) %>%
mutate(Tanggal = as.Date(paste(Tahun, Bulan_Angka, "01", sep = "-")))Data tersebut merupakan data suhu di Kota Cilegon pada tahun 2023 hingga tahun 2024
# Menampilkan tabel data yang rapi dengan efek zebra/hover
kable(head(df_suhu, 24), caption = "Suhu Kota Cilegon") %>%
kable_styling(bootstrap_options = c("striped", "hover", "condensed"),
full_width = FALSE,
position = "center")| Bulan_Angka | Tahun | Suhu | Tanggal |
|---|---|---|---|
| 1 | 2023 | 27.8 | 2023-01-01 |
| 2 | 2023 | 27.9 | 2023-02-01 |
| 3 | 2023 | 28.3 | 2023-03-01 |
| 4 | 2023 | 28.9 | 2023-04-01 |
| 5 | 2023 | 29.1 | 2023-05-01 |
| 6 | 2023 | 28.6 | 2023-06-01 |
| 7 | 2023 | 28.0 | 2023-07-01 |
| 8 | 2023 | 28.1 | 2023-08-01 |
| 9 | 2023 | 28.4 | 2023-09-01 |
| 10 | 2023 | 28.7 | 2023-10-01 |
| 11 | 2023 | 28.2 | 2023-11-01 |
| 12 | 2023 | 27.9 | 2023-12-01 |
| 1 | 2024 | 28.0 | 2024-01-01 |
| 2 | 2024 | 28.1 | 2024-02-01 |
| 3 | 2024 | 28.6 | 2024-03-01 |
| 4 | 2024 | 29.2 | 2024-04-01 |
| 5 | 2024 | 29.4 | 2024-05-01 |
| 6 | 2024 | 28.8 | 2024-06-01 |
| 7 | 2024 | 28.2 | 2024-07-01 |
| 8 | 2024 | 28.3 | 2024-08-01 |
| 9 | 2024 | 28.6 | 2024-09-01 |
| 10 | 2024 | 28.9 | 2024-10-01 |
| 11 | 2024 | 28.4 | 2024-11-01 |
| 12 | 2024 | 28.1 | 2024-12-01 |
Data yang tersebut dimulai dengan bulan Januari tahun 2023 hingga bulan Desember tahun 2024
ts_suhu <- ts(suhu_cilegon, start = c(2023,1), frequency = 12)
pl <- ggplot(df_suhu, aes(x = Tanggal, y = Suhu)) +
geom_line(color = "#E53935", linewidth = 1) +
geom_point(color = "#E53935", size = 2.5) +
# Tandai outlier (nilai ekstrem)
geom_point(data = df_suhu %>% filter(Suhu > 40),
aes(x = Tanggal, y = Suhu),
color = "black", size = 4, shape = 8) +
# Label nilai setiap titik
geom_text(aes(label = Suhu),
vjust = -1, size = 2.8, color = "#333333") +
# Garis rata-rata
geom_hline(yintercept = mean(suhu_cilegon[suhu_cilegon < 40]),
linetype = "dashed", color = "#FFC107", linewidth = 0.8) +
scale_x_date(date_breaks = "2 months", date_labels = "%b\n%Y") +
labs(
title = "Suhu Rata-Rata Bulanan di Cilegon",
subtitle = "Tahun 2023 - 2024 (C)",
x = "Bulan",
y = "Suhu (C)",
) +
theme_minimal(base_size = 13) +
theme(
plot.title = element_text(face = "bold", color = "#C62828"),
plot.subtitle = element_text(color = "#555555")
)
ggplotly(pl)Berdasarkan grafik tersebut terdapat pola fluktuasi di tahun 2023 dan 2024. Pada tahun 2023 fluktuasi terjadi di bulan Mei yang menyentuh angka 29,1 derajat celsius dan pada tahun 2024 juga terjadi fluktuasi di bulan Mei dengan suhu sebesar 29,4 derajat celsius. Selain itu, data suhu pada grafik terlihat stasioner terhadap rataan (mean)
suhu_tahun <- rep(2023:2024, each = 12)
tapply(suhu_cilegon, suhu_tahun, mean); tapply(suhu_cilegon, suhu_tahun, var)## 2023 2024
## 28.325 28.550
## 2023 2024
## 0.1784091 0.2045455
Dilihat dari rataan data pada suhu tersebut nilai rataan pada tahun 2023 sebesar 28,325, sedangkan pada tahun 2024 rataan nya sebesar 28,550. Rataan tersebut mengindikasikan adanya pergeseran pusat data dari tahun sebelumnya.
Nilai varians suhu pada tahun 2023 sebesar 0,178 dan 0,205 pada tahun 2024, hal tersebut memperlihatkan terjadinya pelebaran terhadap sebaran atau rentang tahun 2023 ke tahun 2024.
Plot ACF tersebut menunjukan adanya pola musiman dan juga terdapat beberapa batang yang melewati garis batas. Batang yang melewati batas adalah batang ke-1, 3, dan 12. Batang-batang tersebut menandakan adanya autokorelasi dan stasioner namun lemah karena didominasi musiman.
##
## Box-Pierce test
##
## data: suhu_cilegon
## X-squared = 27.653, df = 12, p-value = 0.006215
Output tersebut apabila mengikuti hipotesis berikut adalah
\(H_0:\ro = 0(Tidak ada Autokorelasi)\)
\(H_1:\ro\=!0(Ada Autokorelasi)\)
karena nilai X-squared = 27.653 \(>\) \(\alpha\) (\(0.05\)), maka keputusannya adalah tolak \(H_0\) dan artinya terdapat krelasi tidak terdapat keacakan dan nilai suhu dipengaruhi oleh data sebelumnya.
##
## Augmented Dickey-Fuller Test
##
## data: suhu_cilegon
## Dickey-Fuller = -2.6421, Lag order = 2, p-value = 0.3278
## alternative hypothesis: stationary
\(H_0\) (Hipotesis Nol): Data memiliki unit root / tidak stasioner dalam rata-rata.
\(H_1\) (Hipotesis Alternatif): Data stasioner dalam rata-rata (stationary).
Nilai \(p\)-value (\(0.3278\)): Karena \(p\)-value (\(0.3278\)) \(>\) \(\alpha\) (\(0.05\)), maka keputusannya adalah Gagal Tolak \(H_0\).
Nilai Dickey-Fuller (\(-2.6421\)): Nilai statistik hitung ini tidak cukup negatif untuk melewati nilai kritis pada tingkat signifikansi 5%.
library(dplyr)
# 1. Mengubah data ts/vector ke data frame
df_suhu <- data.frame(
bulan = seq(as.Date("2023-01-01"), by = "month", length.out = length(suhu_cilegon)),
suhu = as.numeric(suhu_cilegon)
)
# 2. Membuat Lag 1 sampai Lag 12 secara otomatis
df_suhu <- df_suhu %>%
mutate(
across(
.cols = suhu,
.fns = list(
lag1 = ~lag(.x, 1),
lag2 = ~lag(.x, 2),
lag3 = ~lag(.x, 3),
lag4 = ~lag(.x, 4),
lag5 = ~lag(.x, 5),
lag6 = ~lag(.x, 6),
lag7 = ~lag(.x, 7),
lag8 = ~lag(.x, 8),
lag9 = ~lag(.x, 9),
lag10 = ~lag(.x, 10),
lag11 = ~lag(.x, 11),
lag12 = ~lag(.x, 12)
),
.names = "{.fn}"
)
)
# Tampilkan hasil
head(df_suhu, 15)## bulan suhu lag1 lag2 lag3 lag4 lag5 lag6 lag7 lag8 lag9 lag10 lag11
## 1 2023-01-01 27.8 NA NA NA NA NA NA NA NA NA NA NA
## 2 2023-02-01 27.9 27.8 NA NA NA NA NA NA NA NA NA NA
## 3 2023-03-01 28.3 27.9 27.8 NA NA NA NA NA NA NA NA NA
## 4 2023-04-01 28.9 28.3 27.9 27.8 NA NA NA NA NA NA NA NA
## 5 2023-05-01 29.1 28.9 28.3 27.9 27.8 NA NA NA NA NA NA NA
## 6 2023-06-01 28.6 29.1 28.9 28.3 27.9 27.8 NA NA NA NA NA NA
## 7 2023-07-01 28.0 28.6 29.1 28.9 28.3 27.9 27.8 NA NA NA NA NA
## 8 2023-08-01 28.1 28.0 28.6 29.1 28.9 28.3 27.9 27.8 NA NA NA NA
## 9 2023-09-01 28.4 28.1 28.0 28.6 29.1 28.9 28.3 27.9 27.8 NA NA NA
## 10 2023-10-01 28.7 28.4 28.1 28.0 28.6 29.1 28.9 28.3 27.9 27.8 NA NA
## 11 2023-11-01 28.2 28.7 28.4 28.1 28.0 28.6 29.1 28.9 28.3 27.9 27.8 NA
## 12 2023-12-01 27.9 28.2 28.7 28.4 28.1 28.0 28.6 29.1 28.9 28.3 27.9 27.8
## 13 2024-01-01 28.0 27.9 28.2 28.7 28.4 28.1 28.0 28.6 29.1 28.9 28.3 27.9
## 14 2024-02-01 28.1 28.0 27.9 28.2 28.7 28.4 28.1 28.0 28.6 29.1 28.9 28.3
## 15 2024-03-01 28.6 28.1 28.0 27.9 28.2 28.7 28.4 28.1 28.0 28.6 29.1 28.9
## lag12
## 1 NA
## 2 NA
## 3 NA
## 4 NA
## 5 NA
## 6 NA
## 7 NA
## 8 NA
## 9 NA
## 10 NA
## 11 NA
## 12 NA
## 13 27.8
## 14 27.9
## 15 28.3
Melakukan deferensiasi untuk menargetkan agar data stasioner terhadap rataan.
nilai NA (Not Available) itu adalah lag yang mana data tersebut membutuhkan data sebelumnya