Я активный пользователь R, но недавно перешел на Python по нескольким причинам. Тем не менее, я немного изо всех сил пытаюсь запустить векторную модель AR в Python из statsmodels.
Вопрос №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, все работает нормально.
Я пробую модель VAR с третьим, более коротким вектором, ts, из книги Уэса МакКинни «Python для анализа данных», стр. 293, и она не работает.
Итак, теперь я думаю, что это потому, что векторы разных типов:
>>> 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 лучшей для использования?