Выполнение HCPC для столбцов (то есть переменных) вместо строк (то есть отдельных лиц) после (M) CA - PullRequest
0 голосов
/ 25 апреля 2018

Я хотел бы выполнить HCPC для столбцов моего набора данных после выполнения CA. По какой-то причине я также должен указать в начале, что все мои столбцы относятся к типу 'factor', чтобы потом потом снова зациклить их и преобразовать в числовые. Я не знаю, почему именно, потому что, если я проверяю тип каждого столбца (не указывая их как фактор), они кажутся числовыми ... Когда я не загружаю и не конвертирую данные, как это, я получаю ошибка вроде следующего:

Ошибка в собственных (crossprod (t (X), t (X)), симметричный = TRUE): бесконечный или пропущенные значения в 'x'

Может ли это быть из-за того, что в моем наборе данных есть столбцы, которые содержат только 0? Если так, то почему он работает отлично, считая все сначала как фактор, а затем преобразовывая его в числовое значение перед применением СА, вместо того, чтобы просто выполнять СА напрямую?

Исходная проблема с HCPC заключается в следующем:

# read in data; 40 x 267 data frame
data_for_ca <- read.csv("./data/data_clean_CA_complete.csv",row.names=1,colClasses = c(rep('factor',267)))

# loop over first 267 columns, converting them to numeric
for(i in 1:267)
  data_for_ca[[i]] <- as.numeric(data_for_ca[[i]])

# perform CA
data.ca <- CA(data_for_ca,graph = F)

# perform HCPC for rows (i.e. individuals); up until here everything works just fine
data.hcpc <- HCPC(data.ca,graph = T)

# now I start having trouble

# perform HCPC for columns (i.e. variables); use their coordinates that are stocked in the CA-object that was created earlier
data.cols.hcpc <- HCPC(data.ca$col$coord,graph = T)

Приведенный выше код показывает мне дендрограмму в последнем случае и даже позволяет мне разрезать ее на кластеры, но затем я получаю следующую ошибку:

Ошибка в catdes (data.clust, ncol (data.clust), proba = proba, row.w = res.sauv $ call $ row.w.init): объект 'data.clust' не найден

Стоит отметить, что когда я выполняю MCA для своих данных и в этом случае пытаюсь выполнить HCPC для моих столбцов, я получаю точно такую ​​же ошибку. Кто-нибудь может понять, как это исправить или что я делаю неправильно? Для полноты я вставляю скриншот верхнего левого угла моего набора данных, чтобы показать, как он выглядит:

enter image description here

Заранее спасибо за любую возможную помощь!

1 Ответ

0 голосов
/ 15 апреля 2019

Я знаю, что это старая версия, но сегодня я уже некоторое время решаю эту проблему:

HCPC говорит, что она принимает фрейм данных, но каждый раз, когда я пытаюсь просто пропустить его $col$coord или $colcoord из стандартного объекта ca, он возвращает эту ошибку.Мое лучшее предположение состоит в том, что есть некоторые метаданные, которые на самом деле нужны / находятся в поиске, и которые не находятся в фрейме данных координат, но я не могу понять, что это такое или как их передать.

текущая версия FactoMineR на самом деле просто позволит вам дать HCPC весь объект CA и указать, кластеризовать ли строки или столбцы.Итак, ваша последняя строка кода должна быть:

data.cols.hcpc <- HCPC(data.ca, cluster.CA = "columns", graph = T)

...