Многократный анализ соответствия с R - PullRequest
2 голосов
/ 03 мая 2011

HI, Мой вопрос является техническим (используя R) и статистическим. Я работаю над исследовательским проектом по обработке изображений, и мне нужно выполнить MCA. Ранее я публиковал вопрос о том, как сделать это с помощью Java Многомерный анализ соответствия (MCA) с JAVA , благодаря ответам я решил сделать это с помощью R. Итак, вот оно: У меня есть таблица сопряженности, созданная из извлеченных объектов, которая имеет вид:

            var1_1 var1_2 var1_3 var2_1 var2_2 var2_3 ... var18_1 var18_2 var18_3

individual1
individual2
individual3
individual4
...
individualn


В каждой ячейке у меня есть двойное значение, представляющее нормированный счетчик частоты между 0,0 и 1,0. Моя конечная цель состоит в том, чтобы иметь возможность нанести каждого человека на различные комбинации осей с помощью MCA.

Что я сделал:

  • использовал fdata <- read.table ("filename.dat") для чтения файла матрицы, экспортируемого Java </li>
  • используется mca_obj <- dudi.acm (fdata, scann = FALSE, nf = 3) Это дает ошибку, говоря, что все значения должны быть фактором <strong>(Может кто-то уточнить, что означает фактор)
  • использовал burt_data = acm.burt (fdata, fdata), чтобы использовать метод burt, поскольку у меня много переменных
  • это дало мне очень большую таблицу, которую я не мог понять (я экспериментировал с удалением имен строк)

Итак, сделаем вывод: Я знаю, что я очень близок к тому, чтобы найти правильный способ выполнить MCA для моих данных, мне просто нужно несколько советов о том, как сделать это правильно. Может кто-нибудь, пожалуйста, помогите!

Thanx

Ответы [ 2 ]

4 голосов
/ 03 мая 2011

РЕДАКТИРОВАТЬ:

Если я правильно вас понимаю, ваши данные не подходят для любой функции MCA.Вам нужны необработанные данные, а не нормализованные значения частоты.MCA работает с категориальными переменными, а не с числовыми.Вам нужны данные в следующем виде:

              color   beak ...
individual1   red     big
individual2   red     small
individual3   blue    medium
individual4   green   small
...

, если нормализованные частоты действительно являются вашими данными, у вас есть числовые данные, и вы не можете выполнить MCA для этого.


A factor - это векторный тип в R, который можно рассматривать как категориальный или перечислимый тип.Если у вас есть данные в формате, описанном выше, и у вас все еще есть символьные переменные вместо факторных переменных, вы можете преобразовать свои fdata с помощью

fdata2 <- as.data.frame(lapply(fdata,as.factor))

. Эту переменную вы сможете использовать в dudi.acm()function.

Что касается таблицы Бёрта: конечно, она огромна.Это матричное умножение X'X, где X - матрица вашего индикатора для ваших факторов.Таким образом, вы получаете таблицу (фактически фрейм данных), в которой имена строк и столбцов имеют вид nameOfFactor.nameOfLevel.Так что если у вас есть 4 фактора с каждыми 5 уровнями, у вас уже будет матрица 20x20.

Вы можете использовать эти знания для анализа таблицы Бёрта и получения информации о некоторых факторах, представляющих интерес.Следуя примеру в файлах справки, вы можете сделать что-то вроде:

require(ade4)
data(banque)
banque.acm <- dudi.acm(banque, scann = FALSE, nf = 3)
bb <- acm.burt(banque, banque)

idrow <- grepl("csp.",rownames(bb),fixed=T)
idcol <- grepl("duree.",names(bb),fixed=T)

> bb[idrow,idcol]
          duree.dm2 duree.d24 duree.d48 duree.d812 duree.dp12
csp.agric         3         6         6          3         11
csp.artis         7         3        15         13         10
csp.cadsu        13        19        32          9         30
csp.inter        12        14        19         25         32
csp.emplo        13        19        38         28         53
csp.ouvri        12        26        46         43         56
csp.retra         4         8         9          7         24
csp.inact        15        14        22         15         19
csp.etudi        12        23        20          1          1

, который дает вам таблицу Burt для факторов csp и duree в кадре данных.

2 голосов
/ 03 мая 2011

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

Вот что я предлагаю вам сделать:

  1. Использовать функциюmca в пакетах MASS для анализа соответствия
  2. Изучите пример, предоставленный в файлах справки: ?mca

Вы обнаружите, что требования для mca также является фреймом данных, состоящим из факторов.(См. Файл справки ?factor для получения дополнительной информации.) Но пример в mca проясняет ситуацию.Он использует набор данных farms, поставляемый как часть пакета MASS:

library(MASS)
head(farms)

  Mois Manag Use Manure
1   M1    SF  U2     C4
2   M1    BF  U2     C2
3   M2    SF  U2     C4
4   M2    SF  U2     C4
5   M1    HF  U1     C2
6   M1    HF  U2     C2

Обратите внимание, что каждая точка в таблице является входом фактора.Это означает, что вам придется переделывать ваши входные данные в аналогичном формате.Вы упоминаете, что ваши входные данные представляют собой таблицу частот, которая не является требуемым форматом данных.

farms.mca <- mca(farms, abbrev=TRUE)
farms.mca
plot(farms.mca)

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...