--- /dev/null
+## 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