你的函数是错误的。您可以使用以下函数来计算mae
and rae
没有任何包装
x <- c(1.1, 1.9, 3.0, 4.4, 5.0, 5.6)
y <- c(0.9, 1.8, 2.5, 4.5, 5.0, 6.2)
mae1 <- function(x,y)
{
mean(abs(x-y))
}
mae1(x, y)
#> [1] 0.25
rae1 <- function(x,y)
{
sum(abs(x-y))/sum(abs(x - mean(x)))
}
rae1(x,y)
#> [1] 0.1666667
library(Metrics)
#> Warning: package 'Metrics' was built under R version 3.6.2
mae(x, y)
#> [1] 0.25
rae(x,y)
#> [1] 0.1666667
Created on 2019-12-27 by the reprex package https://reprex.tidyverse.org (v0.3.0)
它给出的输出与Metrics
包裹。
Update
如果您的数据包含 NA,则上述函数以及包的函数Matrics
, 将失败。在这种情况下使用以下代码
x <- c(1.1, 1.9, 3.0, 4.4, 5.0, 5.6, NA)
y <- c(0.9, 1.8, 2.5, 4.5, 5.0, 6.2, 2)
mae1 <- function(x,y, na.rm=TRUE)
{
mean(abs(x-y), na.rm=na.rm)
}
mae1(x, y, na.rm=TRUE)
#> [1] 0.25
rae1 <- function(x,y, na.rm=TRUE)
{
sum(abs(x-y), na.rm=na.rm)/sum(abs(x - mean(x, na.rm=na.rm)), na.rm=na.rm)
}
rae1(x,y, na.rm=TRUE)
#> [1] 0.1666667
library(Metrics)
#> Warning: package 'Metrics' was built under R version 3.6.2
mae(x, y)
#> [1] NA
rae(x,y)
#> [1] NA
Created on 2019-12-27 by the reprex package https://reprex.tidyverse.org (v0.3.0)