terra::regress
采用具有多个层的 SpatRaster 并返回一个包含每个像元的迭代和斜率的栅格。我使用这种方法来估计气候时间序列表面的趋势。
是否还可以额外获取每个单元格的斜率 P 值?这是否可以扩展到其他非参数指标,例如 Theil-sen 和 Mann-kendall?
这是一个最小的、独立的、可重现的示例(请始终包含一个)。
library(terra)
r <- rast(system.file("ex/logo.tif", package="terra"))
x <- regress(r, 1:nlyr(r))
正如您所指出的,这不会返回 p 值。要获得 p 值,您需要编写自己的函数。像这样的东西:
f <- function(Y, X) {
apply(Y, 1, function(y) {
m <- lm(y ~ X)
s <- summary(m)
as.vector(coefficients(s)[2, c(1,4)])
})
}
out <- app(r, fun=f, X=1:3, wopt=list(names=c("slope", "pvalue")))
但这要慢得多。我可能可以在
regress
中实现它,但我不确定这会有多大用处。毕竟,这不是假设检验。斜率可能提供足够的信息吗?