R круговая статистика стека временных рядов растра - PullRequest
0 голосов
/ 21 декабря 2018

У меня есть raster time-series со значениями от 1 до 36, представляющими 10-дневные (dekads) временные шаги и значения NA.Мне нужно вычислить average и standard 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)
...