Title

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")

plot of chunk blk2

bwplot(season ~ so3 | year, data = y, main = "Maximum O3 base on seasons")

plot of chunk blk2

# 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)

plot of chunk blk2

# 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)

plot of chunk blk2

# 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)

plot of chunk blk2

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")

plot of chunk blk2

# 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)

plot of chunk blk2

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")

plot of chunk blk2

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")

plot of chunk blk2

# 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)

plot of chunk blk2

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")

plot of chunk blk2

# 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")

plot of chunk blk2

# 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)

plot of chunk blk2

radial(10, 0.001, 0.1)

plot of chunk blk2

radial(10, 1e-05, 0.1)

plot of chunk blk2

radial(10, 0.005, 0.1)

plot of chunk blk2

radial(10, 0.001, 0.001)

plot of chunk blk2

radial(100, 0.001, 0.001)

plot of chunk blk2


# Adopt the SVM for regression by kernels=radial