2016-08-22 2 views
5

Ich habe ein Datenrahmen wie folgt aus:Rollregressionsschätzung in Python Datenrahmen

  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 0.000034  0.000053 

...... 

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 

Ich möchte ein Roll 100-Tage-Fenster OLS Regressionsschätzung laufen, das ist:

Zuerst für die 101. Zeile, Ich führe eine Regression von Y-X1, X2, X3 unter Verwendung der 1. bis 100. Reihe durch und schätze Y für die 101. Reihe;

Dann für die 102. Zeile, führen Sie eine Regression von Y-X1, X2, X3 mit der 2. bis 101. Zeilen und schätzen Y für die 102. Zeile;

Dann für die 103. Zeile, führen Sie eine Regression von Y-X1, X2, X3 mit der 2. bis 101. Zeilen, und schätzen Y für die 103. Zeile;

......

Bis zur letzten Zeile.

Wie dies zu tun?

+0

Welche Version von Pandas? – Alexander

+0

Die Version ist: 0.18.0 –

Antwort

12
model = pd.stats.ols.MovingOLS(y=df.Y, x=df[['X1', 'X2', 'X3']], 
           window_type='rolling', window=100, intercept=True) 
df['Y_hat'] = model.y_predict 
+0

Danke das ist großartig! Ich möchte auch genau dasselbe mit AR (1) Zeitreihenregression tun, mit Y. Gibt es da etwas, das MovingOLS ähnlich ist? –

+0

BTW, ich verwende statsmodels.tsa.ar_model.AR für AR (1) Regression. –

+0

Nicht sicher für ARMA-Modelle. – Alexander