Fuzzy Time Series Markov Chain adalah kombinasi dari dua metode: deret waktu fuzzy (Fuzzy Time Series, FTS) dan rantai Markov (Markov Chain). Tujuannya adalah untuk memperoleh probabilitas terbesar dengan menggunakan matriks probabilitas transisi Markov.
Acknowledgement: Dimas Adriansyah (who provide the original code, the code has been modified for the purposes of this research)
Input Data
datauji <- read.csv("suhu_rata_rata_kalsel_2003_2013.csv", header=T, sep =",")
data = datauji$Rata.Rata
n=length(data)
n
[1] 132
Plot data aktual
plot(data,xlab="Periode",ylab="Suhu Rata Rata (°C)",type = "l")
Mencari data maksimum dan minimum
minimum = min(data)
maximum = max(data)
minimum
[1] 25.3
maximum
[1] 28.4
Mencari data minimum baru dan data maksimum baru untuk dijadikan sebagai batas bawah dan batas atas interval semeste pembicaraan U
new.min = minimum-0.2
new.max = maximum+0.3
new.min
[1] 25.1
new.max
[1] 28.7
Menentukan banyak interval (n) dan panjang interval (L)
n = round(1 +(3.3 *logb(length(data), base = 10)))
n
[1] 8
L = (new.max - new.min)/n
L
[1] 0.45
Menentukan batas-batas interval
intrv.1 = seq(new.min,new.max,len = n+1)
intrv.1
[1] 25.10 25.55 26.00 26.45 26.90 27.35 27.80 28.25 28.70
Pembagian interval dan membentuk himpunan fuzzy
box1 = data.frame(NA,nrow=length(intrv.1)-1,ncol=3)
names(box1) = c("bawah","atas","kel")
for (i in 1:length(intrv.1)-1) {
box1[i,1]=intrv.1[i]
box1[i,2]=intrv.1[i+1]
box1[i,3]=i
}
box1
Menentukan nilai tengah interval
n.tengah = data.frame(tengah=(box1[,1]+box1[,2])/2,kel=box1[,3])
n.tengah
Menentukan bilangan fuzzy
fuzifikasi=c()
for (i in 1:length(data)){
for (j in 1:nrow(box1)){
if (i!=which.max(data)){
if (data[i]>=(box1[j,1])&data[i]<(box1[j,2])){
fuzifikasi[i]=j
break
}
}
else {
if (data[i]>=(box1[j,1])&data[i]<=(box1[j,2])){
fuzifikasi[i]=j
break
}
}
}
}
fuzifikasi
[1] 5 4 5 5 6 5 3 5 5 5 5 3 2 4 3 5 4 5 3 1 5 7 5 4 4 5 5 5 5 5 4 5 6 4 5 3 3 3 4 4 6 3 4 4 6 8 7 5 4 3 4 4 5 4 3 3 5 6 3 4 3 4 3 4 3 2 2 2 4 4 5 4 3 3 4 5 5 7 3 5 7 5 6 4 3 5 4 5 6
[90] 3 2 3 2 4 4 2 2 3 3 3 5 4 3 5 4 5 4 2 3 3 3 4 5 4 1 3 5 5 5 4 3 4 4 5 5 6 2 3 4 6 4 3
Fuzifikasi ke data asal
fuzzyfy = cbind(data,fuzifikasi)
fuzzyfy
data fuzifikasi
[1,] 26.9 5
[2,] 26.7 4
[3,] 27.0 5
[4,] 27.3 5
[5,] 27.6 6
[6,] 27.1 5
[7,] 26.1 3
[8,] 27.3 5
[9,] 27.3 5
[10,] 27.2 5
[11,] 27.1 5
[12,] 26.0 3
[13,] 25.6 2
[14,] 26.5 4
[15,] 26.1 3
[16,] 27.3 5
[17,] 26.6 4
[18,] 26.9 5
[19,] 26.1 3
[20,] 25.3 1
[21,] 27.2 5
[22,] 27.8 7
[23,] 26.9 5
[24,] 26.5 4
[25,] 26.6 4
[26,] 27.0 5
[27,] 26.9 5
[28,] 27.1 5
[29,] 27.1 5
[30,] 27.3 5
[31,] 26.7 4
[32,] 27.0 5
[33,] 27.6 6
[34,] 26.6 4
[35,] 26.9 5
[36,] 26.4 3
[37,] 26.0 3
[38,] 26.4 3
[39,] 26.7 4
[40,] 26.8 4
[41,] 27.4 6
[42,] 26.0 3
[43,] 26.5 4
[44,] 26.6 4
[45,] 27.4 6
[46,] 28.4 8
[47,] 27.9 7
[48,] 27.2 5
[49,] 26.7 4
[50,] 26.0 3
[51,] 26.5 4
[52,] 26.8 4
[53,] 27.2 5
[54,] 26.6 4
[55,] 26.2 3
[56,] 26.3 3
[57,] 27.0 5
[58,] 27.4 6
[59,] 26.4 3
[60,] 26.5 4
[61,] 26.4 3
[62,] 26.7 4
[63,] 26.4 3
[64,] 26.5 4
[65,] 26.3 3
[66,] 25.9 2
[67,] 25.9 2
[68,] 25.7 2
[69,] 26.7 4
[70,] 26.6 4
[71,] 26.9 5
[72,] 26.7 4
[73,] 26.0 3
[74,] 26.1 3
[75,] 26.8 4
[76,] 27.3 5
[77,] 27.2 5
[78,] 28.1 7
[79,] 26.3 3
[80,] 27.2 5
[81,] 28.0 7
[82,] 27.3 5
[83,] 27.4 6
[84,] 26.6 4
[85,] 26.1 3
[86,] 26.9 5
[87,] 26.6 4
[88,] 27.2 5
[89,] 27.5 6
[90,] 26.3 3
[91,] 25.9 2
[92,] 26.2 3
[93,] 25.9 2
[94,] 26.7 4
[95,] 26.5 4
[96,] 25.9 2
[97,] 25.9 2
[98,] 26.2 3
[99,] 26.1 3
[100,] 26.2 3
[101,] 27.0 5
[102,] 26.5 4
[103,] 26.2 3
[104,] 26.9 5
[105,] 26.8 4
[106,] 27.3 5
[107,] 26.7 4
[108,] 25.9 2
[109,] 26.2 3
[110,] 26.1 3
[111,] 26.4 3
[112,] 26.8 4
[113,] 27.1 5
[114,] 26.5 4
[115,] 25.5 1
[116,] 26.3 3
[117,] 26.9 5
[118,] 27.3 5
[119,] 27.0 5
[120,] 26.5 4
[121,] 26.4 3
[122,] 26.5 4
[123,] 26.8 4
[124,] 27.2 5
[125,] 27.0 5
[126,] 27.4 6
[127,] 25.9 2
[128,] 26.2 3
[129,] 26.8 4
[130,] 27.6 6
[131,] 26.6 4
[132,] 26.0 3
Membuat Fuzzy Logical Relation (FLR)
FLR = data.frame(fuzzifikasi=0,left=NA,right =NA)
for (i in 1:length(fuzifikasi)) {
FLR[i,1] = fuzifikasi[i]
FLR[i+1,2] = fuzifikasi[i]
FLR[i,3] = fuzifikasi[i]
}
FLR = FLR[-nrow(FLR),]
FLR = FLR[-1,]
FLR
Membuat Fuzyy Logical Relation Group (FLRG)
FLRG = table(FLR[,2:3])
FLRG
right
left 1 2 3 4 5 6 7 8
1 0 0 1 0 1 0 0 0
2 0 3 4 3 0 0 0 0
3 1 4 8 10 8 0 0 0
4 1 2 11 7 12 3 0 0
5 0 0 4 13 12 6 3 0
6 0 1 3 3 1 0 0 1
7 0 0 1 0 3 0 0 0
8 0 0 0 0 0 0 1 0
Membuat matriks transisi
bobot = round(prop.table(table(FLR[,2:3]),1),5)
bobot
right
left 1 2 3 4 5 6 7 8
1 0.00000 0.00000 0.50000 0.00000 0.50000 0.00000 0.00000 0.00000
2 0.00000 0.30000 0.40000 0.30000 0.00000 0.00000 0.00000 0.00000
3 0.03226 0.12903 0.25806 0.32258 0.25806 0.00000 0.00000 0.00000
4 0.02778 0.05556 0.30556 0.19444 0.33333 0.08333 0.00000 0.00000
5 0.00000 0.00000 0.10526 0.34211 0.31579 0.15789 0.07895 0.00000
6 0.00000 0.11111 0.33333 0.33333 0.11111 0.00000 0.00000 0.11111
7 0.00000 0.00000 0.25000 0.00000 0.75000 0.00000 0.00000 0.00000
8 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 1.00000 0.00000
Peralaman awal
diagonal = diag(bobot)
m.diagonal = diag(diagonal)
#mengambil nilai selain diagonal
pinggir = bobot-m.diagonal
ramal=NULL
for (i in 1:(length(fuzifikasi))){
for (j in 1:(nrow(bobot))){
if (fuzifikasi[i]==j)
{ramal[i+1]=(diagonal[j]*data[i])+sum(pinggir[j,]*n.tengah[,1]) }else
if (fuzifikasi[i]==j)
{ramal[i]=0}
}
}
ramal = ramal[-length(ramal)]
ramal
[1] NA 26.94737 26.67985 26.97895 27.07369 26.67473 27.01053 26.48280 27.07369 27.07369 27.04211 27.01053 26.45699 26.17250 26.64096 26.48280 27.07369 26.66040 26.94737
[20] 26.48280 26.67500 27.04211 26.90000 26.94737 26.64096 26.66040 26.97895 26.94737 27.01053 27.01053 27.07369 26.67985 26.97895 26.67473 26.66040 26.94737 26.56022 26.45699
[39] 26.56022 26.67985 26.69929 26.67473 26.45699 26.64096 26.66040 26.67473 28.02500 26.90000 27.04211 26.67985 26.45699 26.64096 26.69929 27.04211 26.66040 26.50860 26.53441
[58] 26.97895 26.67473 26.56022 26.64096 26.56022 26.67985 26.56022 26.64096 26.53441 26.26250 26.26250 26.20250 26.67985 26.66040 26.94737 26.67985 26.45699 26.48280 26.69929
[77] 27.07369 27.04211 26.90000 26.53441 27.04211 26.90000 27.07369 26.67473 26.66040 26.48280 26.94737 26.66040 27.04211 26.67473 26.53441 26.26250 26.50860 26.26250 26.67985
[96] 26.64096 26.26250 26.26250 26.50860 26.48280 26.50860 26.97895 26.64096 26.50860 26.94737 26.69929 27.07369 26.67985 26.26250 26.50860 26.48280 26.56022 26.69929 27.01053
[115] 26.64096 26.67500 26.53441 26.94737 27.07369 26.97895 26.64096 26.56022 26.64096 26.69929 27.04211 26.97895 26.67473 26.26250 26.50860 26.69929 26.67473 26.66040
Adjusted forecasting value (peramalan tahap kedua)
adjusted = rep(0,nrow(FLR))
selisih = FLR[,3]-FLR[,2]
for(i in 1:nrow(FLR))
{
if (FLR[i,2]!=FLR[i,3] && diagonal[FLR[i,2]]==0)
{adjusted[i]=selisih[i]*(L/2)} else #Untuk tidak komunicate
if (selisih[i]==1 && diagonal[FLR[i,2]]>0)
{adjusted[i]=(L)} else #Untuk komunicate
if (FLR[i,2]!=FLR[i,3] && diagonal[FLR[i,2]]>0)
{adjusted[i]=selisih[i]*L/2} #Untuk komunicate
}
adjusted
[1] -0.225 0.450 0.000 0.450 -0.225 -0.450 0.450 0.000 0.000 0.000 -0.450 -0.225 0.450 -0.225 0.450 -0.225 0.450 -0.450 -0.450 0.900 0.450 -0.450 -0.225 0.000 0.450
[26] 0.000 0.000 0.000 0.000 -0.225 0.450 0.450 -0.450 0.450 -0.450 0.000 0.000 0.450 0.000 0.450 -0.675 0.450 0.000 0.450 0.450 -0.225 -0.450 -0.225 -0.225 0.450
[51] 0.000 0.450 -0.225 -0.225 0.000 0.450 0.450 -0.675 0.450 -0.225 0.450 -0.225 0.450 -0.225 -0.225 0.000 0.000 0.450 0.000 0.450 -0.225 -0.225 0.000 0.450 0.450
[76] 0.000 0.450 -0.900 0.450 0.450 -0.450 0.450 -0.450 -0.225 0.450 -0.225 0.450 0.450 -0.675 -0.225 0.450 -0.225 0.450 0.000 -0.450 0.000 0.450 0.000 0.000 0.450
[101] -0.225 -0.225 0.450 -0.225 0.450 -0.225 -0.450 0.450 0.000 0.000 0.450 0.450 -0.225 -0.675 0.450 0.450 0.000 0.000 -0.225 -0.225 0.450 0.000 0.450 0.000 0.450
[126] -0.900 0.450 0.450 0.450 -0.450 -0.225
Peralaman tahap terakhir
ramal=ramal[c(2:length(ramal))]
adj.forecast=adjusted + ramal
adj.forecast
[1] 26.72237 27.12985 26.97895 27.52369 26.44973 26.56053 26.93280 27.07369 27.07369 27.04211 26.56053 26.23199 26.62250 26.41596 26.93280 26.84869 27.11040 26.49737 26.03280
[20] 27.57500 27.49211 26.45000 26.72237 26.64096 27.11040 26.97895 26.94737 27.01053 27.01053 26.84869 27.12985 27.42895 26.22473 27.11040 26.49737 26.56022 26.45699 27.01022
[39] 26.67985 27.14929 25.99973 26.90699 26.64096 27.11040 27.12473 27.80000 26.45000 26.81711 26.45485 26.90699 26.64096 27.14929 26.81711 26.43540 26.50860 26.98441 27.42895
[58] 25.99973 27.01022 26.41596 27.01022 26.45485 27.01022 26.41596 26.30941 26.26250 26.26250 26.65250 26.67985 27.11040 26.72237 26.45485 26.45699 26.93280 27.14929 27.07369
[77] 27.49211 26.00000 26.98441 27.49211 26.45000 27.52369 26.22473 26.43540 26.93280 26.72237 27.11040 27.49211 25.99973 26.30941 26.71250 26.28360 26.71250 26.67985 26.19096
[96] 26.26250 26.71250 26.50860 26.48280 26.95860 26.75395 26.41596 26.95860 26.72237 27.14929 26.84869 26.22985 26.71250 26.50860 26.48280 27.01022 27.14929 26.78553 25.96596
[115] 27.12500 26.98441 26.94737 27.07369 26.75395 26.41596 27.01022 26.64096 27.14929 27.04211 27.42895 25.77473 26.71250 26.95860 27.14929 26.22473 26.43540
Tabel pembanding dengan hasil penyesuaian kedua
datapakai = data[c(2:length(data))]
galat = abs(datapakai-adj.forecast)
tabel = cbind(datapakai,ramal,adjusted,adj.forecast,galat)
tabel
datapakai ramal adjusted adj.forecast galat
[1,] 26.7 26.94737 -0.225 26.72237 0.02236925
[2,] 27.0 26.67985 0.450 27.12985 0.12984750
[3,] 27.3 26.97895 0.000 26.97895 0.32105175
[4,] 27.6 27.07369 0.450 27.52369 0.07631475
[5,] 27.1 26.67473 -0.225 26.44973 0.65026675
[6,] 26.1 27.01053 -0.450 26.56053 0.46052725
[7,] 27.3 26.48280 0.450 26.93280 0.36720225
[8,] 27.3 27.07369 0.000 27.07369 0.22631475
[9,] 27.2 27.07369 0.000 27.07369 0.12631475
[10,] 27.1 27.04211 0.000 27.04211 0.05789375
[11,] 26.0 27.01053 -0.450 26.56053 0.56052725
[12,] 25.6 26.45699 -0.225 26.23199 0.63199175
[13,] 26.5 26.17250 0.450 26.62250 0.12250000
[14,] 26.1 26.64096 -0.225 26.41596 0.31595950
[15,] 27.3 26.48280 0.450 26.93280 0.36720225
[16,] 26.6 27.07369 -0.225 26.84869 0.24868525
[17,] 26.9 26.66040 0.450 27.11040 0.21040350
[18,] 26.1 26.94737 -0.450 26.49737 0.39736925
[19,] 25.3 26.48280 -0.450 26.03280 0.73279775
[20,] 27.2 26.67500 0.900 27.57500 0.37500000
[21,] 27.8 27.04211 0.450 27.49211 0.30789375
[22,] 26.9 26.90000 -0.450 26.45000 0.45000000
[23,] 26.5 26.94737 -0.225 26.72237 0.22236925
[24,] 26.6 26.64096 0.000 26.64096 0.04095950
[25,] 27.0 26.66040 0.450 27.11040 0.11040350
[26,] 26.9 26.97895 0.000 26.97895 0.07894825
[27,] 27.1 26.94737 0.000 26.94737 0.15263075
[28,] 27.1 27.01053 0.000 27.01053 0.08947275
[29,] 27.3 27.01053 0.000 27.01053 0.28947275
[30,] 26.7 27.07369 -0.225 26.84869 0.14868525
[31,] 27.0 26.67985 0.450 27.12985 0.12984750
[32,] 27.6 26.97895 0.450 27.42895 0.17105175
[33,] 26.6 26.67473 -0.450 26.22473 0.37526675
[34,] 26.9 26.66040 0.450 27.11040 0.21040350
[35,] 26.4 26.94737 -0.450 26.49737 0.09736925
[36,] 26.0 26.56022 0.000 26.56022 0.56021575
[37,] 26.4 26.45699 0.000 26.45699 0.05699175
[38,] 26.7 26.56022 0.450 27.01022 0.31021575
[39,] 26.8 26.67985 0.000 26.67985 0.12015250
[40,] 27.4 26.69929 0.450 27.14929 0.25070850
[41,] 26.0 26.67473 -0.675 25.99973 0.00026675
[42,] 26.5 26.45699 0.450 26.90699 0.40699175
[43,] 26.6 26.64096 0.000 26.64096 0.04095950
[44,] 27.4 26.66040 0.450 27.11040 0.28959650
[45,] 28.4 26.67473 0.450 27.12473 1.27526675
[46,] 27.9 28.02500 -0.225 27.80000 0.10000000
[47,] 27.2 26.90000 -0.450 26.45000 0.75000000
[48,] 26.7 27.04211 -0.225 26.81711 0.11710625
[49,] 26.0 26.67985 -0.225 26.45485 0.45484750
[50,] 26.5 26.45699 0.450 26.90699 0.40699175
[51,] 26.8 26.64096 0.000 26.64096 0.15904050
[52,] 27.2 26.69929 0.450 27.14929 0.05070850
[53,] 26.6 27.04211 -0.225 26.81711 0.21710625
[54,] 26.2 26.66040 -0.225 26.43540 0.23540350
[55,] 26.3 26.50860 0.000 26.50860 0.20860375
[56,] 27.0 26.53441 0.450 26.98441 0.01559025
[57,] 27.4 26.97895 0.450 27.42895 0.02894825
[58,] 26.4 26.67473 -0.675 25.99973 0.40026675
[59,] 26.5 26.56022 0.450 27.01022 0.51021575
[60,] 26.4 26.64096 -0.225 26.41596 0.01595950
[61,] 26.7 26.56022 0.450 27.01022 0.31021575
[62,] 26.4 26.67985 -0.225 26.45485 0.05484750
[63,] 26.5 26.56022 0.450 27.01022 0.51021575
[64,] 26.3 26.64096 -0.225 26.41596 0.11595950
[65,] 25.9 26.53441 -0.225 26.30941 0.40940975
[66,] 25.9 26.26250 0.000 26.26250 0.36250000
[67,] 25.7 26.26250 0.000 26.26250 0.56250000
[68,] 26.7 26.20250 0.450 26.65250 0.04750000
[69,] 26.6 26.67985 0.000 26.67985 0.07984750
[70,] 26.9 26.66040 0.450 27.11040 0.21040350
[71,] 26.7 26.94737 -0.225 26.72237 0.02236925
[72,] 26.0 26.67985 -0.225 26.45485 0.45484750
[73,] 26.1 26.45699 0.000 26.45699 0.35699175
[74,] 26.8 26.48280 0.450 26.93280 0.13279775
[75,] 27.3 26.69929 0.450 27.14929 0.15070850
[76,] 27.2 27.07369 0.000 27.07369 0.12631475
[77,] 28.1 27.04211 0.450 27.49211 0.60789375
[78,] 26.3 26.90000 -0.900 26.00000 0.30000000
[79,] 27.2 26.53441 0.450 26.98441 0.21559025
[80,] 28.0 27.04211 0.450 27.49211 0.50789375
[81,] 27.3 26.90000 -0.450 26.45000 0.85000000
[82,] 27.4 27.07369 0.450 27.52369 0.12368525
[83,] 26.6 26.67473 -0.450 26.22473 0.37526675
[84,] 26.1 26.66040 -0.225 26.43540 0.33540350
[85,] 26.9 26.48280 0.450 26.93280 0.03279775
[86,] 26.6 26.94737 -0.225 26.72237 0.12236925
[87,] 27.2 26.66040 0.450 27.11040 0.08959650
[88,] 27.5 27.04211 0.450 27.49211 0.00789375
[89,] 26.3 26.67473 -0.675 25.99973 0.30026675
[90,] 25.9 26.53441 -0.225 26.30941 0.40940975
[91,] 26.2 26.26250 0.450 26.71250 0.51250000
[92,] 25.9 26.50860 -0.225 26.28360 0.38360375
[93,] 26.7 26.26250 0.450 26.71250 0.01250000
[94,] 26.5 26.67985 0.000 26.67985 0.17984750
[95,] 25.9 26.64096 -0.450 26.19096 0.29095950
[96,] 25.9 26.26250 0.000 26.26250 0.36250000
[97,] 26.2 26.26250 0.450 26.71250 0.51250000
[98,] 26.1 26.50860 0.000 26.50860 0.40860375
[99,] 26.2 26.48280 0.000 26.48280 0.28279775
[100,] 27.0 26.50860 0.450 26.95860 0.04139625
[101,] 26.5 26.97895 -0.225 26.75395 0.25394825
[102,] 26.2 26.64096 -0.225 26.41596 0.21595950
[103,] 26.9 26.50860 0.450 26.95860 0.05860375
[104,] 26.8 26.94737 -0.225 26.72237 0.07763075
[105,] 27.3 26.69929 0.450 27.14929 0.15070850
[106,] 26.7 27.07369 -0.225 26.84869 0.14868525
[107,] 25.9 26.67985 -0.450 26.22985 0.32984750
[108,] 26.2 26.26250 0.450 26.71250 0.51250000
[109,] 26.1 26.50860 0.000 26.50860 0.40860375
[110,] 26.4 26.48280 0.000 26.48280 0.08279775
[111,] 26.8 26.56022 0.450 27.01022 0.21021575
[112,] 27.1 26.69929 0.450 27.14929 0.04929150
[113,] 26.5 27.01053 -0.225 26.78553 0.28552725
[114,] 25.5 26.64096 -0.675 25.96596 0.46595950
[115,] 26.3 26.67500 0.450 27.12500 0.82500000
[116,] 26.9 26.53441 0.450 26.98441 0.08440975
[117,] 27.3 26.94737 0.000 26.94737 0.35263075
[118,] 27.0 27.07369 0.000 27.07369 0.07368525
[119,] 26.5 26.97895 -0.225 26.75395 0.25394825
[120,] 26.4 26.64096 -0.225 26.41596 0.01595950
[121,] 26.5 26.56022 0.450 27.01022 0.51021575
[122,] 26.8 26.64096 0.000 26.64096 0.15904050
[123,] 27.2 26.69929 0.450 27.14929 0.05070850
[124,] 27.0 27.04211 0.000 27.04211 0.04210625
[125,] 27.4 26.97895 0.450 27.42895 0.02894825
[126,] 25.9 26.67473 -0.900 25.77473 0.12526675
[127,] 26.2 26.26250 0.450 26.71250 0.51250000
[128,] 26.8 26.50860 0.450 26.95860 0.15860375
[129,] 27.6 26.69929 0.450 27.14929 0.45070850
[130,] 26.6 26.67473 -0.450 26.22473 0.37526675
[131,] 26.0 26.66040 -0.225 26.43540 0.43540350
Penyesuaian overestimate ramalan
adj.forecast2 = rep(0,length(datapakai))
for(i in 1:length(datapakai)){
if((ramal[i]-datapakai[i])<(adj.forecast[i]-datapakai[i])) {
adj.forecast2[i]=ramal[i]+(L/2)
} else {
adj.forecast2[i]=adj.forecast[i]}
}
adj.forecast2
[1] 26.72237 26.90485 26.97895 27.29869 26.44973 26.56053 26.70780 27.07369 27.07369 27.04211 26.56053 26.23199 26.39750 26.41596 26.70780 26.84869 26.88540 26.49737 26.03280
[20] 26.90000 27.26711 26.45000 26.72237 26.64096 26.88540 26.97895 26.94737 27.01053 27.01053 26.84869 26.90485 27.20395 26.22473 26.88540 26.49737 26.56022 26.45699 26.78522
[39] 26.67985 26.92429 25.99973 26.68199 26.64096 26.88540 26.89973 27.80000 26.45000 26.81711 26.45485 26.68199 26.64096 26.92429 26.81711 26.43540 26.50860 26.75941 27.20395
[58] 25.99973 26.78522 26.41596 26.78522 26.45485 26.78522 26.41596 26.30941 26.26250 26.26250 26.42750 26.67985 26.88540 26.72237 26.45485 26.45699 26.70780 26.92429 27.07369
[77] 27.26711 26.00000 26.75941 27.26711 26.45000 27.29869 26.22473 26.43540 26.70780 26.72237 26.88540 27.26711 25.99973 26.30941 26.48750 26.28360 26.48750 26.67985 26.19096
[96] 26.26250 26.48750 26.50860 26.48280 26.73360 26.75395 26.41596 26.73360 26.72237 26.92429 26.84869 26.22985 26.48750 26.50860 26.48280 26.78522 26.92429 26.78553 25.96596
[115] 26.90000 26.75941 26.94737 27.07369 26.75395 26.41596 26.78522 26.64096 26.92429 27.04211 27.20395 25.77473 26.48750 26.73360 26.92429 26.22473 26.43540
Tabel pembanding dengan hasil penyesuaian kedua
tabel2 = cbind(datapakai,ramal,adj.forecast,adj.forecast2)
tabel2
datapakai ramal adj.forecast adj.forecast2
[1,] 26.7 26.94737 26.72237 26.72237
[2,] 27.0 26.67985 27.12985 26.90485
[3,] 27.3 26.97895 26.97895 26.97895
[4,] 27.6 27.07369 27.52369 27.29869
[5,] 27.1 26.67473 26.44973 26.44973
[6,] 26.1 27.01053 26.56053 26.56053
[7,] 27.3 26.48280 26.93280 26.70780
[8,] 27.3 27.07369 27.07369 27.07369
[9,] 27.2 27.07369 27.07369 27.07369
[10,] 27.1 27.04211 27.04211 27.04211
[11,] 26.0 27.01053 26.56053 26.56053
[12,] 25.6 26.45699 26.23199 26.23199
[13,] 26.5 26.17250 26.62250 26.39750
[14,] 26.1 26.64096 26.41596 26.41596
[15,] 27.3 26.48280 26.93280 26.70780
[16,] 26.6 27.07369 26.84869 26.84869
[17,] 26.9 26.66040 27.11040 26.88540
[18,] 26.1 26.94737 26.49737 26.49737
[19,] 25.3 26.48280 26.03280 26.03280
[20,] 27.2 26.67500 27.57500 26.90000
[21,] 27.8 27.04211 27.49211 27.26711
[22,] 26.9 26.90000 26.45000 26.45000
[23,] 26.5 26.94737 26.72237 26.72237
[24,] 26.6 26.64096 26.64096 26.64096
[25,] 27.0 26.66040 27.11040 26.88540
[26,] 26.9 26.97895 26.97895 26.97895
[27,] 27.1 26.94737 26.94737 26.94737
[28,] 27.1 27.01053 27.01053 27.01053
[29,] 27.3 27.01053 27.01053 27.01053
[30,] 26.7 27.07369 26.84869 26.84869
[31,] 27.0 26.67985 27.12985 26.90485
[32,] 27.6 26.97895 27.42895 27.20395
[33,] 26.6 26.67473 26.22473 26.22473
[34,] 26.9 26.66040 27.11040 26.88540
[35,] 26.4 26.94737 26.49737 26.49737
[36,] 26.0 26.56022 26.56022 26.56022
[37,] 26.4 26.45699 26.45699 26.45699
[38,] 26.7 26.56022 27.01022 26.78522
[39,] 26.8 26.67985 26.67985 26.67985
[40,] 27.4 26.69929 27.14929 26.92429
[41,] 26.0 26.67473 25.99973 25.99973
[42,] 26.5 26.45699 26.90699 26.68199
[43,] 26.6 26.64096 26.64096 26.64096
[44,] 27.4 26.66040 27.11040 26.88540
[45,] 28.4 26.67473 27.12473 26.89973
[46,] 27.9 28.02500 27.80000 27.80000
[47,] 27.2 26.90000 26.45000 26.45000
[48,] 26.7 27.04211 26.81711 26.81711
[49,] 26.0 26.67985 26.45485 26.45485
[50,] 26.5 26.45699 26.90699 26.68199
[51,] 26.8 26.64096 26.64096 26.64096
[52,] 27.2 26.69929 27.14929 26.92429
[53,] 26.6 27.04211 26.81711 26.81711
[54,] 26.2 26.66040 26.43540 26.43540
[55,] 26.3 26.50860 26.50860 26.50860
[56,] 27.0 26.53441 26.98441 26.75941
[57,] 27.4 26.97895 27.42895 27.20395
[58,] 26.4 26.67473 25.99973 25.99973
[59,] 26.5 26.56022 27.01022 26.78522
[60,] 26.4 26.64096 26.41596 26.41596
[61,] 26.7 26.56022 27.01022 26.78522
[62,] 26.4 26.67985 26.45485 26.45485
[63,] 26.5 26.56022 27.01022 26.78522
[64,] 26.3 26.64096 26.41596 26.41596
[65,] 25.9 26.53441 26.30941 26.30941
[66,] 25.9 26.26250 26.26250 26.26250
[67,] 25.7 26.26250 26.26250 26.26250
[68,] 26.7 26.20250 26.65250 26.42750
[69,] 26.6 26.67985 26.67985 26.67985
[70,] 26.9 26.66040 27.11040 26.88540
[71,] 26.7 26.94737 26.72237 26.72237
[72,] 26.0 26.67985 26.45485 26.45485
[73,] 26.1 26.45699 26.45699 26.45699
[74,] 26.8 26.48280 26.93280 26.70780
[75,] 27.3 26.69929 27.14929 26.92429
[76,] 27.2 27.07369 27.07369 27.07369
[77,] 28.1 27.04211 27.49211 27.26711
[78,] 26.3 26.90000 26.00000 26.00000
[79,] 27.2 26.53441 26.98441 26.75941
[80,] 28.0 27.04211 27.49211 27.26711
[81,] 27.3 26.90000 26.45000 26.45000
[82,] 27.4 27.07369 27.52369 27.29869
[83,] 26.6 26.67473 26.22473 26.22473
[84,] 26.1 26.66040 26.43540 26.43540
[85,] 26.9 26.48280 26.93280 26.70780
[86,] 26.6 26.94737 26.72237 26.72237
[87,] 27.2 26.66040 27.11040 26.88540
[88,] 27.5 27.04211 27.49211 27.26711
[89,] 26.3 26.67473 25.99973 25.99973
[90,] 25.9 26.53441 26.30941 26.30941
[91,] 26.2 26.26250 26.71250 26.48750
[92,] 25.9 26.50860 26.28360 26.28360
[93,] 26.7 26.26250 26.71250 26.48750
[94,] 26.5 26.67985 26.67985 26.67985
[95,] 25.9 26.64096 26.19096 26.19096
[96,] 25.9 26.26250 26.26250 26.26250
[97,] 26.2 26.26250 26.71250 26.48750
[98,] 26.1 26.50860 26.50860 26.50860
[99,] 26.2 26.48280 26.48280 26.48280
[100,] 27.0 26.50860 26.95860 26.73360
[101,] 26.5 26.97895 26.75395 26.75395
[102,] 26.2 26.64096 26.41596 26.41596
[103,] 26.9 26.50860 26.95860 26.73360
[104,] 26.8 26.94737 26.72237 26.72237
[105,] 27.3 26.69929 27.14929 26.92429
[106,] 26.7 27.07369 26.84869 26.84869
[107,] 25.9 26.67985 26.22985 26.22985
[108,] 26.2 26.26250 26.71250 26.48750
[109,] 26.1 26.50860 26.50860 26.50860
[110,] 26.4 26.48280 26.48280 26.48280
[111,] 26.8 26.56022 27.01022 26.78522
[112,] 27.1 26.69929 27.14929 26.92429
[113,] 26.5 27.01053 26.78553 26.78553
[114,] 25.5 26.64096 25.96596 25.96596
[115,] 26.3 26.67500 27.12500 26.90000
[116,] 26.9 26.53441 26.98441 26.75941
[117,] 27.3 26.94737 26.94737 26.94737
[118,] 27.0 27.07369 27.07369 27.07369
[119,] 26.5 26.97895 26.75395 26.75395
[120,] 26.4 26.64096 26.41596 26.41596
[121,] 26.5 26.56022 27.01022 26.78522
[122,] 26.8 26.64096 26.64096 26.64096
[123,] 27.2 26.69929 27.14929 26.92429
[124,] 27.0 27.04211 27.04211 27.04211
[125,] 27.4 26.97895 27.42895 27.20395
[126,] 25.9 26.67473 25.77473 25.77473
[127,] 26.2 26.26250 26.71250 26.48750
[128,] 26.8 26.50860 26.95860 26.73360
[129,] 27.6 26.69929 27.14929 26.92429
[130,] 26.6 26.67473 26.22473 26.22473
[131,] 26.0 26.66040 26.43540 26.43540
tail(tabel2)
datapakai ramal adj.forecast adj.forecast2
[126,] 25.9 26.67473 25.77473 25.77473
[127,] 26.2 26.26250 26.71250 26.48750
[128,] 26.8 26.50860 26.95860 26.73360
[129,] 27.6 26.69929 27.14929 26.92429
[130,] 26.6 26.67473 26.22473 26.22473
[131,] 26.0 26.66040 26.43540 26.43540
Uji Ketepatan
galat2 = abs(datapakai-adj.forecast2)
MSE = mean(galat2^2, na.rm = TRUE)
MAE = mean(abs(galat2), na.rm = TRUE)
MAPE = mean(abs(galat2/datapakai*100), na.rm=TRUE)
ketepatan = cbind(MSE,MAE,MAPE)
ketepatan
MSE MAE MAPE
[1,] 0.1274708 0.2827911 1.058075
Plot data asli dan data prediksi
plot(c(2:length(data)),data[c(2:length(data))],type="l",xlab="Periode",ylab="Suhu Rata Rata (°C)")
lines(c(2:length(data)),ramal[c(1:length(ramal))],lty=2)
legend(10,12000,c("actual","forecast.markov"),bty="n",lty=c(1,2))