Home > Software design >  Loop a regression with increasing sample sizes
Loop a regression with increasing sample sizes

Time:02-06

I am still learning Stata and am not sure how to get this to work. I need to run a regression over increasing sample sizes. I know how to get it to run for a specific sample size:

reg y x1 x2 in 1/10

but I need it to do it for sample size 10, then 11, then 12, etc. up to 1000. I tried the following:

foreach var in varlist x1 x2 {
     reg y x1 x2 in 10/_n 1
}

but that did not work. How do I get it to loop the regression increasing sample size by 1 each time?

CodePudding user response:

forvalues i = 10/1000 {
     reg y x1 x2 if _n <= `i'
}

CodePudding user response:

The first answer does exactly what you asked, but you then have the output from (in your example) 991 separate regressions to process. The next question is how to select what you want for further analysis. You could check out official command rolling as providing various machinery or rangestat from SSC. Here's a token reproducible example with a listing of results. The dataset in question is panel data: note that options like by(company) insist on separate regressions for each panel. If you wanted more or different results to be kept, there are related commands.

. webuse grunfeld

. rangestat (reg) invest mvalue, int(year . 0)



   ------------------------------------------------------------------------------------------ 
  | year   reg_nobs      reg_r2   reg_adj~2    b_mvalue       b_cons   se_mvalue     se_cons |
  |------------------------------------------------------------------------------------------|
  | 1935         10   .86526037   .84841791   .10253446    .20584135   .01430537   16.364981 |
  | 1936         20   .75028331   .73641016    .0893724    7.3202446   .01215286   17.885845 |
  | 1937         30   .70628424   .69579439   .08388549    11.163111   .01022308   17.600837 |
  | 1938         40   .69788155   .68993107   .08333349    10.545486   .00889458   14.396864 |
  | 1939         50   .70399484   .69782807   .08056278    9.3450069   .00754013   12.312899 |
  |------------------------------------------------------------------------------------------|
  | 1940         60   .72557587   .72084442    .0842278    7.6507759    .0068016   11.294786 |
  | 1941         70   .73233666   .72840043   .08992373     7.496037   .00659263   11.034693 |
  | 1942         80   .72656572   .72306015     .094125    7.7007269   .00653803   10.706012 |
  | 1943         90   .73520447   .73219543    .0968378    6.7626664   .00619519   10.093819 |
  | 1944        100   .74792336   .74535115   .09900035    6.0220131   .00580579   9.4585067 |
  |------------------------------------------------------------------------------------------|
  | 1945        110   .76426375     .762081    .1001161    5.3512756   .00535037   8.8046084 |
  | 1946        120   .77316485   .77124251   .10424112    3.9977716   .00519777   8.6559782 |
  | 1947        130   .76829138   .76648116   .10701191     4.703102    .0051944    8.549975 |
  | 1948        140   .75348635   .75170002   .10927737    6.1833536   .00532076   8.6413437 |
  | 1949        150   .75420863   .75254788   .11128353    6.3261435   .00522201   8.4080085 |
  |------------------------------------------------------------------------------------------|
  | 1950        160    .7520656   .75049639     .114046    5.7698694   .00520945   8.3379321 |
  | 1951        170   .75387998   .75241498   .11796668    5.0385173   .00520028   8.4011668 |
  | 1952        180   .74822014   .74680565   .12304588     3.702257   .00534999    8.728181 |
  | 1953        190   .74683845   .74549185    .1322075    -1.296652   .00561387    9.387601 |
  | 1954        200     .734334   .73299225   .14138597   -6.9762842   .00604359   10.272724 |
   ------------------------------------------------------------------------------------------ 
  •  Tags:  
  • Related