R中两个光栅图像之间的线性回归

时间:2018-01-10 19:11:42

标签: r linear-regression raster r-raster

我需要一个线性回归来计算经验参数。 L1是光栅图像,格式为.tif。 L2也是预先计算的光栅图像。两个图像具有相同数量的列和行。

公式是: L1 = a + b * L2,在R中翻译为:

lm(L1 ~ L2)

在第二个公式中,我后来需要 a nd b

我现在面临的问题是,两个栅格都包含NA值,我不知道如何为线性回归构建函数。 我对R不熟悉所以我坚持这个可能相当简单的问题。我想我必须使用calc,但不确定如何。

编辑:到目前为止,我有这段代码:

s = stack(L1,L2)
fun = function(x) {if (is.na(x[1])) { NA } else {lm(x[1] ~ x[2])$coefficients[2]}}

然而,计算需要很长时间才会产生结果

1 个答案:

答案 0 :(得分:6)

如果您想进行本地回归,则可以使用root,这是每个网格单元(像素)的单独回归。但是在这种情况下没有任何意义,因为你只有两个栅格;因此每个网格单元只有一个数据点。

在您的情况下,您似乎想要全局回归。你可以这样:

calc

如果s <- stack(L1, L2) v <- data.frame(na.omit(values(s))) # this step may not be necessary names(v) <- c('L1', 'L2') m <- lm(L2 ~ L1, data=v) m 太大,您可以执行类似

的操作
s

现在有一些数据(并显示如何获取残差)

v <- sampleRegular(s, 100000)  
v <- data.frame(na.omit(v))