How to Perform a KPSS Test in R

Spread the love

In the world of statistical analysis and econometrics, testing for stationarity of time series data is often a fundamental step in preprocessing and model fitting. Various tests are available for this purpose, with one of the more popular ones being the Kwiatkowski-Phillips-Schmidt-Shin (KPSS) test. This article will guide you on how to perform a KPSS test in R.

What is the KPSS Test?

The KPSS test, named after its developers Kwiatkowski, Phillips, Schmidt, and Shin, is a type of statistical test that checks for the stationarity of a time series. Stationarity refers to a property of a time series whereby its statistical properties such as mean and variance do not change over time. This attribute is essential for certain statistical models to perform optimally.

Different from the Augmented Dickey-Fuller (ADF) test, another widely used test for stationarity, the KPSS test assumes as its null hypothesis that the series is stationary (or trend stationary), while the alternative hypothesis assumes that the series has a unit root (is not stationary).

The KPSS test procedure includes three major steps:

  1. Formulate the null and alternative hypotheses.
  2. Compute the KPSS statistic.
  3. Compare the KPSS statistic with the critical values from the KPSS distribution to decide whether to reject the null hypothesis.

In this article, we will illustrate how to execute these steps in R.

Installing Necessary Packages

To perform the KPSS test in R, you will need to install the tseries package, which is a package for time-series analysis and computational finance. If you haven’t already installed this package, you can do so using the install.packages() function:


After installation, you can load the package into your R session using the library() function:


The KPSS Test in R

The KPSS test in R can be performed using the kpss.test() function from the tseries package. This function calculates the KPSS test statistic and compares it to the critical values to determine whether the null hypothesis should be rejected.

Here is a simple way to use the kpss.test() function:

# Perform the KPSS test
result <- kpss.test(y)

In this code, y is the time series data you are testing for stationarity, and result is an object that will contain the test results. The kpss.test() function will automatically print the test results to the console.

The output of the kpss.test() function includes the KPSS test statistic, the p-value of the test, and the critical values for different significance levels. If the p-value is less than the significance level (usually 0.05), you reject the null hypothesis.

You can also specify whether to test for level stationarity or trend stationarity by using the null argument of the kpss.test() function:

# Test for level stationarity
result_level <- kpss.test(y, null = "Level")

# Test for trend stationarity
result_trend <- kpss.test(y, null = "Trend")

In this code, null = "Level" specifies that the null hypothesis is level stationarity (the series is stationary around a constant mean), and null = "Trend" specifies that the null hypothesis is trend stationarity (the series is stationary around a deterministic trend).

Interpreting the Results of the KPSS Test

Interpreting the KPSS test is quite straightforward. If the p-value is less than or equal to your chosen significance level (usually 0.05), you would reject the null hypothesis of stationarity. Conversely, if the p-value is larger than the significance level, you fail to reject the null hypothesis, suggesting that your time series data is stationary.

Keep in mind that failing to reject the null hypothesis does not confirm that the series is indeed stationary. It merely means that there is not enough evidence to suggest otherwise.

Moreover, it’s important to remember that the KPSS test, like all statistical tests, is susceptible to Type I and Type II errors. A Type I error occurs when you incorrectly reject a true null hypothesis (a “false positive”), while a Type II error happens when you fail to reject a false null hypothesis (a “false negative”).


In conclusion, the KPSS test is a powerful tool for testing the stationarity of a time series. By leveraging R and its tseries package, performing the KPSS test becomes a fairly simple task. Nonetheless, it is crucial to understand the underlying assumptions and nuances of the KPSS test to avoid misinterpretations.

Posted in RTagged

Leave a Reply