Sappiamo che Jaccard (calcolato tra due colonne qualsiasi di dati binari ) è , mentre Rogers-Tanimoto è , doveXaa+b+ca+da+d+2(b+c)
- a - numero di righe in cui entrambe le colonne sono 1
- b - numero di righe in cui questa e non l'altra colonna è 1
- c - numero di righe in cui l'altra e non questa colonna è 1
- d - numero di righe in cui entrambe le colonne sono 0
a+b+c+d=n , il numero di righe inX
Poi abbiamo:
X′X=A è la matrice quadrata simmetrica di tra tutte le colonne.a
(notX)′(notX)=D è la matrice quadrata simmetrica di tra tutte le colonne ("non X" sta convertendo 1-> 0 e 0-> 1 in X).d
Quindi, è la matrice quadrata simmetrica di Jaccard tra tutte le colonne.An−D
A+DA+D+2(n−(A+D))=A+D2n−A−D è la matrice quadrata simmetrica di Rogers-Tanimoto tra tutte le colonne.
Ho verificato numericamente se queste formule danno il risultato corretto. Loro fanno.
Agg. Puoi anche ottenere matrici e :CBC
X B b XB=[1]′X−A , dove "[1]" denota matrice di quelli, dimensionato come . è la matrice quadrata asimmetrica di tra tutte le colonne; il suo elemento ij è il numero di righe in con 0 nella colonna i e 1 nella colonna j .XBbX
Di conseguenza, .C=B′
Matrix può anche essere calcolato in questo modo, ovviamente: .n - A - B - CDn−A−B−C
Conoscendo le matrici , è possibile calcolare una matrice di qualsiasi coefficiente di somiglianza a coppie (dis) inventato per i dati binari.A,B,C,D
vegan
pacchetto. Penso che tendano anche ad essere abbastanza ottimizzati per la velocità.