I know it's been a while since @Ganesh posted this question, but hopefully you're still interested in a response. I've written some R code that does what you want, I think: library(ggplot2) library(MASS) ################################################# ################################################# ## Steps: ## ## 1. draw b 'blue' points and r 'red' points ## ## 2. perform LDA ## ## 3. check error rate ## ################################################# ################################################# ################################################## # function: drawPoints # # # # description: draws b + r points uniformly from # # a unit square # # # # inputs: b - number of 'blue' points to draw # # r - number of 'red' points to draw # # # # outputs: data frame containing points # ################################################## drawPoints <- function(b,r) { x <- runif(b+r) y <- runif(b+r) class <- c(rep('b',b),rep('r',r)) return(data.frame(x = x, y = y, class = class)) } ################################################## # function: checkOverlap # # # # description: if the data is linearly separable # # there is no overlap in the convex # # hulls of the different classes # # # # inputs: df - data frame containing classified # # points # # # # outputs: FALSE if 0 error rate # # TRUE otherwise # ################################################## checkOverlap <- function(df) { disc.anal <- lda(class ~ x + y, data = df) return(!identical(predict(disc.anal)$class,df$class)) } ###################################################### ###################################################### ## Simulate many trials to estimate rate of overlap ## ###################################################### ###################################################### trials <- 1000 performance <- rep(as.numeric(NA),10) for(i in 1:10) { results <- replicate(n = trials, expr = checkOverlap(drawPoints(10,i))) performance[i] <- prop.table(table(results))['TRUE'] } qplot(x = 1:length(performance), y = performance, xlab = 'Number of Red Points', ylab = 'Proportion of Simulations with Overlap', main = 'Proportion of Simulations with Overlap, 10 Blue Points')