Chúng tôi biết rằng Jaccard (được tính giữa hai cột dữ liệu nhị phân bất kỳ ) là , trong khi Rogers-Tanimoto là , trong đóaX a+dmộta + b + ca + da + d+ 2 ( b + c )
- a - số hàng trong đó cả hai cột là 1
- b - số hàng trong đó hàng này và không phải cột khác là 1
- c - số hàng trong đó hàng khác và không phải cột này là 1
- d - số hàng trong đó cả hai cột bằng 0
Xa + b + c + d= n , số lượng hàng trongX
Sau đó chúng tôi có:
aX'X = A là ma trận đối xứng vuông của giữa tất cả các cột.một
d( N o t X )'( n o t X ) = D là ma trận đối xứng vuông của giữa tất cả các cột ("không phải X" đang chuyển đổi 1-> 0 và 0-> 1 trong X).d
Vì vậy, là ma trận đối xứng vuông của Jaccard giữa tất cả các cột.Mộtn - D
A + DA + D + 2 ( n - ( A + D ) )= A + D2 n - A - D là ma trận đối xứng vuông của Rogers-Tanimoto giữa tất cả các cột.
Tôi đã kiểm tra số lượng nếu các công thức này cho kết quả chính xác. Họ làm.
Cập nhật. Bạn cũng có thể nhận được ma trận và :CBC
X B b XB=[1]′X−A , trong đó "[1]" biểu thị ma trận của những người thân, có kích thước như . là ma trận bất đối xứng vuông của giữa tất cả các cột; phần tử ij của nó là số hàng trong với 0 trong cột i và 1 trong cột j .XBbX
Do đó, .C=B′
Tất nhiên, ma trận cũng có thể được tính theo cách này: .n - A - B - CDn−A−B−C
Biết các ma trận , bạn có thể tính toán một ma trận của bất kỳ hệ số tương tự cặp (dis) nào được phát minh cho dữ liệu nhị phân.A,B,C,D
vegan
gói. Tôi nghĩ rằng họ cũng có xu hướng được tối ưu hóa tốt cho tốc độ.