#######################################Functions#################################################
modelErrors <- function(predicted, actual) {
  sal <- vector(mode="numeric", length=3)
  names(sal) <- c( "MAE", "RMSE", "RELE")
  meanPredicted <- mean(predicted)
  meanActual <- mean(actual)
  sumPred <- sum((predicted - meanPredicted)^2)
  sumActual <- sum((actual - meanActual)^2)
  n<- length(actual)
  p3<-vector(mode="numeric", length=n)
  for (i in c(1:n)) {
    if (actual[i]==0) {p3[i]<-abs(predicted[i])
    } else { p3[i]<-((abs(predicted[i]-actual[i]))/actual[i])
    }}
  sal[1] <- mean(abs(predicted - actual))
  sal[2] <- sqrt(sum((predicted - actual)^2)/n)
  sal[3] <- mean(p3)
  sal
}
train_testErrors<-function(model,inputsTrain,targetsTrain,inputsTest,targetsTest){
  predict(model,newdata=as.data.frame(inputsTrain))->trainPredict
  modelErrors(trainPredict,targetsTrain)->trainErrors
  predict(model,newdata=as.data.frame(inputsTest))->testPredict
  modelErrors(testPredict,targetsTest)->testErrors
  list(train=trainErrors,test = testErrors)->errors
  return(errors)
}

lm_nnet_error<-function(feature_new_train,feature_new_test,dataset){
inputsTrain<-feature_new_train[,-c(ncol(feature_new_train))]
targetsTrain<-feature_new_train[,c(ncol(feature_new_train))]
inputsTest<-feature_new_test[,-c(ncol(feature_new_test))]
targetsTest<-feature_new_test[,c(ncol(feature_new_test))]
lm(MAXO3C~.,data=as.data.frame(cbind(inputsTrain,MAXO3C=targetsTrain)))->lmFit
train_testErrors(lmFit,inputsTrain,targetsTrain,inputsTest,targetsTest)->error_lm
expand.grid( 0, 0.1,0.2,0.4,0.8,1.6,3.2,6.4,8,10)->d
nnet_RMSE_train<-c()
nnet_RMSE_test<-c()
nnet_MAE_train<-c()
nnet_MAE_test<-c()
for (i in 1:10){
nnet(MAXO3C~.,data=as.data.frame(cbind(inputsTrain,MAXO3C=targetsTrain)),size = 13,maxit =1000000,decay = d[i])->net
train_testErrors(net,inputsTrain,targetsTrain,inputsTest,targetsTest)->error_net
nnet_MAE_train<-c(nnet_MAE_train,error_net[[1]][1])
nnet_MAE_test<-c(nnet_MAE_test,error_net[[2]][1])
nnet_RMSE_train<-c(nnet_RMSE_train,error_net[[1]][2])
nnet_RMSE_test<-c(nnet_RMSE_test,error_net[[2]][2])
}
save(error_lm,nnet_MAE_train,nnet_MAE_test,nnet_RMSE_train,nnet_RMSE_test,file=paste("error",dataset,".RData"))
return(errors)
}
load("~/PED/prepareDataDay/feature_new_norm5.RData")
colnames(feature_new_train5)
##  [1] "MAXO3P"             "AVGO3P"             "AVGO3P_MINHRP"     
##  [4] "MAXO3P_MAXNO2P"     "MEDIANWSPP_AVGRHP"  "MAXWDRP_MEDIANWDRP"
##  [7] "MAXNOXP"            "MAXNO2P"            "MAXSO2P"           
## [10] "MAXCOP"             "MAXTMPP"            "MAXRHP"            
## [13] "MAXWSPP"            "MAXWDRP"            "MINO3P"            
## [16] "MINNOxP"            "MINNO2P"            "MINSO2P"           
## [19] "MINCOP"             "MINTMPP"            "MINRHP"            
## [22] "MINWSPP"            "MINWDRP"            "AVGNOXP"           
## [25] "AVGNO2P"            "AVGSO2P"            "AVGCOP"            
## [28] "AVGTMPP"            "AVGRHP"             "AVGWSPP"           
## [31] "AVGWDRP"            "STDO3P"             "STDNOxP"           
## [34] "STDNO2P"            "STDSO2P"            "STDCOP"            
## [37] "STDTMPP"            "STDRHP"             "STDWSPP"           
## [40] "STDWDRP"            "MONTHC"             "DAYC"              
## [43] "WEEKDAYC"           "SEASONC"            "MAXO3C"
 load("~/PED/nnetAnalysis/error 5 .RData")

