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