My imported data contains 7 variables: Y
and X1
, X2
, X3
, X4
, X5
, X6
. I tried applying the rollapply
function in zoo
in order to run a rolling regression within an in-sample with a window of 262 obs. (work days in a year).
date Y X1 X2
1 10/1/07 -0.0080321720 4.690734e-03 3.333770e-03
2 10/2/07 0.0000000000 -2.818413e-03 5.418223e-03
3 10/3/07 0.0023158650 -4.178744e-03 -3.821100e-04
4 10/4/07 -0.0057491710 -5.071030e-03 -8.321550e-04
5 10/5/07 0.0073570500 3.065045e-03 5.179574e-03
6 10/8/07 0.0127708010 -7.278513e-03 1.145395e-03
7 10/9/07 0.0032661980 9.692267e-03 6.514035e-03
8 10/10/07 0.0013824430 1.161780e-04 2.676416e-03
9 10/11/07 0.0026607550 1.113179e-02 8.825719e-03
10 10/12/07 -0.0046362600 -2.453561e-03 -6.584070e-03
11 10/15/07 -0.0023757680 -7.829081e-03 -3.070540e-03
12 10/16/07 -0.0128673660 -4.619378e-03 -8.972126e-03
13 10/17/07 0.0016049760 1.276695e-03 5.349316e-03
14 10/18/07 -0.0044198970 -9.018499e-03 -1.215895e-02
15 10/19/07 -0.0011080330 -5.328661e-03 -7.131916e-03
16 10/22/07 -0.0024217970 -2.019539e-02 -2.021072e-02
17 10/23/07 0.0031270520 1.668604e-02 2.236130e-02
18 10/24/07 -0.0040367400 -1.061433e-02 -5.735703e-03
19 10/25/07 0.0001011170 1.346312e-02 1.036109e-02
20 10/26/07 0.0003032910 3.766526e-03 2.903628e-03
21 10/29/07 0.0004042450 1.416406e-02 2.527754e-03
22 10/30/07 -0.0012132240 -1.387166e-03 -8.202236e-03
23 10/31/07 0.0057497510 9.593904e-03 1.433401e-02
24 11/1/07 -0.0032238590 -1.648975e-02 -1.029199e-02
25 11/2/07 -0.0031330560 -7.737784e-03 -7.559498e-03
26 11/5/07 -0.0001012300 -7.877763e-03 -8.500554e-03
27 11/6/07 -0.0004050220 7.407770e-03 2.536320e-03
28 11/7/07 -0.0031444970 -5.904219e-03 -8.026064e-03
29 11/8/07 -0.0045822590 -3.712574e-03 -6.395584e-03
30 11/9/07 0.0016316540 -1.432552e-02 -1.741458e-02
31 11/12/07 -0.0019378860 -3.926583e-03 -4.543370e-03
32 11/13/07 0.0011223920 -1.952799e-03 -2.622112e-03
33 11/14/07 0.0008154940 8.687550e-06 1.085682e-03
34 11/15/07 0.0015272620 -1.549745e-02 -1.556172e-02
35 11/16/07 -0.0001017450 -5.578556e-03 -1.432244e-02
36 11/19/07 0.0014234880 -2.206707e-02 -3.537936e-02
37 11/20/07 -0.0010165700 1.643937e-02 5.140822e-03
38 11/21/07 -0.0008140010 -1.715961e-02 -2.756704e-02
39 11/22/07 -0.0008146640 -2.108098e-03 7.455698e-03
40 11/23/07 0.0008146640 1.266776e-02 1.615338e-02
41 11/26/07 0.0008140010 5.539814e-03 2.854080e-03
42 11/27/07 0.0006100660 -8.561106e-03 -9.720505e-03
43 11/28/07 -0.0015258640 3.392103e-02 2.132374e-02
44 11/29/07 -0.0006109980 6.109848e-03 1.045556e-02
45 11/30/07 0.0004073730 9.214342e-03 1.133690e-02
46 12/3/07 -0.0002036660 -7.006415e-03 -6.079820e-04
47 12/4/07 0.0002036660 -1.187605e-02 -2.554853e-02
48 12/5/07 0.0007125040 1.362121e-02 9.525618e-03
49 12/6/07 -0.0034655010 7.917348e-03 5.252105e-03
50 12/7/07 0.0018361730 -1.026832e-02 1.216898e-02
51 12/10/07 0.0013240310 3.347302e-03 1.143687e-02
52 12/11/07 0.0005087760 -3.433720e-03 2.373558e-03
53 12/12/07 0.0024385300 5.507930e-04 3.191504e-03
54 12/13/07 -0.0115336820 -1.793698e-02 -2.149447e-02
55 12/14/07 -0.0010271160 -2.307745e-03 -1.038483e-03
56 12/17/07 -0.0033969870 -1.822079e-02 -2.920662e-02
57 12/18/07 0.0000000000 -1.873297e-03 -7.061215e-03
58 12/19/07 -0.0004125410 -3.372400e-06 -7.879850e-03
59 12/20/07 0.0008249120 -6.227957e-03 -1.752460e-04
60 12/21/07 -0.0020635580 1.734991e-02 1.348190e-02
61 12/24/07 0.0003098050 0.000000e+00 0.000000e+00
62 12/25/07 0.0000000000 0.000000e+00 0.000000e+00
63 12/26/07 0.0001032470 0.000000e+00 0.000000e+00
64 12/27/07 0.0006192590 5.006783e-03 5.274480e-03
65 12/28/07 -0.0005160230 6.428153e-03 8.557260e-03
66 12/31/07 0.0000000000 0.000000e+00 0.000000e+00
67 1/1/08 0.0002064410 0.000000e+00 0.000000e+00
68 1/2/08 -0.0009293200 -6.023384e-03 -3.104400e-03
69 1/3/08 0.0027853730 -2.302511e-03 -2.759650e-03
70 1/4/08 0.0018526150 -2.149450e-02 -2.645257e-02
71 1/7/08 -0.0005142710 -4.445206e-03 -2.117698e-
1596 <NA> <NA> <NA>
the last line for some reason doesn't show the values,even though there are in the original excel file(X3,X4,X5,X6 are missing,since the columns are stacked on top of each other,I copied the batch from the top for the example.
My code is:
rollapply(ts, 262, lm(
Y~X1+X2+X3+X4+X5+X6+0, subset=1:floor(length(x)/2)),
align="right")
The error message I get is:
Error in eval(expr, envir, enclos) : object 'Y' not found
I really wonder why it can not find the Y
variable, since it is displayed in the time series dataset with the appropriate heading.
It is not really clear what your data actually is (use
dput(example_data)
to give reproducible examples).But the
lm
call in your example is simply doing the same regression over and over again (your x is not changing) and as josilber points out, it is supposed to be a function. Here is an example where all the data is in the data.frameallRegData
and it has at least two columns, one namedy
and another namedx
:I guess your questions are
rollapply
.It seems hard to help you with 3. since you do not provide the data set or the R code you use. Starting with 1., then you can use the
rollRegres
package I have made. What you would do is something like thisNow, regarding 2. then you can do something like what Hans Roggeman shows but a version that works with multiple regression as you request
It is much slower though
The
rollapply
version can be faster if you uselm.fit
but it it still slower thanroll_regres
.