繁体   English   中英

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

[英]Linear regression between two raster images in R

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

公式为:L1 = a + b * L2在R中转换为:

lm(L1 ~ L2)

在第二个式I以后需要一个第二

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

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

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

但是,这需要花费很长时间才能计算出结果

如果要进行局部回归,可以使用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))

等等

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

library(raster)
f <- stack(system.file("external/rlogo.grd", package="raster")) 
s <- stack(f)
names(s)
v <- data.frame(na.omit(values(s)))
m <- lm(red ~ green, data=v)
m

p <- predict(s, m)
residuals <- s$red - p

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM