Как рассчитать функцию сравнения в Matlab - PullRequest
0 голосов
/ 22 февраля 2019

Я изучаю среднеквадратичную ошибку (RMSE) и нормированную среднеквадратичную ошибку (NRMSE).

Согласно статье Википедии и согласно Matlab'sfunction .

Почему значение NRMSE отличается от NRMSE вручную в Википедии и NRMSE на compare коде MATLAB?

Не могли бы вы научить меня вычислять compare функцию математически?

Например, я сделал как ниже.Метод Википедии:

Vt = 1:11;
V1 = [11.5 7.6 6.7 8.3 7.7 7.4 6.5 5.6 6.6 11.2 11.9]; % obseved data
V2 = [11.9 10.8 8.3 9.6 11.4 10.2 12.4 9.6 8.3 8 9]; % estimationd data
RMSE = sqrt(mean((V1-V2).^2)); % RMSE = 3.14107
NRMSE = RMSE/(max(V2)-min(V2)) % NRMSE = 0.71

Сравнение внутренней функции MATLAB:

% to use compare
VV1 = iddata(V1', Vt');
VV2 = iddata(V2', Vt');
compare(VV1,VV2) % -48.46%

1 Ответ

0 голосов
/ 22 февраля 2019

Согласно документации compare, оценка NRMSE по Matlab не совпадает с вашей.

Вам необходимо знать, что существует множество способов вычисления RMSE и NRMSE.Из статьи Википедии, на которую вы ссылались Среднеквадратичное отклонение :

, в литературе нет последовательных средств нормализации .

Вы выбрали один путь, а у Matlab - другой.

fit

Поэтому, если вы хотите сопоставить результаты Matlab, вам следует сделать следующее:

NRMSE = 100*(1 - norm(V1-V2)/norm(V1-mean(V1)))
[y,fit,x0] =compare(VV1,VV2); fit

Возвращает

 NRMSE =
  -48.4595

 fit =
  -48.4595
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...