r - 用 R 绘制每个波长的每个/某些 PCA 分量的 R2
问题描述
我在使用 PCA 方面有一些经验,但这是我第一次尝试将 PCA 用于光谱数据......
我有一个带有光谱的大数据,我使用 prcomp 命令为整个数据集计算 PCA。我的结果表明,3 个分量解释了 99% 的方差。
我想绘制每个波长(以 4、200-1000 nm 为步长)的三个 PCA 组件中的每一个的贡献,就像我在此站点上找到的图 2 的示例: https ://learnche.org/pid /潜在变量建模/主成分分析/pca-example-analysis-of-spectral-data
有没有人有我如何在 R 中做到这一点的代码?
谢谢
解决方案
我相信可变载荷矩阵可以在model.pca$rotation
prcomp文档中找到。所以应该这样做(使用链接网站上的示例):
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")
})
我没有波长值,所以我在这里使用了数组的索引;下面输出。
推荐阅读
- angular - 为什么我不能使用 anguar/material 元素?
- dart - 在 grpc-dart 中设置主机
- swift - 如何在swift中有效地表示htonl?
- android - 传递给 singleArgViewModelFactory 时 ::MainViewModel 是什么意思
- java - 无法使用 jdbc 将 spark 数据集写入数据库
- c++ - 返回和不返回有什么区别?
- python - Selenium:从网站上抓取文本会输出错误的东西
- android - 如何解决原生集成中的 AR 核心问题?
- php - 在登录页面上验证用户名和密码的问题
- angular - RxJS forkJoin 的 http 请求被 chrome 取消