my_count_equal = function(S, Xprime, A) { Sprime = S[,Xprime] Aprime = A[Xprime] myc = 0 for (i in 1:NROW(Sprime)) if (all(Sprime[i,] == Aprime)) myc = myc + 1 return(myc) } my_count_equal_class = function(S, Xprime, A, L, k) { Sprime = S[,Xprime] Aprime = A[Xprime] myc = 0 for (i in 1:NROW(Sprime)) if ( L[i] == k && all(Sprime[i,] == Aprime) ) myc = myc + 1 return(myc) } IC = function(S, Xprime, A, L) { overall_count = my_count_equal(S, Xprime, A) max_labels_count = 0 L_values = unique(L) for(k in 1:length(L_values)) { local_labels_count = my_count_equal_class(S, Xprime, A, L, L_values[k]) if (local_labels_count > max_labels_count) max_labels_count = local_labels_count } return (overall_count - max_labels_count) } IR = function(S, Xprime, L) { myc = 0 for (i in 1:NROW(S)) myc = myc + IC(S, Xprime, S[i,], L) return (myc / NROW(S)) } J = function(S, Xprime, L) { return( 1.0 / (IR(S, Xprime, L) + 1) ) } # J(hv84, 2:ncol(hv84), hv84[,1])