Crear algunos simple prueba de rásteres en R:
> m=matrix(1:9,3,3)
> m2 = matrix(c(9,2,3,4,1,5,6,8,7),3,3)
Entonces podemos trivial calcular la covarianza entre estas matrices:
> cov(c(m),c(m2))
[1] 2.125
y yo apostaría a hacer el cálculo a mano obtendría el mismo resultado. ¿Qué layerStats
hacer?
> D = stack(raster(m),raster(m2))
> layerStats(D, "cov", na.rm=TRUE)
$covariance
layer.1 layer.2
layer.1 7.500 2.125
layer.2 2.125 7.500
Hay la misma 2.125 en la correlación cruzada.
Ahora intenta con un NA:
> m[2,2]=NA
> cov(c(m),c(m2),use="complete.obs")
[1] 2.428571
> D = stack(raster(m),raster(m2))
> layerStats(D, "cov", na.rm=TRUE)
$covariance
layer.1 layer.2
layer.1 8.571429 2.428571
layer.2 2.428571 7.500000
De nuevo, cov
está de acuerdo con layerStats
si se elimina el NA
de su valor.
Entonces, ¿qué hace ArcGIS hacer en cada una de estas situaciones? Guardar la D
, la importación de ArcGIS, y averiguar...
EDITAR
Los resultados de ArcGIS:
Raster m y m2:
Raster con un NA y m2:
[Ahora, la pregunta es - Qué manera de calcular la covarianza entre los rásteres es correcto?]