我想校准一个MovingOLS,但是一直收到错误消息

IndexError: index -1 is out of bounds for axis 0 with size 0

我用来训练移动的数据帧如下:
   x1  y  x2
0  1   1   1
1  2   2   2
2  3   3   3

带代码
model = pandas.stats.ols.MovingOLS(y = df['y'], x=df[['x1', 'x2']], window_type='rolling', window=2, min_periods=2)

模型非常简单,因为我只想熟悉MovingOLSAPI,如果我正确理解Movingrolling部分,我希望得到两个OLS模型。
我想知道上面是否有好的资料,因为我在网上找不到足够详细的文档/教程来介绍Rolling OLS/MovingOLSAPI。
顺便说一下,库版本是0.11.0。
谢谢您!

最佳答案

我认为这是由K(参数)>N(观测值)这一事实引起的。熊猫的移动增加了一个截距。你试图估计3个参数,滚动窗口为2个观察值。
如果你添加一些行并使滚动窗口变大,它应该会起作用。例如,window=4:

df=pd.DataFrame({'y': [1,2,3,4,5,6],
                 'x1' : [3,4,6,7,10,12],
                 'x2' : [2,7,4,9,3,15]})
print df

   x1  x2  y
0   3   2  1
1   4   7  2
2   6   4  3
3   7   9  4
4  10   3  5
5  12  15  6

print pd.stats.ols.MovingOLS(y = df['y'], x=df[['x1', 'x2']],
                             window_type='rolling',
                             window=4, min_periods=4)

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

Formula: Y ~ <x1> + <x2> + <intercept>

Number of Observations:         4
Number of Degrees of Freedom:   3

R-squared:         0.9777
Adj R-squared:     0.9331

Rmse:              0.3339

F-stat (2, 1):    21.9240, p-value:     0.1493

Degrees of Freedom: model 2, resid 1

-----------------------Summary of Estimated Coefficients------------------------
      Variable       Coef    Std Err     t-stat    p-value    CI 2.5%   CI 97.5%
--------------------------------------------------------------------------------
            x1     0.4319     0.0850       5.08     0.1237     0.2653     0.5984
            x2     0.0262     0.0425       0.62     0.6483    -0.0572     0.1096
     intercept     0.5180     0.6415       0.81     0.5675    -0.7392     1.7753
---------------------------------End of Summary---------------------------------

当我设置window=2时,也会得到一个索引越界错误。

关于python - 如何在Pandas中使用Rolling OLS Model接口(interface)?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23104717/

10-09 02:36