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

Я пытаюсь выполнить иерархический кластерный анализ с помощью 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)))

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

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

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

1 ответ

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

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

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

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

Другие вопросы по тегам