我有两个时间序列。一个是预测的,一个是原始的。为了计算预测精度,我想计算MAPE(平均绝对百分比误差)。
平均绝对百分比误差(MAPE),也称为平均绝对百分比偏差(MAPD),是统计中预测方法的预测准确度的度量,例如在趋势估计中。它通常以百分比表示准确度,并由公式定义:
我在MATLAB中这样做如下:
function m = mape(testY, pred)
% Compute mean absolute percent error
%
% m = mape(actual, pred)
%
% actual is a column vector of actual values
% pred is a matrix of predictions (one per column)
%
% m is the mean absolute percent error (ignoring NaNs) for each column of
% pred.
err = abs(bsxfun(@minus, pred, testY));
pcterr = bsxfun(@rdivide, err, testY);
m = nanmean(pcterr,1);
end
但是当Actual系列中有0时,函数会在结果中返回-INF。
我想在其他序列中排除0和相应的值并计算MAPE值。
答案 0 :(得分:1)
您可以在nanmean中使用逻辑索引来排除testY
m = nanmean(pcterr(testY~=0),1);