Kita tahu bahwa Jaccard (dihitung antara dua kolom data biner mana pun ) adalah , sedangkan Rogers-Tanimoto adalah , di manaXaa+b+ca+da+d+2(b+c)
- a - jumlah baris di mana kedua kolom adalah 1
- b - jumlah baris di mana ini dan bukan kolom lainnya adalah 1
- c - jumlah baris di mana yang lain dan bukan kolom ini adalah 1
- d - jumlah baris di mana kedua kolom adalah 0
a+b+c+d=n , jumlah baris dalamX
Maka kita memiliki:
X′X=A adalah matriks simetris persegi antara semua kolom.a
(notX)′(notX)=D adalah matriks simetris kuadrat dari antara semua kolom ("bukan X" mengonversi 1-> 0 dan 0-> 1 dalam X).d
Jadi, adalah matriks simetris persegi dari Jaccard antara semua kolom.An−D
A+DA+D+2(n−(A+D))=A+D2n−A−D adalah matriks simetris persegi dari Rogers-Tanimoto di antara semua kolom.
Saya memeriksa secara numerik apakah formula ini memberikan hasil yang benar. Mereka melakukannya.
Pembaruan. Anda juga dapat memperoleh matriks dan :BC
B=[1]′X−A , di mana "[1]" menunjukkan matriks yang, berukuran sebagai . adalah matriks asimetris kuadrat dari antara semua kolom; elemen ij adalah jumlah baris dalam dengan 0 di kolom i dan 1 di kolom j .XBbX
Akibatnya, .C=B′
Matriks juga dapat dihitung dengan cara ini, tentu saja: .Dn−A−B−C
Mengetahui matriks , Anda dapat menghitung matriks dari setiap koefisien kemiripan berpasangan (dis) yang ditemukan untuk data biner.A,B,C,D
vegan
paket. Saya pikir mereka cenderung dioptimalkan dengan cukup baik untuk kecepatan juga.