【第6章】pythonで「経済・ファイナンスデータの計量時系列分析」の章末問題を解く

自分の勉強用に、[沖本竜義「経済・ファイナンスデータの計量経済分析」](https://www.asakura.co.jp/G_12.php?isbn=ISBN978-4-254-12792-8)の章末問題をpythonで解いてみました。
jupyter notebook上で記述したものをほぼそのまま載せてあります。
ソースコードの細かい説明は省いてありますが、今後余裕があれば説明を加えようと思います。

こちらの記事は第6章の章末問題を解いたものになります。
[第1章](https://qiita.com/mckeeeen/items/666e14c94e1548130646#15-5)、[第2章](https://qiita.com/mckeeeen/items/666e14c94e1548130646)、[第4章](https://qiita.com/mckeeeen/items/4afa1167008c1f315d0b)、[第5章](https://qiita.com/mckeeeen/items/d293f8005fee5452ecbb)、[第7章](https://qiita.com/mckeeeen/items/ce000b00b0c725503072)も公開しています。

今回、VECMや共和分検定あたりでpythonの限界を感じましたが、何とかモジュールを用いて解答しています。
Rではなくpythonで時系列分析に取り組んでいる方の参考になれば幸いです。
また、所々かなり怪しい部分があるので、間違っているぞ、もっとうまいやり方があるぞ、というご指摘があれば是非お願いします。



各種設定・モジュールのインポート


```python
%matplotlib inline
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from statsmodels.regression.linear_model import OLS
from statsmodels.tools.tools import add_constant
from arch.unitroot import ADF
from statsmodels.tsa.vector_ar.vecm import VECM
from statsmodels.tsa.vector_ar.vecm import select_coint_rank

import matplotlib as mpl
font = {"family":"IPAexGothic"}
mpl.rc('font', **font)
plt.rcParams["font.size"] = 12
```

# 6.4

## (1)

ファイルをインポートする


```python
msci = pd.read_csv('./input/msci_day.csv')
print(msci.shape)
msci.head()
```

    (1391, 8)





<div>

<table border="1" class="dataframe">
  <thead>
    <tr style="text-align: right;">
      <th></th>
      <th>Date</th>
      <th>ca</th>
      <th>fr</th>
      <th>ge</th>
      <th>it</th>
      <th>jp</th>
      <th>uk</th>
      <th>us</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th>0</th>
      <td>2003/1/1</td>
      <td>560.099</td>
      <td>902.081</td>
      <td>724.932</td>
      <td>290.187</td>
      <td>1593.175</td>
      <td>791.076</td>
      <td>824.583</td>
    </tr>
    <tr>
      <th>1</th>
      <td>2003/1/2</td>
      <td>574.701</td>
      <td>927.206</td>
      <td>768.150</td>
      <td>296.963</td>
      <td>1578.214</td>
      <td>797.813</td>
      <td>852.219</td>
    </tr>
    <tr>
      <th>2</th>
      <td>2003/1/3</td>
      <td>580.212</td>
      <td>929.297</td>
      <td>768.411</td>
      <td>298.757</td>
      <td>1578.411</td>
      <td>800.175</td>
      <td>851.935</td>
    </tr>
    <tr>
      <th>3</th>
      <td>2003/1/6</td>
      <td>589.619</td>
      <td>943.002</td>
      <td>788.164</td>
      <td>303.273</td>
      <td>1619.700</td>
      <td>803.966</td>
      <td>871.515</td>
    </tr>
    <tr>
      <th>4</th>
      <td>2003/1/7</td>
      <td>585.822</td>
      <td>923.785</td>
      <td>774.054</td>
      <td>297.892</td>
      <td>1590.951</td>
      <td>793.625</td>
      <td>865.992</td>
    </tr>
  </tbody>
</table>
</div>



Date列をdatetime型に変換してecoのDatetimeIndexとする


```python
msci.index=pd.to_datetime(msci.Date.values)
msci.drop('Date',axis=1,inplace=True)
msci.head()
```




<div>

<table border="1" class="dataframe">
  <thead>
    <tr style="text-align: right;">
      <th></th>
      <th>ca</th>
      <th>fr</th>
      <th>ge</th>
      <th>it</th>
      <th>jp</th>
      <th>uk</th>
      <th>us</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th>2003-01-01</th>
      <td>560.099</td>
      <td>902.081</td>
      <td>724.932</td>
      <td>290.187</td>
      <td>1593.175</td>
      <td>791.076</td>
      <td>824.583</td>
    </tr>
    <tr>
      <th>2003-01-02</th>
      <td>574.701</td>
      <td>927.206</td>
      <td>768.150</td>
      <td>296.963</td>
      <td>1578.214</td>
      <td>797.813</td>
      <td>852.219</td>
    </tr>
    <tr>
      <th>2003-01-03</th>
      <td>580.212</td>
      <td>929.297</td>
      <td>768.411</td>
      <td>298.757</td>
      <td>1578.411</td>
      <td>800.175</td>
      <td>851.935</td>
    </tr>
    <tr>
      <th>2003-01-06</th>
      <td>589.619</td>
      <td>943.002</td>
      <td>788.164</td>
      <td>303.273</td>
      <td>1619.700</td>
      <td>803.966</td>
      <td>871.515</td>
    </tr>
    <tr>
      <th>2003-01-07</th>
      <td>585.822</td>
      <td>923.785</td>
      <td>774.054</td>
      <td>297.892</td>
      <td>1590.951</td>
      <td>793.625</td>
      <td>865.992</td>
    </tr>
  </tbody>
</table>
</div>



欠損データ(e.g. 2005-01-01)があるので、グラフの目盛用にその年で1番最初の日かどうかをカラムに加える


```python
msci['is_year_start']=[msci.index[i].year!=msci.index[i-1].year for i in range(msci.shape[0])]
```

正規ホワイトノイズを生成して追加する


```python
msci['wn']=np.random.randn(msci.shape[0])
```

プロットする


```python
msci['wn'].plot()
plt.show()
```


![output_13_0.png](https://qiita-image-store.s3.amazonaws.com/0/235450/bd8525a8-b9b7-78df-76f5-c0976186ee0c.png)


## (2)

対数系列を追加する


```python
title=['ca','fr','ge','it','jp','uk','us']
for i in range(len(title)):
    msci['%s_log'%title[i]]=np.log(msci[title[i]])
```

各国のMSCIの対数系列を正規ホワイトノイズに回帰する


```python
ols=[]
for i in range(len(title)):
    ols.append(OLS(msci['%s_log'%title[i]],add_constant(msci['wn'])).fit())
```

結果を表示する


```python
beta=[]
pvalue=[]
rsquared=[]
for i in range(len(title)):
    beta.append(ols[i].params[1].round(3))
    pvalue.append(ols[i].pvalues[1].round(3))
    rsquared.append(ols[i].rsquared.round(3))
table=pd.DataFrame({'beta':beta,'Pvalue':pvalue,'R^2':rsquared},index=title,columns=['beta','Pvalue','R^2'])
table
```




<div>

<table border="1" class="dataframe">
  <thead>
    <tr style="text-align: right;">
      <th></th>
      <th>beta</th>
      <th>Pvalue</th>
      <th>R^2</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th>ca</th>
      <td>-0.003</td>
      <td>0.772</td>
      <td>0.0</td>
    </tr>
    <tr>
      <th>fr</th>
      <td>-0.004</td>
      <td>0.617</td>
      <td>0.0</td>
    </tr>
    <tr>
      <th>ge</th>
      <td>-0.005</td>
      <td>0.596</td>
      <td>0.0</td>
    </tr>
    <tr>
      <th>it</th>
      <td>-0.003</td>
      <td>0.696</td>
      <td>0.0</td>
    </tr>
    <tr>
      <th>jp</th>
      <td>0.000</td>
      <td>0.993</td>
      <td>0.0</td>
    </tr>
    <tr>
      <th>uk</th>
      <td>-0.003</td>
      <td>0.662</td>
      <td>0.0</td>
    </tr>
    <tr>
      <th>us</th>
      <td>-0.002</td>
      <td>0.623</td>
      <td>0.0</td>
    </tr>
  </tbody>
</table>
</div>



P値は軒並み0.05以上であり、見せかけの回帰は生じていないと考えられる

## (3)

ランダムウォークを作成して追加する


```python
rw=[0]
for i in range(msci.shape[0]):
    rw.append(rw[i]+np.random.randn())
msci['rw']=rw[1:]
```

## (4)

各国のMSCIの対数系列をランダムウォークに回帰する


```python
ols=[]
for i in range(len(title)):
    ols.append(OLS(msci['%s_log'%title[i]],add_constant(msci['rw'])).fit())
```

結果を表示する


```python
beta=[]
pvalue=[]
rsquared=[]
for i in range(len(title)):
    beta.append(ols[i].params[1].round(3))
    pvalue.append(ols[i].pvalues[1].round(3))
    rsquared.append(ols[i].rsquared.round(3))
table=pd.DataFrame({'beta':beta,'Pvalue':pvalue,'R^2':rsquared},index=title,columns=['beta','Pvalue','R^2'])
table
```




<div>

<table border="1" class="dataframe">
  <thead>
    <tr style="text-align: right;">
      <th></th>
      <th>beta</th>
      <th>Pvalue</th>
      <th>R^2</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th>ca</th>
      <td>0.005</td>
      <td>0.000</td>
      <td>0.017</td>
    </tr>
    <tr>
      <th>fr</th>
      <td>0.004</td>
      <td>0.000</td>
      <td>0.015</td>
    </tr>
    <tr>
      <th>ge</th>
      <td>0.001</td>
      <td>0.175</td>
      <td>0.001</td>
    </tr>
    <tr>
      <th>it</th>
      <td>0.005</td>
      <td>0.000</td>
      <td>0.034</td>
    </tr>
    <tr>
      <th>jp</th>
      <td>0.009</td>
      <td>0.000</td>
      <td>0.097</td>
    </tr>
    <tr>
      <th>uk</th>
      <td>0.004</td>
      <td>0.000</td>
      <td>0.023</td>
    </tr>
    <tr>
      <th>us</th>
      <td>0.002</td>
      <td>0.000</td>
      <td>0.018</td>
    </tr>
  </tbody>
</table>
</div>



P値は軒並み0.05未満であり、見せかけの回帰が生じていると考えられる

## (5)

各国のMSCIの対数系列をランダムウォークとその1期前の値、対数系列の1期前の値に回帰する


```python
ols=[]
for i in range(len(title)):
    X=pd.DataFrame({'rw_t':msci['rw'][1:],'rw_t-1':msci['rw'].shift(1)[1:],'%s_log_t-1'%title[i]:msci['%s_log'%title[i]].shift(1)[1:]},columns=['rw_t','rw_t-1','%s_log_t-1'%title[i]])
    ols.append(OLS(msci['%s_log'%title[i]][1:],add_constant(X)).fit())
```

結果を表示する


```python
beta=[]
pvalue=[]
rsquared=[]
for i in range(len(title)):
    beta.append(ols[i].params[1].round(3))
    pvalue.append(ols[i].pvalues[1].round(3))
    rsquared.append(ols[i].rsquared.round(3))
table=pd.DataFrame({'beta':beta,'Pvalue':pvalue,'R^2':rsquared},index=title,columns=['beta','Pvalue','R^2'])
table
```




<div>

<table border="1" class="dataframe">
  <thead>
    <tr style="text-align: right;">
      <th></th>
      <th>beta</th>
      <th>Pvalue</th>
      <th>R^2</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th>ca</th>
      <td>0.0</td>
      <td>0.488</td>
      <td>0.999</td>
    </tr>
    <tr>
      <th>fr</th>
      <td>0.0</td>
      <td>0.689</td>
      <td>0.998</td>
    </tr>
    <tr>
      <th>ge</th>
      <td>-0.0</td>
      <td>0.974</td>
      <td>0.999</td>
    </tr>
    <tr>
      <th>it</th>
      <td>0.0</td>
      <td>0.727</td>
      <td>0.998</td>
    </tr>
    <tr>
      <th>jp</th>
      <td>0.0</td>
      <td>0.766</td>
      <td>0.997</td>
    </tr>
    <tr>
      <th>uk</th>
      <td>0.0</td>
      <td>0.943</td>
      <td>0.998</td>
    </tr>
    <tr>
      <th>us</th>
      <td>-0.0</td>
      <td>0.630</td>
      <td>0.997</td>
    </tr>
  </tbody>
</table>
</div>



P値は軒並み0.05以上であり、見せかけの回帰は生じていないと考えられる
これは、VARモデルが見せかけの回帰の問題を生じさせないことに起因する（教科書より）

# 6.5

## (1)

ファイルをインポートする


```python
ppp=pd.read_csv('./input/ppp.csv')
print(ppp.shape)
ppp.head()
```

    (396, 8)





<div>

<table border="1" class="dataframe">
  <thead>
    <tr style="text-align: right;">
      <th></th>
      <th>date</th>
      <th>cpica</th>
      <th>cpijp</th>
      <th>cpiuk</th>
      <th>cpius</th>
      <th>exca</th>
      <th>exjp</th>
      <th>exuk</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th>0</th>
      <td>197401</td>
      <td>25.884</td>
      <td>44.800</td>
      <td>14.861</td>
      <td>36.030</td>
      <td>0.988</td>
      <td>299.00</td>
      <td>0.439174</td>
    </tr>
    <tr>
      <th>1</th>
      <td>197402</td>
      <td>26.147</td>
      <td>46.267</td>
      <td>15.154</td>
      <td>36.880</td>
      <td>0.969</td>
      <td>287.60</td>
      <td>0.433651</td>
    </tr>
    <tr>
      <th>2</th>
      <td>197403</td>
      <td>26.410</td>
      <td>46.560</td>
      <td>15.272</td>
      <td>37.035</td>
      <td>0.972</td>
      <td>276.00</td>
      <td>0.417711</td>
    </tr>
    <tr>
      <th>3</th>
      <td>197404</td>
      <td>26.607</td>
      <td>47.734</td>
      <td>15.800</td>
      <td>37.267</td>
      <td>0.960</td>
      <td>279.75</td>
      <td>0.411015</td>
    </tr>
    <tr>
      <th>4</th>
      <td>197405</td>
      <td>27.045</td>
      <td>47.930</td>
      <td>16.035</td>
      <td>37.601</td>
      <td>0.962</td>
      <td>281.90</td>
      <td>0.417885</td>
    </tr>
  </tbody>
</table>
</div>



date列をdatetime型に変換して、pppのDatetimeIndexとする


```python
ppp.index=pd.to_datetime(ppp.date.values,format='%Y%m')
ppp.drop('date',axis=1,inplace=True)
ppp.head()
```




<div>

<table border="1" class="dataframe">
  <thead>
    <tr style="text-align: right;">
      <th></th>
      <th>cpica</th>
      <th>cpijp</th>
      <th>cpiuk</th>
      <th>cpius</th>
      <th>exca</th>
      <th>exjp</th>
      <th>exuk</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th>1974-01-01</th>
      <td>25.884</td>
      <td>44.800</td>
      <td>14.861</td>
      <td>36.030</td>
      <td>0.988</td>
      <td>299.00</td>
      <td>0.439174</td>
    </tr>
    <tr>
      <th>1974-02-01</th>
      <td>26.147</td>
      <td>46.267</td>
      <td>15.154</td>
      <td>36.880</td>
      <td>0.969</td>
      <td>287.60</td>
      <td>0.433651</td>
    </tr>
    <tr>
      <th>1974-03-01</th>
      <td>26.410</td>
      <td>46.560</td>
      <td>15.272</td>
      <td>37.035</td>
      <td>0.972</td>
      <td>276.00</td>
      <td>0.417711</td>
    </tr>
    <tr>
      <th>1974-04-01</th>
      <td>26.607</td>
      <td>47.734</td>
      <td>15.800</td>
      <td>37.267</td>
      <td>0.960</td>
      <td>279.75</td>
      <td>0.411015</td>
    </tr>
    <tr>
      <th>1974-05-01</th>
      <td>27.045</td>
      <td>47.930</td>
      <td>16.035</td>
      <td>37.601</td>
      <td>0.962</td>
      <td>281.90</td>
      <td>0.417885</td>
    </tr>
  </tbody>
</table>
</div>



対数系列を作成して追加する


```python
for i in range(len(ppp.columns)):
    ppp['l%s'%ppp.columns[i]]=np.log(ppp[ppp.columns[i]])
ppp.head()
```




<div>

<table border="1" class="dataframe">
  <thead>
    <tr style="text-align: right;">
      <th></th>
      <th>cpica</th>
      <th>cpijp</th>
      <th>cpiuk</th>
      <th>cpius</th>
      <th>exca</th>
      <th>exjp</th>
      <th>exuk</th>
      <th>lcpica</th>
      <th>lcpijp</th>
      <th>lcpiuk</th>
      <th>lcpius</th>
      <th>lexca</th>
      <th>lexjp</th>
      <th>lexuk</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th>1974-01-01</th>
      <td>25.884</td>
      <td>44.800</td>
      <td>14.861</td>
      <td>36.030</td>
      <td>0.988</td>
      <td>299.00</td>
      <td>0.439174</td>
      <td>3.253625</td>
      <td>3.802208</td>
      <td>2.698740</td>
      <td>3.584352</td>
      <td>-0.012073</td>
      <td>5.700444</td>
      <td>-0.822859</td>
    </tr>
    <tr>
      <th>1974-02-01</th>
      <td>26.147</td>
      <td>46.267</td>
      <td>15.154</td>
      <td>36.880</td>
      <td>0.969</td>
      <td>287.60</td>
      <td>0.433651</td>
      <td>3.263734</td>
      <td>3.834429</td>
      <td>2.718265</td>
      <td>3.607669</td>
      <td>-0.031491</td>
      <td>5.661571</td>
      <td>-0.835514</td>
    </tr>
    <tr>
      <th>1974-03-01</th>
      <td>26.410</td>
      <td>46.560</td>
      <td>15.272</td>
      <td>37.035</td>
      <td>0.972</td>
      <td>276.00</td>
      <td>0.417711</td>
      <td>3.273743</td>
      <td>3.840742</td>
      <td>2.726021</td>
      <td>3.611863</td>
      <td>-0.028399</td>
      <td>5.620401</td>
      <td>-0.872966</td>
    </tr>
    <tr>
      <th>1974-04-01</th>
      <td>26.607</td>
      <td>47.734</td>
      <td>15.800</td>
      <td>37.267</td>
      <td>0.960</td>
      <td>279.75</td>
      <td>0.411015</td>
      <td>3.281174</td>
      <td>3.865644</td>
      <td>2.760010</td>
      <td>3.618108</td>
      <td>-0.040822</td>
      <td>5.633896</td>
      <td>-0.889125</td>
    </tr>
    <tr>
      <th>1974-05-01</th>
      <td>27.045</td>
      <td>47.930</td>
      <td>16.035</td>
      <td>37.601</td>
      <td>0.962</td>
      <td>281.90</td>
      <td>0.417885</td>
      <td>3.297502</td>
      <td>3.869742</td>
      <td>2.774774</td>
      <td>3.627031</td>
      <td>-0.038741</td>
      <td>5.641552</td>
      <td>-0.872548</td>
    </tr>
  </tbody>
</table>
</div>



## (2)

プロットする


```python
title=['lcpijp','lcpius','lexjp']

fig,ax = plt.subplots(nrows=1,ncols=3,figsize=[15,5])
for i in range(3):
    ax[i].plot(ppp[title[i]])
    ax[i].set_title(title[i])
    ax[i].set_xlim(ppp.index[0],ppp.index[-1])
    ax[i].set_xticks(ppp.index[ppp.index.is_year_start][::3])
    ax[i].set_xticklabels(ppp.index[ppp.index.is_year_start][::3].strftime('%y'))
    ax[i].set_xlabel('year')
       
plt.subplots_adjust(wspace=0.2,hspace=0.3)
plt.show()
```


![output_47_0.png](https://qiita-image-store.s3.amazonaws.com/0/235450/c02420ca-998a-88c6-1f1c-c8c881ed57b3.png)



5.2の解答に従い、lexjpは場合2、lcpijp,lcpiusは場合3を仮定する
* 場合1...トレンドがなく、期待値が0
* 場合2...トレンドがなく、期待値が0ではない
* 場合3...トレンドがある


```python
trend=['ct','ct','c']
adf=[]
for i in range(len(title)):
    adf.append(ADF(ppp[title[i]],trend=trend[i],max_lags=10,method='AIC'))
```

ADF検定の結果を表示する


```python
for i in range(len(title)):
    print(title[i])
    print(adf[i])
    print('')
```

    lcpijp
       Augmented Dickey-Fuller Results   
    =====================================
    Test Statistic                 -4.417
    P-value                         0.002
    Lags                               10
    -------------------------------------
    
    Trend: Constant and Linear Time Trend
    Critical Values: -3.98 (1%), -3.42 (5%), -3.13 (10%)
    Null Hypothesis: The process contains a unit root.
    Alternative Hypothesis: The process is weakly stationary.
    
    lcpius
       Augmented Dickey-Fuller Results   
    =====================================
    Test Statistic                 -2.170
    P-value                         0.507
    Lags                                9
    -------------------------------------
    
    Trend: Constant and Linear Time Trend
    Critical Values: -3.98 (1%), -3.42 (5%), -3.13 (10%)
    Null Hypothesis: The process contains a unit root.
    Alternative Hypothesis: The process is weakly stationary.
    
    lexjp
       Augmented Dickey-Fuller Results   
    =====================================
    Test Statistic                 -1.507
    P-value                         0.530
    Lags                                1
    -------------------------------------
    
    Trend: Constant
    Critical Values: -3.45 (1%), -2.87 (5%), -2.57 (10%)
    Null Hypothesis: The process contains a unit root.
    Alternative Hypothesis: The process is weakly stationary.
    


ADF検定の結果、lcpijpの単位根の帰無仮説は棄却され、lcpius,lexjpの単位根の帰無仮説は採択された
つまり、lcpijpは定常過程であり、lcpius,lexjpは和分過程であることが示唆された

（差分系列のADF検定を行い、単位根過程であることを確定する必要があるが、ここでは省略する）

## (3)

lrexjpを作成して追加する


```python
ppp['lrexjp']=ppp['lcpijp']-ppp['lcpius']-ppp['lexjp']
```

## (4)

PPP仮説はlrexjpが定常過程に従うことを示唆する

## (5)

プロットする


```python
fig,ax=plt.subplots(nrows=1,ncols=1,figsize=[5,5])
ax.plot(ppp['lrexjp'])
ax.set_title('lrexjp')
ax.set_xlabel('year')
plt.show()
```


![output_61_0.png](https://qiita-image-store.s3.amazonaws.com/0/235450/48e8cc9b-0b85-7f96-af5b-f6ce325519db.png)



場合2を仮定する
* 場合1...トレンドがなく、期待値が0
* 場合2...トレンドがなく、期待値が0ではない
* 場合3...トレンドがある


```python
adf=ADF(ppp['lrexjp'],trend='c',max_lags=10,method='AIC')
```

ADF検定の結果を表示する


```python
print(adf)
```

       Augmented Dickey-Fuller Results   
    =====================================
    Test Statistic                 -1.766
    P-value                         0.398
    Lags                                1
    -------------------------------------
    
    Trend: Constant
    Critical Values: -3.45 (1%), -2.87 (5%), -2.57 (10%)
    Null Hypothesis: The process contains a unit root.
    Alternative Hypothesis: The process is weakly stationary.


単位根の帰無仮説が採択された
つまり、PPP仮説を支持していない

## (6)

PPP仮説を検定する場合共和分ランクは1と仮定するが、ここでは練習も兼ねてトレース検定と最大固有値検定で共和分ランクを決定してみる
モジュールは、pipやcondaではまだ入っていないstatsmodels.tsa.vector_ar.vecmをgithubから直接ダウンロードした

尚、共和分関係は定数を含まず、データは線形トレンドを持つ（VECMが定数項を含める）と仮定した


```python
trace=select_coint_rank(ppp[['lcpijp','lcpius','lexjp']],det_order=-1,k_ar_diff=6,method='trace',signif=0.05)
maxeig=select_coint_rank(ppp[['lcpijp','lcpius','lexjp']],det_order=-1,k_ar_diff=6,method='maxeig',signif=0.05)
```

トレース検定の結果を表示する


```python
trace.summary()
```




<table class="simpletable">
<caption>Johansen cointegration test using trace test statistic with 5% significance level</caption>
<tr>
  <th>r_0</th> <th>r_1</th> <th>test statistic</th> <th>critical value</th>
</tr>
<tr>
    <td>0</td>   <td>3</td>          <td>53.17</td>          <td>24.28</td>
</tr>
<tr>
    <td>1</td>   <td>3</td>          <td>9.575</td>          <td>12.32</td>
</tr>
</table>



最大固有値検定の結果を表示する


```python
maxeig.summary()
```




<table class="simpletable">
<caption>Johansen cointegration test using maximum eigenvalue test statistic with 5% significance level</caption>
<tr>
  <th>r_0</th> <th>r_1</th> <th>test statistic</th> <th>critical value</th>
</tr>
<tr>
    <td>0</td>   <td>1</td>          <td>43.60</td>          <td>17.80</td>
</tr>
<tr>
    <td>1</td>   <td>2</td>          <td>9.540</td>          <td>11.22</td>
</tr>
</table>



トレース検定と最大固有値検定により、共和分ランクが1であることが示唆された

pythonで「共和分ベクトルが(1,-1,-1)に等しいという制約を課して」VECMを推定する方法が分からなかった（Webで探しましたが見当たりませんでした...どなたか詳しい方ご教授くださると有り難いです...）
そこで、statsmodels.tsa.vector_ar.vecmの共和分ベクトルの推定値beta_tildeを(1,-1,-1)に書き換えることで制約を実現した（このやり方が100%正しい自信はありません）


```python
vecm=VECM(ppp[['lcpijp','lcpius','lexjp']],k_ar_diff=6,coint_rank=1,deterministic='co').fit()
```



VECMの推定結果を表示する


```python
vecm.summary()
```




<table class="simpletable">
<caption>Det. terms outside the coint. relation & lagged endog. parameters for equation lcpijp</caption>
<tr>
      <td></td>         <th>coef</th>     <th>std err</th>      <th>z</th>      <th>P>|z|</th>  <th>[0.025</th>    <th>0.975]</th>  
</tr>
<tr>
  <th>const</th>     <td>   -0.0189</td> <td>    0.005</td> <td>   -3.588</td> <td> 0.000</td> <td>   -0.029</td> <td>   -0.009</td>
</tr>
<tr>
  <th>L1.lcpijp</th> <td>    0.0950</td> <td>    0.051</td> <td>    1.872</td> <td> 0.061</td> <td>   -0.004</td> <td>    0.195</td>
</tr>
<tr>
  <th>L1.lcpius</th> <td>   -0.0874</td> <td>    0.039</td> <td>   -2.222</td> <td> 0.026</td> <td>   -0.164</td> <td>   -0.010</td>
</tr>
<tr>
  <th>L1.lexjp</th>  <td>   -0.0123</td> <td>    0.008</td> <td>   -1.615</td> <td> 0.106</td> <td>   -0.027</td> <td>    0.003</td>
</tr>
<tr>
  <th>L2.lcpijp</th> <td>   -0.2557</td> <td>    0.050</td> <td>   -5.104</td> <td> 0.000</td> <td>   -0.354</td> <td>   -0.158</td>
</tr>
<tr>
  <th>L2.lcpius</th> <td>    0.1332</td> <td>    0.041</td> <td>    3.238</td> <td> 0.001</td> <td>    0.053</td> <td>    0.214</td>
</tr>
<tr>
  <th>L2.lexjp</th>  <td>    0.0151</td> <td>    0.008</td> <td>    1.991</td> <td> 0.046</td> <td>    0.000</td> <td>    0.030</td>
</tr>
<tr>
  <th>L3.lcpijp</th> <td>   -0.0331</td> <td>    0.052</td> <td>   -0.642</td> <td> 0.521</td> <td>   -0.134</td> <td>    0.068</td>
</tr>
<tr>
  <th>L3.lcpius</th> <td>    0.0963</td> <td>    0.042</td> <td>    2.273</td> <td> 0.023</td> <td>    0.013</td> <td>    0.179</td>
</tr>
<tr>
  <th>L3.lexjp</th>  <td>    0.0035</td> <td>    0.008</td> <td>    0.460</td> <td> 0.646</td> <td>   -0.011</td> <td>    0.018</td>
</tr>
<tr>
  <th>L4.lcpijp</th> <td>    0.0044</td> <td>    0.050</td> <td>    0.087</td> <td> 0.930</td> <td>   -0.094</td> <td>    0.103</td>
</tr>
<tr>
  <th>L4.lcpius</th> <td>    0.0006</td> <td>    0.043</td> <td>    0.015</td> <td> 0.988</td> <td>   -0.084</td> <td>    0.085</td>
</tr>
<tr>
  <th>L4.lexjp</th>  <td>    0.0120</td> <td>    0.008</td> <td>    1.582</td> <td> 0.114</td> <td>   -0.003</td> <td>    0.027</td>
</tr>
<tr>
  <th>L5.lcpijp</th> <td>    0.1451</td> <td>    0.049</td> <td>    2.983</td> <td> 0.003</td> <td>    0.050</td> <td>    0.240</td>
</tr>
<tr>
  <th>L5.lcpius</th> <td>    0.0400</td> <td>    0.042</td> <td>    0.946</td> <td> 0.344</td> <td>   -0.043</td> <td>    0.123</td>
</tr>
<tr>
  <th>L5.lexjp</th>  <td>   -0.0030</td> <td>    0.008</td> <td>   -0.397</td> <td> 0.691</td> <td>   -0.018</td> <td>    0.012</td>
</tr>
<tr>
  <th>L6.lcpijp</th> <td>    0.1874</td> <td>    0.047</td> <td>    3.978</td> <td> 0.000</td> <td>    0.095</td> <td>    0.280</td>
</tr>
<tr>
  <th>L6.lcpius</th> <td>    0.0253</td> <td>    0.041</td> <td>    0.623</td> <td> 0.533</td> <td>   -0.054</td> <td>    0.105</td>
</tr>
<tr>
  <th>L6.lexjp</th>  <td>    0.0093</td> <td>    0.008</td> <td>    1.227</td> <td> 0.220</td> <td>   -0.006</td> <td>    0.024</td>
</tr>
</table>
<table class="simpletable">
<caption>Det. terms outside the coint. relation & lagged endog. parameters for equation lcpius</caption>
<tr>
      <td></td>         <th>coef</th>     <th>std err</th>      <th>z</th>      <th>P>|z|</th>  <th>[0.025</th>    <th>0.975]</th>  
</tr>
<tr>
  <th>const</th>     <td>   -0.0019</td> <td>    0.007</td> <td>   -0.269</td> <td> 0.788</td> <td>   -0.015</td> <td>    0.012</td>
</tr>
<tr>
  <th>L1.lcpijp</th> <td>    0.1146</td> <td>    0.066</td> <td>    1.729</td> <td> 0.084</td> <td>   -0.015</td> <td>    0.245</td>
</tr>
<tr>
  <th>L1.lcpius</th> <td>    0.3024</td> <td>    0.051</td> <td>    5.888</td> <td> 0.000</td> <td>    0.202</td> <td>    0.403</td>
</tr>
<tr>
  <th>L1.lexjp</th>  <td>   -0.0004</td> <td>    0.010</td> <td>   -0.040</td> <td> 0.968</td> <td>   -0.020</td> <td>    0.019</td>
</tr>
<tr>
  <th>L2.lcpijp</th> <td>   -0.0798</td> <td>    0.065</td> <td>   -1.220</td> <td> 0.223</td> <td>   -0.208</td> <td>    0.048</td>
</tr>
<tr>
  <th>L2.lcpius</th> <td>   -0.1552</td> <td>    0.054</td> <td>   -2.888</td> <td> 0.004</td> <td>   -0.260</td> <td>   -0.050</td>
</tr>
<tr>
  <th>L2.lexjp</th>  <td>    0.0090</td> <td>    0.010</td> <td>    0.903</td> <td> 0.367</td> <td>   -0.010</td> <td>    0.028</td>
</tr>
<tr>
  <th>L3.lcpijp</th> <td>    0.0471</td> <td>    0.067</td> <td>    0.698</td> <td> 0.485</td> <td>   -0.085</td> <td>    0.179</td>
</tr>
<tr>
  <th>L3.lcpius</th> <td>    0.2000</td> <td>    0.055</td> <td>    3.614</td> <td> 0.000</td> <td>    0.092</td> <td>    0.308</td>
</tr>
<tr>
  <th>L3.lexjp</th>  <td>   -0.0048</td> <td>    0.010</td> <td>   -0.482</td> <td> 0.630</td> <td>   -0.024</td> <td>    0.015</td>
</tr>
<tr>
  <th>L4.lcpijp</th> <td>   -0.0291</td> <td>    0.066</td> <td>   -0.444</td> <td> 0.657</td> <td>   -0.158</td> <td>    0.099</td>
</tr>
<tr>
  <th>L4.lcpius</th> <td>   -0.0749</td> <td>    0.056</td> <td>   -1.334</td> <td> 0.182</td> <td>   -0.185</td> <td>    0.035</td>
</tr>
<tr>
  <th>L4.lexjp</th>  <td>    0.0020</td> <td>    0.010</td> <td>    0.200</td> <td> 0.841</td> <td>   -0.017</td> <td>    0.021</td>
</tr>
<tr>
  <th>L5.lcpijp</th> <td>    0.0489</td> <td>    0.064</td> <td>    0.770</td> <td> 0.441</td> <td>   -0.076</td> <td>    0.173</td>
</tr>
<tr>
  <th>L5.lcpius</th> <td>    0.0875</td> <td>    0.055</td> <td>    1.584</td> <td> 0.113</td> <td>   -0.021</td> <td>    0.196</td>
</tr>
<tr>
  <th>L5.lexjp</th>  <td>    0.0192</td> <td>    0.010</td> <td>    1.926</td> <td> 0.054</td> <td>   -0.000</td> <td>    0.039</td>
</tr>
<tr>
  <th>L6.lcpijp</th> <td>    0.0035</td> <td>    0.062</td> <td>    0.057</td> <td> 0.955</td> <td>   -0.117</td> <td>    0.124</td>
</tr>
<tr>
  <th>L6.lcpius</th> <td>    0.0315</td> <td>    0.053</td> <td>    0.593</td> <td> 0.553</td> <td>   -0.073</td> <td>    0.136</td>
</tr>
<tr>
  <th>L6.lexjp</th>  <td>   -0.0017</td> <td>    0.010</td> <td>   -0.167</td> <td> 0.868</td> <td>   -0.021</td> <td>    0.018</td>
</tr>
</table>
<table class="simpletable">
<caption>Det. terms outside the coint. relation & lagged endog. parameters for equation lexjp</caption>
<tr>
      <td></td>         <th>coef</th>     <th>std err</th>      <th>z</th>      <th>P>|z|</th>  <th>[0.025</th>    <th>0.975]</th>  
</tr>
<tr>
  <th>const</th>     <td>    0.0356</td> <td>    0.035</td> <td>    1.021</td> <td> 0.307</td> <td>   -0.033</td> <td>    0.104</td>
</tr>
<tr>
  <th>L1.lcpijp</th> <td>   -0.1846</td> <td>    0.336</td> <td>   -0.550</td> <td> 0.583</td> <td>   -0.843</td> <td>    0.474</td>
</tr>
<tr>
  <th>L1.lcpius</th> <td>    0.3070</td> <td>    0.260</td> <td>    1.180</td> <td> 0.238</td> <td>   -0.203</td> <td>    0.817</td>
</tr>
<tr>
  <th>L1.lexjp</th>  <td>    0.0646</td> <td>    0.050</td> <td>    1.287</td> <td> 0.198</td> <td>   -0.034</td> <td>    0.163</td>
</tr>
<tr>
  <th>L2.lcpijp</th> <td>    0.0093</td> <td>    0.331</td> <td>    0.028</td> <td> 0.978</td> <td>   -0.640</td> <td>    0.659</td>
</tr>
<tr>
  <th>L2.lcpius</th> <td>    0.1640</td> <td>    0.272</td> <td>    0.603</td> <td> 0.547</td> <td>   -0.369</td> <td>    0.697</td>
</tr>
<tr>
  <th>L2.lexjp</th>  <td>    0.0494</td> <td>    0.050</td> <td>    0.984</td> <td> 0.325</td> <td>   -0.049</td> <td>    0.148</td>
</tr>
<tr>
  <th>L3.lcpijp</th> <td>   -0.2545</td> <td>    0.341</td> <td>   -0.746</td> <td> 0.456</td> <td>   -0.923</td> <td>    0.414</td>
</tr>
<tr>
  <th>L3.lcpius</th> <td>   -0.1665</td> <td>    0.280</td> <td>   -0.594</td> <td> 0.553</td> <td>   -0.716</td> <td>    0.383</td>
</tr>
<tr>
  <th>L3.lexjp</th>  <td>    0.0996</td> <td>    0.050</td> <td>    1.974</td> <td> 0.048</td> <td>    0.001</td> <td>    0.199</td>
</tr>
<tr>
  <th>L4.lcpijp</th> <td>    0.5763</td> <td>    0.332</td> <td>    1.737</td> <td> 0.082</td> <td>   -0.074</td> <td>    1.227</td>
</tr>
<tr>
  <th>L4.lcpius</th> <td>   -0.0397</td> <td>    0.284</td> <td>   -0.140</td> <td> 0.889</td> <td>   -0.597</td> <td>    0.518</td>
</tr>
<tr>
  <th>L4.lexjp</th>  <td>   -0.0298</td> <td>    0.050</td> <td>   -0.592</td> <td> 0.554</td> <td>   -0.128</td> <td>    0.069</td>
</tr>
<tr>
  <th>L5.lcpijp</th> <td>   -0.3362</td> <td>    0.322</td> <td>   -1.045</td> <td> 0.296</td> <td>   -0.967</td> <td>    0.294</td>
</tr>
<tr>
  <th>L5.lcpius</th> <td>    0.4754</td> <td>    0.280</td> <td>    1.700</td> <td> 0.089</td> <td>   -0.073</td> <td>    1.024</td>
</tr>
<tr>
  <th>L5.lexjp</th>  <td>   -0.0179</td> <td>    0.050</td> <td>   -0.356</td> <td> 0.722</td> <td>   -0.117</td> <td>    0.081</td>
</tr>
<tr>
  <th>L6.lcpijp</th> <td>   -0.2922</td> <td>    0.312</td> <td>   -0.938</td> <td> 0.348</td> <td>   -0.903</td> <td>    0.318</td>
</tr>
<tr>
  <th>L6.lcpius</th> <td>    0.1107</td> <td>    0.269</td> <td>    0.412</td> <td> 0.681</td> <td>   -0.416</td> <td>    0.638</td>
</tr>
<tr>
  <th>L6.lexjp</th>  <td>   -0.1166</td> <td>    0.050</td> <td>   -2.323</td> <td> 0.020</td> <td>   -0.215</td> <td>   -0.018</td>
</tr>
</table>
<table class="simpletable">
<caption>Loading coefficients (alpha) for equation lcpijp</caption>
<tr>
   <td></td>      <th>coef</th>     <th>std err</th>      <th>z</th>      <th>P>|z|</th>  <th>[0.025</th>    <th>0.975]</th>  
</tr>
<tr>
  <th>ec1</th> <td>   -0.0040</td> <td>    0.001</td> <td>   -3.681</td> <td> 0.000</td> <td>   -0.006</td> <td>   -0.002</td>
</tr>
</table>
<table class="simpletable">
<caption>Loading coefficients (alpha) for equation lcpius</caption>
<tr>
   <td></td>      <th>coef</th>     <th>std err</th>      <th>z</th>      <th>P>|z|</th>  <th>[0.025</th>    <th>0.975]</th>  
</tr>
<tr>
  <th>ec1</th> <td>   -0.0007</td> <td>    0.001</td> <td>   -0.489</td> <td> 0.625</td> <td>   -0.003</td> <td>    0.002</td>
</tr>
</table>
<table class="simpletable">
<caption>Loading coefficients (alpha) for equation lexjp</caption>
<tr>
   <td></td>      <th>coef</th>     <th>std err</th>      <th>z</th>      <th>P>|z|</th>  <th>[0.025</th>    <th>0.975]</th>  
</tr>
<tr>
  <th>ec1</th> <td>    0.0080</td> <td>    0.007</td> <td>    1.110</td> <td> 0.267</td> <td>   -0.006</td> <td>    0.022</td>
</tr>
</table>
<table class="simpletable">
<caption>Cointegration relations for loading-coefficients-column 1</caption>
<tr>
     <td></td>       <th>coef</th>     <th>std err</th>      <th>z</th>      <th>P>|z|</th>  <th>[0.025</th>    <th>0.975]</th>  
</tr>
<tr>
  <th>beta.1</th> <td>    1.0000</td> <td>        0</td> <td>        0</td> <td> 0.000</td> <td>    1.000</td> <td>    1.000</td>
</tr>
<tr>
  <th>beta.2</th> <td>   -1.0000</td> <td>    0.477</td> <td>   -2.098</td> <td> 0.036</td> <td>   -1.934</td> <td>   -0.066</td>
</tr>
<tr>
  <th>beta.3</th> <td>   -1.0000</td> <td>    0.318</td> <td>   -3.148</td> <td> 0.002</td> <td>   -1.623</td> <td>   -0.377</td>
</tr>
</table>



共和分ベクトルの値が全て有意である、つまりPPP仮説を支持する
（しかし、前提としてlcpijpが単位根過程ではないため、この結果は意味を持たない）

## (7)

まず、各系列に対してADF検定を行い、単位根過程かどうかを確認する

カナダについてプロットする


```python
title=['lcpica','lexca']

fig,ax = plt.subplots(nrows=1,ncols=2,figsize=[10,5])
for i in range(len(title)):
    ax[i].plot(ppp[title[i]])
    ax[i].set_title(title[i])
    ax[i].set_xlim(ppp.index[0],ppp.index[-1])
    ax[i].set_xticks(ppp.index[ppp.index.is_year_start][::3])
    ax[i].set_xticklabels(ppp.index[ppp.index.is_year_start][::3].strftime('%y'))
    ax[i].set_xlabel('year')
       
plt.subplots_adjust(wspace=0.2,hspace=0.3)
plt.show()
```


![output_83_0.png](https://qiita-image-store.s3.amazonaws.com/0/235450/aff95f99-9f58-cc3b-3ce7-d9a885a98dd7.png)



イギリスについてプロットする


```python
title=['lcpiuk','lexuk']

fig,ax = plt.subplots(nrows=1,ncols=2,figsize=[10,5])
for i in range(len(title)):
    ax[i].plot(ppp[title[i]])
    ax[i].set_title(title[i])
    ax[i].set_xlim(ppp.index[0],ppp.index[-1])
    ax[i].set_xticks(ppp.index[ppp.index.is_year_start][::3])
    ax[i].set_xticklabels(ppp.index[ppp.index.is_year_start][::3].strftime('%y'))
    ax[i].set_xlabel('year')
       
plt.subplots_adjust(wspace=0.2,hspace=0.3)
plt.show()
```

![output_85_0.png](https://qiita-image-store.s3.amazonaws.com/0/235450/b2ed1fe4-904a-b74b-e8d8-a99c61c2171e.png)


5.2の解答に従い、lexca,lexukは場合2、lcpica,lcpiukは場合3を仮定する
* 場合1...トレンドがなく、期待値が0
* 場合2...トレンドがなく、期待値が0ではない
* 場合3...トレンドがある


```python
title=['lcpica','lexca','lcpiuk','lexuk']
trend=['ct','c','ct','c']
adf=[]
for i in range(len(title)):
    adf.append(ADF(ppp[title[i]],trend=trend[i],max_lags=10,method='AIC'))
```

ADF検定の結果を表示する


```python
for i in range(len(title)):
    print(title[i])
    print(adf[i])
    print('')
```

    lcpica
       Augmented Dickey-Fuller Results   
    =====================================
    Test Statistic                 -2.523
    P-value                         0.316
    Lags                                4
    -------------------------------------
    
    Trend: Constant and Linear Time Trend
    Critical Values: -3.98 (1%), -3.42 (5%), -3.13 (10%)
    Null Hypothesis: The process contains a unit root.
    Alternative Hypothesis: The process is weakly stationary.
    
    lexca
       Augmented Dickey-Fuller Results   
    =====================================
    Test Statistic                 -1.934
    P-value                         0.316
    Lags                                0
    -------------------------------------
    
    Trend: Constant
    Critical Values: -3.45 (1%), -2.87 (5%), -2.57 (10%)
    Null Hypothesis: The process contains a unit root.
    Alternative Hypothesis: The process is weakly stationary.
    
    lcpiuk
       Augmented Dickey-Fuller Results   
    =====================================
    Test Statistic                 -5.057
    P-value                         0.000
    Lags                                8
    -------------------------------------
    
    Trend: Constant and Linear Time Trend
    Critical Values: -3.98 (1%), -3.42 (5%), -3.13 (10%)
    Null Hypothesis: The process contains a unit root.
    Alternative Hypothesis: The process is weakly stationary.
    
    lexuk
       Augmented Dickey-Fuller Results   
    =====================================
    Test Statistic                 -2.541
    P-value                         0.106
    Lags                                1
    -------------------------------------
    
    Trend: Constant
    Critical Values: -3.45 (1%), -2.87 (5%), -2.57 (10%)
    Null Hypothesis: The process contains a unit root.
    Alternative Hypothesis: The process is weakly stationary.
    


ADF検定の結果、lcpiukの単位根の帰無仮説は棄却され、lcpica,lexca,lexukの単位根の帰無仮説は採択された
つまり、lcpiukは定常過程であり、lcpica,lexca,lexukは和分過程であることが示唆された

（差分系列のADF検定を行い、単位根過程であることを確定する必要があるが、ここでは省略する）

カナダとアメリカ、イギリスとアメリカの間にPPP仮説が成立していることをEngle-Granger共和分検定（=(5)の方法）を用いて検定する

lrexca,lrexukを作成して追加する


```python
ppp['lrexca']=ppp['lcpica']-ppp['lcpius']-ppp['lexca']
ppp['lrexuk']=ppp['lcpiuk']-ppp['lcpius']-ppp['lexuk']
```

プロットする


```python
title=['lrexca','lrexuk']
fig,ax=plt.subplots(nrows=1,ncols=2,figsize=[10,5])
for i in range(2):
    ax[i].plot(ppp[title[i]])
    ax[i].set_title(title[i])
    ax[i].set_xlabel('year')
plt.show()
```


![output_96_0.png](https://qiita-image-store.s3.amazonaws.com/0/235450/95f90e02-1e40-ee79-593a-7d5fb741a8dd.png)


場合2を仮定する
* 場合1...トレンドがなく、期待値が0
* 場合2...トレンドがなく、期待値が0ではない
* 場合3...トレンドがある


```python
adf=[]
for i in range(len(title)):
    adf.append(ADF(ppp[title[i]],trend='c',max_lags=10,method='AIC'))
```

ADF検定の結果を表示する


```python
for i in range(len(title)):
    print(adf[i])
    print('')
```

       Augmented Dickey-Fuller Results   
    =====================================
    Test Statistic                 -1.371
    P-value                         0.596
    Lags                                0
    -------------------------------------
    
    Trend: Constant
    Critical Values: -3.45 (1%), -2.87 (5%), -2.57 (10%)
    Null Hypothesis: The process contains a unit root.
    Alternative Hypothesis: The process is weakly stationary.
    
       Augmented Dickey-Fuller Results   
    =====================================
    Test Statistic                 -1.597
    P-value                         0.485
    Lags                                1
    -------------------------------------
    
    Trend: Constant
    Critical Values: -3.45 (1%), -2.87 (5%), -2.57 (10%)
    Null Hypothesis: The process contains a unit root.
    Alternative Hypothesis: The process is weakly stationary.
    


どちらの場合も、単位根の帰無仮説が採択された
つまり、PPP仮説を支持していない

以上の議論でPPP仮説が成立していないと結論づけられるが、共和分ベクトルが(1,-1,-1)に等しいという制約を課してVECMを推定し、カナダとアメリカ、イギリスとアメリカの間にPPP仮説が成立していることを検定してみる
尚、共和分関係は定数を含まず、データは線形トレンドを持つ（VECMが定数項を含める）と仮定した

トレース検定と最大固有値検定で共和分ランクを決定してみる


```python
country=['ca','uk']
trace=[]
maxeig=[]
for i in range(len(country)): 
    trace.append(select_coint_rank(ppp[['lcpi%s'%country[i],'lcpius','lex%s'%country[i]]],det_order=-1,k_ar_diff=6,method='trace',signif=0.05))
    maxeig.append(select_coint_rank(ppp[['lcpi%s'%country[i],'lcpius','lex%s'%country[i]]],det_order=-1,k_ar_diff=6,method='maxeig',signif=0.05))
```

カナダとアメリカの結果を表示する


```python
display(trace[0].summary())
display(maxeig[0].summary())
```


<table class="simpletable">
<caption>Johansen cointegration test using trace test statistic with 5% significance level</caption>
<tr>
  <th>r_0</th> <th>r_1</th> <th>test statistic</th> <th>critical value</th>
</tr>
<tr>
    <td>0</td>   <td>3</td>          <td>52.24</td>          <td>24.28</td>
</tr>
<tr>
    <td>1</td>   <td>3</td>          <td>5.263</td>          <td>12.32</td>
</tr>
</table>



<table class="simpletable">
<caption>Johansen cointegration test using maximum eigenvalue test statistic with 5% significance level</caption>
<tr>
  <th>r_0</th> <th>r_1</th> <th>test statistic</th> <th>critical value</th>
</tr>
<tr>
    <td>0</td>   <td>1</td>          <td>46.98</td>          <td>17.80</td>
</tr>
<tr>
    <td>1</td>   <td>2</td>          <td>4.069</td>          <td>11.22</td>
</tr>
</table>


カナダとアメリカの共和分ランクは1であることが示唆された

イギリスとアメリカの結果を表示する


```python
display(trace[1].summary())
display(maxeig[1].summary())
```


<table class="simpletable">
<caption>Johansen cointegration test using trace test statistic with 5% significance level</caption>
<tr>
  <th>r_0</th> <th>r_1</th> <th>test statistic</th> <th>critical value</th>
</tr>
<tr>
    <td>0</td>   <td>3</td>          <td>54.46</td>          <td>24.28</td>
</tr>
<tr>
    <td>1</td>   <td>3</td>          <td>15.15</td>          <td>12.32</td>
</tr>
<tr>
    <td>2</td>   <td>3</td>          <td>1.652</td>          <td>4.130</td>
</tr>
</table>



<table class="simpletable">
<caption>Johansen cointegration test using maximum eigenvalue test statistic with 5% significance level</caption>
<tr>
  <th>r_0</th> <th>r_1</th> <th>test statistic</th> <th>critical value</th>
</tr>
<tr>
    <td>0</td>   <td>1</td>          <td>39.31</td>          <td>17.80</td>
</tr>
<tr>
    <td>1</td>   <td>2</td>          <td>13.50</td>          <td>11.22</td>
</tr>
<tr>
    <td>2</td>   <td>3</td>          <td>1.652</td>          <td>4.130</td>
</tr>
</table>


イギリスとアメリカの共和分ランクは2であることが示唆された
この時点でppp仮説に矛盾するが、以下では共和分ランクが1と仮定して進める

共和分ベクトルが(1,-1,-1)に等しいという制約を課してVECMを推定する


```python
vecm=[]
for i in range(len(country)):
    vecm.append(VECM(ppp[['lcpi%s'%country[i],'lcpius','lex%s'%country[i]]],k_ar_diff=6,coint_rank=1,deterministic='co').fit())
```


カナダとアメリカの結果を表示する


```python
vecm[0].summary()
```




<table class="simpletable">
<caption>Det. terms outside the coint. relation & lagged endog. parameters for equation lcpica</caption>
<tr>
      <td></td>         <th>coef</th>     <th>std err</th>      <th>z</th>      <th>P>|z|</th>  <th>[0.025</th>    <th>0.975]</th>  
</tr>
<tr>
  <th>const</th>     <td>   -0.0005</td> <td>    0.001</td> <td>   -0.882</td> <td> 0.378</td> <td>   -0.002</td> <td>    0.001</td>
</tr>
<tr>
  <th>L1.lcpica</th> <td>    0.0675</td> <td>    0.053</td> <td>    1.264</td> <td> 0.206</td> <td>   -0.037</td> <td>    0.172</td>
</tr>
<tr>
  <th>L1.lcpius</th> <td>    0.1558</td> <td>    0.027</td> <td>    5.702</td> <td> 0.000</td> <td>    0.102</td> <td>    0.209</td>
</tr>
<tr>
  <th>L1.lexca</th>  <td>    0.0102</td> <td>    0.011</td> <td>    0.944</td> <td> 0.345</td> <td>   -0.011</td> <td>    0.031</td>
</tr>
<tr>
  <th>L2.lcpica</th> <td>    0.1464</td> <td>    0.053</td> <td>    2.771</td> <td> 0.006</td> <td>    0.043</td> <td>    0.250</td>
</tr>
<tr>
  <th>L2.lcpius</th> <td>   -0.1098</td> <td>    0.029</td> <td>   -3.824</td> <td> 0.000</td> <td>   -0.166</td> <td>   -0.054</td>
</tr>
<tr>
  <th>L2.lexca</th>  <td>    0.0274</td> <td>    0.011</td> <td>    2.526</td> <td> 0.012</td> <td>    0.006</td> <td>    0.049</td>
</tr>
<tr>
  <th>L3.lcpica</th> <td>    0.0917</td> <td>    0.052</td> <td>    1.769</td> <td> 0.077</td> <td>   -0.010</td> <td>    0.193</td>
</tr>
<tr>
  <th>L3.lcpius</th> <td>    0.0611</td> <td>    0.029</td> <td>    2.102</td> <td> 0.036</td> <td>    0.004</td> <td>    0.118</td>
</tr>
<tr>
  <th>L3.lexca</th>  <td>    0.0040</td> <td>    0.011</td> <td>    0.366</td> <td> 0.714</td> <td>   -0.018</td> <td>    0.026</td>
</tr>
<tr>
  <th>L4.lcpica</th> <td>    0.2135</td> <td>    0.052</td> <td>    4.140</td> <td> 0.000</td> <td>    0.112</td> <td>    0.315</td>
</tr>
<tr>
  <th>L4.lcpius</th> <td>   -0.0260</td> <td>    0.029</td> <td>   -0.894</td> <td> 0.371</td> <td>   -0.083</td> <td>    0.031</td>
</tr>
<tr>
  <th>L4.lexca</th>  <td>   -0.0017</td> <td>    0.011</td> <td>   -0.155</td> <td> 0.877</td> <td>   -0.023</td> <td>    0.020</td>
</tr>
<tr>
  <th>L5.lcpica</th> <td>    0.0317</td> <td>    0.052</td> <td>    0.616</td> <td> 0.538</td> <td>   -0.069</td> <td>    0.133</td>
</tr>
<tr>
  <th>L5.lcpius</th> <td>    0.0519</td> <td>    0.029</td> <td>    1.793</td> <td> 0.073</td> <td>   -0.005</td> <td>    0.109</td>
</tr>
<tr>
  <th>L5.lexca</th>  <td>    0.0175</td> <td>    0.011</td> <td>    1.583</td> <td> 0.113</td> <td>   -0.004</td> <td>    0.039</td>
</tr>
<tr>
  <th>L6.lcpica</th> <td>    0.0685</td> <td>    0.051</td> <td>    1.353</td> <td> 0.176</td> <td>   -0.031</td> <td>    0.168</td>
</tr>
<tr>
  <th>L6.lcpius</th> <td>   -0.0208</td> <td>    0.028</td> <td>   -0.739</td> <td> 0.460</td> <td>   -0.076</td> <td>    0.034</td>
</tr>
<tr>
  <th>L6.lexca</th>  <td>   -0.0285</td> <td>    0.011</td> <td>   -2.583</td> <td> 0.010</td> <td>   -0.050</td> <td>   -0.007</td>
</tr>
</table>
<table class="simpletable">
<caption>Det. terms outside the coint. relation & lagged endog. parameters for equation lcpius</caption>
<tr>
      <td></td>         <th>coef</th>     <th>std err</th>      <th>z</th>      <th>P>|z|</th>  <th>[0.025</th>    <th>0.975]</th>  
</tr>
<tr>
  <th>const</th>     <td>    0.0012</td> <td>    0.001</td> <td>    1.033</td> <td> 0.302</td> <td>   -0.001</td> <td>    0.004</td>
</tr>
<tr>
  <th>L1.lcpica</th> <td>   -0.0373</td> <td>    0.103</td> <td>   -0.362</td> <td> 0.718</td> <td>   -0.239</td> <td>    0.165</td>
</tr>
<tr>
  <th>L1.lcpius</th> <td>    0.3372</td> <td>    0.053</td> <td>    6.393</td> <td> 0.000</td> <td>    0.234</td> <td>    0.441</td>
</tr>
<tr>
  <th>L1.lexca</th>  <td>   -0.0012</td> <td>    0.021</td> <td>   -0.060</td> <td> 0.952</td> <td>   -0.042</td> <td>    0.040</td>
</tr>
<tr>
  <th>L2.lcpica</th> <td>    0.0629</td> <td>    0.102</td> <td>    0.617</td> <td> 0.537</td> <td>   -0.137</td> <td>    0.263</td>
</tr>
<tr>
  <th>L2.lcpius</th> <td>   -0.2105</td> <td>    0.055</td> <td>   -3.797</td> <td> 0.000</td> <td>   -0.319</td> <td>   -0.102</td>
</tr>
<tr>
  <th>L2.lexca</th>  <td>   -0.0242</td> <td>    0.021</td> <td>   -1.155</td> <td> 0.248</td> <td>   -0.065</td> <td>    0.017</td>
</tr>
<tr>
  <th>L3.lcpica</th> <td>    0.0346</td> <td>    0.100</td> <td>    0.346</td> <td> 0.729</td> <td>   -0.161</td> <td>    0.231</td>
</tr>
<tr>
  <th>L3.lcpius</th> <td>    0.2332</td> <td>    0.056</td> <td>    4.155</td> <td> 0.000</td> <td>    0.123</td> <td>    0.343</td>
</tr>
<tr>
  <th>L3.lexca</th>  <td>    0.0343</td> <td>    0.021</td> <td>    1.616</td> <td> 0.106</td> <td>   -0.007</td> <td>    0.076</td>
</tr>
<tr>
  <th>L4.lcpica</th> <td>    0.2794</td> <td>    0.100</td> <td>    2.807</td> <td> 0.005</td> <td>    0.084</td> <td>    0.474</td>
</tr>
<tr>
  <th>L4.lcpius</th> <td>   -0.1440</td> <td>    0.056</td> <td>   -2.563</td> <td> 0.010</td> <td>   -0.254</td> <td>   -0.034</td>
</tr>
<tr>
  <th>L4.lexca</th>  <td>   -0.0418</td> <td>    0.021</td> <td>   -1.967</td> <td> 0.049</td> <td>   -0.083</td> <td>   -0.000</td>
</tr>
<tr>
  <th>L5.lcpica</th> <td>   -0.0911</td> <td>    0.099</td> <td>   -0.916</td> <td> 0.360</td> <td>   -0.286</td> <td>    0.104</td>
</tr>
<tr>
  <th>L5.lcpius</th> <td>    0.0944</td> <td>    0.056</td> <td>    1.690</td> <td> 0.091</td> <td>   -0.015</td> <td>    0.204</td>
</tr>
<tr>
  <th>L5.lexca</th>  <td>    0.0305</td> <td>    0.021</td> <td>    1.431</td> <td> 0.152</td> <td>   -0.011</td> <td>    0.072</td>
</tr>
<tr>
  <th>L6.lcpica</th> <td>    0.0267</td> <td>    0.098</td> <td>    0.273</td> <td> 0.785</td> <td>   -0.165</td> <td>    0.218</td>
</tr>
<tr>
  <th>L6.lcpius</th> <td>    0.0342</td> <td>    0.054</td> <td>    0.628</td> <td> 0.530</td> <td>   -0.072</td> <td>    0.141</td>
</tr>
<tr>
  <th>L6.lexca</th>  <td>    0.0136</td> <td>    0.021</td> <td>    0.637</td> <td> 0.524</td> <td>   -0.028</td> <td>    0.055</td>
</tr>
</table>
<table class="simpletable">
<caption>Det. terms outside the coint. relation & lagged endog. parameters for equation lexca</caption>
<tr>
      <td></td>         <th>coef</th>     <th>std err</th>      <th>z</th>      <th>P>|z|</th>  <th>[0.025</th>    <th>0.975]</th>  
</tr>
<tr>
  <th>const</th>     <td>    0.0013</td> <td>    0.003</td> <td>    0.443</td> <td> 0.658</td> <td>   -0.004</td> <td>    0.007</td>
</tr>
<tr>
  <th>L1.lcpica</th> <td>   -0.1364</td> <td>    0.252</td> <td>   -0.541</td> <td> 0.589</td> <td>   -0.631</td> <td>    0.358</td>
</tr>
<tr>
  <th>L1.lcpius</th> <td>    0.1105</td> <td>    0.129</td> <td>    0.856</td> <td> 0.392</td> <td>   -0.143</td> <td>    0.364</td>
</tr>
<tr>
  <th>L1.lexca</th>  <td>   -0.0029</td> <td>    0.051</td> <td>   -0.056</td> <td> 0.955</td> <td>   -0.103</td> <td>    0.097</td>
</tr>
<tr>
  <th>L2.lcpica</th> <td>   -0.0998</td> <td>    0.250</td> <td>   -0.400</td> <td> 0.689</td> <td>   -0.589</td> <td>    0.389</td>
</tr>
<tr>
  <th>L2.lcpius</th> <td>   -0.0967</td> <td>    0.136</td> <td>   -0.713</td> <td> 0.476</td> <td>   -0.363</td> <td>    0.169</td>
</tr>
<tr>
  <th>L2.lexca</th>  <td>   -0.0287</td> <td>    0.051</td> <td>   -0.560</td> <td> 0.576</td> <td>   -0.129</td> <td>    0.072</td>
</tr>
<tr>
  <th>L3.lcpica</th> <td>   -0.0666</td> <td>    0.245</td> <td>   -0.272</td> <td> 0.786</td> <td>   -0.546</td> <td>    0.413</td>
</tr>
<tr>
  <th>L3.lcpius</th> <td>   -0.0694</td> <td>    0.137</td> <td>   -0.505</td> <td> 0.613</td> <td>   -0.339</td> <td>    0.200</td>
</tr>
<tr>
  <th>L3.lexca</th>  <td>    0.0357</td> <td>    0.052</td> <td>    0.687</td> <td> 0.492</td> <td>   -0.066</td> <td>    0.138</td>
</tr>
<tr>
  <th>L4.lcpica</th> <td>    0.2033</td> <td>    0.244</td> <td>    0.835</td> <td> 0.404</td> <td>   -0.274</td> <td>    0.681</td>
</tr>
<tr>
  <th>L4.lcpius</th> <td>   -0.0686</td> <td>    0.138</td> <td>   -0.499</td> <td> 0.618</td> <td>   -0.338</td> <td>    0.201</td>
</tr>
<tr>
  <th>L4.lexca</th>  <td>    0.0362</td> <td>    0.052</td> <td>    0.696</td> <td> 0.486</td> <td>   -0.066</td> <td>    0.138</td>
</tr>
<tr>
  <th>L5.lcpica</th> <td>   -0.0315</td> <td>    0.243</td> <td>   -0.130</td> <td> 0.897</td> <td>   -0.509</td> <td>    0.445</td>
</tr>
<tr>
  <th>L5.lcpius</th> <td>   -0.0541</td> <td>    0.137</td> <td>   -0.396</td> <td> 0.692</td> <td>   -0.322</td> <td>    0.214</td>
</tr>
<tr>
  <th>L5.lexca</th>  <td>    0.0204</td> <td>    0.052</td> <td>    0.391</td> <td> 0.696</td> <td>   -0.082</td> <td>    0.123</td>
</tr>
<tr>
  <th>L6.lcpica</th> <td>    0.3883</td> <td>    0.239</td> <td>    1.624</td> <td> 0.104</td> <td>   -0.080</td> <td>    0.857</td>
</tr>
<tr>
  <th>L6.lcpius</th> <td>    0.0664</td> <td>    0.133</td> <td>    0.499</td> <td> 0.617</td> <td>   -0.194</td> <td>    0.327</td>
</tr>
<tr>
  <th>L6.lexca</th>  <td>   -0.0389</td> <td>    0.052</td> <td>   -0.747</td> <td> 0.455</td> <td>   -0.141</td> <td>    0.063</td>
</tr>
</table>
<table class="simpletable">
<caption>Loading coefficients (alpha) for equation lcpica</caption>
<tr>
   <td></td>      <th>coef</th>     <th>std err</th>      <th>z</th>      <th>P>|z|</th>  <th>[0.025</th>    <th>0.975]</th>  
</tr>
<tr>
  <th>ec1</th> <td>   -0.0046</td> <td>    0.002</td> <td>   -2.387</td> <td> 0.017</td> <td>   -0.008</td> <td>   -0.001</td>
</tr>
</table>
<table class="simpletable">
<caption>Loading coefficients (alpha) for equation lcpius</caption>
<tr>
   <td></td>      <th>coef</th>     <th>std err</th>      <th>z</th>      <th>P>|z|</th>  <th>[0.025</th>    <th>0.975]</th>  
</tr>
<tr>
  <th>ec1</th> <td>    0.0012</td> <td>    0.004</td> <td>    0.311</td> <td> 0.755</td> <td>   -0.006</td> <td>    0.008</td>
</tr>
</table>
<table class="simpletable">
<caption>Loading coefficients (alpha) for equation lexca</caption>
<tr>
   <td></td>      <th>coef</th>     <th>std err</th>      <th>z</th>      <th>P>|z|</th>  <th>[0.025</th>    <th>0.975]</th>  
</tr>
<tr>
  <th>ec1</th> <td>    0.0046</td> <td>    0.009</td> <td>    0.504</td> <td> 0.615</td> <td>   -0.013</td> <td>    0.022</td>
</tr>
</table>
<table class="simpletable">
<caption>Cointegration relations for loading-coefficients-column 1</caption>
<tr>
     <td></td>       <th>coef</th>     <th>std err</th>      <th>z</th>      <th>P>|z|</th>  <th>[0.025</th>    <th>0.975]</th>  
</tr>
<tr>
  <th>beta.1</th> <td>    1.0000</td> <td>        0</td> <td>        0</td> <td> 0.000</td> <td>    1.000</td> <td>    1.000</td>
</tr>
<tr>
  <th>beta.2</th> <td>   -1.0000</td> <td>    0.192</td> <td>   -5.215</td> <td> 0.000</td> <td>   -1.376</td> <td>   -0.624</td>
</tr>
<tr>
  <th>beta.3</th> <td>   -1.0000</td> <td>    0.375</td> <td>   -2.665</td> <td> 0.008</td> <td>   -1.735</td> <td>   -0.265</td>
</tr>
</table>



共和分ベクトルの値が全て有意である、つまりPPP仮説を支持する
これは、Engle-Granger共和分検定の結果と矛盾する

この矛盾が、vecmモジュールの使い方を間違えただけなのか、本当にEngle-Granger共和分検定と制約付きVECM推定で検定結果が異なっているのか、わかりません...（どなたかご教授くださると幸いです...）

カナダとアメリカの結果を表示する


```python
vecm[1].summary()
```




<table class="simpletable">
<caption>Det. terms outside the coint. relation & lagged endog. parameters for equation lcpiuk</caption>
<tr>
      <td></td>         <th>coef</th>     <th>std err</th>      <th>z</th>      <th>P>|z|</th>  <th>[0.025</th>    <th>0.975]</th>  
</tr>
<tr>
  <th>const</th>     <td>    0.0026</td> <td>    0.001</td> <td>    3.578</td> <td> 0.000</td> <td>    0.001</td> <td>    0.004</td>
</tr>
<tr>
  <th>L1.lcpiuk</th> <td>    0.3108</td> <td>    0.049</td> <td>    6.360</td> <td> 0.000</td> <td>    0.215</td> <td>    0.407</td>
</tr>
<tr>
  <th>L1.lcpius</th> <td>   -0.0034</td> <td>    0.042</td> <td>   -0.081</td> <td> 0.936</td> <td>   -0.086</td> <td>    0.079</td>
</tr>
<tr>
  <th>L1.lexuk</th>  <td>    0.0020</td> <td>    0.009</td> <td>    0.230</td> <td> 0.818</td> <td>   -0.015</td> <td>    0.019</td>
</tr>
<tr>
  <th>L2.lcpiuk</th> <td>    0.0583</td> <td>    0.052</td> <td>    1.127</td> <td> 0.260</td> <td>   -0.043</td> <td>    0.160</td>
</tr>
<tr>
  <th>L2.lcpius</th> <td>    0.0008</td> <td>    0.043</td> <td>    0.020</td> <td> 0.984</td> <td>   -0.084</td> <td>    0.085</td>
</tr>
<tr>
  <th>L2.lexuk</th>  <td>   -0.0063</td> <td>    0.009</td> <td>   -0.711</td> <td> 0.477</td> <td>   -0.024</td> <td>    0.011</td>
</tr>
<tr>
  <th>L3.lcpiuk</th> <td>   -0.0110</td> <td>    0.052</td> <td>   -0.211</td> <td> 0.833</td> <td>   -0.112</td> <td>    0.091</td>
</tr>
<tr>
  <th>L3.lcpius</th> <td>    0.0604</td> <td>    0.044</td> <td>    1.374</td> <td> 0.169</td> <td>   -0.026</td> <td>    0.147</td>
</tr>
<tr>
  <th>L3.lexuk</th>  <td>    0.0032</td> <td>    0.009</td> <td>    0.360</td> <td> 0.719</td> <td>   -0.014</td> <td>    0.021</td>
</tr>
<tr>
  <th>L4.lcpiuk</th> <td>   -0.0246</td> <td>    0.051</td> <td>   -0.486</td> <td> 0.627</td> <td>   -0.124</td> <td>    0.075</td>
</tr>
<tr>
  <th>L4.lcpius</th> <td>    0.0474</td> <td>    0.044</td> <td>    1.069</td> <td> 0.285</td> <td>   -0.039</td> <td>    0.134</td>
</tr>
<tr>
  <th>L4.lexuk</th>  <td>   -0.0070</td> <td>    0.009</td> <td>   -0.789</td> <td> 0.430</td> <td>   -0.024</td> <td>    0.010</td>
</tr>
<tr>
  <th>L5.lcpiuk</th> <td>    0.0643</td> <td>    0.050</td> <td>    1.282</td> <td> 0.200</td> <td>   -0.034</td> <td>    0.163</td>
</tr>
<tr>
  <th>L5.lcpius</th> <td>   -0.0222</td> <td>    0.044</td> <td>   -0.505</td> <td> 0.614</td> <td>   -0.108</td> <td>    0.064</td>
</tr>
<tr>
  <th>L5.lexuk</th>  <td>   -0.0022</td> <td>    0.009</td> <td>   -0.253</td> <td> 0.800</td> <td>   -0.020</td> <td>    0.015</td>
</tr>
<tr>
  <th>L6.lcpiuk</th> <td>    0.1910</td> <td>    0.048</td> <td>    3.949</td> <td> 0.000</td> <td>    0.096</td> <td>    0.286</td>
</tr>
<tr>
  <th>L6.lcpius</th> <td>    0.1596</td> <td>    0.042</td> <td>    3.807</td> <td> 0.000</td> <td>    0.077</td> <td>    0.242</td>
</tr>
<tr>
  <th>L6.lexuk</th>  <td>    0.0080</td> <td>    0.009</td> <td>    0.905</td> <td> 0.365</td> <td>   -0.009</td> <td>    0.025</td>
</tr>
</table>
<table class="simpletable">
<caption>Det. terms outside the coint. relation & lagged endog. parameters for equation lcpius</caption>
<tr>
      <td></td>         <th>coef</th>     <th>std err</th>      <th>z</th>      <th>P>|z|</th>  <th>[0.025</th>    <th>0.975]</th>  
</tr>
<tr>
  <th>const</th>     <td>   -0.0011</td> <td>    0.001</td> <td>   -1.298</td> <td> 0.194</td> <td>   -0.003</td> <td>    0.001</td>
</tr>
<tr>
  <th>L1.lcpiuk</th> <td>    0.1845</td> <td>    0.057</td> <td>    3.249</td> <td> 0.001</td> <td>    0.073</td> <td>    0.296</td>
</tr>
<tr>
  <th>L1.lcpius</th> <td>    0.2662</td> <td>    0.049</td> <td>    5.444</td> <td> 0.000</td> <td>    0.170</td> <td>    0.362</td>
</tr>
<tr>
  <th>L1.lexuk</th>  <td>    0.0041</td> <td>    0.010</td> <td>    0.395</td> <td> 0.693</td> <td>   -0.016</td> <td>    0.024</td>
</tr>
<tr>
  <th>L2.lcpiuk</th> <td>    0.0066</td> <td>    0.060</td> <td>    0.110</td> <td> 0.913</td> <td>   -0.111</td> <td>    0.124</td>
</tr>
<tr>
  <th>L2.lcpius</th> <td>   -0.1982</td> <td>    0.050</td> <td>   -3.954</td> <td> 0.000</td> <td>   -0.297</td> <td>   -0.100</td>
</tr>
<tr>
  <th>L2.lexuk</th>  <td>   -0.0051</td> <td>    0.010</td> <td>   -0.499</td> <td> 0.618</td> <td>   -0.025</td> <td>    0.015</td>
</tr>
<tr>
  <th>L3.lcpiuk</th> <td>    0.0669</td> <td>    0.060</td> <td>    1.112</td> <td> 0.266</td> <td>   -0.051</td> <td>    0.185</td>
</tr>
<tr>
  <th>L3.lcpius</th> <td>    0.1860</td> <td>    0.051</td> <td>    3.640</td> <td> 0.000</td> <td>    0.086</td> <td>    0.286</td>
</tr>
<tr>
  <th>L3.lexuk</th>  <td>   -0.0093</td> <td>    0.010</td> <td>   -0.908</td> <td> 0.364</td> <td>   -0.029</td> <td>    0.011</td>
</tr>
<tr>
  <th>L4.lcpiuk</th> <td>   -0.0235</td> <td>    0.059</td> <td>   -0.400</td> <td> 0.689</td> <td>   -0.139</td> <td>    0.092</td>
</tr>
<tr>
  <th>L4.lcpius</th> <td>   -0.1080</td> <td>    0.051</td> <td>   -2.099</td> <td> 0.036</td> <td>   -0.209</td> <td>   -0.007</td>
</tr>
<tr>
  <th>L4.lexuk</th>  <td>    0.0026</td> <td>    0.010</td> <td>    0.248</td> <td> 0.804</td> <td>   -0.018</td> <td>    0.023</td>
</tr>
<tr>
  <th>L5.lcpiuk</th> <td>   -0.0038</td> <td>    0.058</td> <td>   -0.065</td> <td> 0.948</td> <td>   -0.118</td> <td>    0.110</td>
</tr>
<tr>
  <th>L5.lcpius</th> <td>    0.0347</td> <td>    0.051</td> <td>    0.679</td> <td> 0.497</td> <td>   -0.065</td> <td>    0.135</td>
</tr>
<tr>
  <th>L5.lexuk</th>  <td>    0.0088</td> <td>    0.010</td> <td>    0.859</td> <td> 0.391</td> <td>   -0.011</td> <td>    0.029</td>
</tr>
<tr>
  <th>L6.lcpiuk</th> <td>    0.2322</td> <td>    0.056</td> <td>    4.133</td> <td> 0.000</td> <td>    0.122</td> <td>    0.342</td>
</tr>
<tr>
  <th>L6.lcpius</th> <td>   -0.0253</td> <td>    0.049</td> <td>   -0.519</td> <td> 0.603</td> <td>   -0.121</td> <td>    0.070</td>
</tr>
<tr>
  <th>L6.lexuk</th>  <td>   -0.0081</td> <td>    0.010</td> <td>   -0.789</td> <td> 0.430</td> <td>   -0.028</td> <td>    0.012</td>
</tr>
</table>
<table class="simpletable">
<caption>Det. terms outside the coint. relation & lagged endog. parameters for equation lexuk</caption>
<tr>
      <td></td>         <th>coef</th>     <th>std err</th>      <th>z</th>      <th>P>|z|</th>  <th>[0.025</th>    <th>0.975]</th>  
</tr>
<tr>
  <th>const</th>     <td>   -0.0039</td> <td>    0.004</td> <td>   -0.908</td> <td> 0.364</td> <td>   -0.012</td> <td>    0.004</td>
</tr>
<tr>
  <th>L1.lcpiuk</th> <td>    0.0767</td> <td>    0.282</td> <td>    0.272</td> <td> 0.786</td> <td>   -0.477</td> <td>    0.630</td>
</tr>
<tr>
  <th>L1.lcpius</th> <td>    0.2137</td> <td>    0.243</td> <td>    0.879</td> <td> 0.379</td> <td>   -0.263</td> <td>    0.690</td>
</tr>
<tr>
  <th>L1.lexuk</th>  <td>    0.0800</td> <td>    0.051</td> <td>    1.566</td> <td> 0.117</td> <td>   -0.020</td> <td>    0.180</td>
</tr>
<tr>
  <th>L2.lcpiuk</th> <td>    0.1946</td> <td>    0.299</td> <td>    0.651</td> <td> 0.515</td> <td>   -0.391</td> <td>    0.780</td>
</tr>
<tr>
  <th>L2.lcpius</th> <td>   -0.1638</td> <td>    0.249</td> <td>   -0.657</td> <td> 0.511</td> <td>   -0.653</td> <td>    0.325</td>
</tr>
<tr>
  <th>L2.lexuk</th>  <td>    0.0171</td> <td>    0.051</td> <td>    0.336</td> <td> 0.737</td> <td>   -0.083</td> <td>    0.117</td>
</tr>
<tr>
  <th>L3.lcpiuk</th> <td>   -0.0480</td> <td>    0.299</td> <td>   -0.160</td> <td> 0.873</td> <td>   -0.635</td> <td>    0.539</td>
</tr>
<tr>
  <th>L3.lcpius</th> <td>   -0.2528</td> <td>    0.254</td> <td>   -0.995</td> <td> 0.320</td> <td>   -0.751</td> <td>    0.245</td>
</tr>
<tr>
  <th>L3.lexuk</th>  <td>   -0.0121</td> <td>    0.051</td> <td>   -0.237</td> <td> 0.813</td> <td>   -0.112</td> <td>    0.088</td>
</tr>
<tr>
  <th>L4.lcpiuk</th> <td>    0.1079</td> <td>    0.292</td> <td>    0.369</td> <td> 0.712</td> <td>   -0.465</td> <td>    0.681</td>
</tr>
<tr>
  <th>L4.lcpius</th> <td>   -0.2078</td> <td>    0.256</td> <td>   -0.812</td> <td> 0.417</td> <td>   -0.709</td> <td>    0.294</td>
</tr>
<tr>
  <th>L4.lexuk</th>  <td>    0.0321</td> <td>    0.051</td> <td>    0.628</td> <td> 0.530</td> <td>   -0.068</td> <td>    0.132</td>
</tr>
<tr>
  <th>L5.lcpiuk</th> <td>    0.4523</td> <td>    0.290</td> <td>    1.561</td> <td> 0.118</td> <td>   -0.115</td> <td>    1.020</td>
</tr>
<tr>
  <th>L5.lcpius</th> <td>    0.3716</td> <td>    0.254</td> <td>    1.464</td> <td> 0.143</td> <td>   -0.126</td> <td>    0.869</td>
</tr>
<tr>
  <th>L5.lexuk</th>  <td>    0.0287</td> <td>    0.051</td> <td>    0.563</td> <td> 0.574</td> <td>   -0.071</td> <td>    0.128</td>
</tr>
<tr>
  <th>L6.lcpiuk</th> <td>   -0.2310</td> <td>    0.279</td> <td>   -0.827</td> <td> 0.408</td> <td>   -0.779</td> <td>    0.316</td>
</tr>
<tr>
  <th>L6.lcpius</th> <td>   -0.2250</td> <td>    0.242</td> <td>   -0.929</td> <td> 0.353</td> <td>   -0.700</td> <td>    0.250</td>
</tr>
<tr>
  <th>L6.lexuk</th>  <td>   -0.0676</td> <td>    0.051</td> <td>   -1.328</td> <td> 0.184</td> <td>   -0.167</td> <td>    0.032</td>
</tr>
</table>
<table class="simpletable">
<caption>Loading coefficients (alpha) for equation lcpiuk</caption>
<tr>
   <td></td>      <th>coef</th>     <th>std err</th>      <th>z</th>      <th>P>|z|</th>  <th>[0.025</th>    <th>0.975]</th>  
</tr>
<tr>
  <th>ec1</th> <td>   -0.0043</td> <td>    0.002</td> <td>   -2.799</td> <td> 0.005</td> <td>   -0.007</td> <td>   -0.001</td>
</tr>
</table>
<table class="simpletable">
<caption>Loading coefficients (alpha) for equation lcpius</caption>
<tr>
   <td></td>      <th>coef</th>     <th>std err</th>      <th>z</th>      <th>P>|z|</th>  <th>[0.025</th>    <th>0.975]</th>  
</tr>
<tr>
  <th>ec1</th> <td>    0.0038</td> <td>    0.002</td> <td>    2.101</td> <td> 0.036</td> <td>    0.000</td> <td>    0.007</td>
</tr>
</table>
<table class="simpletable">
<caption>Loading coefficients (alpha) for equation lexuk</caption>
<tr>
   <td></td>      <th>coef</th>     <th>std err</th>      <th>z</th>      <th>P>|z|</th>  <th>[0.025</th>    <th>0.975]</th>  
</tr>
<tr>
  <th>ec1</th> <td>    0.0074</td> <td>    0.009</td> <td>    0.828</td> <td> 0.407</td> <td>   -0.010</td> <td>    0.025</td>
</tr>
</table>
<table class="simpletable">
<caption>Cointegration relations for loading-coefficients-column 1</caption>
<tr>
     <td></td>       <th>coef</th>     <th>std err</th>      <th>z</th>      <th>P>|z|</th>  <th>[0.025</th>    <th>0.975]</th>  
</tr>
<tr>
  <th>beta.1</th> <td>    1.0000</td> <td>        0</td> <td>        0</td> <td> 0.000</td> <td>    1.000</td> <td>    1.000</td>
</tr>
<tr>
  <th>beta.2</th> <td>   -1.0000</td> <td>    0.247</td> <td>   -4.046</td> <td> 0.000</td> <td>   -1.484</td> <td>   -0.516</td>
</tr>
<tr>
  <th>beta.3</th> <td>   -1.0000</td> <td>    0.464</td> <td>   -2.155</td> <td> 0.031</td> <td>   -1.909</td> <td>   -0.091</td>
</tr>
</table>



共和分ベクトルの値が全て有意である、つまりPPP仮説を支持する
（しかし、前提としてlcpijpが単位根過程ではないため、この結果は意味を持たない）

# 参考サイト

ARCHのドキュメント
: http://arch.readthedocs.io/en/latest/index.html
statsmodels.tsa.vector_ar.vecmのソースコード
:https://github.com/statsmodels/statsmodels/blob/master/statsmodels/tsa/vector_ar/vecm.py