r - 在 R 中使用栅格数据集的 PCA

标签 r raster pca

我有几个要在 PCA 中处理的大型栅格(以生成汇总栅格)。
我见过几个例子,人们似乎只是简单地调用 prcomp 或 princomp。但是,当我这样做时,我收到以下错误消息:
Error in as.vector(data): no method for coercing this S4 class to a vector
示例代码:

files<-list.files() # a set of rasters
layers<-stack(files) # using the raster package
pca<-prcomp(layers)

我曾尝试使用光栅砖代替堆栈,但这似乎不是问题。我需要什么方法提供命令才能将栅格数据转换为矢量格式?我知道有多种方法可以对栅格进行采样并从中运行 PCA,但我真的很想了解为什么上述方法不起作用。

谢谢!

最佳答案

回答我自己的问题:我最终做了一些稍微不同的事情:我没有使用每个栅格单元作为输入(非常大的数据集),而是采集点样本,运行 PCA,然后保存输出模型,以便我可以进行预测对于每个网格单元......也许不是最好的解决方案,但它有效:

rasters <- stack(myRasters)

sr <- sampleRandom(rasters, 5000) # sample 5000 random grid cells

# run PCA on random sample with correlation matrix
# retx=FALSE means don't save PCA scores 
pca <- prcomp(sr, scale=TRUE, retx=FALSE) 

# write PCA model to file 
dput(pca, file=paste("./climate/", name, "/", name, "_pca.csv", sep=""))

x <- predict(rasters, pca, index=1:6) # create new rasters based on PCA predictions

关于r - 在 R 中使用栅格数据集的 PCA,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19866009/

相关文章:

NumericMatrix 的 Rcpp 糖

open-source - 区域统计 QGIS

R 将 x 或 y 坐标分配给栅格的像元以执行计算

r - 从空间多边形数据框中绘制一个多边形

python - Python 中缺少值的 PCA

matlab - 非方阵的降维?

r - R中条形图中数据值标签的错误顺序

用于解决线性规划问题的 R

r - 从 R 中的 Document-Term-Matrix 过滤行/文档

cluster-analysis - 如何处理插补没有意义的 NaN 值? (PCA)