(defn bin-rank [D val col best rest] "D = binned data set" (let [pbest (/ (nrow best) (nrow D)) prest (/ (nrow rest) (nrow D)) freqEbest (fn [] (let [one (filter #(= (nth % col) val) (if (= (nrow best) 1) [best] best))] (if (= (count one) 0) 0 (let [freqEbest0 (count (filter #(= (nth % col) val) (if (= (nrow best) 1) [best] best))) freqEbest1 (/ freqEbest0 (nrow best))] freqEbest1)))) freqErest (fn [] (let [two (filter #(= (nth % col) val) rest)] (if (= (count two) 0) 0 (let [freqErest0 (count (filter #(= (nth % col) val) rest)) freqErest1 (/ freqErest0 (nrow rest))] freqErest1)))) likebestE (* (freqEbest) pbest) likerestE (* (freqErest) prest) rank (/ (Math/pow likebestE 2) (+ likebestE likerestE))] [val rank col])) (defn rank-vals [D best rest] (let [get-ranks1 (fn [col] (let [vals (uc (to-vect (sel D :cols col)))] (map #(bin-rank D % col best rest) vals))) get-ranks2 (map #(get-ranks1 %) (range 0 (- (ncol D) 1))) get-ranks3 (map #(reverse (sort-by second %)) get-ranks2) get-ranks4 (reverse (sort-by second (map first get-ranks3)))] get-ranks4))