移动窗口回归



我想对代表Landsat数据的Band3和Band4的两个光栅堆栈的每个像素执行移动窗口回归。结果应该是两个额外的堆栈,一个代表截距,另一个代表回归的斜率。因此,堆栈B3和堆栈B4的第一层导致堆栈截距和堆栈斜率的第一层。堆栈B3和堆栈B4的第2层产生第2层....等等。

我已经使用了gwr函数,但想留在栅格包中。我不知何故知道focal必须包括为了设置我的移动窗口(应该是3x3像素)和某种程度上的线性模型,如:lm(as.matrix(b3)~as.matrix(b4))虽然我不认为这让我的像素值…

除了栅格堆栈,还可以采用逐层方法。(所以它不一定是Band3的栅格堆栈。

有人知道如何在R中编程吗?

这是一种方法,改编自?raster::localFun

set.seed(0)
b <- stack(system.file("external/rlogo.grd", package="raster"))
x <- flip(b[[2]], 'y') + runif(ncell(b))
y <- b[[1]] + runif(ncell(b))
# local regression:
rfun <- function(x, y, ...) {
    d <- na.omit(data.frame(x, y))
    if (nrow(d) < 3) return(NA)
    m <- lm(y~x, data=d)
    # return slope
    coefficients(m)[2]
}
ff <- localFun(x, y, fun=rfun)
plot(ff)

不幸的是,您将不得不运行此两次以获得斜率和截距(coefficients(m)[1])。

最新更新