栅格时间序列堆栈循环统计

时间:2018-12-21 15:49:31

标签: r statistics time-series r-raster

我有一个raster time-series,值从1到36,代表10天(dekads)的时间步长和NA值。 我需要计算averagestandard deviation,并考虑到折合为circular(36是一年中的最后一个折合,第一个是1)。

以下是平均值的代码(似乎可行),但我无法编写标准差的代码。 能否请您检查平均值计算代码是否产生正确的输出,并帮助我编写标准偏差的输出。

非常感谢

require(raster)
r <- raster(ncol=50, nrow=50)
s <- stack(lapply(1:length(r), function(x) setValues(r, values = sample(x = c(0:36),size = ncell(r), replace = T))))

# 0 is set to NA

s[s==0]<-NA

#  function
conv <- 2*pi/36  #SET HERE THE time steps

fun1 <- function(m,na.rm=T){
  x1 = Arg(mean(exp(conv*(m-1)*1i),na.rm=na.rm))
  x2 = x1/conv
  x3 = (x2 + 36) %% 36
  return(x3)
}

# MEAN calculation
s_avg <- calc(s,fun1)
s_avg <- round(s_avg,0)
s_avg <- s_avg + 1
s_avg [s_avg==37] <- 1
s_avg

plot(s_avg)

0 个答案:

没有答案