在 terra 中使用自定义回归模型

问题描述 投票:0回答:1

我想将自定义回归模型(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”的结果全为零)。

r geospatial raster terra
1个回答
0
投票

由于自变量

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 

这似乎是正确的。老实说,我不知道为什么这会起作用,而使用栅格作为自变量却不起作用。但这无论如何都更简洁,所以除非你对不同的单元格有不同的时间,否则这看起来很好。

© www.soinside.com 2019 - 2024. All rights reserved.