如何在具有森氏斜率的栅格堆栈上执行mann-kendall趋势分析

时间:2019-07-12 20:40:38

标签: r

我正在尝试为栅格堆栈降水数据计算mann-kendall p值和斜率。每当我尝试使用raster.kendall函数并尝试对其进行绘制时,它都将绘制为线条(而不是缅因州的形状)。使用mann kendall函数有效,但是我也需要sen的斜率,而当我尝试sens.slope函数时,我会收到此错误:complete.cases(object):invalid'type'(S4)of parameter of error。

我尝试使用raster.kendall函数,但是它作为附有图片的图形绘制,这是不正确的。组成栅格堆栈本身的文件看起来不错,但是应用此功能时会出错。有人知道我要去哪里了吗?

或者,我尝试了使用mann kendall函数的另一种方法,但出现错误:警告:错误退出,tauk2,IFAULT = 10。否则它似乎起作用。但是我也需要森的斜度,而这并不能解决这个问题。有人知道如何使用栅格堆栈(每个文件包含降水数据)来计算sen的斜率吗?我不断收到此错误:error in complete.cases(object):invalid 'type' (S4) of argument

这是我的代码:

files<-list.files("pathname", pattern='.bil.bil*',all.files=TRUE,full.names=FALSE) 
#create a list of all rasters with .bif extension

rasterstack<-stack(files)#stack rasters

kendall<-raster.kendall(rasterstack, tau=TRUE, intercept=TRUE, p.value=TRUE, z.value=TRUE, confidence=TRUE, na.rm=TRUE)
names(kendall) <- c("slope","tau", "intercept", "p.value", "z.value", "LCI", "UCI")
plot(kendall$slope)
# plot appears as lines..not at all what it's supposed to be

#alternative method
fun_kendall=function(x){return(unlist(MannKendall(x)))} #create Mann Kendall function
kendall_result=calc(rasterstack,fun_kendall) #run Mann Kendall
names(kendall_result)<-c("tau", "p.value", "score", "denominator", "varianceS")
plot(kendall_result)
#looks good, but get many errors: warning: error exit, tauk2, IFAULT=10

sens.slope(rasterstack, level=0.95)
#getting sens slop, but get error: error in complete.cases(object):invalid 'type' (S4) of argument

0 个答案:

没有答案