<SYSTEM_TASK:>
Given the following text description, write Python code to implement the functionality described below step by step
<END_TASK>
<USER_TASK:>
Description:
 自己相関
『Rによる計量経済学』第5章「自己相関」をPythonで実行する。
テキスト付属データセット(「k0501.csv」等)については出版社サイトよりダウンロードしてください。
また、以下の説明は本書の一部を要約したものですので、より詳しい説明は本書を参照してください。
Step1:  例題5-1
Step2:  Durbin-Watson
Step3:  DW=1.094となり、上限分布において有意水準5%でも帰無仮説を棄却することができ、自己相関が存在すると結論することができる。
例題5-3
変数変換によって自己相関に対処する方法を考える。
<ASSISTANT_TASK:>
Python Code:
%matplotlib inline
# -*- coding:utf-8 -*-
from __future__ import print_function
import numpy as np
import pandas as pd
import statsmodels.api as sm
from statsmodels.stats.stattools import durbin_watson
import matplotlib.pyplot as plt
import warnings
warnings.filterwarnings('ignore')
Explanation: 自己相関
『Rによる計量経済学』第5章「自己相関」をPythonで実行する。
テキスト付属データセット(「k0501.csv」等)については出版社サイトよりダウンロードしてください。
また、以下の説明は本書の一部を要約したものですので、より詳しい説明は本書を参照してください。
End of explanation
# データ読み込み
data = pd.read_csv('example/k0501.csv')
data
# 説明変数設定
X = data[['X']]
X = sm.add_constant(X)
X
# 被説明変数設定
Y = data['Y']
Y
# OLSの実行(Ordinary Least Squares: 最小二乗法)
model = sm.OLS(Y,X)
results = model.fit()
print(results.summary())
# グラフ生成
plt.plot(data["X"], data["Y"], 'o', label="data")
plt.plot(data["X"], results.fittedvalues, label="OLS")
plt.xlim(min(data["X"])-1, max(data["X"])+1)
plt.ylim(min(data["Y"])-1, max(data["Y"])+1)
plt.title('5-1: Auto Correlation')
plt.legend(loc=2)
plt.show()
Explanation: 例題5-1
End of explanation
# データ読み込み
data = pd.read_csv('example/k0502.csv')
data
# 説明変数設定
X = data[['X']]
X = sm.add_constant(X)
# 被説明変数設定
Y = data['Y']
# OLSの実行(Ordinary Least Squares: 最小二乗法)
model = sm.OLS(Y,X)
results = model.fit()
print(results.summary())
# グラフ生成
plt.plot(data["X"], data["Y"], 'o', label="data")
plt.plot(data["X"], results.fittedvalues, label="OLS")
plt.xlim(min(data["X"])-1, max(data["X"])+1)
plt.ylim(min(data["Y"])-1, max(data["Y"])+1)
plt.title('5-2: Auto Correlation')
plt.legend(loc=2)
plt.show()
Explanation: Durbin-Watson: 2.029となり、2に近い値であり、自己相関がないと結論出来る。
DW統計量に対応するP値を求めることがPythonではおそらくできない(Excelでも出来ない)ため、ダービン=ワトソン統計量の分布表を利用して有意性の検定を行います。  
この場合、標本の大きさ=10, 定数項を除いた説明変数の数=1なので、有意水準1%において、下限分布ではDW=0.604, 上限分布ではDW=1.001が有意となる境界、有意水準5%において、下限分布ではDW=0.879, 上限分布ではDW=1.320が有意となる境界です。(詳しくは本書の表を参考にしてください。)
例題5-2
End of explanation
data['dX'] = np.nan
data['dY'] = np.nan
for i in range(len(data)):
    if i == 0:
        data['dX'][i] = np.nan
        data['dY'][i] = np.nan
    else:
        data['dX'][i] = data['X'][i] - data['X'][i-1]
        data['dY'][i] = data['Y'][i] - data['Y'][i-1]
data
# 説明変数設定
X = data['dX'][1:]
X = sm.add_constant(X)
# 被説明変数設定
Y = data['dY'][1:]
# OLSの実行(Ordinary Least Squares: 最小二乗法)
model = sm.OLS(Y,X)
results = model.fit()
print(results.summary())
# グラフ生成
plt.plot(data["dX"], data["dY"], 'o', label="data")
plt.plot(data["dX"][1:], results.fittedvalues, label="OLS")
plt.xlim(min(data["dX"][1:])-0.5, max(data["dX"][1:])+0.5)
plt.ylim(min(data["dY"][1:])-0.5, max(data["dY"][1:])+0.5)
plt.title('5-3: Auto Correlation')
plt.legend(loc=2)
plt.show()
Explanation: DW=1.094となり、上限分布において有意水準5%でも帰無仮説を棄却することができ、自己相関が存在すると結論することができる。
例題5-3
変数変換によって自己相関に対処する方法を考える。
End of explanation
<END_TASK>