How to Perform a Variance Ratio Test in R

Spread the love

When working with time series data, testing for the presence of a unit root or for market efficiency is an essential step in the analysis process. In this context, the Variance Ratio (VR) test is a statistical tool that is often employed. In this article, we will guide you through performing a Variance Ratio test in R.

What is the Variance Ratio Test?

The Variance Ratio test was developed by econometrician Andrew W. Lo and A. Craig MacKinlay. This test is useful in determining if a time series is a random walk or not. A random walk is a stochastic process where changes in a variable have the same distribution and are independent of each other. In the context of financial markets, if a market is efficient, then the price series should follow a random walk.

The Variance Ratio test is based on the property of a random walk where the variance of the increments is linear in the time interval. It compares the variance of the series over periods of length k with k times the variance of the original series. If the ratio of these variances significantly deviates from 1, it can be interpreted as evidence against the random walk hypothesis.

In this article, we’ll illustrate how to conduct these steps in R.

Installing Necessary Packages

For executing the Variance Ratio test in R, the “tseries” package is required. This can be installed using the install.packages() function, as follows:


After installation, the package can be loaded into your R environment using the library() function:


Performing the Variance Ratio Test in R

The Variance Ratio test in R can be performed using the Lo.Mac() function, part of the tseries package. This function is designed to calculate the Variance Ratio test statistic and the corresponding p-value.

Here’s how you can use the Lo.Mac() function:

# Load a dataset
y <- EuStockMarkets[, "DAX"]

# Perform the Variance Ratio test
result <- Lo.Mac(y, k = 2)

# Print the result

In this code, y is the time series data being tested, and k is the grouping interval of your data. The Lo.Mac() function calculates the Variance Ratio test statistic and p-value and stores it in the result object.

Interpreting the Results

The output of the Lo.Mac() function includes the Variance Ratio test statistic and the corresponding p-values. If the p-value is less than the selected significance level (often 0.05), then the null hypothesis of the series being a random walk is rejected. However, if the p-value is more significant than the significance level, you cannot reject the null hypothesis, which suggests that your time series data may be a random walk.

Remember, not being able to reject the null hypothesis does not confirm the series as a random walk. It merely states that there’s insufficient evidence to suggest otherwise. Also, like any statistical test, the Variance Ratio test is susceptible to Type I and Type II errors. Type I error is when you wrongly reject a true null hypothesis, often termed a “false positive.” On the other hand, Type II error occurs when you fail to reject a false null hypothesis, or a “false negative.”


The Variance Ratio test serves as a powerful tool when testing the random walk hypothesis in time series data. With R and its “tseries” package, performing this test becomes simple and efficient. However, it’s important to fully understand the principles and assumptions that underlie the Variance Ratio test to avoid misinterpretation and incorrect conclusions.

Posted in RTagged

Leave a Reply