用 R 绘制每个波长 each/certain PCA 分量的 R2
Plotting R2 of each/certain PCA component per wavelength with R
我有一些使用 PCA 的经验,但这是我第一次尝试使用 PCA 处理光谱数据...
我有一个包含光谱的大数据,我在其中使用 prcomp 命令计算了整个数据集的 PCA。我的结果显示 3 个分量解释了 99% 的方差。
我想绘制三个 PCA 分量中每一个在每个波长(以 4、200-1000 nm 为步长)的贡献,就像我在这个网站上找到的图 2 的例子:
https://learnche.org/pid/latent-variable-modelling/principal-component-analysis/pca-example-analysis-of-spectral-data
有人知道我如何在 R 中执行此操作的代码吗?
谢谢
我相信在 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")
})
我没有波长值,所以我在这里使用了数组的索引;输出如下。
我有一些使用 PCA 的经验,但这是我第一次尝试使用 PCA 处理光谱数据...
我有一个包含光谱的大数据,我在其中使用 prcomp 命令计算了整个数据集的 PCA。我的结果显示 3 个分量解释了 99% 的方差。
我想绘制三个 PCA 分量中每一个在每个波长(以 4、200-1000 nm 为步长)的贡献,就像我在这个网站上找到的图 2 的例子: https://learnche.org/pid/latent-variable-modelling/principal-component-analysis/pca-example-analysis-of-spectral-data
有人知道我如何在 R 中执行此操作的代码吗?
谢谢
我相信在 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")
})
我没有波长值,所以我在这里使用了数组的索引;输出如下。