Python/Statsmodels - 向量自回归 endog

标签 python numpy pandas machine-learning statsmodels

我正在尝试使用 statsmodels 库运行 VAR,显然我的 endog 格式是错误的。尝试了几种不同的方法,但我找不到解决方法。

我正在运行以下代码:

def VAR_run(pred_frame,targetframe):

    #preparing the dates
    dates=pred_frame.index

    # preparing target
    targetmatrix=targetframe.as_matrix()

    # preparing pred_frame
    predmatrix=pred_frame.as_matrix()

    #creating endog
    timeseries=(predmatrix,targetmatrix)

    model=VAR((timeseries),dates=dates)

我得到的错误如下:

File "/Users/file.py", line 1198, in M_pred_frame
VAR_run(pred_frame,targetframe)
File "/file.py", line 1156, in VAR_run
model=VAR((timeseries),dates=dates)
File "/Library/Python/2.7/site-packages/statsmodels/tsa/vector_ar/var_model.py", line 334, in __init__
raise ValueError("Only gave one variable to VAR")
ValueError: Only gave one variable to VAR

谁能启发我的旅程?


额外信息

pred_frame 原来是一个 pandas DataFrame 是这样的:

            Value  lag1  2lag  3lag  4lag  5lag  6lag  7lag  8lag  9lag
Date                                                                      
...
2015-12-01   1.01  0.82  0.54  0.22  0.62  0.79  0.74  0.71  1.32  1.22   
2016-01-01   0.96  1.01  0.82  0.54  0.22  0.62  0.79  0.74  0.71  1.32   
2016-02-01   1.27  0.96  1.01  0.82  0.54  0.22  0.62  0.79  0.74  0.71  

targetframe 本来也是一个 pandas DataFrame 像这样:

            Tgt
Date            
...
2015-10-01  0.54
2015-11-01  0.82
2015-12-01  1.01
2016-01-01  0.96
2016-02-01  1.27

当变成数组时,它们看起来像这样:

targetmatrix = [[  nan]
                [ 1.18]
                [ 0.5 ]
                [ 0.51]
                ...]

predmatrix= ...[  1.27         0.96         1.01       ...,  -2.14865885  -2.14865885
            -3.19355784]
            [         nan          nan          nan ..., -18.13211803  -2.14865885
            -2.14865885]
            [         nan          nan          nan ...,          nan          nan
            nan]]


dates = DatetimeIndex(['1958-04-01', '1958-05-01', '1958-06-01', '1958-07-01',
                       '1958-08-01', '1958-09-01', '1958-10-01', '1958-11-01',
                       '1958-12-01', '1959-01-01',
                       ...
                       '2015-07-01', '2015-08-01', '2015-09-01', '2015-10-01',
                       '2015-11-01', '2015-12-01', '2016-01-01', '2016-02-01',
                       '2016-03-01', '2016-04-01'],
                       dtype='datetime64[ns]', name=u'Date', length=697, freq='MS')

关于形状:

targetmatrix.shape = (230, 1)
predmatrix.shape = (697, 1920)
dates.shape=(697,)

非常感谢您的帮助:)

最佳答案

statsmodels.tsa.api.VAR 模型适用于多元时间序列,如图所示 here .所以输入至少需要 .shape=(T, 2)

还有多种其他方法可用于单变量时间序列分析 ( see docs) 。它们接受一维输入(或 .shape=(T, 1))。

关于Python/Statsmodels - 向量自回归 endog,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37174514/

相关文章:

python - 无法使用 unittest 修补由测试类实例化的类

基于值选择数组元素的 Pythonic 方法?

python - 将 pandas DataFrame 转储到 SQL 语句

python-3.x - 给定增长率和特殊规则,如何获得 Pandas 的累积增长?

python - Python:Dictionary系列的Pandas数据框

python - 如何在 Python 中生成加密安全的字母数字字符串?

python - 将 Pandas Dataframe 向量化为 Numpy 数组

python - 如何在 python 中使用正则表达式选择字符串之间的值并放置在数据框的列中

python - 如何从 Pandas 中的groupby对象中选择列?

python - python 中离散傅立叶变换 (FT) 的教程、技巧和香蕉皮