久しぶりに時系列解析の話題です。
以前の記事で、単位根過程という用語を紹介しました。
参考:差分系列と単位根過程
それに関して、見せかけの回帰(spurious regression)という現象があるのでそれを紹介します。
いつもの沖本先生の本から引用します。(127ページ)
定義 (見せかけの回帰)
単位根過程$y_t$を定数と$y_t$と関係のない単位根過程$x_t$に回帰すると、$x_t$と$y_t$の間に有意な関係があり、
回帰の説明力が高いように見える現象は見せかけの回帰と言われる。
この現象を確認するために、実際に単位根過程を2個生成して回帰をやってみましょう。
単位根過程は単純に次の二つのランダムウォークでやります。
それぞれ独立した系列$\varepsilon_{1,t}$と$\varepsilon_{2,t}$から生成しているので、これらは無関係な過程です。
$$
x_t = x_{t-1} + \varepsilon_{1,t} \ \ \ \varepsilon_{1,t}\sim N(0,1)\\
y_t = y_{t-1} + \varepsilon_{2,t} \ \ \ \varepsilon_{2,t}\sim N(0,1)
$$
回帰係数の有意性もみたいので、statsmodelsで実装しました。
import numpy as np
import matplotlib.pyplot as plt
import statsmodels.api as sm
# データ生成
T = 200
X = np.cumsum(np.random.randn(T)).reshape(-1, 1)
y = np.cumsum(np.random.randn(T))
# 定数項を作成
X0 = sm.add_constant(X)
# 回帰分析実行
st_model = sm.OLS(y, X0)
results = st_model.fit()
# 結果表示
print(results.summary())
'''
OLS Regression Results
==============================================================================
Dep. Variable: y R-squared: 0.171
Model: OLS Adj. R-squared: 0.167
Method: Least Squares F-statistic: 40.85
Date: Sat, 25 May 2019 Prob (F-statistic): 1.15e-09
Time: 23:16:39 Log-Likelihood: -423.18
No. Observations: 200 AIC: 850.4
Df Residuals: 198 BIC: 856.9
Df Model: 1
Covariance Type: nonrobust
==============================================================================
coef std err t P>|t| [0.025 0.975]
------------------------------------------------------------------------------
const -5.2125 0.327 -15.960 0.000 -5.856 -4.568
x1 -0.1826 0.029 -6.391 0.000 -0.239 -0.126
==============================================================================
Omnibus: 5.521 Durbin-Watson: 0.215
Prob(Omnibus): 0.063 Jarque-Bera (JB): 3.122
Skew: -0.033 Prob(JB): 0.210
Kurtosis: 2.391 Cond. No. 26.3
==============================================================================
'''
結果を見ると、係数のp値が非常に小さくなっていて、$x_t$と$y_t$の間に関係があるように見えます。
定常過程同士であればこのような現象は発生しないことを見るために、
$x_t$と$y_t$の差分系列をとって、同じように回帰してみましょう。
(差分系列はどちらも定常過程です。)
X_diff = X[1:] - X[:-1]
y_diff = y[1:] - y[:-1]
# 定数項を作成
X0_diff = sm.add_constant(X_diff)
# 回帰分析実行
st_model = sm.OLS(y_diff, X0_diff)
results = st_model.fit()
# 結果表示
print(results.summary())
'''
OLS Regression Results
==============================================================================
Dep. Variable: y R-squared: 0.000
Model: OLS Adj. R-squared: -0.005
Method: Least Squares F-statistic: 0.03113
Date: Sat, 25 May 2019 Prob (F-statistic): 0.860
Time: 23:48:11 Log-Likelihood: -265.29
No. Observations: 199 AIC: 534.6
Df Residuals: 197 BIC: 541.2
Df Model: 1
Covariance Type: nonrobust
==============================================================================
coef std err t P>|t| [0.025 0.975]
------------------------------------------------------------------------------
const -0.0195 0.065 -0.298 0.766 -0.148 0.109
x1 -0.0117 0.066 -0.176 0.860 -0.142 0.119
==============================================================================
Omnibus: 2.378 Durbin-Watson: 2.107
Prob(Omnibus): 0.305 Jarque-Bera (JB): 2.338
Skew: 0.263 Prob(JB): 0.311
Kurtosis: 2.923 Cond. No. 1.01
==============================================================================
'''
p値が明らかにでかい値になりましたね。
今回の記事ではグラフは省略しましたが、
単純にプロットしてみてみると確かに単位根過程同士では何らかの関連を持っているように見え、
定常過程同士では無関係に見えます。