-#shorthand: map 1->1, 2->2, 3->3, 4->1, ..., 149->2, 150->3, ... (is base==3)
+# Shorthand: map 1->1, 2->2, 3->3, 4->1, ..., 149->2, 150->3, ... (is base==3)
I = function(i, base)
(i-1) %% base + 1
-# NOTE: medoids can be a big.matrix
+# Compute the sum of (normalized) sum of squares of closest distances to a medoid.
+# Note: medoids can be a big.matrix
computeDistortion = function(series, medoids)
{
- n = nrow(series) ; L = ncol(series)
- distortion = 0.
if (bigmemory::is.big.matrix(medoids))
- medoids = medoids[,]
+ medoids = medoids[,] #extract standard matrix
+
+ n = ncol(series) ; L = nrow(series)
+ distortion = 0.
for (i in seq_len(n))
distortion = distortion + min( colSums( sweep(medoids,1,series[,i],'-')^2 ) / L )
- distortion / n
+
+ sqrt( distortion / n )
}