如何计算 R 中两个栅格数据集之间的相关性(r)?

How to calculate correlation(r) between two raster datasets in R?

我有两个(NPP_BEGA 和 ENACT_BEGA)堆叠栅格数据集。它们具有相同的空间分辨率、范围和维度。我想 运行 并映射这两个栅格数据集之间的相关性 (r) 和 P 值。

NPP_BEGA
class      : RasterBrick 
dimensions : 321, 401, 128721, 37  (nrow, ncol, ncell, nlayers)
resolution : 0.0375, 0.0375  (x, y)
extent     : 32.98125, 48.01875, 2.98125, 15.01875  (xmin, xmax, ymin, ymax)
crs        : +proj=longlat +datum=WGS84 +no_defs 
source     : NPP_BEGA_RES.tif 
names      : NPP_BEGA_RES.1, NPP_BEGA_RES.2, NPP_BEGA_RES.3, NPP_BEGA_RES.4, 
NPP_BEGA_RES.5, NPP_BEGA_RES.6, NPP_BEGA_RES.7, NPP_BEGA_RES.8, NPP_BEGA_RES.9, 
NPP_BEGA_RES.10, NPP_BEGA_RES.11, NPP_BEGA_RES.12, NPP_BEGA_RES.13, NPP_BEGA_RES.14, 
NPP_BEGA_RES.15, ... 
min values :              0,              0,              0,              0,                           
max values :          90.21,          87.39,          91.44,          91.77,                    


ENACT_BEGA
class      : RasterBrick 
dimensions : 321, 401, 128721, 37  (nrow, ncol, ncell, nlayers)
resolution : 0.0375, 0.0375  (x, y)
extent     : 32.98125, 48.01875, 2.98125, 15.01875  (xmin, xmax, ymin, ymax)
crs        : +proj=longlat +datum=WGS84 +no_defs 
source     : ENACT_BEGA_RES.tif 
names      : ENACT_BEGA_RES.1, ENACT_BEGA_RES.2, ENACT_BEGA_RES.3, ENACT_BEGA_RES.4, 
ENACT_BEGA_RES.5, ENACT_BEGA_RES.6, ENACT_BEGA_RES.7, ENACT_BEGA_RES.8, 
ENACT_BEGA_RES.9, ENACT_BEGA_RES.10, ENACT_BEGA_RES.11, ENACT_BEGA_RES.12, 
ENACT_BEGA_RES.13, ENACT_BEGA_RES.14, ENACT_BEGA_RES.15, ... 
min values :                0,                0,                0,                0,                
max values :            923.8,            923.8,            491.7,            512.1,  

这是我试过的

library(raster)
library(sp)
ENACT_BEGA<-brick("ENACT_BEGA_RES.tif")
NPP_BEGA<-brick("NPP_BEGA_RES.tif")
Cor<-corLocal(ENACT_BEGA,NPP_BEGA, test = T)

找到

There were 50 or more warnings (use warnings() to see the first 50)
1: In cor(x, y) : the standard deviation is zero
2: In cor(x, y) : the standard deviation is zero
50: In cor(x, y) : the standard deviation is zero

脚本有什么问题,我该如何更正?非常感谢!

脚本没有问题。您会收到警告,而不是错误。当没有标准偏差时,单元格会出现警告,因为至少其中一层的所有焦点值都相同:

cor(c(0,0,0), c(1,2,3))
#[1] NA
#Warning message:
#In cor(c(0, 0, 0), c(1, 2, 3)) : the standard deviation is zero