Diagnosing Johansen Cointegration Results and Residual Tests
Summary
The document considers a Johansen maximum-eigenvalue test for whether house prices, income, interest rates, and rental vacancy rates share a cointegrating relationship. The questioner interprets the output as indicating one relation, forms a linear combination from an eigenvector, then reports that an augmented Dickey–Fuller test does not reject a unit root in that combination. The variable labels also include lag notation, which prompts a question about how to read the estimated vectors.
The response suggests that the apparent disagreement may arise from model specification, particularly deterministic terms or lag length. It recommends estimating a restricted vector error correction model from the Johansen output, extracting the cointegrating vector, and testing the resulting process. This is a brief troubleshooting suggestion rather than a full explanation: it does not resolve the reported result, explain the lag labels, or provide a worked comparison. The example illustrates that a separately applied residual test may not match the Johansen test’s assumptions and specification.
Key ideas
- Johansen test results depend on the selected lag structure and deterministic terms.
- A cointegrating vector should be interpreted within the model specification used to estimate it.
- A restricted vector error correction model can help extract the relation implied by the Johansen procedure.
- A separate augmented Dickey–Fuller test may not reproduce the Johansen test’s inference when specifications differ.
Tags
Full text
# R Outputs from Johansen test. Linear combination still not stationary?
# R Outputs from Johansen test. Linear combination still not stationary?
I am trying to see if house price is cointegrated with interest rate, per capita income and rental vacancy rate and got the following output from ca.jo in R:
```
# Johansen-Procedure #
######################
Test type: maximal eigenvalue statistic (lambda max) , with linear trend
Eigenvalues (lambda):
[1] 0.52471580 0.12579545 0.10395269 0.06262468
Values of teststatistic and critical values of test:
test 10pct 5pct 1pct
r <= 3 | 8.47 6.50 8.18 11.65
r <= 2 | 14.38 12.91 14.90 19.19
r <= 1 | 17.61 18.90 21.07 25.75
r = 0 | 97.44 24.78 27.14 32.14
Eigenvectors, normalised to first column:
(These are the cointegration relations)
y.l2 income.l2 interest.l2 vac.l2
y.l2 1.00000000 1.00000000 1.0000000 1.00000000
income.l2 -10.16285869 -1.32443038 -12.6597547 0.61669614
interest.l2 -0.06759846 -0.35179735 -0.1535533 0.02143767
vac.l2 0.22771577 0.02087503 -0.4814448 0.02113804
```
So from what I understand, the output indicates that there is one cointegration relation. And using the 1st eigenvector, I should get that y(which is log_price)=-10.16*income-0.0675*interest+0.227*vacancy rate. However, I ran a ADF test on this combination and got p-value 0.11 (meaning the combination is still non-stationary!). Why is that? Am I using the wrong thing? What does the ".12" mean after the variable names?
Thank you for any help!
## Answer by user21240 (score 1)
https://quant.stackexchange.com/a/8314
Maybe you have made some misspecification with regards to deterministic terms or lag length. Try to estimate a restricted VECM from your ca.jo()-output with cajorls(), extract $\beta$ and run the ADT-test on that process.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.