How to Perform Naive Forecasting in R

Spread the love

Naive forecasting is a forecasting technique that leverages historical data to make future predictions. It is known as “naive” because it assumes that future values will follow historical patterns without accounting for any other factors. While naive forecasting may be less sophisticated than other methods like ARIMA or neural networks, it can serve as an excellent baseline and is extremely easy to implement.

In this extensive guide, we will explore how to perform naive forecasting in R, a popular statistical programming language. We’ll cover the basics, delve into the codes, and also discuss some enhancements and considerations to keep in mind.

Introduction to Naive Forecasting

Naive forecasting methods are foundational techniques in time series forecasting. These methods are so-called because they make simple assumptions about the data. The most common types of naive forecasting include:

  1. Last Observation Carried Forward (LOCF): Assumes that the next time point will have the same value as the last available observation.
  2. Seasonal Naive Forecasting: Assumes that the future value will be the same as the last observation from the same season.


  • Basic knowledge of R programming
  • Familiarity with time series data

Installing Necessary Packages

To get started, you need to install the following packages:

  • forecast
  • ggplot2

To install these packages, run:


Loading and Exploring the Data

Let’s load a sample time series dataset and explore it. We will use the AirPassengers dataset, which contains monthly totals of international airline passengers from 1949 to 1960.

# Load the dataset

# Plot the data

Types of Naive Forecasting

  1. Last Observation Carried Forward (LOCF)
    This approach uses the last observation to forecast all future points.
  2. Seasonal Naive Forecasting
    This approach is useful when there is seasonality in the data. It takes the last observation from the same season and uses it as the forecast for future seasonal points.

Implementing Naive Forecasting in R

Last Observation Carried Forward

You can implement this by using the naive() function from the forecast package.


# Perform naive forecasting
naive_model <- naive(AirPassengers, h = 12)  # h is the number of periods for forecasting

# Plot the forecast

Seasonal Naive Forecasting

# Perform seasonal naive forecasting
snaive_model <- snaive(AirPassengers, h = 12)

# Plot the forecast

Evaluating the Model

Common metrics for evaluating forecast accuracy include:

  • Mean Absolute Error (MAE)
  • Mean Squared Error (MSE)
  • Root Mean Squared Error (RMSE)

You can use the accuracy() function to evaluate these:

# Evaluate the naive model
naive_accuracy <- accuracy(naive_model)
print(paste("Naive Model RMSE: ", naive_accuracy[1, "RMSE"]))

# Evaluate the seasonal naive model
snaive_accuracy <- accuracy(snaive_model)
print(paste("Seasonal Naive Model RMSE: ", snaive_accuracy[1, "RMSE"]))

Enhancements and Variations

  1. Adjusting for Trends: While naive forecasting is simple, it can be enhanced by adjusting for trends.
  2. Adding Explanatory Variables: Though not typical in naive models, you could enhance forecasts by adding external variables using other methods like auto.arima with xregs.


Naive forecasting methods offer a straightforward way to make future predictions. They are an excellent starting point for any time series analysis, providing a baseline that more sophisticated models must beat to be considered useful. In R, the forecast package makes it incredibly easy to implement and evaluate naive forecasting methods.

Posted in RTagged

Leave a Reply