PENDAHULUAN

Metode peramalan yang digunakan pada analisis ini adalah Double Exponential Smoothing Brown, yang digunakan untuk memprediksi nilai pada periode selanjutnya berdasarkan data historis yang tersedia. Metode ini cocok digunakan pada data runtun waktu yang memiliki kecenderungan tren namun tidak memiliki pola musiman yang kuat.

Data yang digunakan dalam analisis ini berupa data tren kasus penemuan suspek campak di Provinsi Jawa Tengah selama periode tahun 2023–2025 yang dicatat setiap bulan. Data tersebut digunakan untuk melihat pola perkembangan kasus serta melakukan peramalan jumlah kasus pada periode berikutnya.

Sumber data diperoleh dari publikasi resmi **Dinas Kesehatan Provinsi Jawa Tengah yaitu Buku Saku Kesehatan Provinsi Jawa Tengah Tahun 2025 yang tersedia dan dapat diakses melalui website resmi instansi tersebut. Data ini diolah menggunakan analisis runtun waktu untuk menghasilkan prediksi kasus pada periode mendatang sehingga dapat memberikan gambaran awal bagi perencanaan dan pengambilan keputusan di bidang kesehatan masyarakat.

INPUT DATA

data <- c(
536,428,478,262,243,281,256,347,285,322,253,105,
383,402,432,330,545,441,566,423,466,460,389,282,
600,690,548,482,611,581,629,577,548,597,571,498
)
ts_data <- ts(data, start=c(2023,1), frequency=12)
ts_data
##      Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
## 2023 536 428 478 262 243 281 256 347 285 322 253 105
## 2024 383 402 432 330 545 441 566 423 466 460 389 282
## 2025 600 690 548 482 611 581 629 577 548 597 571 498
summary(ts_data)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   105.0   328.0   450.5   440.2   552.5   690.0

PLOT DATA TIME SERIES

bulan_tahun <- seq(as.Date("2023-01-01"), by="month", length.out=length(data))

plot(bulan_tahun, ts_data,
     type="o",
     xaxt="n",
     main="Plot Data Bulanan 2023-2025",
     xlab="Bulan dan Tahun",
     ylab="Nilai Data")

axis(1,
     at=bulan_tahun,
     labels=format(bulan_tahun,"%b %Y"),
     las=2,
     cex.axis=0.7)

MODEL DOUBLE EXPONENTIAL SMOOTHING BROWN

alpha <- 0.5

n <- length(data)

S1 <- S2 <- rep(0,n)

S1[1] <- data[1]
S2[1] <- data[1]

for(i in 2:n){
  S1[i] <- alpha*data[i] + (1-alpha)*S1[i-1]
  S2[i] <- alpha*S1[i] + (1-alpha)*S2[i-1]
}

at <- 2*S1 - S2
bt <- (alpha/(1-alpha))*(S1 - S2)

# Forecast Brown (F2 = a1 + b1)
Ft <- rep(NA,n)
for(i in 2:n){
  Ft[i] <- at[i-1] + bt[i-1]
}

hasil_model <- data.frame(
Periode = 1:n,
Data = data,
S1 = S1,
S2 = S2,
at = at,
bt = bt,
Ft = Ft
)

