用R绘制每个波长的每个/某些PCA组分的R2

问题描述 投票:0回答:1

我有使用PCA的一些经验,但这是我第一次尝试将PCA用于光谱数据......

我有一个带有光谱的大数据,我使用prcomp命令计算整个数据集的PCA。我的结果显示,3个成分解释了99%的方差。

我想绘制每个波长(步长为4,200-1000 nm)的三个PCA组件中每一个的贡献,就像我在本网站上找到的图2的例子:https://learnche.org/pid/latent-variable-modelling/principal-component-analysis/pca-example-analysis-of-spectral-data

有没有人有一个代码如何在R中做到这一点?

谢谢

r plot pca spectra
1个回答
0
投票

我相信变量载荷的矩阵可以在model.pca$rotation中找到,参见prcomp documentation。所以这样的事情应该做(使用链接网站上的例子):

file <- 'http://openmv.net/file/tablet-spectra.csv'
spectra <- read.csv(file, header = FALSE)
n.comp <- 4

model.pca <- prcomp(spectra[,2:651],
                    center = TRUE,
                    scale =TRUE,
                    rank. = n.comp)
summary(model.pca)


par(mfrow=c(n.comp,1))
sapply(1:n.comp, function(comp){
  plot(2:651, model.pca$rotation[,comp], type='l', lwd=2,
       main=paste("Comp.", comp), xlab="Wavelength INDEX")

})

我没有波长值,所以我在这里使用了数组的索引;输出如下。

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.