2016-05-11 10 views
2

statsmodelsライブラリを使用してVARを実行しようとしていますが、明らかにendog形式が間違っています。いくつかのことを試してみましたが、解決方法を見つけることはできません。Python/Statsmodels - ベクトル自己回帰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 

誰もが私の旅を啓発することはできますか?


EXTRA INFO

pred_frameもともとこのようなパンダ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 

  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は、もともともこのようなパンダDataFrameです3210

彼らはこのように見えるの配列になった場合:形状について

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,) 

あなたの助けが高く評価されます:)

答えて

3

statsmodels.tsa.api.VARモデルは多変量時系列のためのものです図示のようにhere。したがって、入力は少なくとも.shape=(T, 2)である必要があります。

盛単変量時系列分析(see docs)のための様々な他の方法があります。これらは、1Dの入力(または.shape=(T, 1))を受け入れる。

+0

あなたができ、この後のすべての? – Stefan

+0

を解決するために、あなたも同様に動作する別のStatsmodels方法に精通していますVARまたはVARMAXに変換し、外生変数も使用できるようにします(答えに記載されているように1次元入力を受け入れます) –

関連する問題