У меня есть 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)