Вычисление подобия логических векторов - PullRequest
2 голосов
/ 13 июля 2020

У меня есть два логических вектора, и я хочу измерить, насколько близки (схожи) ИСТИННЫЕ значения. Так, например, если у нас есть эти два вектора:

df<- data.frame(c(T,F,F,F,T,T,F,T),c(F,T,F,T,F,T,F,T))

И я пробовал это:

sum((df[1]&df[2])==T)
[1] 2

Но проблема в том, что у меня есть только количество ИСТИННЫХ, которые находятся в одном и том же место, но хотелось бы знать, насколько они близки, и сравнить с помощью этого метода разные векторы. Я знаю, что для числовых векторов есть способы сделать это (например, евклидово расстояние), но я не нашел эквивалента для логических векторов.

РЕДАКТИРОВАТЬ: Важно, чтобы положение значений меняло сходство между два вектора, например, в этом фрейме данных:

  [,1] [,2] [,3] [,4]
a    1    0    0    0
b    0    1    0    0
c    0    0    0    1

Сходство между векторами a и b должно быть больше, чем между b и c

1 Ответ

2 голосов
/ 13 июля 2020
Пакет

ade4 имеет удобную функцию dist.binary() для вычисления различных расстояний / индексов для двоичных данных (подумайте о ИСТИНА / ЛОЖЬ как о 1/0). Возможно, вы захотите найти подробную информацию о простом коэффициенте соответствия или индексе жаккара , вот статья , имеющая дело с мерами сходства для категориальных данных.

Например, сходство с использованием Простой коэффициент соответствия :

names(df) <- c("a", "b")
df <- t(as.matrix(sapply(df, as.numeric)))

ade4::dist.binary(df, method = 2L)
          a
b 0.7071068
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...