Кластерный анализ с маргариткой

Я пытаюсь выполнить иерархический кластерный анализ с помощью RStudio, используя пакет daisy. Это мой набор данных:

data.frame':341 obs. of  28 variables:
$ Impo_Env : Ord.factor w/ 3 levels "Low"<"Med"<"High": 3 2 3 2 3 2 3 3 2 3 ...
$ ComparativePriority_IAS: Ord.factor w/ 3 levels "Low"<"Med"<"High": 3 1 3 2 3 2 3 2 3 2 ...
$ Strategy_Eradication: Ord.factor w/ 3 levels "No intervention"<..: 3 2 3 2 3 2 3 2 2 3 ...
$ Knowl_BiodivLoss: Factor w/ 2 levels "0","1": 2 1 2 2 2 1 2 2 2 2 ...
$ Control_Trade: Factor w/ 2 levels "0","1": 2 2 2 2 2 2 2 2 2 2 ...
$ Engagement_Retail: Factor w/ 2 levels "0","1": 2 2 2 2 2 2 2 2 2 2 ...
$ Knowl_PastProj: Factor w/ 2 levels "0","1": 1 1 1 1 2 1 1 1 2 1 ...
$ Priority_IAS: Factor w/ 2 levels "0","1": 2 2 2 2 2 2 2 2 2 2 ...
$ Knowl_Eradic: Factor w/ 2 levels "0","1": 2 1 2 1 2 2 1 2 2 1 ...
$ Alert_CFS: Factor w/ 2 levels "0","1": 1 2 1 2 1 2 2 1 2 1 ...
$ Alert_Municipality: Factor w/ 2 levels "0","1": 1 1 1 1 1 1 1 1 1 1 ...
$ Alert_Park: Factor w/ 2 levels "0","1": 2 1 2 1 2 1 1 2 1 1 ...
$ Alert_Police: Factor w/ 2 levels "0","1": 1 1 1 1 1 1 1 1 1 1 ...
$ Alert_Firemen: Factor w/ 2 levels "0","1": 1 1 1 1 1 1 1 1 1 2 ...
$ Supp_AuthorityIAS: Factor w/ 2 levels "0","1": 2 2 2 2 2 2 2 2 2 2 ...
$ Knowl_Env: Factor w/ 2 levels "0","1": 2 1 2 2 2 2 2 2 2 2 ...
$ Info_Tv: Factor w/ 2 levels "0","1": 2 2 1 2 2 2 2 1 2 1 ...
$ Info_Web: Factor w/ 2 levels "0","1": 2 1 2 2 2 1 2 1 2 2 ...
$ Info_Radio: Factor w/ 2 levels "0","1": 1 1 1 1 1 2 1 2 1 1 ...
$ Info_Magazines: Factor w/ 2 levels "0","1": 1 1 2 1 2 1 1 2 1 1 ...
$ Info_School: Factor w/ 2 levels "0","1": 1 1 2 1 1 1 1 1 1 2 ...
$ Blacklist: Factor w/ 2 levels "0","1": 2 2 2 2 2 2 2 2 2 2 ...
$ Workshop: Factor w/ 2 levels "0","1": 1 1 2 1 2 1 2 2 1 1 ...
$ SuppFin_FutProj: Factor w/ 2 levels "0","1": 2 1 2 1 2 2 2 2 2 2 ...
$ Tourist_dummy: Factor w/ 2 levels "0","1": 1 1 1 2 2 1 1 1 2 1 ...
$ Gender: Factor w/ 2 levels "Female","Male": 1 2 1 2 1 1 2 2 2 1 ...
$ logIASknown: num  2.89 2.94 2.89 2.56 3.14 ...
$ Age: int  20 41 14 10 26 33 19 59 23 16 ...

Я хотел бы использовать евклидово расстояние с daisy, однако, когда я запускаю

daisy(fuu, metric = c("euclidean"), type=list(ordratio = c(1,2,3), asymm=c(4:24), symm=c(25,26)))

Выход не в порядке. Расстояние Гауэра используется вместо евклидова расстояния:

Предупреждающее сообщение: в daisy(fuu, metric = c("euclidean"), type = list(ordratio = c(1,:со смешанными переменными), метрика "gower" используется автоматически

Как я могу это исправить?


person user8780    schedule 10.02.2016    source источник


Ответы (1)


Как описано в разделе «Подробности» в документации функции daisy, содержащейся в пакете кластера:

Обработка номинальных, порядковых и (а) симметричных двоичных данных достигается за счет использования общего коэффициента несходства Гауэра (1971). Если x содержит какие-либо столбцы этих типов данных, и метрика аргументов, и стенд будут игнорироваться, а в качестве метрики будет использоваться коэффициент Гауэра.

Другими словами, для вычисления евклидовых метрик (расстояний как корневой суммы квадратов разностей) входные столбцы должны быть числовыми (режимными) переменными (т. в отличие от номинальных (столбцы фактора класса) переменных или порядковых (столбцы упорядоченного класса) переменных. Указание типа переменной в аргументе типа не меняет этого факта.

Исходя из этих предпосылок и предположив, что это имеет смысл для всех ваших 28 переменных, несмотря на то, что некоторые из них являются качественными бинарными, вы можете попробовать преобразовать их с помощью as.numeric и затем продолжить по следующей причине: со смешанными переменными метрика "gower" переопределяет значение используется автоматически.

person Ana Maria Mendes-Pereira    schedule 22.02.2016
comment
предлагаемое преобразование качественных переменных как числовое предназначено для бинарных факторов, которые должны быть приняты маргариткой для вычисления евклидовых расстояний, которые в противном случае обрабатываются методом Гауэра. - person Ana Maria Mendes-Pereira; 02.06.2016