Це пояснює проникливий натяк, поданий у коментарі @ttnphns.
Приєднання майже корельованих змінних збільшує внесок їх загального основного фактора в PCA. Ми можемо бачити це геометрично. Розглянемо ці дані в площині XY, показані як хмара точок:
Кореляція невелика, приблизно однакова коваріація, і дані центрируються: PCA (незалежно від того, як проводиться) повідомив би про два приблизно рівні компоненти.
Накинемо тепер третю змінну рівну плюс невелику кількість випадкової помилки. Кореляційна матриця показує це з малими коефіцієнтами поза діагоналі, за винятком другого та третього рядків та стовпців ( і ):Y ( X , Y , Z ) Y ZZY( X, Y, Z)YZ
⎛⎝⎜1.- 0,0344018- 0,046076- 0,03440181.0,941829- 0,0460760,9418291.⎞⎠⎟
Геометрично ми перемістили всі початкові точки майже вертикально, піднявши попереднє зображення прямо з площини сторінки. Ця хмара псевдо 3D-точок намагається проілюструвати підйом з видом збоку в перспективі (на основі іншого набору даних, хоча і генерованого так само, як і раніше):
Точки спочатку лежать у синій площині і піднімаються до червоних крапок. Оригінальна вісь вказує праворуч. Отриманий нахил також розтягує точки в напрямку YZ, тим самим подвоюючи їх внесок у дисперсію. Отже, PCA цих нових даних все-таки визначив би два основні компоненти, але тепер один з них матиме вдвічі більше, ніж інший.Y
Це геометричне очікування пояснюється деякими моделюваннями в R
. Для цього я повторив процедуру "підняття", створивши майже колінеарні копії другої змінної другий, третій, четвертий та п'ятий раз, називаючи їх по . Ось матриця розсіювання, яка показує, як добре співвідносяться ці останні чотири змінні:X 5Х2Х5
PCA робиться за допомогою кореляцій (хоча для цих даних це насправді не має значення), використовуючи перші дві змінні, потім три, ..., і нарешті п'ять. Я показую результати, використовуючи графіки внеску основних компонентів у загальну дисперсію.
Спочатку з двома майже некорельованими змінними внески майже рівні (верхній лівий кут). Після додавання однієї змінної, співвіднесеної з другою - точно так само, як на геометричній ілюстрації, - залишаються лише два основних компоненти, один зараз удвічі більший за інший. (Третій компонент відображає відсутність ідеальної кореляції; він вимірює "товщину" хмари в 3D-розсіювачі.) Після додавання іншої корельованої змінної ( ) перший компонент становить приблизно три чверті від загальної кількості ; після додавання п'ятої частини перший компонент становить майже чотири п’яті від загальної кількості. У всіх чотирьох випадках компоненти після другого, швидше за все, вважатимуться несуттєвими більшості діагностичних процедур PCA; в останньому випадку це 'Х4один головний компонент, який варто розглянути.
Зараз ми можемо побачити, що може бути заслуга у відмові від змінних, які вважаються вимірюючими однаковими основними (але "прихованими") аспектами колекції змінних , оскільки включення майже зайвих змінних може призвести до того, що PCA перебільшує свій внесок. Немає нічого математично правильно (або неправильно) щодо такої процедури; це виклик судження, заснований на аналітичних цілях та знаннях даних. Але має бути цілком зрозуміло, що відхилення змінних, які, як відомо, сильно співвідносяться з іншими, може мати істотний вплив на результати PCA.
Ось R
код.
n.cases <- 240 # Number of points.
n.vars <- 4 # Number of mutually correlated variables.
set.seed(26) # Make these results reproducible.
eps <- rnorm(n.vars, 0, 1/4) # Make "1/4" smaller to *increase* the correlations.
x <- matrix(rnorm(n.cases * (n.vars+2)), nrow=n.cases)
beta <- rbind(c(1,rep(0, n.vars)), c(0,rep(1, n.vars)), cbind(rep(0,n.vars), diag(eps)))
y <- x%*%beta # The variables.
cor(y) # Verify their correlations are as intended.
plot(data.frame(y)) # Show the scatterplot matrix.
# Perform PCA on the first 2, 3, 4, ..., n.vars+1 variables.
p <- lapply(2:dim(beta)[2], function(k) prcomp(y[, 1:k], scale=TRUE))
# Print summaries and display plots.
tmp <- lapply(p, summary)
par(mfrow=c(2,2))
tmp <- lapply(p, plot)