Функция 3D Scatterplot в R с группами

Поэтому я работал над точечной диаграммой для некоторых данных, которые у меня есть. Раньше я мог заставить работать точечную диаграмму, но теперь я не могу и не понимаю, в чем моя ошибка. Мои данные выглядят как 5 значений и столбец, который присваивает каждому кластеру (в этом конкретном случае я использовал k-means).

  closedmi  uncertin  certknow  sourknow  justknow  fit3.cluster
1 3.166667  6.125     2.571429  4.500     3.375     1
2 3.666667  4.250     3.428571  4.000     4.750     2
3 1.833333  5.750     1.428571  3.375     2.125     2
4 3.500000  4.500     1.857143  4.250     3.125     3

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

#Find the 5 principal components of the data matrix
pcdf <- princomp(pre2, cor=T, score=T)
pre4 <- data.frame(pcdf$scores, cluster=fit3$cluster)

#Making a 3D plot of the Solution
scatter3d(pre4$Comp.1, pre4$Comp.2, pre4$Comp.3, groups=pre4$cluster, 
          surface=FALSE, grid=FALSE, ellipsoid=TRUE)

Затем попробуйте использовать scatter3d для построения графика отдельных лиц, используя столбец кластера в качестве фактора группировки, и я получаю ошибку. Я использовал этот источник для кода, чтобы получить правильный синтаксис, но я все равно получаю ошибку.

Ошибка в scatter3d.default(pre4$Comp.1, pre4$Comp.2, pre4$Comp.3, groups = pre4$cluster: переменная groups должна быть фактором

но это. Это во фрейме данных, я могу вызвать столбец, используя pre4$cluster. Есть ли какая-то ошибка форматирования или синтаксиса, которую я не вижу? Я просто схожу с ума?

Я смог заставить это работать только на прошлой неделе, и теперь я не могу. Я знаю, что могу использовать plot3d для получения визуализации, но мне больше нравится визуализация с использованием scatter3d, и я хотел бы иметь возможность ее использовать.


person Katherine Ehlert    schedule 18.05.2016    source источник
comment
Не уверен, правильно ли вы понимаете значение сообщения об ошибке ... должно быть фактором. Вы пробовали pre4$cluster <- as.factor(pre4$cluster)? Каков результат class(pre4$cluster)?   -  person RHertel    schedule 18.05.2016
comment
Спасибо!!! as.factor(pre4$cluster) это то, что мне было нужно. Вывод class(pre4$cluster) является символом, поэтому понятно, почему функция не работала.   -  person Katherine Ehlert    schedule 23.05.2016


Ответы (1)


Попробуй это:

scatter3d(pre4$Comp.1, pre4$Comp.2, pre4$Comp.3, groups=as.factor(pre4$cluster), 
          surface=FALSE, grid=FALSE, ellipsoid=TRUE)

Это устранит сообщение об ошибке, касающееся факторов. Кроме того, просто убедитесь, что ваш ведущий минор положительно определен.

введите здесь описание изображения

person Hack-R    schedule 18.05.2016