Применение PCA к ковариационной матрице - PullRequest
0 голосов
/ 29 апреля 2019

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

Выполненные шаги

Набор данных состоит из одной матрицы, R , который содержит координаты Парижа, (x (i), y (i)) с i = 1, ..., N для N - общее количество зарегистрированных экземпляров.Мы применили PCA к ковариационной матрице входного набора данных R , и были получены следующие переменные:

a) главные компоненты новой системы координат, собственные векторы u и v,и

b) собственные значения (λ1 и λ2), соответствующие общей изменчивости, объясняемой каждым основным компонентом.

С этими переменными для каждого элемента было создано графическое представление.Два ортогональных сегмента были отцентрированы по среднему значению координатных данных.Направления сегментов определялись собственными векторами PCA, а длина каждого сегмента определялась как одно стандартное отклонение (σ1 и σ2) вокруг среднего значения, которое рассчитывалось путем извлечения квадратного корня из каждого собственного значения, λ1 и λ2.

Мои шаги

#reproducable data
set.seed(1)
x<-rnorm(10,50,4)
y<-rnorm(10,50,7)
# Note my data is not perfectly distirbuted in this fashion
df<-data.frame(x,y) # this is my R matrix

covar.df<-cov(df,use="all.obs",method='pearson') # this is my covariance matrix
pca.results<-prcomp(covar.df) # this applies PCA to the covariance matrix
pca.results$sdev # these are the standard deviations of the principal components
                 # which is what I believe I am looking for. 

Это то место, где я застрял, потому что я не уверен, пытаюсь ли я получить sdev форму вывода prcomp() илиесли я должен масштабировать свои данные в первую очередь.Они все в одном масштабе, поэтому я не вижу проблемы с этим.

Мой второй вопрос: как мне извлечь стандартное отклонение в направлениях x и y?

1 Ответ

2 голосов
/ 29 апреля 2019

Вы не применяете prcomp к ковариационной матрице, вы делаете это для самих данных.

result= prcomp(df) 

Если под масштабированием вы подразумеваете нормализацию или стандартизацию, это происходит до того, как вы выполните prcomp ().Для получения дополнительной информации о процедуре см. Ссылку, которая является вводной для процедуры: pca на R .Это может помочь вам пройти через основы.Для получения sdev используйте сводку по объекту результата

summary(result)
result$sdev
...