R: Diebold-Mariano test for predictive accuracy

dm.test {forecast} | R Documentation

## Diebold-Mariano test for predictive accuracy

### Description

The Diebold-Mariano test compares the forecast accuracy of two forecast methods.

### Usage

    dm.test(
      e1,
      e2,
      alternative = c("two.sided", "less", "greater"),
      h = 1,
      power = 2
    )

### Arguments

`e1` | Forecast errors from method 1.
`e2` | Forecast errors from method 2.
`alternative` | a character string specifying the alternative hypothesis, must be one of `"two.sided"` (default), `"greater"` or `"less"`. You can specify just the initial letter.
`h` | The forecast horizon used in calculating `e1` and `e2`.
`power` | The power used in the loss function. Usually 1 or 2.

### Details

This function implements the modified test proposed by Harvey, Leybourne and Newbold (1997). The null hypothesis is that the two methods have the same forecast accuracy. For `alternative="less"`, the alternative hypothesis is that method 2 is less accurate than method 1. For `alternative="greater"`, the alternative hypothesis is that method 2 is more accurate than method 1. For `alternative="two.sided"`, the alternative hypothesis is that method 1 and method 2 have different levels of accuracy.

### Value

A list with class `"htest"` containing the following components:

`statistic` | the value of the DM-statistic.
`parameter` | the forecast horizon and loss function power used in the test.
`alternative` | a character string describing the alternative hypothesis.
`p.value` | the p-value for the test.
`method` | a character string with the value "Diebold-Mariano Test".
`data.name` | a character vector giving the names of the two error series.

### Author(s)

George Athanasopoulos

### References

Diebold, F.X. and Mariano, R.S. (1995) Comparing predictive accuracy. Journal of Business and Economic Statistics, 13, 253-263.

Harvey, D., Leybourne, S., & Newbold, P. (1997). Testing the equality of prediction mean squared errors. International Journal of forecasting, 13(2), 281-291.

### Examples

    # Test on in-sample one-step forecasts
    f1 <- ets(WWWusage)
    f2 <- auto.arima(WWWusage)
    accuracy(f1)
    accuracy(f2)
    dm.test(residuals(f1),residuals(f2),h=1)

    # Test on out-of-sample one-step forecasts
    f1 <- ets(WWWusage[1:80])
    f2 <- auto.arima(WWWusage[1:80])
    f1.out <- ets(WWWusage[81:100],model=f1)
    f2.out <- Arima(WWWusage[81:100],model=f2)
    accuracy(f1.out)
    accuracy(f2.out)
    dm.test(residuals(f1.out),residuals(f2.out),h=1)

[Package forecast version 8.12 Index]