私は R の熱心なユーザーですが、最近いくつかの理由で Python に切り替えました。ただし、statsmodels から Python でベクトル AR モデルを実行するのに少し苦労しています。
Q#1. これを実行するとエラーが発生しますが、ベクターの型に関係があるのではないかと疑っています。
import numpy as np
import statsmodels.tsa.api
from statsmodels import datasets
import datetime as dt
import pandas as pd
from pandas import Series
from pandas import DataFrame
import os
df = pd.read_csv('myfile.csv')
speedonly = DataFrame(df['speed'])
results = statsmodels.tsa.api.VAR(speedonly)
Traceback (most recent call last):
File "<pyshell#14>", line 1, in <module>
results = statsmodels.tsa.api.VAR(speedonly)
File "C:\Python27\lib\site-packages\statsmodels\tsa\vector_ar\var_model.py", line 336, in __init__
super(VAR, self).__init__(endog, None, dates, freq)
File "C:\Python27\lib\site-packages\statsmodels\tsa\base\tsa_model.py", line 40, in __init__
self._init_dates(dates, freq)
File "C:\Python27\lib\site-packages\statsmodels\tsa\base\tsa_model.py", line 54, in _init_dates
raise ValueError("dates must be of type datetime")
ValueError: dates must be of type datetime
興味深いことに、ここから VAR の例を実行するとhttps://github.com/statsmodels/statsmodels/blob/master/docs/source/vector_ar.rst#id5、正常に動作します。
Wes McKinney の「Python for Data Analysis」の 293 ページから、3 番目の短いベクトル ts を使用して VAR モデルを試してみましたが、うまくいきません。
さて、ベクトルが異なるタイプであるためだと今私は考えています:
>>> speedonly.head()
speed
0 559.984
1 559.984
2 559.984
3 559.984
4 559.984
>>> type(speedonly)
<class 'pandas.core.frame.DataFrame'> #DOESN'T WORK
>>> type(data)
<type 'numpy.ndarray'> #WORKS
>>> ts
2011-01-02 -0.682317
2011-01-05 1.121983
2011-01-07 0.507047
2011-01-08 -0.038240
2011-01-10 -0.890730
2011-01-12 -0.388685
>>> type(ts)
<class 'pandas.core.series.TimeSeries'> #DOESN'T WORK
だから私は ndarray に speedonly を変換します...それでも動作しません。しかし、今回は別のエラーが発生します:
>>> nda_speedonly = np.array(speedonly)
>>> results = statsmodels.tsa.api.VAR(nda_speedonly)
Traceback (most recent call last):
File "<pyshell#47>", line 1, in <module>
results = statsmodels.tsa.api.VAR(nda_speedonly)
File "C:\Python27\lib\site-packages\statsmodels\tsa\vector_ar\var_model.py", line 345, in __init__
self.neqs = self.endog.shape[1]
IndexError: tuple index out of range
助言がありますか?
Q#2. 私のデータセットには、予測に役立つと思われる外因性の特徴変数があります。上記の statsmodels のモデルは、使用するのに最適なものですか?