在MATLAB中计算对称平均百分比误差(SMAPE)

在MATLAB中计算对称平均百分比误差(SMAPE),matlab,Matlab,我试图编写一些代码,自动计算(所谓的)与一系列预测相关的对称平均百分比误差 此处描述了相关方程式 为了完成这项任务,我编写了以下代码 SMAPE=(总和(绝对值(结果(:,3))/(绝对值(结果(:,1))+ abs(Results(:,2))/2))*((numel(Results(:,3)))^(-1)) 我的代码是有效的,但一直受到批评,理由是它太长,难以阅读,我同意它很难阅读。如果我能以更简单的方式完成同样的事情,那么定义变量y和f如何,那么它将非常简单: y = Results(:,2

我试图编写一些代码,自动计算(所谓的)与一系列预测相关的对称平均百分比误差

此处描述了相关方程式

为了完成这项任务,我编写了以下代码

SMAPE=(总和(绝对值(结果(:,3))/(绝对值(结果(:,1))+ abs(Results(:,2))/2))*((numel(Results(:,3)))^(-1))


我的代码是有效的,但一直受到批评,理由是它太长,难以阅读,我同意它很难阅读。如果我能以更简单的方式完成同样的事情,那么定义变量y和f如何,那么它将非常简单:

y = Results(:,2);
f = Results(:,3);
0.5*mean(abs(y-f)./(abs(y)+abs(f)))
我想是的

2.0*mean(abs(y-f)./(abs(y)+abs(f)))

谢谢你的回答。不幸的是,由于某些原因,我在执行此操作时得到的答案与中提供的答案不一致,而我的旧代码(过长)会收敛。@user1205901我使用了负号而不是加号,现在应该可以了。