2016-08-23 7 views
0

ここに2つの質問:ローリング時系列AR(1)PythonデータフレームとMovingOLSの回帰推定?

最初。私はローリング100日間の窓OLS回帰推定、実行したい

  Date  Y   X1   X2   X3 
22 2004-05-12 9.348158e-09 0.000081 0.000028  0.000036 
23 2004-05-13 9.285989e-09 0.000073 0.000081  0.000097 
24 2004-05-14 9.732308e-09 0.000085 0.000073  0.000096 
25 2004-05-17 2.235977e-08 0.000089 0.000085  0.000099 
26 2004-05-18 2.792661e-09 0.000034 0.000089  0.000150 
27 2004-05-19 9.745323e-09 0.000048  
1000 2004-05-20 1.835462e-09 0.000034 0.000048  0.000099 
1001 2004-05-21 3.529089e-09 0.000037 0.000034  0.000043 
1002 2004-05-24 3.453047e-09 0.000043 0.000037  0.000059 
1003 2004-05-25 2.963131e-09 0.000038 0.000043  0.000059 
1004 2004-05-26 1.390032e-09 0.000029 0.000038  0.000054 

:私はこのようなデータフレーム持って

第101行のためにまず、私はのAR(1)回帰を実行します1行目〜100行目を用いてYを求め、101行目のYを推定する。

次に、102行目について、2番目から101番目の行を使用してYのAR(1)回帰を実行し、102番目の行のYを推定します。

次に、103行目について、2番目から101番目の行を使用してYのAR(1)回帰を実行し、103番目の行についてYを推定します。

......

最後の行まで。私は今、AR(1)回帰のために次のコードを使用してい

それは目標を達成するためにあらゆる可能な方法を使用して無料ですもちろん
df = pd.DataFrame({'data':data_in['Y'],'Date':data_in['Date']}) 
df = df.set_index('Date') 
ar = statsmodels.tsa.ar_model.AR(df) 
res_ar = ar.fit(maxlag=1) 

。どのようにするか?

秒。私はMovingOLSを使用すると、出力は次のようである:

-------------------------Summary of Regression Analysis------------------------- 

Formula: Y ~ <RV(t-1)> + <RV(t-1)*RQ(t-1)^0.5> + <RV(t-1|t-5)> + <RV(t-1|t-22)> 
      + <intercept> 

Number of Observations:   1420 
Number of Degrees of Freedom: 5 

R-squared:   0.3370 
Adj R-squared:  0.3352 

Rmse:    0.0001 

F-stat (4, 1415): 179.8353, p-value:  0.0000 

Degrees of Freedom: model 4, resid 1415 

-----------------------Summary of Estimated Coefficients------------------------ 
Variable  Coef Std Err  t-stat p-value CI 2.5% CI 97.5% 
-------------------------------------------------------------------------------- 
RV(t-1)  0.5031  0.0496  10.14  0.0000  0.4058  0.6003 
RV(t-1)*RQ(t-1)^0.5 -55.2344 10.1137  -5.46  0.0000 -75.0573 -35.4115 
RV(t-1|t-5)  0.1736  0.0542  3.20  0.0014  0.0673  0.2799 
RV(t-1|t-22)  0.2381  0.0563  4.23  0.0000  0.1276  0.3485 
intercept  0.0000  0.0000  2.22  0.0268  0.0000  0.0000 
---------------------------------End of Summary--------------------------------- 

それはどのような要約の中に多くの回帰結果を統合ん

答えて

0

あなたが式を使用して、サンプルをモデル化しようとしています?。この方程式には多くのパラメータがあります(推定子と呼ばれます)。推定値の値は、それを計算するために使用されるトレーニングデータに応じて変化します。データの相互検証を使用してそのようなモデルパラメータを推定する場合、これはこれらのパラメータのそれぞれについての分布を得ることを意味します。基本的にCoefは見積もりの​​平均となり、Std Errはその標準偏差になります。他の数字は、見積もりに関するこれらの統計情報が正しいことの自信を示しています。

0

MovingOLSは特に効率的ではないので、各回帰モデルにX変数が1つしかない大規模なデータセットの場合、速度差が大きいためカスタム実装を行うのが理にかなっています。このような例は、このようなものになるだろう:

def rolling_regression(df, x_name, y_name, window): 
    window_inv = 1.0/window 
    df['X_SUM'] = df[x_name].rolling(window, min_periods=window).sum() 
    df['Y_SUM'] = df[y_name].rolling(window, min_periods=window).sum() 
    df['XY_SUM'] = (df[x_name] * df[y_name]).rolling(window, min_periods=window).sum() 
    df['XX_SUM'] = numpy.square(df[x_name]).rolling(window, min_periods=window).sum() 
    df['XY_COV'] = df['XY_SUM'] - window_inv * df['X_SUM'] * df['Y_SUM'] 
    df['X_VAR'] = df['XX_SUM'] - window_inv * numpy.square(df['X_SUM']) 
    df['BETA'] = df['XY_COV']/df['X_VAR'] 
    return df[['BETA']][window - 1:] 

は、AR(1)モデルを計算するために、既存の時系列で、この機能を使用するには、単に別の列に時系列をシフトするだろう。あなたの2番目の質問については

df[x_name] = df[y_name].shift(-1) 

、結果の要約は、完全なローリング回帰、データフレーム自体は単に使用可能な最後のウィンドウを要約しません。

関連する問題