This is an R Markdown document. Markdown is a simple formatting syntax for authoring web pages (click the MD toolbar button for help on Markdown).
When you click the Knit HTML button a web page will be generated that includes both content as well as the output of any embedded R code chunks within the document. You can embed an R code chunk like this:
library(DBI)
library(RODBC)
library(RMySQL)
m = dbDriver("MySQL")
con <- dbConnect(m, user = "upm", password = "etsiim", dbname = "contamex",
host = "138.100.82.183")
# select the daily Maximum O3,numbers of O3 per day and stddev of O3 group
# by fecha
y <- dbGetQuery(con, "select fecha,year,season,mo3,so3,no3 from (SELECT fecha,YEAR(fecha) as year,QUARTER( fecha ) AS season,MAX( PED ) AS mo3,STDDEV( PED ) AS sO3, COUNT( id ) AS no3 FROM O3 WHERE PED >0 GROUP BY fecha ASC) as foo where no3 > 19")
# to plot the season againt Maximum O3 and stddev respectively.
library(lattice)
y$year <- as.factor(y$year)
bwplot(season ~ mo3 | year, data = y, main = "Maximum O3 base on seasons")
bwplot(season ~ so3 | year, data = y, main = "Maximum O3 base on seasons")
# ANOVA analysis
ANOVA <- y[, c(3, 4)]
ANOVA$season <- as.factor(ANOVA$season)
gl <- lm(mo3 ~ season - 1, ANOVA)
summary(gl)
##
## Call:
## lm(formula = mo3 ~ season - 1, data = ANOVA)
##
## Residuals:
## Min 1Q Median 3Q Max
## -0.13288 -0.04388 -0.00788 0.03697 0.30755
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## season1 0.13345 0.00141 94.8 <2e-16 ***
## season2 0.14088 0.00144 98.0 <2e-16 ***
## season3 0.12655 0.00144 87.7 <2e-16 ***
## season4 0.13158 0.00142 92.9 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.0614 on 7402 degrees of freedom
## Multiple R-squared: 0.825, Adjusted R-squared: 0.825
## F-statistic: 8.72e+03 on 4 and 7402 DF, p-value: <2e-16
g <- aov(mo3 ~ season, ANOVA)
summary(g)
## Df Sum Sq Mean Sq F value Pr(>F)
## season 3 0.19 0.0642 17 5e-11 ***
## Residuals 7402 27.88 0.0038
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
gTukey = TukeyHSD(g, "season")
plot(gTukey)
# select the season 2 and to matcha the database of 'today' and
# 'yesterday'
PED <- dbGetQuery(con, "select FECHA-1,FECHA,YEAR,MONTH,DAY,WEEKDAY,SEASON,MO3,SO3,NO3,NOx,NO2,RH,TMP,WDR,WSP FROM(SELECT O3.fecha as FECHA,year(O3.FECHA) as YEAR,MONTH(O3.FECHA) AS MONTH, DAY(O3.FECHA) AS DAY,WEEKDAY(O3.FECHA) AS WEEKDAY,stddev(O3.PED) AS SO3, COUNT(O3.id)as NO3,MAX(O3.PED) AS MO3, QUARTER(O3.FECHA) as SEASON, O3.PED AS O3,NOx.PED AS NOx,NO2.PED AS NO2,RH.PED AS RH, TMP.PED AS TMP,WDR.PED AS WDR,WSP.PED AS WSP FROM O3,NOx,NO2,RH,TMP,WDR,WSP WHERE O3.FECHA=NOx.FECHA AND O3.HORA = NOx.HORA AND O3.FECHA=NO2.FECHA AND O3.HORA = NO2.HORA AND O3.FECHA = RH.FECHA AND O3.HORA = RH.HORA AND O3.FECHA = TMP.FECHA AND O3.HORA = TMP.HORA AND O3.FECHA = WDR.FECHA AND O3.HORA = WDR.HORA AND O3.FECHA = WSP.FECHA AND O3.HORA = WSP.HORA AND O3.PED>0 AND NOx.PED>0 AND NO2.PED>0 AND RH.PED>0 AND TMP.PED>-50 AND WDR.PED>0 AND WSP.PED>0 GROUP BY FECHA ORDER BY FECHA ASC) as foo where NO3>19 and SEASON=2")
PED.PRE <- dbGetQuery(con, "select FECHA,YEAR,MONTH,DAY,WEEKDAY,SEASON,MO3,SO3,NO3,NOx,NO2,RH,TMP,WDR,WSP FROM(SELECT O3.fecha as FECHA,year(O3.FECHA) as YEAR,MONTH(O3.FECHA) AS MONTH, DAY(O3.FECHA) AS DAY,WEEKDAY(O3.FECHA) AS WEEKDAY,stddev(O3.PED) AS SO3, COUNT(O3.id)as NO3,MAX(O3.PED) AS MO3, QUARTER(O3.FECHA) as SEASON, O3.PED AS O3,NOx.PED AS NOx,NO2.PED AS NO2,RH.PED AS RH, TMP.PED AS TMP,WDR.PED AS WDR,WSP.PED AS WSP FROM O3,NOx,NO2,RH,TMP,WDR,WSP WHERE O3.FECHA=NOx.FECHA AND O3.HORA = NOx.HORA AND O3.FECHA=NO2.FECHA AND O3.HORA = NO2.HORA AND O3.FECHA = RH.FECHA AND O3.HORA = RH.HORA AND O3.FECHA = TMP.FECHA AND O3.HORA = TMP.HORA AND O3.FECHA = WDR.FECHA AND O3.HORA = WDR.HORA AND O3.FECHA = WSP.FECHA AND O3.HORA = WSP.HORA AND O3.PED>0 AND NOx.PED>0 AND NO2.PED>0 AND RH.PED>0 AND TMP.PED>-50 AND WDR.PED>0 AND WSP.PED>0 GROUP BY FECHA ORDER BY FECHA ASC) as foo where NO3>19 AND SEASON=2")
PED[, 1] <- as.Date(as.factor(PED[, 1]), format = "%Y %m %d")
PED.PRE[, 1] <- as.Date(PED.PRE[, 1])
colnames(PED)[2] <- "FECHA.TODAY"
colnames(PED)[1] <- "FECHA"
m <- merge(PED, PED.PRE, by = "FECHA")
# For anylisis of correlations
c <- m[, c(8, 11, 12, 13, 14, 15, 16, 22, 25:30)]
# the correlations among different variables
cor.prob <- function(X, dfr = nrow(X) - 2) {
R <- cor(X, use = "pairwise.complete.obs")
above <- row(R) < col(R)
r2 <- R[above]^2
Fstat <- r2 * dfr/(1 - r2)
R[above] <- 1 - pf(Fstat, 1, dfr)
R[row(R) == col(R)] <- NA
R
}
flattenSquareMatrix <- function(m) {
if ((class(m) != "matrix") | (nrow(m) != ncol(m)))
stop("Must be a square matrix.")
if (!identical(rownames(m), colnames(m)))
stop("Row and column names must be equal.")
ut <- upper.tri(m)
data.frame(i = rownames(m)[row(m)[ut]], j = rownames(m)[col(m)[ut]], cor = t(m)[ut],
p = m[ut])
}
cor.prob(c)
## MO3.x NOx.x NO2.x RH.x TMP.x WDR.x
## MO3.x NA 0.000000 0.00000 6.425e-10 1.143e-08 3.836e-02
## NOx.x 0.27826 NA 0.00000 8.031e-01 1.983e-01 5.071e-08
## NO2.x 0.30507 0.858684 NA 1.512e-04 1.671e-02 3.719e-08
## RH.x -0.19476 -0.007933 -0.12014 NA 0.000e+00 5.162e-03
## TMP.x 0.18015 -0.040922 0.07604 -4.605e-01 NA 3.178e-03
## WDR.x -0.06583 -0.172098 -0.17381 8.882e-02 -9.367e-02 NA
## WSP.x -0.09624 -0.299904 -0.33056 -1.056e-01 -2.937e-02 2.278e-01
## MO3.y 0.60704 0.277550 0.35064 -1.833e-01 2.609e-01 -1.104e-01
## NOx.y 0.20960 0.305059 0.32517 -7.628e-02 -1.993e-02 -1.470e-01
## NO2.y 0.23155 0.304990 0.41564 -1.584e-01 4.823e-02 -1.397e-01
## RH.y -0.20256 -0.019468 -0.11358 8.042e-01 -3.440e-01 1.024e-01
## TMP.y 0.13633 -0.102792 -0.01594 -2.935e-01 6.761e-01 -9.429e-02
## WDR.y -0.04783 -0.097590 -0.07753 6.529e-02 -6.444e-02 1.952e-01
## WSP.y -0.07260 -0.138622 -0.14313 -5.058e-02 -7.447e-02 1.057e-01
## WSP.x MO3.y NOx.y NO2.y RH.y TMP.y
## MO3.x 2.436e-03 0.000e+00 2.724e-11 1.620e-13 1.257e-10 1.675e-05
## NOx.x 0.000e+00 0.000e+00 0.000e+00 0.000e+00 5.406e-01 1.200e-03
## NO2.x 0.000e+00 0.000e+00 0.000e+00 0.000e+00 3.426e-04 6.164e-01
## RH.x 8.721e-04 6.324e-09 1.637e-02 5.485e-07 0.000e+00 0.000e+00
## TMP.x 3.559e-01 1.110e-16 5.311e-01 1.294e-01 0.000e+00 0.000e+00
## WDR.x 4.075e-13 4.994e-04 3.419e-06 1.033e-05 1.250e-03 2.982e-03
## WSP.x NA 1.335e-04 2.207e-02 9.235e-04 3.840e-02 3.476e-01
## MO3.y -1.211e-01 NA 0.000e+00 0.000e+00 3.719e-10 1.312e-09
## NOx.y -7.275e-02 2.680e-01 NA 0.000e+00 4.731e-01 3.104e-01
## NO2.y -1.051e-01 2.940e-01 8.705e-01 NA 1.940e-04 7.581e-02
## RH.y -6.582e-02 -1.974e-01 -2.283e-02 -1.182e-01 NA 0.000e+00
## TMP.y -2.988e-02 1.912e-01 -3.227e-02 5.646e-02 -4.578e-01 NA
## WDR.y 6.636e-02 -3.390e-02 -1.432e-01 -1.459e-01 7.141e-02 -4.613e-02
## WSP.y 3.142e-01 -8.223e-02 -2.798e-01 -3.204e-01 -1.056e-01 -1.763e-02
## WDR.y WSP.y
## MO3.x 1.326e-01 2.234e-02
## NOx.x 2.112e-03 1.202e-05
## NO2.x 1.469e-02 6.150e-06
## RH.x 3.997e-02 1.117e-01
## TMP.x 4.265e-02 1.911e-02
## WDR.x 5.914e-10 8.628e-04
## WSP.x 3.683e-02 0.000e+00
## MO3.y 2.866e-01 9.640e-03
## NOx.y 6.124e-06 0.000e+00
## NO2.y 4.018e-06 0.000e+00
## RH.y 2.464e-02 8.794e-04
## TMP.y 1.469e-01 5.796e-01
## WDR.y NA 5.859e-12
## WSP.y 2.164e-01 NA
flattenSquareMatrix(cor.prob(c))
## i j cor p
## 1 MO3.x NOx.x 0.278264 0.000e+00
## 2 MO3.x NO2.x 0.305074 0.000e+00
## 3 NOx.x NO2.x 0.858684 0.000e+00
## 4 MO3.x RH.x -0.194764 6.425e-10
## 5 NOx.x RH.x -0.007933 8.031e-01
## 6 NO2.x RH.x -0.120140 1.512e-04
## 7 MO3.x TMP.x 0.180154 1.143e-08
## 8 NOx.x TMP.x -0.040922 1.983e-01
## 9 NO2.x TMP.x 0.076038 1.671e-02
## 10 RH.x TMP.x -0.460465 0.000e+00
## 11 MO3.x WDR.x -0.065833 3.836e-02
## 12 NOx.x WDR.x -0.172098 5.071e-08
## 13 NO2.x WDR.x -0.173806 3.719e-08
## 14 RH.x WDR.x 0.088823 5.162e-03
## 15 TMP.x WDR.x -0.093670 3.178e-03
## 16 MO3.x WSP.x -0.096237 2.436e-03
## 17 NOx.x WSP.x -0.299904 0.000e+00
## 18 NO2.x WSP.x -0.330562 0.000e+00
## 19 RH.x WSP.x -0.105635 8.721e-04
## 20 TMP.x WSP.x -0.029374 3.559e-01
## 21 WDR.x WSP.x 0.227769 4.075e-13
## 22 MO3.x MO3.y 0.607042 0.000e+00
## 23 NOx.x MO3.y 0.277550 0.000e+00
## 24 NO2.x MO3.y 0.350635 0.000e+00
## 25 RH.x MO3.y -0.183255 6.324e-09
## 26 TMP.x MO3.y 0.260862 1.110e-16
## 27 WDR.x MO3.y -0.110437 4.994e-04
## 28 WSP.x MO3.y -0.121112 1.335e-04
## 29 MO3.x NOx.y 0.209603 2.724e-11
## 30 NOx.x NOx.y 0.305059 0.000e+00
## 31 NO2.x NOx.y 0.325172 0.000e+00
## 32 RH.x NOx.y -0.076277 1.637e-02
## 33 TMP.x NOx.y -0.019928 5.311e-01
## 34 WDR.x NOx.y -0.146976 3.419e-06
## 35 WSP.x NOx.y -0.072748 2.207e-02
## 36 MO3.y NOx.y 0.268038 0.000e+00
## 37 MO3.x NO2.y 0.231554 1.620e-13
## 38 NOx.x NO2.y 0.304990 0.000e+00
## 39 NO2.x NO2.y 0.415643 0.000e+00
## 40 RH.x NO2.y -0.158376 5.485e-07
## 41 TMP.x NO2.y 0.048227 1.294e-01
## 42 WDR.x NO2.y -0.139653 1.033e-05
## 43 WSP.x NO2.y -0.105130 9.235e-04
## 44 MO3.y NO2.y 0.294043 0.000e+00
## 45 NOx.y NO2.y 0.870510 0.000e+00
## 46 MO3.x RH.y -0.202565 1.257e-10
## 47 NOx.x RH.y -0.019468 5.406e-01
## 48 NO2.x RH.y -0.113578 3.426e-04
## 49 RH.x RH.y 0.804239 0.000e+00
## 50 TMP.x RH.y -0.344049 0.000e+00
## 51 WDR.x RH.y 0.102427 1.250e-03
## 52 WSP.x RH.y -0.065818 3.840e-02
## 53 MO3.y RH.y -0.197414 3.719e-10
## 54 NOx.y RH.y -0.022826 4.731e-01
## 55 NO2.y RH.y -0.118178 1.940e-04
## 56 MO3.x TMP.y 0.136333 1.675e-05
## 57 NOx.x TMP.y -0.102792 1.200e-03
## 58 NO2.x TMP.y -0.015939 6.164e-01
## 59 RH.x TMP.y -0.293494 0.000e+00
## 60 TMP.x TMP.y 0.676078 0.000e+00
## 61 WDR.x TMP.y -0.094289 2.982e-03
## 62 WSP.x TMP.y -0.029883 3.476e-01
## 63 MO3.y TMP.y 0.191245 1.312e-09
## 64 NOx.y TMP.y -0.032272 3.104e-01
## 65 NO2.y TMP.y 0.056457 7.581e-02
## 66 RH.y TMP.y -0.457785 0.000e+00
## 67 MO3.x WDR.y -0.047827 1.326e-01
## 68 NOx.x WDR.y -0.097590 2.112e-03
## 69 NO2.x WDR.y -0.077527 1.469e-02
## 70 RH.x WDR.y 0.065294 3.997e-02
## 71 TMP.x WDR.y -0.064439 4.265e-02
## 72 WDR.x WDR.y 0.195168 5.914e-10
## 73 WSP.x WDR.y 0.066359 3.683e-02
## 74 MO3.y WDR.y -0.033899 2.866e-01
## 75 NOx.y WDR.y -0.143160 6.124e-06
## 76 NO2.y WDR.y -0.145930 4.018e-06
## 77 RH.y WDR.y 0.071411 2.464e-02
## 78 TMP.y WDR.y -0.046132 1.469e-01
## 79 MO3.x WSP.y -0.072605 2.234e-02
## 80 NOx.x WSP.y -0.138622 1.202e-05
## 81 NO2.x WSP.y -0.143133 6.150e-06
## 82 RH.x WSP.y -0.050583 1.117e-01
## 83 TMP.x WSP.y -0.074466 1.911e-02
## 84 WDR.x WSP.y 0.105729 8.628e-04
## 85 WSP.x WSP.y 0.314230 0.000e+00
## 86 MO3.y WSP.y -0.082232 9.640e-03
## 87 NOx.y WSP.y -0.279796 0.000e+00
## 88 NO2.y WSP.y -0.320445 0.000e+00
## 89 RH.y WSP.y -0.105561 8.794e-04
## 90 TMP.y WSP.y -0.017628 5.796e-01
## 91 WDR.y WSP.y 0.216433 5.859e-12
library(zoo)
library(PerformanceAnalytics)
chart.Correlation(c)
# Normalized data
NOR <- function(x) {
(0.9 - 0.01) * (x - min(x))/(max(x) - min(x)) + 0.01
}
attach(m)
YEAR.X.NOR <- NOR(YEAR.x)
MONTH.X.NOR <- NOR(MONTH.x)
DAY.X.NOR <- NOR(DAY.x)
WEEKDAY.X.NOR <- NOR(WEEKDAY.x)
MO3.X.NOR <- NOR(MO3.x)
NOx.X.NOR <- NOR(NOx.x)
NO2.X.NOR <- NOR(NO2.x)
RH.X.NOR <- NOR(RH.x)
TMP.X.NOR <- NOR(TMP.x)
WSP.X.NOR <- NOR(WSP.x)
WDR.X.NOR <- NOR(WDR.x)
MO3.Y.NOR <- NOR(MO3.y)
NOx.Y.NOR <- NOR(NOx.y)
NO2.Y.NOR <- NOR(NO2.y)
RH.Y.NOR <- NOR(RH.y)
TMP.Y.NOR <- NOR(TMP.y)
WSP.Y.NOR <- NOR(WSP.y)
WDR.Y.NOR <- NOR(WDR.y)
N <- cbind(MO3.X.NOR, YEAR.X.NOR, MONTH.X.NOR, DAY.X.NOR, WEEKDAY.X.NOR, NOx.X.NOR,
NO2.X.NOR, RH.X.NOR, TMP.X.NOR, WSP.X.NOR, WDR.X.NOR, MO3.Y.NOR, NOx.Y.NOR,
NO2.Y.NOR, RH.Y.NOR, TMP.Y.NOR, WSP.Y.NOR, WDR.Y.NOR)
idx <- sample(1:990, 700, replace = FALSE)
TRAIN <- N[idx, ]
TEST <- N[-idx, ]
library(nnet)
# make model M1 by using 'today' data
M1 <- nnet(MO3.X.NOR ~ MO3.Y.NOR + MONTH.X.NOR + DAY.X.NOR + WEEKDAY.X.NOR +
NOx.X.NOR + NO2.X.NOR + RH.X.NOR + TMP.X.NOR + TMP.X.NOR + WDR.X.NOR + WSP.X.NOR,
data = TRAIN, size = 8, decay = 5e-04)
## # weights: 97
## initial value 51.408745
## iter 10 value 10.385174
## iter 20 value 10.145648
## iter 30 value 9.902235
## iter 40 value 9.584370
## iter 50 value 9.333714
## iter 60 value 9.197372
## iter 70 value 9.081658
## iter 80 value 8.920145
## iter 90 value 8.817130
## iter 100 value 8.685257
## final value 8.685257
## stopped after 100 iterations
P1 <- predict(M1, TEST[, -1])
par(mfrow = c(1, 1), mar = 1 + c(1, 2, 0, 0), mai = c(0.8, 0.8, 0.8, 0.8))
plot(P1, TEST[, 1], xlab = "prediction", ylab = "real data", xlim = c(0, 0.5),
ylim = c(0, 0.5), main = "M1")
lines(c(0, 0.5), c(0, 0.5), col = 2)
ERROR1 <- sum(abs(TEST[, 1] - P1)/TEST[, 1])/length(TEST[, 1]) * 100
ERROR1
## [1] 34.91
plot(TEST[, 1], type = "l", main = "read nomarized data and predict data base on M1")
lines(P1, col = "red")
# Change the numbers of the hidden neureon
ERROR1 <- 1:40
for (i in 1:40) {
M1 <- nnet(MO3.X.NOR ~ MO3.Y.NOR + MONTH.X.NOR + DAY.X.NOR + WEEKDAY.X.NOR +
NOx.X.NOR + NO2.X.NOR + RH.X.NOR + TMP.X.NOR + TMP.X.NOR + WDR.X.NOR +
WSP.X.NOR, data = TRAIN, size = i, decay = 5e-04)
P1 <- predict(M1, TEST[, -1])
ERROR1[i] <- sum(abs(TEST[, 1] - P1)/TEST[, 1])/length(TEST[, 1]) * 100
}
## # weights: 13
## initial value 28.986940
## iter 10 value 10.788155
## iter 20 value 10.300047
## iter 30 value 10.275155
## iter 40 value 10.271022
## iter 50 value 10.265949
## iter 60 value 10.264333
## iter 70 value 10.264320
## final value 10.264320
## converged
## # weights: 25
## initial value 22.351536
## iter 10 value 10.455851
## iter 20 value 10.265002
## iter 30 value 10.188950
## iter 40 value 10.160015
## iter 50 value 10.086990
## iter 60 value 10.049680
## iter 70 value 9.972182
## iter 80 value 9.919957
## iter 90 value 9.873119
## iter 100 value 9.849122
## final value 9.849122
## stopped after 100 iterations
## # weights: 37
## initial value 17.436109
## iter 10 value 10.426306
## iter 20 value 10.185131
## iter 30 value 10.153481
## iter 40 value 9.999440
## iter 50 value 9.883022
## iter 60 value 9.844416
## iter 70 value 9.827991
## iter 80 value 9.819487
## iter 90 value 9.811443
## iter 100 value 9.754816
## final value 9.754816
## stopped after 100 iterations
## # weights: 49
## initial value 43.943437
## iter 10 value 13.418594
## iter 20 value 10.225037
## iter 30 value 9.921631
## iter 40 value 9.810637
## iter 50 value 9.656432
## iter 60 value 9.581911
## iter 70 value 9.532240
## iter 80 value 9.487357
## iter 90 value 9.433122
## iter 100 value 9.406848
## final value 9.406848
## stopped after 100 iterations
## # weights: 61
## initial value 41.214636
## iter 10 value 11.313898
## iter 20 value 10.154513
## iter 30 value 9.851361
## iter 40 value 9.766544
## iter 50 value 9.708412
## iter 60 value 9.620442
## iter 70 value 9.496369
## iter 80 value 9.459107
## iter 90 value 9.439298
## iter 100 value 9.423636
## final value 9.423636
## stopped after 100 iterations
## # weights: 73
## initial value 20.462575
## iter 10 value 10.393231
## iter 20 value 10.186782
## iter 30 value 10.088664
## iter 40 value 9.865809
## iter 50 value 9.746928
## iter 60 value 9.588628
## iter 70 value 9.393889
## iter 80 value 9.232420
## iter 90 value 9.091595
## iter 100 value 9.049707
## final value 9.049707
## stopped after 100 iterations
## # weights: 85
## initial value 74.875249
## iter 10 value 16.916134
## iter 20 value 13.514386
## iter 30 value 10.316046
## iter 40 value 10.165344
## iter 50 value 9.902608
## iter 60 value 9.833599
## iter 70 value 9.750416
## iter 80 value 9.624214
## iter 90 value 9.451157
## iter 100 value 9.312809
## final value 9.312809
## stopped after 100 iterations
## # weights: 97
## initial value 150.001086
## iter 10 value 11.756801
## iter 20 value 10.335176
## iter 30 value 10.216107
## iter 40 value 10.040277
## iter 50 value 9.854742
## iter 60 value 9.696273
## iter 70 value 9.433054
## iter 80 value 9.177954
## iter 90 value 8.971913
## iter 100 value 8.860361
## final value 8.860361
## stopped after 100 iterations
## # weights: 109
## initial value 90.228024
## iter 10 value 10.897917
## iter 20 value 10.053888
## iter 30 value 9.810964
## iter 40 value 9.495196
## iter 50 value 9.273359
## iter 60 value 9.106870
## iter 70 value 9.002762
## iter 80 value 8.918492
## iter 90 value 8.819744
## iter 100 value 8.746334
## final value 8.746334
## stopped after 100 iterations
## # weights: 121
## initial value 35.610680
## iter 10 value 10.468457
## iter 20 value 10.015897
## iter 30 value 9.715125
## iter 40 value 9.377962
## iter 50 value 9.132641
## iter 60 value 8.976041
## iter 70 value 8.870548
## iter 80 value 8.730925
## iter 90 value 8.609415
## iter 100 value 8.465489
## final value 8.465489
## stopped after 100 iterations
## # weights: 133
## initial value 19.009833
## iter 10 value 10.439481
## iter 20 value 10.152567
## iter 30 value 9.849802
## iter 40 value 9.666434
## iter 50 value 9.421818
## iter 60 value 9.150597
## iter 70 value 8.907338
## iter 80 value 8.788025
## iter 90 value 8.703466
## iter 100 value 8.602414
## final value 8.602414
## stopped after 100 iterations
## # weights: 145
## initial value 19.373533
## iter 10 value 10.829139
## iter 20 value 10.213806
## iter 30 value 9.973681
## iter 40 value 9.867902
## iter 50 value 9.620718
## iter 60 value 9.389335
## iter 70 value 9.100415
## iter 80 value 8.887554
## iter 90 value 8.685288
## iter 100 value 8.424979
## final value 8.424979
## stopped after 100 iterations
## # weights: 157
## initial value 67.236111
## iter 10 value 10.467795
## iter 20 value 10.214908
## iter 30 value 9.869023
## iter 40 value 9.660336
## iter 50 value 9.400133
## iter 60 value 9.138258
## iter 70 value 8.791460
## iter 80 value 8.540580
## iter 90 value 8.368945
## iter 100 value 8.214791
## final value 8.214791
## stopped after 100 iterations
## # weights: 169
## initial value 55.416059
## iter 10 value 10.376833
## iter 20 value 9.982337
## iter 30 value 9.678957
## iter 40 value 9.344059
## iter 50 value 8.962114
## iter 60 value 8.620674
## iter 70 value 8.373568
## iter 80 value 8.217931
## iter 90 value 8.061490
## iter 100 value 7.971262
## final value 7.971262
## stopped after 100 iterations
## # weights: 181
## initial value 28.427283
## iter 10 value 10.450397
## iter 20 value 10.170167
## iter 30 value 9.911641
## iter 40 value 9.534431
## iter 50 value 9.169272
## iter 60 value 8.907864
## iter 70 value 8.572192
## iter 80 value 8.285577
## iter 90 value 8.090581
## iter 100 value 7.882594
## final value 7.882594
## stopped after 100 iterations
## # weights: 193
## initial value 56.557746
## iter 10 value 10.482232
## iter 20 value 10.168689
## iter 30 value 9.857802
## iter 40 value 9.539902
## iter 50 value 9.328052
## iter 60 value 9.025801
## iter 70 value 8.759851
## iter 80 value 8.495437
## iter 90 value 8.283227
## iter 100 value 8.027326
## final value 8.027326
## stopped after 100 iterations
## # weights: 205
## initial value 20.358846
## iter 10 value 10.403049
## iter 20 value 10.111382
## iter 30 value 9.778360
## iter 40 value 9.466260
## iter 50 value 9.157931
## iter 60 value 8.861240
## iter 70 value 8.489686
## iter 80 value 8.093591
## iter 90 value 7.847956
## iter 100 value 7.714785
## final value 7.714785
## stopped after 100 iterations
## # weights: 217
## initial value 152.674041
## iter 10 value 118.445775
## iter 20 value 118.438085
## iter 30 value 118.422554
## iter 40 value 110.803631
## iter 50 value 11.177515
## iter 60 value 10.096754
## iter 70 value 9.802921
## iter 80 value 9.538529
## iter 90 value 9.210435
## iter 100 value 8.895522
## final value 8.895522
## stopped after 100 iterations
## # weights: 229
## initial value 59.574558
## iter 10 value 10.425980
## iter 20 value 10.072752
## iter 30 value 9.829371
## iter 40 value 9.599885
## iter 50 value 9.257997
## iter 60 value 8.931624
## iter 70 value 8.609293
## iter 80 value 8.329786
## iter 90 value 8.080896
## iter 100 value 7.893810
## final value 7.893810
## stopped after 100 iterations
## # weights: 241
## initial value 187.201912
## iter 10 value 12.518088
## iter 20 value 10.351369
## iter 30 value 10.219497
## iter 40 value 10.062590
## iter 50 value 9.893933
## iter 60 value 9.760878
## iter 70 value 9.507346
## iter 80 value 9.221099
## iter 90 value 8.931350
## iter 100 value 8.618418
## final value 8.618418
## stopped after 100 iterations
## # weights: 253
## initial value 33.618054
## iter 10 value 10.476717
## iter 20 value 10.191013
## iter 30 value 9.843204
## iter 40 value 9.510786
## iter 50 value 9.175434
## iter 60 value 8.867905
## iter 70 value 8.605336
## iter 80 value 8.333436
## iter 90 value 8.131987
## iter 100 value 7.917530
## final value 7.917530
## stopped after 100 iterations
## # weights: 265
## initial value 18.949650
## iter 10 value 10.490217
## iter 20 value 10.184501
## iter 30 value 9.901912
## iter 40 value 9.616135
## iter 50 value 9.298813
## iter 60 value 8.978368
## iter 70 value 8.643044
## iter 80 value 8.381864
## iter 90 value 8.197632
## iter 100 value 7.936318
## final value 7.936318
## stopped after 100 iterations
## # weights: 277
## initial value 65.632945
## iter 10 value 10.388195
## iter 20 value 10.057156
## iter 30 value 9.855205
## iter 40 value 9.620970
## iter 50 value 9.293864
## iter 60 value 9.036937
## iter 70 value 8.691577
## iter 80 value 8.399908
## iter 90 value 8.133613
## iter 100 value 7.834279
## final value 7.834279
## stopped after 100 iterations
## # weights: 289
## initial value 17.614611
## iter 10 value 10.424011
## iter 20 value 10.116453
## iter 30 value 9.837875
## iter 40 value 9.529270
## iter 50 value 9.225875
## iter 60 value 9.059307
## iter 70 value 8.862440
## iter 80 value 8.637893
## iter 90 value 8.382104
## iter 100 value 8.120686
## final value 8.120686
## stopped after 100 iterations
## # weights: 301
## initial value 18.388973
## iter 10 value 10.392310
## iter 20 value 10.017436
## iter 30 value 9.660359
## iter 40 value 9.411068
## iter 50 value 9.104716
## iter 60 value 8.800100
## iter 70 value 8.532422
## iter 80 value 8.310092
## iter 90 value 8.080973
## iter 100 value 7.866374
## final value 7.866374
## stopped after 100 iterations
## # weights: 313
## initial value 56.051903
## iter 10 value 10.509749
## iter 20 value 10.157301
## iter 30 value 9.798746
## iter 40 value 9.379157
## iter 50 value 9.010038
## iter 60 value 8.728452
## iter 70 value 8.469544
## iter 80 value 8.253506
## iter 90 value 7.975196
## iter 100 value 7.719842
## final value 7.719842
## stopped after 100 iterations
## # weights: 325
## initial value 77.494746
## iter 10 value 10.445607
## iter 20 value 10.024627
## iter 30 value 9.791955
## iter 40 value 9.522242
## iter 50 value 9.194324
## iter 60 value 8.937476
## iter 70 value 8.732843
## iter 80 value 8.504299
## iter 90 value 8.207213
## iter 100 value 7.925461
## final value 7.925461
## stopped after 100 iterations
## # weights: 337
## initial value 26.450037
## iter 10 value 10.492590
## iter 20 value 10.151601
## iter 30 value 9.847810
## iter 40 value 9.575246
## iter 50 value 9.262786
## iter 60 value 8.978729
## iter 70 value 8.748443
## iter 80 value 8.505390
## iter 90 value 8.258865
## iter 100 value 8.027386
## final value 8.027386
## stopped after 100 iterations
## # weights: 349
## initial value 34.204696
## iter 10 value 10.611764
## iter 20 value 10.210732
## iter 30 value 9.915879
## iter 40 value 9.713101
## iter 50 value 9.412537
## iter 60 value 9.072594
## iter 70 value 8.720197
## iter 80 value 8.407971
## iter 90 value 8.163297
## iter 100 value 7.894317
## final value 7.894317
## stopped after 100 iterations
## # weights: 361
## initial value 29.935962
## iter 10 value 10.510175
## iter 20 value 10.093603
## iter 30 value 9.784244
## iter 40 value 9.457373
## iter 50 value 9.186167
## iter 60 value 8.892969
## iter 70 value 8.628668
## iter 80 value 8.360161
## iter 90 value 8.041242
## iter 100 value 7.787942
## final value 7.787942
## stopped after 100 iterations
## # weights: 373
## initial value 32.171885
## iter 10 value 10.535239
## iter 20 value 10.119610
## iter 30 value 9.811976
## iter 40 value 9.484699
## iter 50 value 9.247790
## iter 60 value 8.942341
## iter 70 value 8.633750
## iter 80 value 8.347071
## iter 90 value 8.005693
## iter 100 value 7.762128
## final value 7.762128
## stopped after 100 iterations
## # weights: 385
## initial value 30.590802
## iter 10 value 10.467808
## iter 20 value 10.122110
## iter 30 value 9.875133
## iter 40 value 9.610043
## iter 50 value 9.305929
## iter 60 value 8.965297
## iter 70 value 8.666476
## iter 80 value 8.400879
## iter 90 value 8.159128
## iter 100 value 7.906902
## final value 7.906902
## stopped after 100 iterations
## # weights: 397
## initial value 166.727239
## iter 10 value 16.430385
## iter 20 value 10.513662
## iter 30 value 10.330597
## iter 40 value 10.004999
## iter 50 value 9.750734
## iter 60 value 9.384979
## iter 70 value 9.085894
## iter 80 value 8.793699
## iter 90 value 8.577180
## iter 100 value 8.346744
## final value 8.346744
## stopped after 100 iterations
## # weights: 409
## initial value 20.486074
## iter 10 value 10.465218
## iter 20 value 10.067959
## iter 30 value 9.803297
## iter 40 value 9.453322
## iter 50 value 9.226192
## iter 60 value 8.934126
## iter 70 value 8.590637
## iter 80 value 8.322470
## iter 90 value 7.936445
## iter 100 value 7.605465
## final value 7.605465
## stopped after 100 iterations
## # weights: 421
## initial value 92.586470
## iter 10 value 10.439324
## iter 20 value 10.100062
## iter 30 value 9.738276
## iter 40 value 9.356821
## iter 50 value 9.042371
## iter 60 value 8.776614
## iter 70 value 8.522659
## iter 80 value 8.172629
## iter 90 value 7.872516
## iter 100 value 7.590632
## final value 7.590632
## stopped after 100 iterations
## # weights: 433
## initial value 150.738973
## iter 10 value 17.150962
## iter 20 value 10.394665
## iter 30 value 9.951835
## iter 40 value 9.588106
## iter 50 value 9.310002
## iter 60 value 9.068551
## iter 70 value 8.745912
## iter 80 value 8.391772
## iter 90 value 8.133650
## iter 100 value 7.871958
## final value 7.871958
## stopped after 100 iterations
## # weights: 445
## initial value 170.367222
## iter 10 value 15.634997
## iter 20 value 10.509588
## iter 30 value 10.328735
## iter 40 value 10.113255
## iter 50 value 9.858411
## iter 60 value 9.560017
## iter 70 value 9.258572
## iter 80 value 9.044072
## iter 90 value 8.877926
## iter 100 value 8.730336
## final value 8.730336
## stopped after 100 iterations
## # weights: 457
## initial value 93.923179
## iter 10 value 10.571361
## iter 20 value 10.114386
## iter 30 value 9.815508
## iter 40 value 9.508556
## iter 50 value 9.173807
## iter 60 value 8.792316
## iter 70 value 8.411324
## iter 80 value 7.961719
## iter 90 value 7.675452
## iter 100 value 7.466712
## final value 7.466712
## stopped after 100 iterations
## # weights: 469
## initial value 44.914046
## iter 10 value 10.510362
## iter 20 value 10.243336
## iter 30 value 9.915169
## iter 40 value 9.622003
## iter 50 value 9.301131
## iter 60 value 9.077904
## iter 70 value 8.772418
## iter 80 value 8.559952
## iter 90 value 8.322769
## iter 100 value 8.034231
## final value 8.034231
## stopped after 100 iterations
## # weights: 481
## initial value 34.782902
## iter 10 value 10.450810
## iter 20 value 10.105930
## iter 30 value 9.823532
## iter 40 value 9.522224
## iter 50 value 9.233587
## iter 60 value 8.944405
## iter 70 value 8.682744
## iter 80 value 8.359557
## iter 90 value 8.097463
## iter 100 value 7.880739
## final value 7.880739
## stopped after 100 iterations
ERROR1
## [1] 35.66 34.99 35.95 35.18 34.46 35.96 34.58 35.23 35.58 36.44 34.39
## [12] 35.21 36.47 35.93 35.75 35.88 37.69 34.71 36.14 36.73 37.93 36.81
## [23] 38.47 36.38 36.14 36.71 36.30 37.64 36.36 37.10 36.12 37.01 36.11
## [34] 37.67 35.81 36.37 35.26 37.93 36.09 38.47
# Find the models which has the lowest error
MIN.INDEX <- which(ERROR1 == min(ERROR1))
M1 <- nnet(MO3.X.NOR ~ MO3.Y.NOR + MONTH.X.NOR + DAY.X.NOR + WEEKDAY.X.NOR +
NOx.X.NOR + NO2.X.NOR + RH.X.NOR + TMP.X.NOR + TMP.X.NOR + WDR.X.NOR + WSP.X.NOR,
data = TRAIN, size = MIN.INDEX, decay = 5e-04)
## # weights: 133
## initial value 39.208695
## iter 10 value 10.501840
## iter 20 value 10.135566
## iter 30 value 9.837359
## iter 40 value 9.558716
## iter 50 value 9.276522
## iter 60 value 8.989361
## iter 70 value 8.756376
## iter 80 value 8.588694
## iter 90 value 8.439607
## iter 100 value 8.339447
## final value 8.339447
## stopped after 100 iterations
P1 <- predict(M1, TEST[, -1])
par(mfrow = c(1, 1), mar = 1 + c(1, 2, 0, 0), mai = c(0.8, 0.8, 0.8, 0.8))
plot(P1, TEST[, 1], xlab = "prediction", ylab = "real data", xlim = c(0, 0.5),
ylim = c(0, 0.5), main = "M1")
lines(c(0, 0.5), c(0, 0.5), col = 2)
ERROR.M1 <- sum(abs(TEST[, 1] - P1)/TEST[, 1])/length(TEST[, 1]) * 100
ERROR.M1
## [1] 36.75
plot(TEST[, 1], type = "l", main = "read nomarized data and predict data base on M1")
lines(P1, col = "red")
attach(m)
## The following object(s) are masked from 'm (position 4)':
##
## DAY.x, DAY.y, FECHA, FECHA.TODAY, MO3.x, MO3.y, MONTH.x,
## MONTH.y, NO2.x, NO2.y, NO3.x, NO3.y, NOx.x, NOx.y, RH.x, RH.y,
## SEASON.x, SEASON.y, SO3.x, SO3.y, TMP.x, TMP.y, WDR.x, WDR.y,
## WEEKDAY.x, WEEKDAY.y, WSP.x, WSP.y, YEAR.x, YEAR.y
PR.P1 <- (P1 - 0.01) * (max(MO3.x) - min(MO3.x))/(0.9 - 0.01) + min(MO3.x)
TRU.P1 <- MO3.x[-idx]
plot(PR.P1[, 1], type = "l", main = "read data and predict data base on M1")
lines(TRU.P1, col = "red")
# high level and low level for M1
PR.P1[PR.P1 > 0.11] <- 1
PR.P1[PR.P1 <= 0.11] <- 0
TRU.P1[TRU.P1 > 0.11] <- 1
TRU.P1[TRU.P1 <= 0.11] <- 0
table(PR.P1, TRU.P1)
## TRU.P1
## PR.P1 0 1
## 0 56 21
## 1 44 169
tab <- table(PR.P1, TRU.P1)
classAgreement(tab)
## Error: could not find function "classAgreement"
# make model M2 by using 'yesterday' data
M2 <- nnet(MO3.X.NOR ~ MO3.Y.NOR + MONTH.X.NOR + DAY.X.NOR + WEEKDAY.X.NOR +
NOx.Y.NOR + NO2.Y.NOR + RH.Y.NOR + TMP.Y.NOR + TMP.Y.NOR + WDR.Y.NOR + WSP.Y.NOR,
data = TRAIN, size = 8, decay = 5e-04)
## # weights: 97
## initial value 19.466401
## iter 10 value 10.550576
## iter 20 value 10.223483
## iter 30 value 9.846669
## iter 40 value 9.525971
## iter 50 value 9.340799
## iter 60 value 9.198940
## iter 70 value 9.065864
## iter 80 value 8.975063
## iter 90 value 8.865638
## iter 100 value 8.789362
## final value 8.789362
## stopped after 100 iterations
P2 <- predict(M2, TEST[, -1])
par(mfrow = c(1, 1), mar = 1 + c(1, 2, 0, 0), mai = c(0.8, 0.8, 0.8, 0.8))
plot(P2, TEST[, 1], xlab = "prediction", ylab = "real data", xlim = c(0, 0.5),
ylim = c(0, 0.5), main = "M2")
lines(c(0, 0.5), c(0, 0.5), col = 2)
ERROR2 <- sum(abs(TEST[, 1] - P2)/TEST[, 1])/length(TEST[, 1]) * 100
ERROR2
## [1] 39.12
plot(TEST[, 1], type = "l", main = "read normanized data and predict data base on M2")
lines(P2, col = "red")
# Change the numbers of the hidden neureon
ERROR2 <- 1:40
for (i in 1:40) {
M2 <- nnet(MO3.X.NOR ~ MO3.Y.NOR + MONTH.X.NOR + DAY.X.NOR + WEEKDAY.X.NOR +
NOx.Y.NOR + NO2.Y.NOR + RH.Y.NOR + TMP.Y.NOR + TMP.Y.NOR + WDR.Y.NOR +
WSP.Y.NOR, data = TRAIN, size = i, decay = 5e-04)
P2 <- predict(M2, TEST[, -1])
ERROR2[i] <- sum(abs(TEST[, 1] - P2)/TEST[, 1])/length(TEST[, 1]) * 100
}
## # weights: 13
## initial value 45.081333
## iter 10 value 10.567441
## iter 20 value 10.445780
## iter 30 value 10.443312
## iter 40 value 10.442402
## iter 50 value 10.442184
## final value 10.442166
## converged
## # weights: 25
## initial value 30.855362
## iter 10 value 10.879767
## iter 20 value 10.472956
## iter 30 value 10.311841
## iter 40 value 10.219906
## iter 50 value 10.200781
## iter 60 value 10.178298
## iter 70 value 10.137411
## iter 80 value 10.119442
## iter 90 value 10.107250
## iter 100 value 10.102416
## final value 10.102416
## stopped after 100 iterations
## # weights: 37
## initial value 29.512201
## iter 10 value 10.763685
## iter 20 value 10.441989
## iter 30 value 10.255494
## iter 40 value 10.097609
## iter 50 value 9.922074
## iter 60 value 9.797980
## iter 70 value 9.780542
## iter 80 value 9.775322
## iter 90 value 9.767632
## iter 100 value 9.716732
## final value 9.716732
## stopped after 100 iterations
## # weights: 49
## initial value 16.697446
## iter 10 value 10.651130
## iter 20 value 10.282319
## iter 30 value 10.024251
## iter 40 value 9.784033
## iter 50 value 9.679673
## iter 60 value 9.620541
## iter 70 value 9.577481
## iter 80 value 9.524170
## iter 90 value 9.479296
## iter 100 value 9.411270
## final value 9.411270
## stopped after 100 iterations
## # weights: 61
## initial value 17.346406
## iter 10 value 10.547264
## iter 20 value 10.284120
## iter 30 value 10.067733
## iter 40 value 9.811893
## iter 50 value 9.649082
## iter 60 value 9.489816
## iter 70 value 9.331087
## iter 80 value 9.267463
## iter 90 value 9.247021
## iter 100 value 9.234670
## final value 9.234670
## stopped after 100 iterations
## # weights: 73
## initial value 23.272880
## iter 10 value 10.926992
## iter 20 value 10.227059
## iter 30 value 10.054788
## iter 40 value 9.929774
## iter 50 value 9.629992
## iter 60 value 9.426889
## iter 70 value 9.266333
## iter 80 value 9.182012
## iter 90 value 9.111299
## iter 100 value 9.043969
## final value 9.043969
## stopped after 100 iterations
## # weights: 85
## initial value 20.027152
## iter 10 value 10.593331
## iter 20 value 10.188911
## iter 30 value 9.907416
## iter 40 value 9.609453
## iter 50 value 9.421203
## iter 60 value 9.288881
## iter 70 value 9.160235
## iter 80 value 9.082645
## iter 90 value 8.994990
## iter 100 value 8.872254
## final value 8.872254
## stopped after 100 iterations
## # weights: 97
## initial value 20.833001
## iter 10 value 10.585233
## iter 20 value 10.059640
## iter 30 value 9.683944
## iter 40 value 9.414027
## iter 50 value 9.159930
## iter 60 value 8.985580
## iter 70 value 8.832944
## iter 80 value 8.742724
## iter 90 value 8.690434
## iter 100 value 8.639589
## final value 8.639589
## stopped after 100 iterations
## # weights: 109
## initial value 22.756820
## iter 10 value 10.811484
## iter 20 value 10.255634
## iter 30 value 9.916028
## iter 40 value 9.490939
## iter 50 value 9.264384
## iter 60 value 9.048517
## iter 70 value 8.892827
## iter 80 value 8.766009
## iter 90 value 8.608476
## iter 100 value 8.496465
## final value 8.496465
## stopped after 100 iterations
## # weights: 121
## initial value 66.481829
## iter 10 value 10.638289
## iter 20 value 10.304375
## iter 30 value 9.935851
## iter 40 value 9.565876
## iter 50 value 9.286984
## iter 60 value 9.133520
## iter 70 value 8.925278
## iter 80 value 8.774598
## iter 90 value 8.649634
## iter 100 value 8.535714
## final value 8.535714
## stopped after 100 iterations
## # weights: 133
## initial value 18.239540
## iter 10 value 10.560249
## iter 20 value 10.219797
## iter 30 value 9.784797
## iter 40 value 9.456808
## iter 50 value 9.270233
## iter 60 value 9.082233
## iter 70 value 8.917249
## iter 80 value 8.795861
## iter 90 value 8.708721
## iter 100 value 8.625701
## final value 8.625701
## stopped after 100 iterations
## # weights: 145
## initial value 46.053255
## iter 10 value 10.771260
## iter 20 value 10.303656
## iter 30 value 9.796510
## iter 40 value 9.487482
## iter 50 value 9.270805
## iter 60 value 9.035985
## iter 70 value 8.817527
## iter 80 value 8.655844
## iter 90 value 8.505869
## iter 100 value 8.400183
## final value 8.400183
## stopped after 100 iterations
## # weights: 157
## initial value 23.377295
## iter 10 value 10.577181
## iter 20 value 10.094064
## iter 30 value 9.603390
## iter 40 value 9.392173
## iter 50 value 9.220850
## iter 60 value 9.017544
## iter 70 value 8.791172
## iter 80 value 8.532678
## iter 90 value 8.308013
## iter 100 value 8.174806
## final value 8.174806
## stopped after 100 iterations
## # weights: 169
## initial value 46.102072
## iter 10 value 10.614793
## iter 20 value 10.212311
## iter 30 value 9.828534
## iter 40 value 9.459761
## iter 50 value 9.189397
## iter 60 value 8.910987
## iter 70 value 8.635923
## iter 80 value 8.473649
## iter 90 value 8.350011
## iter 100 value 8.262850
## final value 8.262850
## stopped after 100 iterations
## # weights: 181
## initial value 48.383769
## iter 10 value 10.609526
## iter 20 value 10.234868
## iter 30 value 9.857435
## iter 40 value 9.498123
## iter 50 value 9.294116
## iter 60 value 9.120224
## iter 70 value 8.958297
## iter 80 value 8.797929
## iter 90 value 8.616614
## iter 100 value 8.349720
## final value 8.349720
## stopped after 100 iterations
## # weights: 193
## initial value 77.729692
## iter 10 value 10.581514
## iter 20 value 10.199418
## iter 30 value 9.660319
## iter 40 value 9.437695
## iter 50 value 9.234271
## iter 60 value 9.009918
## iter 70 value 8.767440
## iter 80 value 8.493936
## iter 90 value 8.259739
## iter 100 value 8.093665
## final value 8.093665
## stopped after 100 iterations
## # weights: 205
## initial value 15.979001
## iter 10 value 10.609846
## iter 20 value 10.251711
## iter 30 value 9.781173
## iter 40 value 9.479568
## iter 50 value 9.263174
## iter 60 value 9.063416
## iter 70 value 8.838921
## iter 80 value 8.629308
## iter 90 value 8.428126
## iter 100 value 8.155503
## final value 8.155503
## stopped after 100 iterations
## # weights: 217
## initial value 40.590926
## iter 10 value 10.609088
## iter 20 value 10.086906
## iter 30 value 9.608480
## iter 40 value 9.321499
## iter 50 value 9.128397
## iter 60 value 8.940250
## iter 70 value 8.760519
## iter 80 value 8.556838
## iter 90 value 8.382366
## iter 100 value 8.213975
## final value 8.213975
## stopped after 100 iterations
## # weights: 229
## initial value 86.502569
## iter 10 value 10.667970
## iter 20 value 10.253791
## iter 30 value 9.774423
## iter 40 value 9.554976
## iter 50 value 9.338808
## iter 60 value 9.190624
## iter 70 value 8.934322
## iter 80 value 8.613606
## iter 90 value 8.286784
## iter 100 value 7.913215
## final value 7.913215
## stopped after 100 iterations
## # weights: 241
## initial value 20.620902
## iter 10 value 10.604085
## iter 20 value 10.281207
## iter 30 value 9.899125
## iter 40 value 9.584194
## iter 50 value 9.301930
## iter 60 value 9.108575
## iter 70 value 8.924179
## iter 80 value 8.693476
## iter 90 value 8.458885
## iter 100 value 8.175919
## final value 8.175919
## stopped after 100 iterations
## # weights: 253
## initial value 15.755617
## iter 10 value 10.563610
## iter 20 value 10.116025
## iter 30 value 9.704495
## iter 40 value 9.466595
## iter 50 value 9.270621
## iter 60 value 8.959151
## iter 70 value 8.671408
## iter 80 value 8.386867
## iter 90 value 8.180540
## iter 100 value 7.946168
## final value 7.946168
## stopped after 100 iterations
## # weights: 265
## initial value 36.454695
## iter 10 value 10.627171
## iter 20 value 10.158468
## iter 30 value 9.625700
## iter 40 value 9.381958
## iter 50 value 9.024644
## iter 60 value 8.771238
## iter 70 value 8.486831
## iter 80 value 8.244751
## iter 90 value 7.979700
## iter 100 value 7.759017
## final value 7.759017
## stopped after 100 iterations
## # weights: 277
## initial value 19.296934
## iter 10 value 10.557119
## iter 20 value 10.063749
## iter 30 value 9.690315
## iter 40 value 9.412678
## iter 50 value 9.066636
## iter 60 value 8.831800
## iter 70 value 8.605103
## iter 80 value 8.395827
## iter 90 value 8.201004
## iter 100 value 8.032911
## final value 8.032911
## stopped after 100 iterations
## # weights: 289
## initial value 26.673924
## iter 10 value 10.613569
## iter 20 value 10.279017
## iter 30 value 9.659201
## iter 40 value 9.369076
## iter 50 value 9.167990
## iter 60 value 8.899548
## iter 70 value 8.644355
## iter 80 value 8.421981
## iter 90 value 8.188220
## iter 100 value 7.942901
## final value 7.942901
## stopped after 100 iterations
## # weights: 301
## initial value 20.945862
## iter 10 value 10.739678
## iter 20 value 10.162749
## iter 30 value 9.625620
## iter 40 value 9.304800
## iter 50 value 9.064803
## iter 60 value 8.816498
## iter 70 value 8.574568
## iter 80 value 8.251364
## iter 90 value 7.939949
## iter 100 value 7.628522
## final value 7.628522
## stopped after 100 iterations
## # weights: 313
## initial value 56.603708
## iter 10 value 10.830688
## iter 20 value 10.425500
## iter 30 value 9.934356
## iter 40 value 9.582403
## iter 50 value 9.296050
## iter 60 value 9.049252
## iter 70 value 8.789028
## iter 80 value 8.554029
## iter 90 value 8.289779
## iter 100 value 8.033571
## final value 8.033571
## stopped after 100 iterations
## # weights: 325
## initial value 33.337706
## iter 10 value 10.627502
## iter 20 value 10.165402
## iter 30 value 9.748774
## iter 40 value 9.490486
## iter 50 value 9.237805
## iter 60 value 9.064201
## iter 70 value 8.876208
## iter 80 value 8.686206
## iter 90 value 8.519046
## iter 100 value 8.351757
## final value 8.351757
## stopped after 100 iterations
## # weights: 337
## initial value 125.012454
## iter 10 value 73.499718
## iter 20 value 10.552583
## iter 30 value 9.938472
## iter 40 value 9.557039
## iter 50 value 9.319824
## iter 60 value 9.077245
## iter 70 value 8.762146
## iter 80 value 8.531886
## iter 90 value 8.370793
## iter 100 value 8.181032
## final value 8.181032
## stopped after 100 iterations
## # weights: 349
## initial value 64.831529
## iter 10 value 10.649865
## iter 20 value 10.367803
## iter 30 value 9.773649
## iter 40 value 9.479740
## iter 50 value 9.229297
## iter 60 value 8.990649
## iter 70 value 8.775745
## iter 80 value 8.516884
## iter 90 value 8.323632
## iter 100 value 8.113781
## final value 8.113781
## stopped after 100 iterations
## # weights: 361
## initial value 137.500892
## iter 10 value 117.963656
## iter 20 value 10.663726
## iter 30 value 9.949820
## iter 40 value 9.692726
## iter 50 value 9.423745
## iter 60 value 9.162128
## iter 70 value 8.854377
## iter 80 value 8.535086
## iter 90 value 8.140187
## iter 100 value 7.845834
## final value 7.845834
## stopped after 100 iterations
## # weights: 373
## initial value 65.141617
## iter 10 value 10.681716
## iter 20 value 10.380437
## iter 30 value 9.842533
## iter 40 value 9.574027
## iter 50 value 9.303325
## iter 60 value 9.053013
## iter 70 value 8.808005
## iter 80 value 8.534628
## iter 90 value 8.268011
## iter 100 value 8.007572
## final value 8.007572
## stopped after 100 iterations
## # weights: 385
## initial value 115.151474
## iter 10 value 10.620663
## iter 20 value 10.170229
## iter 30 value 9.713044
## iter 40 value 9.459641
## iter 50 value 9.191417
## iter 60 value 8.950823
## iter 70 value 8.711990
## iter 80 value 8.473290
## iter 90 value 8.235627
## iter 100 value 8.012703
## final value 8.012703
## stopped after 100 iterations
## # weights: 397
## initial value 21.433188
## iter 10 value 10.624613
## iter 20 value 10.238815
## iter 30 value 9.651406
## iter 40 value 9.363760
## iter 50 value 9.153155
## iter 60 value 8.920084
## iter 70 value 8.654253
## iter 80 value 8.426069
## iter 90 value 8.196596
## iter 100 value 7.975754
## final value 7.975754
## stopped after 100 iterations
## # weights: 409
## initial value 25.137466
## iter 10 value 10.588197
## iter 20 value 10.016260
## iter 30 value 9.679468
## iter 40 value 9.461074
## iter 50 value 9.252295
## iter 60 value 9.079236
## iter 70 value 8.788309
## iter 80 value 8.507686
## iter 90 value 8.250431
## iter 100 value 7.990087
## final value 7.990087
## stopped after 100 iterations
## # weights: 421
## initial value 19.608375
## iter 10 value 10.578113
## iter 20 value 10.085153
## iter 30 value 9.668090
## iter 40 value 9.432918
## iter 50 value 9.156918
## iter 60 value 8.874887
## iter 70 value 8.523206
## iter 80 value 8.260940
## iter 90 value 7.997393
## iter 100 value 7.816086
## final value 7.816086
## stopped after 100 iterations
## # weights: 433
## initial value 92.089806
## iter 10 value 10.598619
## iter 20 value 10.019777
## iter 30 value 9.699492
## iter 40 value 9.404195
## iter 50 value 9.128652
## iter 60 value 8.806948
## iter 70 value 8.494726
## iter 80 value 8.298901
## iter 90 value 8.154210
## iter 100 value 7.990099
## final value 7.990099
## stopped after 100 iterations
## # weights: 445
## initial value 45.717773
## iter 10 value 10.651323
## iter 20 value 10.179473
## iter 30 value 9.749082
## iter 40 value 9.447463
## iter 50 value 9.160261
## iter 60 value 8.937353
## iter 70 value 8.666195
## iter 80 value 8.375923
## iter 90 value 8.038623
## iter 100 value 7.699654
## final value 7.699654
## stopped after 100 iterations
## # weights: 457
## initial value 15.875720
## iter 10 value 10.590126
## iter 20 value 10.208099
## iter 30 value 9.708516
## iter 40 value 9.397691
## iter 50 value 9.135038
## iter 60 value 8.790496
## iter 70 value 8.463375
## iter 80 value 8.133581
## iter 90 value 7.851941
## iter 100 value 7.590204
## final value 7.590204
## stopped after 100 iterations
## # weights: 469
## initial value 23.369549
## iter 10 value 10.592113
## iter 20 value 10.153401
## iter 30 value 9.777987
## iter 40 value 9.544388
## iter 50 value 9.352396
## iter 60 value 9.109067
## iter 70 value 8.814580
## iter 80 value 8.557572
## iter 90 value 8.293009
## iter 100 value 7.989150
## final value 7.989150
## stopped after 100 iterations
## # weights: 481
## initial value 216.955862
## iter 10 value 16.324625
## iter 20 value 10.613936
## iter 30 value 10.428193
## iter 40 value 10.222785
## iter 50 value 10.021650
## iter 60 value 9.844632
## iter 70 value 9.603005
## iter 80 value 9.393159
## iter 90 value 9.215434
## iter 100 value 9.118177
## final value 9.118177
## stopped after 100 iterations
# Find the models which has the lowest error
MIN.INDEX <- which(ERROR2 == min(ERROR2))
M2 <- nnet(MO3.X.NOR ~ MO3.Y.NOR + MONTH.X.NOR + DAY.X.NOR + WEEKDAY.X.NOR +
NOx.Y.NOR + NO2.Y.NOR + RH.Y.NOR + TMP.Y.NOR + TMP.Y.NOR + WDR.Y.NOR + WSP.Y.NOR,
data = TRAIN, size = MIN.INDEX, decay = 5e-04)
## # weights: 13
## initial value 31.740282
## iter 10 value 10.467798
## iter 20 value 10.442619
## iter 30 value 10.442258
## iter 40 value 10.442194
## iter 50 value 10.442167
## final value 10.442166
## converged
P2 <- predict(M2, TEST[, -1])
attach(m)
## The following object(s) are masked from 'm (position 3)':
##
## DAY.x, DAY.y, FECHA, FECHA.TODAY, MO3.x, MO3.y, MONTH.x,
## MONTH.y, NO2.x, NO2.y, NO3.x, NO3.y, NOx.x, NOx.y, RH.x, RH.y,
## SEASON.x, SEASON.y, SO3.x, SO3.y, TMP.x, TMP.y, WDR.x, WDR.y,
## WEEKDAY.x, WEEKDAY.y, WSP.x, WSP.y, YEAR.x, YEAR.y
## The following object(s) are masked from 'm (position 5)':
##
## DAY.x, DAY.y, FECHA, FECHA.TODAY, MO3.x, MO3.y, MONTH.x,
## MONTH.y, NO2.x, NO2.y, NO3.x, NO3.y, NOx.x, NOx.y, RH.x, RH.y,
## SEASON.x, SEASON.y, SO3.x, SO3.y, TMP.x, TMP.y, WDR.x, WDR.y,
## WEEKDAY.x, WEEKDAY.y, WSP.x, WSP.y, YEAR.x, YEAR.y
PR.P2 <- (P2 - 0.01) * (max(MO3.x) - min(MO3.x))/(0.9 - 0.01) + min(MO3.x)
TRU.P2 <- MO3.x[-idx]
plot(PR.P2[, 1], type = "l", main = "read data and predict data base on M2")
lines(TRU.P2, col = "red")
# High level and low level for M2
PR.P2[PR.P2 > 0.11] <- 1
PR.P2[PR.P2 <= 0.11] <- 0
TRU.P2[TRU.P2 > 0.11] <- 1
TRU.P2[TRU.P2 <= 0.11] <- 0
tab <- table(PR.P2, TRU.P2)
classAgreement(tab)
## Error: could not find function "classAgreement"
# get 'today'data from database Prepare the data for classfication
TD.CF <- m[, c(3:6, 8, 11:16, 22)]
TD.CF[, 5][which(TD.CF$MO3.x > 0.11)] <- 1
TD.CF[, 5][which(TD.CF$MO3.x <= 0.11)] <- 0
TD.CF[, 5] <- as.factor(TD.CF[, 5])
# seperate two database into 'train' and 'test'
TD.CF.TRAIN <- TD.CF[idx, ]
TD.CF.TEST <- TD.CF[-idx, ]
library(e1071)
# Adopt the SVM for classification by kernels=radial
radial <- function(c, g, ep, type) {
if (type == 1) {
svm.model <- svm(MO3.x ~ ., data = TD.CF.TRAIN, cost = c, gamma = g,
epsilon = ep)
}
if (type == 2) {
svm.model <- svm(MO3.x ~ ., data = TD.CF.TRAIN, cost = c, gamma = g,
epsilon = ep, kernel = "sigmoid")
}
svm.pred <- predict(svm.model, TD.CF.TEST[, -5])
tab <- table(svm.pred, TD.CF.TEST[, 5])
result = list(tab, classAgreement(tab))
return(result)
}
radial(10, 1, 0.1, 1)
## [[1]]
##
## svm.pred 0 1
## 0 15 0
## 1 85 190
##
## [[2]]
## [[2]]$diag
## [1] 0.7069
##
## [[2]]$kappa
## [1] 0.1878
##
## [[2]]$rand
## [1] 0.5842
##
## [[2]]$crand
## [1] 0.1011
radial(10, 0.001, 0.1, 2)
## [[1]]
##
## svm.pred 0 1
## 0 43 10
## 1 57 180
##
## [[2]]
## [[2]]$diag
## [1] 0.769
##
## [[2]]$kappa
## [1] 0.4246
##
## [[2]]$rand
## [1] 0.6435
##
## [[2]]$crand
## [1] 0.2593
radial(10, 1e-05, 0.1)
## Error: 'type' is missing
radial(10, 0.005, 0.1)
## Error: 'type' is missing
radial(10, 0.001, 0.001)
## Error: 'type' is missing
radial(100, 0.001, 0.001)
## Error: 'type' is missing
# Adopt the SVM for classification by kernels=radial
# Prepare the data for regression
TD.RS <- m[, c(3:6, 8, 11:16, 22)]
TD.RS.TRAIN <- TD.RS[idx, ]
TD.RS.TEST <- TD.RS[-idx, ]
# Adopt the SVM for regression by kernels=radial
radial <- function(c, g, ep) {
svm.model <- svm(MO3.x ~ ., data = TD.RS.TRAIN, cost = c, gamma = g, epsilon = ep)
svm.pred <- predict(svm.model, TD.RS.TEST[, -5])
MSE <- crossprod(svm.pred - TD.RS.TEST[, 5])/length(TD.RS.TEST[, 5])
plot(TD.RS.TEST[, 5], type = "l", main = "")
title(main = paste("radial,cost=", c, "gamma=", g, "epsilon=", ep, "MSE=",
MSE), cex.main = 1, font.main = 4, col.main = "blue")
lines(svm.pred, col = "red")
}
radial(10, 1, 0.1)
radial(10, 0.001, 0.1)
radial(10, 1e-05, 0.1)
radial(10, 0.005, 0.1)
radial(10, 0.001, 0.001)
radial(100, 0.001, 0.001)
# Adopt the SVM for regression by kernels=radial