## Stepwise rolling regression: plot of coeffiecients

For questions regarding programming in the EViews programming language.

Moderators: EViews Gareth, EViews Jason, EViews Moderator, EViews Matt

jank
Posts: 2
Joined: Fri Jan 23, 2009 2:38 am

### Stepwise rolling regression: plot of coeffiecients

I have a stepwise rolling regression. For every subsample Ican have a different number of significant parameters. It is easy to get the calculation but my question now is how I can store the coefficients ( of the different equations) so, that I am able to plot a chart for the whole time period for every single coefficient (e.g. alpha, beta 1, beta 2 etc.).

EViews Gareth
Fe ddaethom, fe welon, fe amcangyfrifon
Posts: 12579
Joined: Tue Sep 16, 2008 5:38 pm

### Re: Stepwise rolling regression: plot of coeffiecients

Unfortunately this is not possible in the stepwise routine included in EViews (the main reason being that the stepwise routines doesn't actually calculate and/or store the coefficients). However you can always write your own stepwise routine and store them.

As a guide, here is a simple manual stepwise routine I wrote a while back:

Code: Select all

`'create some data - 20 X variables and a Y variable that depends upon X11-X15.'X variables are put into a group called XScreate u 1000rndseed 1group xsgroup gfor !i=1 to 20   series x!i=nrnd   %name="x"+@str(!i)   xs.add {%name}   g.add {%name}nextseries y = nrnd + 3for !i=11 to 15   y = y + !i*x{!i}next'perform backwards stepwise regression - first run a model with all Xs, then remove Xs one at a time based upon tstat.equation e1!tstop=5!stop=0while !stop=0e1.ls y c xs!mint=10000!removedvar=0for !i=1 to xs.@count   !currentt = @abs(e1.@tstats(!i+1))    'note plus one is since the equation has a constant as the first variable, but we are not testing the constant   if !currentt < !mint then      !mint = !currentt      !removedvar=!i   endifnextif !mint>!tstop then    !stop=1else    if !removedvar>0 then      %removedvarname=xs.@seriesname(!removedvar)      xs.drop {%removedvarname}   endifendifwendshow e1'run an automatic stepwise and see if it matchesequation e2.stepls(METHOD=UNI,BTOL=5,BACK,TSTAT) y c @ gshow e2`

jank
Posts: 2
Joined: Fri Jan 23, 2009 2:38 am

### Re: Stepwise rolling regression: plot of coeffiecients

Thanks a lot for your answer. But I mean the values for the significant variable are calculated as observabe in the tables and the ones not included could simply be set to zero. Isn't there a possibility to save these values (just the ones included in the regression) and to recognize for each value to which variable it belongs. Sorry for asking again ..

EViews Gareth
Fe ddaethom, fe welon, fe amcangyfrifon
Posts: 12579
Joined: Tue Sep 16, 2008 5:38 pm

### Re: Stepwise rolling regression: plot of coeffiecients

You can use the @coefs data-member of the equation to store the chosen coefficients into a vector. If you wanted, you could then place that vector into a row/column of a matrix to store all of your "rolls" as one big matrix.

PCA
Posts: 24
Joined: Thu Aug 25, 2011 11:50 am

### Re: Stepwise rolling regression: plot of coeffiecients

Could you elaborate on storing the coefficients for a stepwise regression?

I am running a very similar regression, and for example, sometimes the stepwise procedure will keep 3 explanatory variables, and sometimes it will keep 8. I think that this anomaly messes with the matrix set-up I have.

I am new to programming, so I know for a fact I am not setting up the matrix properly. Could you lend a hand?

I'm using eViews 7.

Code: Select all

`   workfile riskdata_eviews q 1990q1 2011q2     'run rolling regression    ' set window size    !window = 20    ' set step size    !step = 1    ' get size of workfile    !length = @obsrange    ' declare equation for estimation    equation eq1    'calculate number of rolls    !nrolls = @round((!length-!window)/!step)    'matrix to store coefficient estimates    matrix(13,!nrolls)  coefmat ' where 13 is the number of coefficients    'variable keeping track of how many rolls we've done    !j=0    ' move sample !step obs at a time    for !i = 1  to  !length-!window+1-!step step !step       !j=!j+1       ' set sample to estimation period       smpl @first+!i-1 @first+!i+!window-2       ' estimate equation       eq1.stepls(METHOD=step,BTOL=2,BACK,TSTAT) y c @ _10yr cpi duration gold hy_spread ig_spread m1 move oil tedspread vix yieldcurveslope       'store coefficients       colplace(coefmat,eq1.@coefs,!j)    next    show coefmat`

EViews Gareth
Fe ddaethom, fe welon, fe amcangyfrifon
Posts: 12579
Joined: Tue Sep 16, 2008 5:38 pm

### Re: Stepwise rolling regression: plot of coeffiecients

Yeah, that's going to be problematic. From a conceptual point of view, how do you want to store the coefficients?

PCA
Posts: 24
Joined: Thu Aug 25, 2011 11:50 am

### Re: Stepwise rolling regression: plot of coeffiecients

What I would like is a column for each explanatory variable, and a row for each "regression roll".

Is there anyway to possible store each coefficient into its own vector? That way if it is excluded from the model based on t-stat or p-value, then it would just say NA for that particular regression?

EViews Gareth
Fe ddaethom, fe welon, fe amcangyfrifon
Posts: 12579
Joined: Tue Sep 16, 2008 5:38 pm

### Re: Stepwise rolling regression: plot of coeffiecients

That's going to be very tricky, because you need to keep track of which variables were kept, and their position in the original list (i.e. if only MOVE, OIL, VIX are kept, you need to know to fill in the 9, 10, and 12th elements of the matrix).

PCA
Posts: 24
Joined: Thu Aug 25, 2011 11:50 am

### Re: Stepwise rolling regression: plot of coeffiecients

Exactly. That is why I was wondering if it is possible to store every coefficient in a separate vector. Or somehow store each equation in its own matrix, and then combine them after the fact?

EViews Gareth
Fe ddaethom, fe welon, fe amcangyfrifon
Posts: 12579
Joined: Tue Sep 16, 2008 5:38 pm

### Re: Stepwise rolling regression: plot of coeffiecients

Sure, you can store every equation's coefficients in their own vector, just by doing something like:

Code: Select all

`vector coefs!i = eq1.@coefs`

immediately after you've performed the stepls. You're going to end up with a bunch of vectors with different lengths, but it will work.

PCA
Posts: 24
Joined: Thu Aug 25, 2011 11:50 am

### Re: Stepwise rolling regression: plot of coeffiecients

Yeah, a little cumbersome, but it does works.

Ideally though, I'd like a fully filled matrix. I know you said it's very tricky, but is it even feasible you think?

EViews Gareth
Fe ddaethom, fe welon, fe amcangyfrifon
Posts: 12579
Joined: Tue Sep 16, 2008 5:38 pm

### Re: Stepwise rolling regression: plot of coeffiecients

Currently I'm going to say no EViews Gareth
Fe ddaethom, fe welon, fe amcangyfrifon
Posts: 12579
Joined: Tue Sep 16, 2008 5:38 pm

### Re: Stepwise rolling regression: plot of coeffiecients

Actually, I take that back.

Theoretically you could do the following....

• Use equation.@varlist to return a string containing the list of regressors that were chosen by the stepwise procedure
• Loop through the elements of that string one at a time, and find their position in the original list of regressors using @wfind
• Copy the coefficient associated with that regressor into the corresponding position in the original matrix

So something, very roughly, equal to:

Code: Select all

`%fullregs = "u v w y z"matrix(5, !nrolls) coefs'after this inside your loopequation eq1.stepls y c @ {%fullregs}%chosenregs = eq1.@varlist%chosenregs = @wmid(%chosenregs, 3)   'drop off Y and C from the varlistfor !n = 1 to @wcount(%chosenregs)  %reg = @word(%chosenregs, !n)   !nn = !n+1   'plus one because we don't care about C  !coef = eq1.@coefs(!nn)  %pos = @wfind(%fullregs, %reg)  coefs(!i, %pos) = !coefnext`

PCA
Posts: 24
Joined: Thu Aug 25, 2011 11:50 am

### Re: Stepwise rolling regression: plot of coeffiecients

Still trying to work through this. It's giving me the following error:

"scalar assigned to string in "%POS = @WFIND("_10YR CPI DURATION GOLD HY_SPREAD IG_SPREAD M1 MOVE OIL TEDSPREAD VIX YIELDCURVESLOPE", "_10YR")

I'm not sure if I implemented your coding right. Still trying to decipher it a bit.

Code: Select all

`   workfile riskvariables_eviews q 1990q1 2011q2'group riskvariables'run rolling regression' set window size!window = 20' set step size!step = 1' get size of workfile!length = @obsrange' declare equation for estimationequation eq2'string of variables%fullregs = "_10yr cpi duration gold hy_spread ig_spread m1 move oil tedspread vix yieldcurveslope"'calculate number of rolls!nrolls = @round((!length-!window)/!step)'matrix to store coefficient estimatesmatrix(13,!nrolls)  coefs' where 13 is the number of coefficients'variable keeping track of how many rolls we've done!j=0' move sample !step obs at a timefor !i = 1  to  !length-!window+1-!step step !step   !j=!j+1   ' set sample to estimation period   smpl @first+!i-1 @first+!i+!window-2   ' estimate equation    ' eq2.stepls(METHOD=UNI,BTOL=2,BACK,TSTAT) y c @ _10yr cpi duration gold hy_spread ig_spread m1 move oil tedspread vix yieldcurveslope    'after this inside your loop    equation eq2.stepls(METHOD=UNI,BTOL=2,BACK,TSTAT) y c @ {%fullregs}    %chosenregs = eq2.@varlist    %chosenregs = @wmid(%chosenregs, 3)   'drop off Y and C from the varlist    for !n = 1 to @wcount(%chosenregs)      %reg = @word(%chosenregs, !n)       !nn = !n+1   'plus one because we don't care about C      !coef = eq2.@coefs(!nn)      %pos = @wfind(%fullregs, %reg)      coefs(!i, %pos) = !coef   nextnext   `

PCA
Posts: 24
Joined: Thu Aug 25, 2011 11:50 am

### Re: Stepwise rolling regression: plot of coeffiecients

And actually, I need to know the constant, so does that alter the coding you provided at all?

%chosenregs = @wmid(%chosenregs, 3) 'drop off y and C from the varlist

and

!nn = !n+1 'plus one because we don't care about C