hasil_model
##    Periode Data       S1       S2       at          bt       Ft
## 1        1  536 536.0000 536.0000 536.0000   0.0000000       NA
## 2        2  428 482.0000 509.0000 455.0000 -27.0000000 536.0000
## 3        3  478 480.0000 494.5000 465.5000 -14.5000000 428.0000
## 4        4  262 371.0000 432.7500 309.2500 -61.7500000 451.0000
## 5        5  243 307.0000 369.8750 244.1250 -62.8750000 247.5000
## 6        6  281 294.0000 331.9375 256.0625 -37.9375000 181.2500
## 7        7  256 275.0000 303.4688 246.5312 -28.4687500 218.1250
## 8        8  347 311.0000 307.2344 314.7656   3.7656250 218.0625
## 9        9  285 298.0000 302.6172 293.3828  -4.6171875 318.5312
## 10      10  322 310.0000 306.3086 313.6914   3.6914062 288.7656
## 11      11  253 281.5000 293.9043 269.0957 -12.4042969 317.3828
## 12      12  105 193.2500 243.5771 142.9229 -50.3271484 256.6914
## 13      13  383 288.1250 265.8511 310.3989  22.2739258  92.5957
## 14      14  402 345.0625 305.4568 384.6682  39.6057129 332.6729
## 15      15  432 388.5312 346.9940 430.0685  41.5372314 424.2739
## 16      16  330 359.2656 353.1298 365.4014   6.1358032 471.6057
## 17      17  545 452.1328 402.6313 501.6343  49.5014954 371.5372
## 18      18  441 446.5664 424.5989 468.5340  21.9675446 551.1358
## 19      19  566 506.2832 465.4410 547.1254  40.8421707 490.5015
## 20      20  423 464.6416 465.0413 464.2419  -0.3997154 587.9675
## 21      21  466 465.3208 465.1811 465.4605   0.1397419 463.8422
## 22      22  460 462.6604 463.9207 461.4001  -1.2603292 465.6003
## 23      23  389 425.8302 444.8755 406.7849 -19.0452647 460.1397
## 24      24  282 353.9151 399.3953 308.4349 -45.4801824 387.7397
## 25      25  600 476.9576 438.1764 515.7387  38.7811338 262.9547
## 26      26  690 583.4788 510.8276 656.1300  72.6511794 554.5198
## 27      27  548 565.7394 538.2835 593.1953  27.4558959 728.7811
## 28      28  482 523.8697 531.0766 516.6628  -7.2068989 620.6512
## 29      29  611 567.4348 549.2557 585.6140  18.1791271 509.4559
## 30      30  581 574.2174 561.7366 586.6983  12.4808518 603.7931
## 31      31  629 601.6087 581.6726 621.5448  19.9360701 599.1791
## 32      32  577 589.3044 585.4885 593.1202   3.8158571 641.4809
## 33      33  548 568.6522 577.0703 560.2340  -8.4181604 596.9361
## 34      34  597 582.8261 579.9482 585.7040   2.8778753 551.8159
## 35      35  571 576.9130 578.4306 575.3955  -1.5175846 588.5818
## 36      36  498 537.4565 557.9436 516.9695 -20.4870534 573.8779

HASIL PERAMALAN

m <- 6

forecast_brown <- at[n] + bt[n]*(1:m)

forecast_brown
## [1] 496.4824 475.9954 455.5083 435.0213 414.5342 394.0471

TABEL HASIL RAMALAN

bulan <- c("Jan","Feb","Mar","Apr","May","Jun")

data_forecast <- data.frame(
Bulan = bulan,
Forecast_2026 = forecast_brown
)

data_forecast
##   Bulan Forecast_2026
## 1   Jan      496.4824
## 2   Feb      475.9954
## 3   Mar      455.5083
## 4   Apr      435.0213
## 5   May      414.5342
## 6   Jun      394.0471

GRAFIK HASIL FORECAST

tahun_forecast <- time(ts_data)[length(ts_data)] + (1:6)/12

plot(ts_data,
     xlim=c(2023,2027),
     ylim=c(min(data),max(c(data,forecast_brown))),
     main="Forecast 2026 Metode Double Exponential Smoothing Brown",
     ylab="Nilai",
     xlab="Tahun",
     type="o")

lines(tahun_forecast, forecast_brown, col="red", type="o")

EVALUASI AKURASI MODEL

# error mulai dari periode ke-2 karena F1 tidak ada
error <- data[2:n] - Ft[2:n]

MAE  <- mean(abs(error))
MSE  <- mean(error^2)
RMSE <- sqrt(MSE)
MAPE <- mean(abs(error/data[2:n]))*100

akurasi <- data.frame(
MAE = MAE,
MSE = MSE,
RMSE = RMSE,
MAPE = MAPE
)

akurasi
##        MAE      MSE     RMSE     MAPE
## 1 94.76698 14805.83 121.6792 25.78134