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

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

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

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

Ответы [ 3 ]

23 голосов
/ 16 апреля 2011

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

В файле справки для 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’.
4 голосов
/ 02 июля 2012

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

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

1 голос
/ 18 мая 2017

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

...