doit <- function(models, x, psum, wsum, w, p)
	{psum <- 0
        wsum <- 0
        for (m in models)
         {
          w <- exp( 0.5 * m$value)    
          # w <- exp( m$value)
          # w <- m$value
          # w <- m$value^2
          # w <- sum(m$residual ^ 2)
          w <- 1 / w
          p <- predict(m, newdata= x, type="raw")
          psum <- psum +  w * p
          wsum <- wsum + w
         }
        psum / wsum}


avep <- doit(models=list(checker.net,checker.net1,checker.net2,
                        # nn.int,nn.int1,nn.int2,
                         nn.3sz, nn.3sz1, nn.3sz2,
                         nn.4sz, nn.4sz1, nn.4sz2,
                         nn.5sz, nn.5sz1, nn.5sz2,
                         ), 
             x = xgrid)

quartz()
plot(0,0,xlim=x1.range, ylim = x2.range,
     xlab = "x1", ylab = "x2", type ="n" )
title("Weighted average NN ")
points(checker.train[checker.train[,"y"] == 0, c("x1", "x2")], pch="0",
        col="red", cex=1.2)
points(checker.train[checker.train[,"y"] == 1, c("x1", "x2")], pch="+",
        col="blue", cex=1.2)


z <- matrix(avep, nrow = 21, ncol = 21, byrow = FALSE)
contour(x=unique(xgrid[,1]), y=unique(xgrid[,2]),
        z, 
        levels = 0.5, 
        add=T, 
        lty=1, col="brown", lwd=2)
contour(x=unique(xgrid[,1]), y=unique(xgrid[,2]),
        z, 
        levels =c(1/11, 10/11), 
        add=T, 
        lty=2, col="brown", lwd=2)
# Look at misclassification probabilities
#
#  On the training data
#
p <- doit(models=list(checker.net,checker.net1,checker.net2,
                        # nn.int,nn.int1,nn.int2,
                         nn.3sz, nn.3sz1, nn.3sz2,
                         nn.4sz, nn.4sz1, nn.4sz2,
                         nn.5sz, nn.5sz1, nn.5sz2,
                         ), 
             x = checker.train)
table(checker.train[,"y"],  p > 0.5)
 
#
#  On the test data
#
p <- doit(models=list(checker.net,checker.net1,checker.net2,
                       #  nn.int,nn.int1,nn.int2,
                         nn.3sz, nn.3sz1, nn.3sz2,
                         nn.4sz, nn.4sz1, nn.4sz2,
                         nn.5sz, nn.5sz1, nn.5sz2,
                         ), 
             x = checker.test)
table(checker.test[,"y"],  p > 0.5)