## File: StBr.r ## Description: screens meaningful variables and performns ## data transformation on clustering # rm(list = ls()) ## Description: Steinley & Brusco (2006) data transform to cluster StBrtransform <- function(X){ apply(X, 2, function(x) 12 * var(x) / (max(x) - min(x))^2 ) } ## Description: Clustering index (Steinley & Brusco (2006)) CI <- function(X, B = 1000) { # B : number of boostrap replications n <- nrow(X) p <- ncol(X) #ci <- apply(X, 2, function(x) 12 * var(x) / (max(x) - min(x))^2 ) ci <- StBrtransform(X) rc <- ci / min(ci) minV <- which.min(rc) Xstar <- scale(X) newRange <- apply(Xstar, 2, function(x) max(x) - min(x)) rmin <- newRange[minV] datat <- array(0.0, dim = dim(X)) # Reweighting X into datat for(i in 1:p){ v <- Xstar[, i] temp <- rc[i] * (rmin / newRange[i])^2 datat[, i] <- sqrt(temp) * v } xboot <- matrix(rnorm(n * B), nrow = n) #cinorm <- apply(xboot, 2, function(x) 12 * var(x) / (max(x) - min(x))^2 ) cinorm <- StBrtransform(xboot) ci95 <- median(cinorm) #ciStar <- apply(datat, 2, function(x) 12 * var(x) / (max(x) - min(x))^2 ) ciStar <- StBrtransform(datat) selectv <- which(ciStar > ci95) return(list(selectv = selectv, tdata = datat) ) } #test <- matrix(rnorm(200), 40, 5) #CI(test)$selectv