Rで谷本距離(Tanimoto Distance)を算出する
RでTanimoto Distanceを算出する関数を作りました。
corと同じように使います。粗く言えばcor
は相関係数なので「変化が似ている」、distance
は「絶対値が似ている」、Tanimoto Distanceはその間のイメージです。
tanimoto <- function(x) { if(is.data.frame(x)) x <- as.matrix(x) x[is.na(x)] <- 0 n <- ncol(x) ab <- t(x) %*% x aa <- diag(ab) aa.m <- matrix(rep(aa,n),n) y <- ab/(aa.m + t(aa.m) - ab) return(y) }
現時点ではデータ中のNA
には0を入れています。NA
があると内積に相当する部分がゼロになるので少し“遠く”なります。