У меня есть матрица (размер: 28 столбцов и 47 строк) с числами. Эта матрица имеет дополнительную строку, содержащую заголовки столбцов («порядковые» и «номинальные»).реализация функции расстояния Gower
Я хочу использовать функцию расстояния Gower на этой матрице. Here говорит, что:
Окончательное несходство между Ith и JTH единицами получают в виде взвешенной суммы несходства для каждого переменного:
d(i,j) = sum_k(delta_ijk * d_ijk)/sum_k(delta_ijk)
В частности, d_ijk представляет собой расстояние между г-ем и -й единица вычисляется с учетом k-й переменной. Это зависит от природы переменного:
фактора или символьные столбцы являются рассматриваться как категорные номинальные переменными и
d_ijk = 0
, еслиx_ik = x_jk, 1 в противном случае;
упорядоченных столбцы рассматриваются как категориальных порядковыми переменные и
значений заменяются с
индекса соответствующего положения, r_ik в уровнях факторов. Эти позиции
индексов (которые отличаются от выхода функции Р ранга) являются
трансформировали следующим образом
z_ik = (r_ik - 1)/(макс (r_ik) - 1)
Эти новые значения, z_ik, рассматриваются как наблюдения переменной
.
Насколько вес delta_ijk обеспокоен:
- delta_ijk = 0, если x_ik = Н. или x_jk = Н.А.;
- delta_ijk = 1 во всех других случаях.
Я знаю, что есть функция gower.dist, но я должен сделать это таким образом. Итак, для «d_ijk», «delta_ijk» и «z_ik» я пытался создавать функции, поскольку я не нашел лучшего способа.
Я начал с "delta_ijk" и я попытался это:
Delta=function(i,j){for (i in 1:28){for (j in 1:47){
+{if (MyHeader[i,j]=="nominal")
+ result=0
+{else if (MyHeader[i,j]=="ordinal") result=1}}}}
+;result}
Но я получил ошибку. Поэтому я застрял, и я не могу сделать все остальное.
P.S. Извините, если я ошибаюсь, но английский язык мне не очень часто.
вы можете перенаправить свои данные в виде zip или tar.gz-файла. Мой linux box не откроет архивы rar без меня, чтобы узнать, какое приложение их откроет. Я был бы рад взглянуть, если вы это сделаете. – 2010-11-29 12:11:07