Home » How to Calculate SMAPE in Python

How to Calculate SMAPE in Python

by Erma Khan

The symmetric mean absolute percentage error (SMAPE) is used to measure the predictive accuracy of models. It is calculated as:

SMAPE = (1/n) * Σ(|forecast – actual| / ((|actual| + |forecast|)/2) * 100

where:

  • Σ – a symbol that means “sum”
  • n – sample size
  • actual – the actual data value
  • forecast – the forecasted data value

This tutorial explains how to calculate SMAPE in Python.

How to Calculate SMAPE in Python

There is no built-in Python function to calculate SMAPE, but we can create a simple function to do so:

import numpy as np

def smape(a, f):
    return 1/len(a) * np.sum(2 * np.abs(f-a) / (np.abs(a) + np.abs(f))*100)

We can then use this function to calculate the SMAPE for two arrays: one that contains the actual data values and one that contains the forecasted data values.

#define arrays of actual and forecasted data values
actual = np.array([12, 13, 14, 15, 15,22, 27])
forecast = np.array([11, 13, 14, 14, 15, 16, 18])

#calculate SMAPE
smape(actual, forecast)

12.45302

From the results we can see that the symmetric mean absolute percentage error for this model is 12.45302%.

Additional Resources

Wikipedia Entry for SMAPE
Rob J. Hyndman’s thoughts on SMAPE
How to Calculate MAPE in Python
How to Calculate MAPE in R
How to Calculate MAPE in Excel

Related Posts