我是一个热衷于使用R的用户,但最近由于一些不同的原因转向Python。然而,我在使用statsmodels中的向量AR模型时遇到了一些困难。
问题#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数据分析》第293页中的第三个更短的向量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
我将speedonly转换为ndarray,但仍然无法正常工作。但是这次我收到了另一个错误:
>>> 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
有什么建议吗?
问题2:我的数据集中有外生特征变量,似乎对预测有用。那么,statsmodels中的上述模型是否是最好的选择?
,这样可以工作,但是当我尝试进行
results=model.fit(24)` 时,它抛出了一个 TypeError (“'int' object has no attribute 'getitem'”)。有什么想法吗? - user1822685