How do you calculate the Mean Absolute Percentage Error (MAPE) in R?

The Mean Absolute Percentage Error (MAPE) is a measure of accuracy for forecasting models, commonly used in economics and finance. In R, the MAPE can be calculated by taking the absolute difference between the actual and forecasted values, dividing it by the actual value, and then multiplying by 100 to get a percentage. This process is repeated for each data point, and the resulting values are then averaged to get the final MAPE. This statistical method is useful for evaluating the performance of forecasting models and determining the level of error in the predictions.

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 packagelibrary(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.

x