我想将自定义回归模型(mblm 包)拟合到时间序列栅格中的每个单元格(每层是一年)。我的光栅操作全部发生在 terra 上,所以如果可能的话,我更愿意继续在那个包世界中。
示例数据集:
d<-rast(lapply(1:10, FUN = function(x){
rast(matrix(rnorm(100, mean=x), ncol=10))
}))
names(d)<-1:10
我已经研究过回归函数,但我认为我可能误解了它的工作原理。例如,如果我创建一个假设的 10 层年份栅格:
d1<-rast(lapply(names(d)[1:10], function(x) {rast(matrix(x, nrow=10, ncol=10))
}))
names(d1)<-1:10
并在回归中使用内置的 lm:
plot(regress(d, d1))
坡度栅格(标记为“x”的结果全为零)。
由于自变量
d1
对于所有单元格都相同,因此您可以使用单个向量:
regress(d, 1:10)
或者,对于 d 中的其他层数:
regress(d, 1:nlyr(d))
这为您提供了模型参数,例如:
names : (Intercept), x
min values : -1.523671, 0.6604291
max values : 2.090155, 1.2473721
这似乎是正确的。老实说,我不知道为什么这会起作用,而使用栅格作为自变量却不起作用。但这无论如何都更简洁,所以除非你对不同的单元格有不同的时间,否则这看起来很好。