#r
#r
Вопрос:
Я пытаюсь вычислить индекс с помощью PCA. Я использую ‘mtcars’ в качестве своего набора данных. Это мой код:
pca_mt<- prcomp(mtcars[,c(1:7,10,11)], center = TRUE,scale. = TRUE)
Как мне получить веса для каждой переменной, чтобы суммировать их для вычисления индекса?
Буду признателен, если кто-нибудь сможет объяснить, о чем
pca_mt$rotation
, pca_mt$x
являются.
Комментарии:
1. Взгляните на prcomp
Ответ №1:
Может быть, это поможет вам лучше понять pca_mt$rotation
, что pca_mt$x
,:
data <- mtcars[,c(1:7,10,11)]
pca_mt<- prcomp(data, center = F,scale. = F)
sum(data[1,] * pca_mt$rotation[,1]) == pca_mt$x[1,1]
[1] TRUE
Обратите внимание, что это работает только потому center=F
, что и scale.=F
.
Для дальнейшего чтения я рекомендую https://builtin.com/data-science/step-step-explanation-principal-component-analysis чтобы получить первое представление о том, что такое PCA.
Итак, чтобы узнать, насколько сильно разница может быть объяснена с помощью компонентов PCA, вы можете использовать
summary(pca_mt)
Importance of components:
PC1 PC2 PC3 PC4 PC5 PC6 PC7 PC8 PC9
Standard deviation 310.1169 40.88309 15.83774 2.12821 0.99854 0.74271 0.4412 0.2913 0.2168
Proportion of Variance 0.9803 0.01704 0.00256 0.00005 0.00001 0.00001 0.0000 0.0000 0.0000
Cumulative Proportion 0.9803 0.99738 0.99993 0.99998 0.99999 1.00000 1.0000 1.0000 1.0000
Первый компонент объясняет 98,03% дисперсии в данных, следующий (98,03%-99,738%) и так далее. Итак, используя первый компонент, вы можете объяснить почти все различия в ваших данных.
Комментарии:
1. Я понимаю. Поскольку PC1 объясняет 98,03%, я могу pca_mt $ вращение PC1 в качестве моих весов, верно? Я прочитал с сайта, что квадрат вращения — это вес. Спасибо.
2. Я не уверен, что вы подразумеваете под «весами». Вы хотите сгенерировать индекс, указывающий, какая переменная наиболее важна для / внутри PC1? Я думаю, тогда вы можете возвести вращение в квадрат [,1] (я предполагаю, что center = T, scale = T должны быть установлены в вашем анализе, чтобы избежать проблем с масштабированием).
3. Я пытаюсь найти вес, чтобы я мог умножить его на свой необработанный набор данных и суммировать их в индекс. Но я видел другой комментарий о том, что мы должны выбрать PC1 из pca_mt $ x в качестве индекса