簡體   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