如何在Python中实现MASE(平均绝对比例误差)

huangapple go评论54阅读模式
英文:

How to implement MASE (Mean Absolute Scaled Error) in python

问题

你可以通过以下方式计算与你的预测值和实际值相关的MASE:

MASE(Mean Absolute Scaled Error)的计算方式如下:

  1. 首先,计算每个预测值与相应的实际值之间的绝对误差(Absolute Error),即:|Predicted - Actual|。

  2. 接下来,计算这些绝对误差的平均值,即Mean Absolute Error(MAE)。

  3. 然后,将MAE除以一个参考周期的MAE。这个参考周期通常是数据的季节性周期或时间序列的周期性。如果你的数据没有季节性,可以选择一个适当的参考周期。

  4. 最后,将结果乘以一个常数,通常是2,以获得最终的MASE值。

公式如下:
[ MASE = \frac{MAE}{\frac{1}{n}\sum_{i=1}^{n}|Y_t - Y_{t-1}|} \times 2 ]

其中,(Y_t)是实际值,(Y_{t-1})是对应的实际值在参考周期内的值。

这样,你就可以计算出相对于你的预测和实际值的MASE值。

英文:

I have Predicted values and Actual values, and I can calculate Mean Absolute Percentage Error by doing:

abs(Predicted-Actual)/ Predicted *100

How do I calculate MASE with respect to my Predicted and Actual values?

答案1

得分: 1

"MASE均方绝对缩放误差)的计算方式是从实际值中减去预测值,然后除以平均预测误差,其中使用前一步的实际值作为预测或预测值。

以下是以列表推导式形式表示的方程式:

mase = numpy.mean([abs(Actual[i] - Predicted[i]) / (abs(Actual[i] - Actual[i - 1]) / len(Actual) - 1) for i in range(1, len(Actual))])

以下是以函数形式表示的方程式:

def MASE(Actual, Predicted):
    values = []
    for i in range(1, len(Actual)):
        values.append(abs(Actual[i] - Predicted[i]) / (abs(Actual[i] - Actual[i - 1]) / len(Actual) - 1))
    return numpy.mean(values)

"

英文:

The Mean Absolute Scaled Error (MASE) is calculated by subtracting the forecasted or predicted value from the actual value divided by the average forecast error where the actual value from the prior step is used as the prediction or forecast.

Here is the equation as a list-comprehension:

mase = numpy.mean([abs(Actual[i] - Predicted[i]) / (abs(Actual[i] - Actual[i - 1]) / len(Actual) - 1) for i in range(1, len(Actual))])

Here is the equation as a function:

def MASE(Actual, Predicted):
    values = []
    for i in range(1, len(Actual)):
        values.append(abs(Actual[i] - Predicted[i]) / (abs(Actual[i] - Actual[i - 1]) / len(Actual) - 1))
    return numpy.mean(values)

答案2

得分: 0

来自N-Beats作者实现的代码片段,我认为这是正确的版本:

np.mean(np.abs(forecast - outsample)) / np.mean(np.abs(insample[:-frequency] - insample[frequency:]))


来源:https://github.com/ServiceNow/N-BEATS/blob/c746a4f13ffc957487e0c3279b182c3030836053/common/metrics.py#L24
英文:

A code snippet from the N-Beats authors' implementation, I think this is the correct version:

np.mean(np.abs(forecast - outsample)) / np.mean(np.abs(insample[:-frequency] - insample[frequency:]))

Src: https://github.com/ServiceNow/N-BEATS/blob/c746a4f13ffc957487e0c3279b182c3030836053/common/metrics.py#L24

huangapple
  • 本文由 发表于 2023年5月23日 01:13:05
  • 转载请务必保留本文链接:https://go.coder-hub.com/76308514.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定