如何检索特征值& Raster中的Raster PCA的特征向量?

时间:2014-10-15 16:14:16

标签: r pca r-raster

在2014年栅格包文档中对一堆栅格(similar to this&)进行PCA后,我想查看我的特征值,特征向量和载荷...

返回scree图的printcomp的典型调用,变化的比例,累积比例 - summary(),print(),hist() - 似乎没有从我的RasterBrick输出中提取信息。这是示例代码:

#bring in rasterBrick
logo <- brick(system.file("external/rlogo.grd", package="raster")) 
#select random samples & do PCA
sr <- sampleRandom(logo, 100) 
pca <- princomp(sr) 
# to visualize pcs as rasters
x <- predict(logo, pca, index=1:3)
plot(x)

##ANSWERED QUESTION
summary(pca) # importance of components
plot (pca) # scree plot
loadings (pca) #eigens 

summary()返回栅格图层上的摘要统计信息,而不是分析中的值; print()显示栅格的最小值和最大值等。

感谢您的想法,特别是关于如何找到eignvalues&amp;与PCA相关的特征向量。

1 个答案:

答案 0 :(得分:2)

特征向量/载荷存储在loadings返回的模型对象的princomp元素中。请参阅Value帮助的princomp部分(运行?princomp)。这是关键部分:

  

<强>值

     

princomp 会返回一个包含类&#34; princomp&#34;的列表。包含以下内容   组件:

     

加载可变加载矩阵(即矩阵的矩阵)   列包含特征向量)。这是班级&#34;加载&#34;:看   装载其打印方法。

您可以使用loadings(pca)访问加载项。下面的第一个矩阵包含每个主成分的特征向量。

loadings(pca)

Loadings:
      Comp.1 Comp.2 Comp.3
red    0.588 -0.505  0.631
green  0.584 -0.274 -0.764
blue   0.559  0.818  0.134

               Comp.1 Comp.2 Comp.3
SS loadings     1.000  1.000  1.000
Proportion Var  0.333  0.333  0.333
Cumulative Var  0.333  0.667  1.000

summary函数为您提供每台PC解释的方差比例:

summary(pca)

Importance of components:
                            Comp.1      Comp.2       Comp.3
Standard deviation     136.9251939 16.85462507 1.4842831706
Proportion of Variance   0.9849601  0.01492417 0.0001157405
Cumulative Proportion    0.9849601  0.99988426 1.0000000000

您可以使用任何R对象执行的另一件事是运行str,它将告诉您对象包含的内容。例如,请参阅下面的princomp模型对象包含的内容,并注意其中一个元素是loadings

str(pca)

List of 7
 $ sdev    : Named num [1:3] 136.5 17.63 1.43
  ..- attr(*, "names")= chr [1:3] "Comp.1" "Comp.2" "Comp.3"
 $ loadings: loadings [1:3, 1:3] 0.587 0.583 0.562 -0.515 -0.267 ...
  ..- attr(*, "dimnames")=List of 2
  .. ..$ : chr [1:3] "red" "green" "blue"
  .. ..$ : chr [1:3] "Comp.1" "Comp.2" "Comp.3"
 $ center  : Named num [1:3] 162 165 173
  ..- attr(*, "names")= chr [1:3] "red" "green" "blue"
 $ scale   : Named num [1:3] 1 1 1
  ..- attr(*, "names")= chr [1:3] "red" "green" "blue"
 $ n.obs   : int 100
 $ scores  : num [1:100, 1:3] 85.4 110.4 151.3 149 22.8 ...
  ..- attr(*, "dimnames")=List of 2
  .. ..$ : NULL
  .. ..$ : chr [1:3] "Comp.1" "Comp.2" "Comp.3"
 $ call    : language princomp(x = sr)
 - attr(*, "class")= chr "princomp"
 - attr(*, "class")= chr "princomp"