Skip to content
All library documents

Interpreting the Phillips–Ouliaris Cointegration Test Output

Article Quant Q&A · Author: anonymous

Summary

The document asks how to interpret the Phillips–Ouliaris test in R’s urca package and whether its output contains an estimated cointegrating vector. It constructs a bivariate example with a known relation, runs the test, and reports a statistic above the stated 1% critical value, which supports rejecting the null of no cointegration under that test setup.

The displayed test-regression output contains separate regressions for each variable, with both series appearing as predictors. The questioner notes that these coefficients do not match the known vector and asks how to access the regression components. The document provides no answer explaining the package’s object structure or whether the test estimates a normalized cointegrating vector. Accordingly, the example demonstrates a significant test result but does not establish how to recover the vector from ca.po. Interpretation of the statistic and vector estimation should be checked against the package documentation and the chosen test specification.

Key ideas

  • The example uses a known relation between two series to examine Phillips–Ouliaris test output.
  • A statistic exceeding its stated critical value indicates evidence against the null of no cointegration for that specification.
  • The displayed auxiliary regressions include both series as predictors and do not directly reveal the expected vector.
  • The document raises, but does not resolve, how to interpret the regression coefficients or access the test object.
  • A significant cointegration test result alone does not explain how to estimate or normalize a cointegrating vector.

Tags

Full text
# Philips-Ouliaris test for cointegration


# Philips-Ouliaris test for cointegration












I'm trying to implement cointegration tests using the R urca package. I've figured out the Johansen test (ca.jo), but I'm having trouble with the Philips-Ouliaris test (ca.po). I have two questions:

- How do I interpret the results?

- How do I get the cointegrating vectors (the B matrix)?

I understand how the test itself works, but I find the ca.po routine confusing. To give an example: First, I create a bivariate time series with a known cointegrating relation:

```
> x = cumsum(rnorm(100,1))
> y = -1*x + rnorm(n=100,mean=.1,sd=.1)
> z = zoo(cbind(x,y))
```

In this case, the cointegrating vector, `B`, should be close to `[1,1]`. I run the test and, as expected, get a significant test statistic:

```
> a = ca.po(z, lag='long', demean='none', type='Pz')
```

The test statistic is 165.8306 and the 1% critical value is 55.1911. Good news. However, when I inspect the test object, I have trouble finding the cointegrating vector. Shouldn't it be in the `a@testreg` slot? Here is what I find:

```
> a@testreg
Response x :

Call:
lm(formula = x ~ zr - 1)

Residuals:
Min      1Q  Median      3Q     Max 
-1.8083 -0.4643  0.2463  0.9273  2.5340 

Coefficients:
Estimate Std. Error t value Pr(>|t|)  
zrx   1.6255     0.9331   1.742   0.0847 .
zry   0.6111     0.9342   0.654   0.5146  

Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 

Residual standard error: 1.059 on 97 degrees of freedom
Multiple R-squared: 0.9998, Adjusted R-squared: 0.9998 
F-statistic: 2e+05 on 2 and 97 DF,  p-value: < 2.2e-16
```

There is also another regression with `y` on the left-hand side. Anyway, I am wondering what `zrx` and `zry` correspond to? Are they elements of a vector `zr`? I thought that the regression should only include `B2`, and my cointegrating vector would be `[1, -B2]`. Also, it is clear that these values do not really correspond to the true cointegrating vector `[1,1]`.

If I run the same cointegration test using ca.jo, I get `B` = `[1,1]` without any trouble. Therefore, I am wondering how to interpret this ca.po test? Finally, I also was wondering how to access elements of the test regression in the ca.po object? For example,

```
> names(a@testreg)

    [1] "Response x" "Response y"

> attributes(a@testreg)

    $names
    [1] "Response x" "Response y"

    $class
    [1] "listof"
```

So it's a little confusing. Anyway, thanks for the help! I really appreciate it!

Shown in full with attribution under the source's licence. Licence: CC BY-SA 4.0 (Stack Exchange)

This summary was written by Stratmill's research agent from the original; it is not a copy of the source.