R - Кластеризация после факторного анализа

Кто-нибудь знает, как воссоздать эти данные в R? Ниже приведен результат кластера, который я хочу получить после проведения факторного анализа.

Cluster centers   Value 1   Value 2   Value 3   Value 4  
FACTOR1            -0.049   -1.481    0.505     0.651    
FACTOR2            0.691    -0.161    -0.633    -0.547      
FACTOR3            0.251    -0.265    0.611     -1.522    
-------------------------------------------------------
No. of case         257       93       174       96       

Для моих данных у меня есть 620 строк наблюдений и 20 столбцов вопросов, 620x20. Сначала я провел факторный анализ в R и разложил 620 строк наблюдений на 3 фактора, получив результат в виде кадра данных 20x3, показанного ниже.

 Matrix   Factor 1   Factor 2   Factor 3   
 Q1       0.646      -0.095     0.041   
 Q2       0.630      0.047      0.124     
 Q3       ...        ...        ...    
 Q4       ...        ...        ...
 ...
 Q20      0.419      0.181      0.337

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


person JK3301    schedule 21.08.2018    source источник
comment
Я не понимаю, какая здесь цель: Вы хотите сгруппировать людей, ответивших на анкету (разбить их на 4 группы); или вы хотите сгруппировать 20 вопросов в 4 кластера?   -  person knb    schedule 22.08.2018
comment
Привет, я хотел бы объединить людей, ответивших на вопросник (620), в 4 группы с отображением коэффициента оценки каждого кластера.   -  person JK3301    schedule 23.08.2018


Ответы (1)


Это пример. Я сгенерировал матрицу 30x3, использовал кластеризацию kmeans, указав, что требуется 4 кластера. Обратите внимание, вы можете использовать любой другой алгоритм кластеризации. Затем я вычислил центры кластеров (в среднем по кластерам), используя aggregate. Теперь эти центры можно использовать для применения вашей классификации в новом наборе данных путем выяснения для каждой выборки, к какому центру эта выборка ближе всего (например, с помощью евклидова расстояния).

set.seed(1); d <- matrix(rnorm(90), ncol=3)
kd <- kmeans(d, centers=4)
cluster <- kd$cluster
dd <- as.data.frame(cbind(d, cluster))
t(aggregate(dd, by=list(dd$cluster), FUN=mean))[c(1,5)*-1,]

         [,1]        [,2]        [,3]       [,4]
V1  0.8321043 -0.01501747 -0.09144934 -1.8916013
V2  0.0121109 -0.51743551  0.85714652 -0.5389448
V3 -0.4478400  0.17132066  0.99685057 -0.9206161
person milan    schedule 21.08.2018