Значения ПК1 и ПК2: исходные значения - PullRequest
0 голосов
/ 19 января 2019

Я только что запустил анализ ПК в r на наборе данных радужной оболочки.Это обсуждалось несколько раз в прошлом, но я немного запутался в результатах.Я использовал prcomp, и это вывод для загрузок:

                    PC1         PC2        PC3        PC4
Sepal.Length  0.5210659 -0.37741762  0.7195664  0.2612863
Sepal.Width  -0.2693474 -0.92329566 -0.2443818 -0.1235096
Petal.Length  0.5804131 -0.02449161 -0.1421264 -0.8014492
Petal.Width   0.5648565 -0.06694199 -0.6342727  0.5235971

Вот первые 6 строк для оценки:

           PC1        PC2         PC3          PC4
[1,] -2.257141 -0.4784238  0.12727962  0.024087508
[2,] -2.074013  0.6718827  0.23382552  0.102662845
[3,] -2.356335  0.3407664 -0.04405390  0.028282305
[4,] -2.291707  0.5953999 -0.09098530 -0.065735340
[5,] -2.381863 -0.6446757 -0.01568565 -0.035802870
[6,] -2.068701 -1.4842053 -0.02687825  0.006586116

Вот первые 6 строк для исходных значений:

  Sepal.Length Sepal.Width Petal.Length Petal.Width
1          5.1         3.5          1.4         0.2
2          4.9         3.0          1.4         0.2
3          4.7         3.2          1.3         0.2
4          4.6         3.1          1.5         0.2
5          5.0         3.6          1.4         0.2
6          5.4         3.9          1.7         0.4

Может кто-нибудь объяснить, как мы получаем ПК1 -2,25 для строки 1?

спасибо.

1 Ответ

0 голосов
/ 24 января 2019

Согласно документации (?prcomp), баллы ПК - это данные, центрированные и масштабированные, если требуется, умноженные на матрицу вращения. Итак, давайте сделаем этот расчет для строки 1 и ПК 1, чтобы проверить. В этом примере я использую объект PCA, который образно называется pca.

Сначала мы центрируем первую строку данных, iris[1, 1:4], используя pca$center, а затем масштабируем, используя pca$scale. Наконец, мы умножаем на нагрузки для ПК 1 pca$rotation[, 1] и суммируем результат.

# Perform PCA
pca <- prcomp(iris[, 1:4], center = TRUE, scale = TRUE)

# Calculate PC1 score for first row of 'iris'
sum(pca$rotation[,1] * (iris[1, 1:4] - pca$center) / pca$scale)
#> [1] -2.257141

Создано в 2019-01-23 пакетом представ. (v0.2.1.9000)

Как и следовало ожидать, мы получаем -2,257141.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...