Hello. I've tried to port Java code for Jenks optimization classification method "natural break" to R, although far from smart coding.
My java code was ported Jenks's Basic code and I checked these results compared to results of ArcView 3.x. Jenks method derived from Fischer, but seems to be a little different in the algorithm. My code's results are similar to results of current ArcGIS's, but not equal to them. Accordindg to Murray, A. T. & Shyy, T. K.'s papaer (IJGIS, 2000, 14-7, 649-667, http://geog-www.sbs.ohio-state.edu/faculty/murray/personal/research/crimepubs/murray-shyy2000.pdf), there are difference between ArcGIS's and MapInfo's. How about Autodesk's Map Guide Open Source which has employed Jenks's method as a function. Could you try my following code and add this into your classInt package if you like? Regards. else if (style == "fisher") { ---- cut ---- cut ---- cut ---- cut ---- cut ---- } else if (style == "Jenks") { # Jenks Optimisation Method d<- sort(var) #work<-matrix(0,k,length(d)) mat1<-matrix(1,length(d),k) mat2<-matrix(0,length(d),k) mat2[2:length(d),1:k]<-10000000 #R's max double value? v<-0 for(l in 2:length(d)){ s1=s2=w=0 for(m in 1:l){ i3 <- l - m + 1 val <- d[i3] s2 <- s2 + val * val s1 <- s1 + val w<-w+1 v <- s2 - (s1 * s1) / w i4 <- trunc(i3 - 1) if(i4 !=0){ for(j in 2:k){ if(mat2[l,j] >= (v + mat2[i4, j - 1])){ mat1[l,j] <- i3 mat2[l,j] <- v + mat2[i4, j - 1] } } } } mat1[l,1] <- 1 mat2[l,1] <- v } kclass<-1:k kclass[k] <-length(d) k <- length(d) last<-length(d) for(j in length(kclass):1){ id <- trunc(mat1[k,j]) - 1 kclass[j - 1] <- id k <- id #lower last <- k -1 #upper } brks<-d[c(1, kclass)] } else stop(paste(style, "unknown"))
_______________________________________________ R-sig-Geo mailing list R-sig-Geo@stat.math.ethz.ch https://stat.ethz.ch/mailman/listinfo/r-sig-geo