使用R中逐月光栅堆栈的光栅线性和条件回归
我有两个光栅堆栈,我想进行折射分析。如果每个堆栈中的每个光栅是一年中的一个月(6个数据点将是两年中的三个月,即两个不同年份的一月、二月和三月),我如何使用指数计算坡度,以便结果生成3个坡度光栅(每个月一个)使用R中逐月光栅堆栈的光栅线性和条件回归,r,date,linear-regression,indices,r-raster,R,Date,Linear Regression,Indices,R Raster,我有两个光栅堆栈,我想进行折射分析。如果每个堆栈中的每个光栅是一年中的一个月(6个数据点将是两年中的三个月,即两个不同年份的一月、二月和三月),我如何使用指数计算坡度,以便结果生成3个坡度光栅(每个月一个) #第一个光栅轨迹 r试着玩1:12 fun(1:12) # Error in model.frame.default(formula = x[6:12] ~ x[1:6], drop.unused.levels = TRUE) : # variable lengths differ (
#第一个光栅轨迹
r试着玩1:12
fun(1:12)
# Error in model.frame.default(formula = x[6:12] ~ x[1:6], drop.unused.levels = TRUE) :
# variable lengths differ (found for 'x[1:6]')
应该是
fun=function(x) { if (is.na(x[1])){ NA } else { lm(x[7:12] ~ x[1:6] )$coefficients [2]}}
工作示例
library(raster)
r <- raster(ncol=10, nrow=10)
set.seed(99)
s <- stack(sapply(1:12, function(i) setValues(r, runif(ncell(r)))))
fun <- function(x) { if (is.na(x[1])){ NA } else { lm(x[7:12] ~ x[1:6] )$coefficients [2]}}
slope <- calc(s, fun)
库(光栅)
r谢谢你的更正@RobertH。关于如何按指数或按月进行回归,您有什么想法吗?
library(raster)
r <- raster(ncol=10, nrow=10)
set.seed(99)
s <- stack(sapply(1:12, function(i) setValues(r, runif(ncell(r)))))
fun <- function(x) { if (is.na(x[1])){ NA } else { lm(x[7:12] ~ x[1:6] )$coefficients [2]}}
slope <- calc(s, fun)
fun3 <- function(x) {
r <- rep(NA, 3)
if (!is.na(x[1])) {
r[1] <- lm(x[3:4] ~ x[1:2] )$coefficients[2]
r[2] <- lm(x[7:8] ~ x[5:6] )$coefficients[2]
r[3] <- lm(x[11:12] ~ x[9:10] )$coefficients[2]
}
r
}
slope3 <- calc(s, fun3)