image - RMSE Landsat8 AVHRR

标签 image error-handling

我想在Landsat8 NDVI IMG和AVHRR NDVI IMG之间进行空间验证

两个IMG具有相同的投影,范围和像素大小

为此,我想确定RMSE。
但是,我收到错误消息:

在行:

error <- actual - predicted

此错误,无法继续
实际错误-预测:
二进制运算符的非数字参数

我该如何更改代码才能获得成功?
这是我完整的代码
library(sp)
library(raster)
library(rgdal)
library(rastervis)
library(rgl)
library(dplyr)

#Setze den Pfad
setwd("/home/franziska/r-Daten/RSME")

#lade beide Raster
AVHRR <- raster("AVHRR_NDVI.tif")
Landsat <- raster("Landsat_NDVI.tif")`

# diese Funktion soll den RMSE bestimmen
rmse <- function(error)
{
 sqrt(mean(error^2))
}

# diese Funktion gibt den absoluten Fehler zurück
mae <- function(error)
{
  mean(abs(error))
}

# Weiße die Raster den Variablen zu
actual <- c(Landsat)
predicted <- c(AVHRR)

# Berechne den Fehler
error <- actual - predicted

# Ausgabe der Zwischenberechnungen
rmse(error)
mae(error)


lm.D9 <- lm(Landsat ~ AVHRR)
rmse(lm.D9$residuals) # RSME

最佳答案

这是带有一些示例数据的简化代码(这是您应该在此处提出问题的方式)。

library(raster)
f <- system.file("external/rlogo.grd", package="raster")
Landsat <- raster(f, 1)
AVHRR <- raster(f, 3)

error <- Landsat - AVHRR
#You can do
#[1] 25.52578
#mae <- mean(abs(values(error)))
#mae
#[1] 15.28597

但是内存安全的方法是
cellStats(error, "rms")
#[1] 25.52742
cellStats(abs(error), "mean")
#[1] 15.28597

请注意,我返回的是一个“全局”值,而您的函数将返回一个栅格---暗示您可能需要“本地”错误统计信息。但这仅在您具有多层栅格数据时才有意义。在您的示例中,您没有这样做;但请参见下面的本地示例。

那是什么导致您的错误呢?你做
#actual <- c(Landsat)
#predicted <- c(AVHRR)
#error <- actual - predicted

或与我们的示例数据
error <- c(Landsat) - c(AVHRR)
#Error in c(Landsat) - c(AVHRR) : non-numeric argument to binary operator

这是因为c(Landsat)创建了list,并且您不能减去两个列表。
class(c(Landsat))
#[1] "list"

你可以做
error <- c(Landsat)[[1]] - c(AVHRR)[[1]]

(但是你为什么会)

如果需要“本地”值,则可以执行以下操作:
library(raster)
f <- system.file("external/rlogo.grd", package="raster")
Landsat <- stack(f)
AVHRR <- Landsat[[3:1]]
error <- Landsat - AVHRR

mae <- mean(abs(error))
plot(mae)   

关于image - RMSE Landsat8 AVHRR,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54922767/

相关文章:

css - 如何将图像垂直对齐到 div 的中间?

r - R中的HTTP错误400,错误处理,如何重试而不是强制停止?

android - Android错误日志, list 中的 Activity ,FATAL EXCEPTION : AsyncTask #1

ios - Swift 3 访问 NSUserDefaults 时出错,为什么?

python - 创建具有多种颜色的图像并添加文本

html - 当叠加在 img 上时,使文本显示为带有半透明黑色背景的白色

python - tkinter python : catching exceptions

cocoa - 因 Cocoa 中的错误处理而陷入困境。我是不是太过分了?

php - 如何使用 PHP 使用 Jcrop 将裁剪后的图像保存到目录中

image - 推送图像 Vaadin Java