error_lm
## $train
##     MAE    RMSE    RELE 
## 0.07246 0.09448 0.23234 
## 
## $test
##     MAE    RMSE    RELE 
## 0.07041 0.09400 0.22969
nnet_MAE_train
##     MAE     MAE     MAE     MAE     MAE     MAE     MAE     MAE     MAE 
## 0.05655 0.07295 0.07372 0.07467 0.07693 0.08247 0.09627 0.09753 0.09766 
##     MAE 
## 0.09779
nnet_MAE_test
##     MAE     MAE     MAE     MAE     MAE     MAE     MAE     MAE     MAE 
## 0.08614 0.07119 0.07149 0.07202 0.07368 0.07826 0.08913 0.09024 0.09039 
##     MAE 
## 0.09052
nnet_RMSE_train
##    RMSE    RMSE    RMSE    RMSE    RMSE    RMSE    RMSE    RMSE    RMSE 
## 0.07357 0.09522 0.09591 0.09679 0.09911 0.10511 0.12088 0.12220 0.12230 
##    RMSE 
## 0.12238
nnet_RMSE_test
##    RMSE    RMSE    RMSE    RMSE    RMSE    RMSE    RMSE    RMSE    RMSE 
## 0.11438 0.09369 0.09384 0.09388 0.09499 0.09920 0.11198 0.11317 0.11328 
##    RMSE 
## 0.11338
load("~/PED/prepareDataDay/feature_new_norm7.RData")
colnames(feature_new_train7)
##  [1] "MAXO3P"             "AVGO3P"             "AVGO3P_MINHRP"     
##  [4] "MAXO3P_MAXNO2P"     "MEDIANWSPP_AVGRHP"  "MAXWDRP_MEDIANWDRP"
##  [7] "MAXNOXP"            "MAXNO2P"            "MAXSO2P"           
## [10] "MAXCOP"             "MAXTMPP"            "MAXRHP"            
## [13] "MAXWSPP"            "MAXWDRP"            "MINO3P"            
## [16] "MINNOxP"            "MINNO2P"            "MINSO2P"           
## [19] "MINCOP"             "MINTMPP"            "MINRHP"            
## [22] "MINWSPP"            "MINWDRP"            "AVGNOXP"           
## [25] "AVGNO2P"            "AVGSO2P"            "AVGCOP"            
## [28] "AVGTMPP"            "AVGRHP"             "AVGWSPP"           
## [31] "AVGWDRP"            "STDO3P"             "STDNOxP"           
## [34] "STDNO2P"            "STDSO2P"            "STDCOP"            
## [37] "STDTMPP"            "STDRHP"             "STDWSPP"           
## [40] "STDWDRP"            "MONTHC"             "DAYC"              
## [43] "WEEKDAYC"           "SEASONC"            "O3point"           
## [46] "NOXpoint"           "NO2point"           "SO2point"          
## [49] "COpoint"            "TMPpoint"           "RHpoint"           
## [52] "WSPpoint"           "WDRpoint"           "MAXO3C"
 load("~/PED/nnetAnalysis/error 7 .RData")

error_lm
## $train
##     MAE    RMSE    RELE 
## 0.05561 0.07273 0.16994 
## 
## $test
##     MAE    RMSE    RELE 
## 0.05672 0.07473 0.16651
nnet_MAE_train
##     MAE     MAE     MAE     MAE     MAE     MAE     MAE     MAE     MAE 
## 0.03003 0.05694 0.05850 0.06173 0.06745 0.07650 0.09253 0.09619 0.09636 
##     MAE 
## 0.09651
nnet_MAE_test
##     MAE     MAE     MAE     MAE     MAE     MAE     MAE     MAE     MAE 
## 0.08280 0.05688 0.05751 0.05983 0.06555 0.07460 0.09034 0.09406 0.09420 
##     MAE 
## 0.09432
nnet_RMSE_train
##    RMSE    RMSE    RMSE    RMSE    RMSE    RMSE    RMSE    RMSE    RMSE 
## 0.04178 0.07426 0.07604 0.07960 0.08645 0.09726 0.11628 0.12057 0.12071 
##    RMSE 
## 0.12082
nnet_RMSE_test
##    RMSE    RMSE    RMSE    RMSE    RMSE    RMSE    RMSE    RMSE    RMSE 
## 0.10902 0.07541 0.07652 0.07911 0.08498 0.09519 0.11427 0.11857 0.11868 
##    RMSE 
## 0.11874
load("~/PED/prepareDataDay/feature_new_norm8.RData")
colnames(feature_new_train8)
##  [1] "MAXO3P"   "AVGO3P"   "O3point"  "NOXpoint" "NO2point" "SO2point"
##  [7] "COpoint"  "TMPpoint" "RHpoint"  "WSPpoint" "WDRpoint" "MAXO3C"
 load("~/PED/nnetAnalysis/error 8 .RData")

