В R важно внимательно читать обширную документацию. Сегодня я в этом
очередной раз убедился, считая расстояние Канберра (canberra distance в
англоязычной литературе, авторитетного источника с русским аналогом не
нашёл). Это расстояние для двух векторов X и Y определяется таким образом:
d=sum(|xi-yi|/|xi+yi|)
Если исходить из формулы и здравого смысла, то для двух пар векторов
X1=(1,2,0,0,3), Y1=(3,1,0,0,7) и X2=(1,2,3), Y2=(3,1,7) это расстояние
будет одинаковым, d=1,23333. Но функция dist для этих пар векторов даёт
разные значения расстояния: во втором случае это будет ожидаемое
значение 1,23333, а вот в первом - 2,05556.
После получасовых раздумий и перепроверок пришлось очень внимательно
перечитать описание этой функции. Оказалось, что если какие-то столбцы
при подсчёте исключаются, то результат увеличивается пропорционально
количеству использованных элементов. Для первой пары из исходных пяти
использовались только три элемента. Значит, повышающий коэффициент
составил 5/3. Вот и получается, что 5/3*1,23333=2,05556.