mape的matlab,如何在MATLAB中計算MAPE和DS

在這裏我實現了兩個方向對稱(DS)和平均絕對誤差百分比(MAPE)作爲功能

function mape(Y, Ypredict, indxtest)

smape = 0;

if isempty(indxtest)

for i = 1 :length(Y)

smape = smape + (abs((Ypredict(i) - Y(i)))/Y(i));

end

else

j = find(indxtest);

for i = 1 :length(j)

smape = smape + (abs((Ypredict(i) - Y(j(i))))/Y((j(i))));

end

end

mape = smape * 100/length(Y)

end

-------------------------------------------------------

function ds(Y, Ypredict, indxtest)

sds = 0;

if isempty(indxtest)

for i = 2 :length(Y)

if (((Y(i)-Y(i-1))*(Ypredict(i)-Ypredict(i-1))) > 0)

sds = sds + 1;

end

end

else

j = find(indxtest);

for i = 2 :length(j)

if (((Y(j(i))-Y(j(i-1)))*(Ypredict((i))-Ypredict(i-1))) > 0)

sds = sds + 1;

end

end

end

ds = sds * 100/length(j)

end

雖然這個工作對我很好,但如果有人可以幫助我要麼提高它我會很高興最大限度地減少線路數量或提高效率。

你可能感兴趣的:(mape的matlab)