R - 'princomp' может использоваться только с большим количеством единиц, чем переменных

Я использую программное обеспечение R (R Commander) для кластеризации своих данных. У меня есть меньшее подмножество моих данных, содержащее 200 строк и около 800 столбцов. Я получаю следующую ошибку при попытке создать кластер kmeans и построить график на графике. "'princomp' можно использовать только с большим количеством единиц, чем переменных"

Затем я создал тестовый документ из 10 строк и 10 столбцов, которые хорошо отображаются, но когда я добавляю дополнительный столбец, я снова получаю ошибку. Почему это? Мне нужно иметь возможность построить свой кластер. Когда я просматриваю свой набор данных после выполнения над ним kmeans, я вижу дополнительный столбец результатов, который показывает, к каким кластерам они принадлежат.

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


person CoolSteve    schedule 16.04.2011    source источник
comment
Не могли бы вы привести воспроизводимый пример?   -  person aL3xa    schedule 16.04.2011
comment
@ aL3xa образец моих данных будет - это моя тестовая таблица ниже. 3 ряда и 11 ст. Есть ли способ использовать kmeans и построить их с помощью R. 'бесплатно ipod apple tech google cat отличная мышь hello dog ball, 0,174292915 0,232990001 0,174292915 0 0 0 0 0 0 0 0, 0 0,349485002 0,261439373 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 , 0,174292915 0 0 0,232990001 0,232990001 0 0 0 0 0 0 '   -  person CoolSteve    schedule 17.04.2011
comment
Пожалуйста, отредактируйте свой вопрос и поместите туда данные. Не в комментариях   -  person JohnP    schedule 17.04.2011


Ответы (3)


Проблема в том, что у вас больше переменных, чем точек выборки, а выполняемый анализ основных компонентов терпит неудачу.

В файле справки для princomp поясняется (читайте ?princomp):

 ‘princomp’ only handles so-called R-mode PCA, that is feature
 extraction of variables.  If a data matrix is supplied (possibly
 via a formula) it is required that there are at least as many
 units as variables.  For Q-mode PCA use ‘prcomp’.
person jberg    schedule 16.04.2011
comment
Спасибо за ответ. Это объясняет эту проблему. Есть ли способ обойти это? Dp, вы знаете, могу ли я построить свои векторы, предъявляя иск kmeans. Мои данные выглядят «бесплатно ipod apple tech google cat great mouse hello dog ball, 0,174292915 0,232990001 0,174292915 0 0 0 0 0 0 0 0, 0 0,349485002 0,261439373 0 0 0 0 0 0 0 0» Каждая запятая представляет новую запись, т.е. записи здесь и слова мои заголовки столбцов - person CoolSteve; 17.04.2011
comment
@CoolSteve, ты не читал справку. Прочтите ?princomp и следуйте инструкциям по использованию prcomp() вместо него. - person Gavin Simpson; 17.04.2011
comment
Спасибо, Гэвин, теперь я вижу разницу и могу использовать prcomp для построения своих кластеров. Спасибо за все ответы, ребята. Очень признателен - person CoolSteve; 20.04.2011

Анализ главных компонентов недоопределен, если у вас меньше выборок, чем точек данных. Каждая точка данных будет своим основным компонентом. Для работы PCA количество экземпляров должно быть значительно больше, чем количество измерений.

Проще говоря, вы можете посмотреть на проблемы следующим образом: если у вас есть n измерения, вы можете закодировать до n+1 экземпляров, используя векторы, которые все имеют 0 или имеют не более одного 1. И это оптимально, так что PCA сделает это! Но это не очень полезно.

person Has QUIT--Anony-Mousse    schedule 02.07.2012

вы можете использовать prcomp вместо princomp

person Max    schedule 17.05.2017