How to Calculate SMAPE in R


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

The smaller the value for SMAPE, the better the predictive accuracy of a given model.

This tutorial explains two different methods you can use to calculate SMAPE in R.

Method 1: Use smape() from the Metrics Package

One way to calculate SMAPE in R is to use the smape() function from the Metrics package:

library(Metrics)

#define actual values
actual <- c(12, 13, 14, 15, 15, 22, 27)

#define forecasted values
forecast <- c(11, 13, 14, 14, 15, 16, 18)

#calculate SMAPE
smape(actual, forecast)

[1] 0.1245302

We can see that the symmetric mean absolute percentage error for this model is 12.45%.

Method 2: Write Your Own Function

Another way to calculate SMAPE is to create our own function as follows:

find_smape <- function(a, f) {
  return (1/length(a) * sum(2*abs(f-a) / (abs(a)+abs(f))*100))
}

We can then use this function to calculate the SMAPE between a vector of actual values and forecasted values:

#define actual values
actual <- c(12, 13, 14, 15, 15,22, 27)

#define forecasted values
forecast <- c(11, 13, 14, 14, 15, 16, 18)

#calculate SMAPE
find_smape(actual, forecast)

[1] 12.45302

Once again the SMAPE turns out to be 12.45%, which matches the results from the previous example.

Additional Resources

How to Calculate MAPE in R
How to Calculate MAD in R
How to Calculate MAE in R
How to Calculate RMSE in R
How to Calculate MSE in R

Leave a Reply

Your email address will not be published.