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)