Что делает all.equal в R, когда он выполняется на двух матрицах - PullRequest
0 голосов
/ 21 октября 2019

Что делает all.equal в R, когда он выполняется на двух матрицах, как показано ниже? Что такое средняя относительная разница и как она рассчитывается?

a <-
  matrix(c(4, 1, 1, 4),
         nrow = 2,
         dimnames = list(Guess = c("Milk", "Tea"),
                         Truth = c("Milk", "Tea")))
b <-
matrix(c(2, 3, 3, 2),
       nrow = 2,
       dimnames = list(Guess = c("Milk", "Tea"),
                       Truth = c("Milk", "Tea")))

all.equal(a, b)

Ответы [ 2 ]

2 голосов
/ 21 октября 2019

Для числового ввода средняя относительная разница рассчитывается как абсолютная разница между обоими векторами по сравнению с первым вектором. Так что-то вроде

mean(abs(a-b))/mean(abs(a))
#[1] 0.8
0 голосов
/ 21 октября 2019

Это странное поведение. «Иструирование» всех равных приведет к ожидаемому результату (ЛОЖЬ). Извините, если я действительно не отвечаю на вопрос.

a <-
  matrix(c(4, 1, 1, 4),
         nrow = 2,
         dimnames = list(Guess = c("Milk", "Tea"),
                         Truth = c("Milk", "Tea")))
b <-
  matrix(c(2, 3, 3, 2),
         nrow = 2,
         dimnames = list(Guess = c("Milk", "Tea"),
                         Truth = c("Milk", "Tea")))

isTRUE(all.equal(a, b))

a <-
  matrix(c(4, 1, 1, 4),
         nrow = 2,
         dimnames = list(Guess = c("Milk", "Tea"),
                         Truth = c("Milk", "Tea")))
b <-
  matrix(c(4, 1, 1, 4),
         nrow = 2,
         dimnames = list(Guess = c("Milk", "Tea"),
                         Truth = c("Milk", "Tea")))

isTRUE(all.equal(a, b))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...