error_lm
## $train
##     MAE    RMSE    RELE 
## 0.05760 0.07559 0.17479 
## 
## $test
##     MAE    RMSE    RELE 
## 0.05490 0.07163 0.17238
nnet_MAE_train
##     MAE     MAE     MAE     MAE     MAE     MAE     MAE     MAE     MAE 
## 0.05029 0.05882 0.06014 0.06295 0.06858 0.08129 0.09566 0.09604 0.09613 
##     MAE 
## 0.09622
nnet_MAE_test
##     MAE     MAE     MAE     MAE     MAE     MAE     MAE     MAE     MAE 
## 0.05746 0.05594 0.05721 0.06063 0.06736 0.08215 0.09753 0.09800 0.09812 
##     MAE 
## 0.09824
nnet_RMSE_train
##    RMSE    RMSE    RMSE    RMSE    RMSE    RMSE    RMSE    RMSE    RMSE 
## 0.06589 0.07672 0.07804 0.08103 0.08743 0.10246 0.11986 0.12021 0.12026 
##    RMSE 
## 0.12031
nnet_RMSE_test
##    RMSE    RMSE    RMSE    RMSE    RMSE    RMSE    RMSE    RMSE    RMSE 
## 0.07556 0.07249 0.07397 0.07760 0.08557 0.10321 0.12235 0.12275 0.12282 
##    RMSE 
## 0.12288
load("~/PED/prepareDataDay/feature_new_norm11.RData")
colnames(feature_new_train11)
##  [1] "MAXO3P"             "AVGO3P"             "AVGO3P_MINHRP"     
##  [4] "MAXO3P_MAXNO2P"     "MEDIANWSPP_AVGRHP"  "MAXWDRP_MEDIANWDRP"
##  [7] "MAXNOXP"            "MAXNO2P"            "MAXSO2P"           
## [10] "MAXCOP"             "MAXTMPP"            "MAXRHP"            
## [13] "MAXWSPP"            "MAXWDRP"            "MINO3P"            
## [16] "MINNOxP"            "MINNO2P"            "MINSO2P"           
## [19] "MINCOP"             "MINTMPP"            "MINRHP"            
## [22] "MINWSPP"            "MINWDRP"            "AVGNOXP"           
## [25] "AVGNO2P"            "AVGSO2P"            "AVGCOP"            
## [28] "AVGTMPP"            "AVGRHP"             "AVGWSPP"           
## [31] "AVGWDRP"            "STDO3P"             "STDNOxP"           
## [34] "STDNO2P"            "STDSO2P"            "STDCOP"            
## [37] "STDTMPP"            "STDRHP"             "STDWSPP"           
## [40] "STDWDRP"            "MONTHC"             "DAYC"              
## [43] "WEEKDAYC"           "SEASONC"            "TMPpoint"          
## [46] "RHpoint"            "WSPpoint"           "WDRpoint"          
## [49] "MAXO3C"
 load("~/PED/nnetAnalysis/error 11 .RData")

error_lm
## $train
##     MAE    RMSE    RELE 
## 0.06964 0.09063 0.21779 
## 
## $test
##     MAE    RMSE    RELE 
## 0.07410 0.09685 0.23158
nnet_MAE_train
##     MAE     MAE     MAE     MAE     MAE     MAE     MAE     MAE     MAE 
## 0.03923 0.07069 0.07203 0.07344 0.07614 0.08231 0.09580 0.09660 0.09673 
##     MAE 
## 0.09685
nnet_MAE_test
##     MAE     MAE     MAE     MAE     MAE     MAE     MAE     MAE     MAE 
## 0.10201 0.07411 0.07471 0.07500 0.07638 0.08148 0.09236 0.09304 0.09315 
##     MAE 
## 0.09325
nnet_RMSE_train
##    RMSE    RMSE    RMSE    RMSE    RMSE    RMSE    RMSE    RMSE    RMSE 
## 0.05417 0.09193 0.09335 0.09472 0.09761 0.10453 0.12012 0.12091 0.12101 
##    RMSE 
## 0.12108
nnet_RMSE_test
##    RMSE    RMSE    RMSE    RMSE    RMSE    RMSE    RMSE    RMSE    RMSE 
## 0.13551 0.09706 0.09766 0.09773 0.09888 0.10366 0.11698 0.11765 0.11772 
##    RMSE 
## 0.11777