Я работаю с растрами, и у меня есть RasterStack с 7n слоями. Я хотел бы рассчитать регрессию по пикселям, используя формулу ниже. Я пытался сделать это с помощью raster::calc
, но моя функция не удалась с сообщением:
'Ошибка в lm.fit (x, y, offset = offset, singular.ok = singular.ok, ...): 0 (не-NA) случаев.'
Но все растры в порядке и содержат числа (не только NA), я могу построить график и вычислить общую линейную регрессию по формуле
cr.sig=lm (raster::as.array(MK_trend.EVI.sig_Only) ~ raster::as.array(stack.pet)+raster::as.array(stack.tmp)+raster::as.array(stack.vap)+raster::as.array(stack.pre)+raster::as.array(stack.wet)+raster::as.array(stack.dtr))
Но когда я складываю слои с
allData = stack(MK_trend.EVI.sig_Only,stack.dtr,stack.wet,stack.pre,stack.vap,stack.tmp,stack.pet)
и попробуйте функцию calc
# Regression Function, R2
lmFun=function(x){
x1=as.vector(x);
if (is.na(x1[1])){
NA
} else {
m = lm(x1[1] ~ x1[2]+x1[3]+x1[4]+x1[5]+x1[6]+x1[7])
return(summary(m)$r.squared)
}
}
Я вижу сообщение об ошибке.
Я новичок в R и программировании, так что, может быть, произошла какая-то глупая ошибка? Буду признателен за любой намек, чтобы обработка работала.