setwd("C:/KULIAH UNAIR/Semester 6/Analisis Runtun Waktu Lanjutan")
data<-read.csv("sunspotarea.csv");
View(data)
data<-data[4:137,2:5];View(data)
ts.plot(data$sunspotarea)

train<-data[1:127,];View(train)
test<-data[-1:-127,];View(test)
#menjalankan library svm
library(e1071)
#membuat model svm
model <- svm(sunspotarea~., train)
model
##
## Call:
## svm(formula = sunspotarea ~ ., data = train)
##
##
## Parameters:
## SVM-Type: eps-regression
## SVM-Kernel: radial
## cost: 1
## gamma: 0.3333333
## epsilon: 0.1
##
##
## Number of Support Vectors: 99
#membuat sebuah prediksi untuk masing-masing data training (FIT)
prediksiY <- predict(model,train)
prediksiY
## 4 5 6 7 8 9 10
## 325.99920 328.03860 385.37517 905.29305 1088.25163 1117.39713 1109.95795
## 11 12 13 14 15 16 17
## 833.72933 532.69870 194.67717 91.39061 207.27141 340.97734 420.00153
## 18 19 20 21 22 23 24
## 1014.52777 1731.00146 1468.59438 1030.77435 622.87803 311.81436 298.76304
## 25 26 27 28 29 30 31
## 316.91184 102.65522 232.52109 341.38176 414.37694 745.70137 827.16861
## 32 33 34 35 36 37 38
## 1573.83965 880.68235 737.54461 615.63252 412.37676 155.85303 68.58543
## 39 40 41 42 43 44 45
## 273.11567 368.81369 541.13345 1226.81111 1019.38720 1578.55045 1130.72869
## 46 47 48 49 50 51 52
## 591.31948 411.66925 204.33460 178.44931 131.16233 538.03118 1338.88310
## 53 54 55 56 57 58 59
## 1569.07900 961.26331 975.19341 1035.20643 400.93719 156.51783 176.29041
## 60 61 62 63 64 65 66
## 263.77284 388.05661 1078.29530 1608.73555 1943.53391 2010.54375 1113.29617
## 67 68 69 70 71 72 73
## 582.30707 351.89685 209.49629 205.38391 170.26068 665.87910 2372.78308
## 74 75 76 77 78 79 80
## 2064.14176 2063.42831 1151.38100 999.26120 478.72722 321.66034 110.16121
## 81 82 83 84 85 86 87
## 170.33980 981.90052 2517.28507 2206.62441 2184.90043 1659.68018 802.49502
## 88 89 90 91 92 93 94
## 539.27548 287.96038 204.75545 101.51117 338.51445 1060.43382 2058.07655
## 95 96 97 98 99 100 101
## 1525.52385 1072.69052 1099.85478 804.30922 461.93045 281.86296 230.31355
## 102 103 104 105 106 107 108
## 167.02742 281.39775 618.81596 1961.30303 2029.16088 2169.86494 1674.66377
## 109 110 111 112 113 114 115
## 1792.53953 759.52220 371.72780 96.49732 148.44664 566.11852 1985.32779
## 116 117 118 119 120 121 122
## 2124.20287 2339.05293 1430.31079 1197.68145 400.74872 182.55710 103.87091
## 123 124 125 126 127 128 129
## 227.49542 495.01437 1255.37709 1519.96619 1499.10801 1469.49002 1410.65769
## 130
## 893.81487
#residual
rmse <- function(error)
{
sqrt(mean(error^2))
}
#
resTrain<-train$sunspotarea-prediksiY
RMSEtrain<-rmse(resTrain);RMSEtrain
## [1] 325.6267
#plot fit vs train
win.graph()
par(mfrow=c(2,1))
ts.plot(train$sunspotarea)
ts.plot(prediksiY)

#Testing (out-sample)
prediksiTest<-predict(model,test)
resTest<-test$sunspotarea-prediksiTest
RMSETest<-rmse(resTest);RMSETest
## [1] 140.2718
#plot
win.graph()
par(mfrow=c(2,1))
ts.plot(test$sunspotarea)
ts.plot(prediksiTest)

#tuning
set.seed(1234)
tuneResult <- tune(svm, sunspotarea~., data = train,
ranges = list(epsilon = seq(0,1,0.1), cost = 2^(2:9))
)
print(tuneResult)
##
## Parameter tuning of 'svm':
##
## - sampling method: 10-fold cross validation
##
## - best parameters:
## epsilon cost
## 0.2 4
##
## - best performance: 124537.3
# menggambarkan hasil tuning
plot(tuneResult)

tunedModel <- tuneResult$best.model
tunedModel
##
## Call:
## best.tune(METHOD = svm, train.x = sunspotarea ~ ., data = train,
## ranges = list(epsilon = seq(0, 1, 0.1), cost = 2^(2:9)))
##
##
## Parameters:
## SVM-Type: eps-regression
## SVM-Kernel: radial
## cost: 4
## gamma: 0.3333333
## epsilon: 0.2
##
##
## Number of Support Vectors: 78
#Train Tunning
tunedModelTrain <- predict(tunedModel, train)
errorTrain <- train$sunspotarea-tunedModelTrain
tunedModelRMSETrain <- rmse(errorTrain);tunedModelRMSETrain
## [1] 290.4889
#Test Tunning
tunedModelTest <- predict(tunedModel, test)
errorTest <- test$sunspotarea-tunedModelTest
tunedModelRMSETest <- rmse(errorTest);tunedModelRMSETest
## [1] 137.2527
#plot
win.graph()
par(mfrow=c(2,1))
ts.plot(train$sunspotarea)
ts.plot(tunedModelTrain)

#plot
win.graph()
par(mfrow=c(2,1))
ts.plot(test$sunspotarea)
ts.plot(tunedModelTest)
