[Date Prev][Date Next][Thread Prev][Thread Next][Date index][Thread index]

From |
"Nick Cox" <[email protected]> |

To |
<[email protected]> |

Subject |
RE: st: calling the value of a scalar into a variable |

Date |
Mon, 6 Oct 2003 13:35:55 +0100 |

Ernest Berkhout replied to Dev Vencappa > > I have a small problem that I am sure can be solved by > you experts. I am > > running some dickey fuller test, and computing my own > Akaike Information > > criteria or Scharwtz Information Criteria. I saved the > results of these > > in a scalar. > > I want to ask stata to create a variable that computes > the minimum of > > the AIC or SIC and return the value in that variable, > rather than me > > cheking it from the screen everytime. Can anybody help > please? I am > > copying the loop file below. > > > >local z "1 2 3 4 5 6" > > > >foreach x of local z{ > > > >regress D.netpremmean L.netpremmean L`x'D.netpremmean > >matrix b`x'=get(_b) > >scalar > AIC`x'=log(_result(4)/_result(1))+(colsof(b`x')/_result(1))*2 > >scalar > >SIC`x'=log(_result(4)/_result(1))+(colsof(b`x')/_result(1)) > *log(_result(1)) > >} > >scalar list > > > > > > So rather than calling scalar list and looking at the > screen, I want a > > variable that stores the min of AIC and SIC so that I > can see it in the > > data editor. I want to do that because at some point I > would need to loop > > that over many series. > > One approach could be to create a dataset within your loop, > recording in > one variable the number of lags you include (`x' that is) > and in the second > and third the matching AIC`x' and SIC`i'. As far as I know > -but that > knowledge might still be superseded by more experienced > programmers- that > might best be done using 'postfile'. > > postfile myhandle lags aic sic using adftests, replace > forvalues x = 1/6 { > regress D.netpremmean L.netpremmean L`x'D.netpremmean > matrix b`x'=get(_b) > scalar > AIC`x'=log(_result(4)/_result(1))+(colsof(b`x')/_result(1))*2 > scalar > SIC`x'=log(_result(4)/_result(1))+(colsof(b`x')/_result(1))* > log(_result(1)) > post myhandle (`x') (AIC`x') (SIC`x') > } > postclose myhandle > > This should give you a dataset adftests.dta with the values > you want. From > there it is easy to detect the minimum value of a variable > using normal > Stata functions for generate and/or egen. Alternatively, assuming that you have more than 6 observations you could do something like this. I assume by Scharwtz you mean Schwarz and thus what Stata means by BIC. I'd use Stata's own functionality here, unless there's some nuance I'm missing. gen AIC = . gen BIC = . forvalues x = 1/6 { regress D.netpremmean L.netpremmean L`x'D.netpremmean estimates store whatever qui estimates stats qui replace AIC = M[1,5] in `x' qui replace BIC = M[1,6] in `x' } I take it that you want to calculate min(AIC, BIC): one problem with that is you could lose track of which number came from which criterion. However, once they're in variables you can do what you like with them. Nick [email protected] * * For searches and help try: * http://www.stata.com/support/faqs/res/findit.html * http://www.stata.com/support/statalist/faq * http://www.ats.ucla.edu/stat/stata/

**References**:**RE: st: calling the value of a scalar into a variable***From:*Ernest Berkhout <[email protected]>

- Prev by Date:
**st: Diagt and diagti** - Next by Date:
**st: color options in graph** - Previous by thread:
**RE: st: calling the value of a scalar into a variable** - Next by thread:
**RE: st: calling the value of a scalar into a variable** - Index(es):

© Copyright 1996–2024 StataCorp LLC | Terms of use | Privacy | Contact us | What's new | Site index |