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)