How to Calculate MAPE in R


One of the most common metrics used to measure the forecasting accuracy of a model is MAPE, which stands for mean absolute percentage error.

The formula to calculate MAPE is as follows:

MAPE = (1/n) * Σ(|actual – forecast| / |actual|) * 100

where:

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

MAPE is commonly used because it’s easy to interpret and explain. For example, a MAPE value of 6% means that the average difference between the forecasted value and the actual value is 6%.

This tutorial provides two different methods you can use to calculate MAPE in R.

Method 1: Write Your Own Function

Suppose we have a dataset with one column that contains the actual data values and one column that contains the forecasted data values:

#create dataset
data <- data.frame(actual=c(34, 37, 44, 47, 48, 48, 46, 43, 32, 27, 26, 24),
                   forecast=c(37, 40, 46, 44, 46, 50, 45, 44, 34, 30, 22, 23))

#view dataset
data

   actual forecast
1      34       37
2      37       40
3      44       46
4      47       44
5      48       46
6      48       50
7      46       45
8      43       44
9      32       34
10     27       30
11     26       22
12     24       23

To compute the MAPE, we can use the following function:

#calculate MAPE
mean(abs((data$actual-data$forecast)/data$actual)) * 100

[1] 6.467108

The MAPE for this model turns out to be 6.467%. That is, the average absolute difference between the forecasted value and the actual value is 6.467%.

Method 2: Use a Package

We could also calculate MAPE for the same dataset using the MAPE() function from the MLmetrics package, which uses the following syntax:

MAPE(y_pred, y_true)

where:

  • y_pred: predicted values
  • y_true: actual values

Here is the syntax we would use in our example:

#load MLmetrics package
library(MLmetrics)

#calculate MAPE
MAPE(data$forecast, data$actual)

[1] 0.06467108

This produces the same MAPE value of 6.467% that we calculated using the previous method.

Leave a Reply

Your email address will not be published.