[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

From |
"Nick Cox" <n.j.cox@durham.ac.uk> |

To |
<statalist@hsphsun2.harvard.edu> |

Subject |
RE: st: re: Controlling Output in the Results Window |

Date |
Tue, 17 Feb 2009 18:08:11 -0000 |

You can look to the manuals, or even better type . help m1_ado As one of many examples, Kit already referred to his -hprescott-. He omitted the source, but it is on SSC. Here is the result of typing . ssc type hprescott.ado *! hprescott 1.0.7 CFBaum 01aug2006 * from hprescott(8).ado 1.0.4 18jun2006 * 1.0.0: from http://ideas.repec.org/c/dge/qmrbcd/3.html * 1.0.1: corrections to match FORTRAN output * 1.0.2: add stub option for multiple variables * 1.0.3: make byable(recall), new variable generation for subgroups * 1.0.4: return smoothed variables as well as filtered variables * 1.0.5: hprescott Mata version * 1.0.6: corr for tsrevar * 1.0.7: smooth should accept reals program hprescott, rclass byable(recall,noheader) version 9.2 syntax varlist(ts) [if] [in], STUB(string) [Smooth(real 0)] marksample touse _ts timevar panelvar if `touse', sort onepanel markout `touse' `timevar' tsreport if `touse', report if r(N_gaps) { di as err "sample may not contain gaps" exit 198 } qui count if `touse' if r(N) == 0 error 2000 * validate each new varname defined by stub() local kk: word count `varlist' local varlist2: subinstr local varlist "." "_", all local suf = _byindex() qui forval i = 1/`kk' { local v: word `i' of `varlist2' confirm new var `stub'_`v'_`suf' confirm new var `stub'_`v'_t_`suf' gen double `stub'_`v'_`suf' = . gen double `stub'_`v'_sm_`suf' = . local varlist3 "`varlist3' `stub'_`v'_`suf'" local varlist4 "`varlist4' `stub'_`v'_sm_`suf'" } * create temp vars for any ts operators in the varlist * pass the resulting varlist1 to Mata fn tsrevar `varlist' local varlist1 `r(varlist)' * determine default smooth value from data frequency, if reported qui tsset local tu `r(unit1)' if `smooth' <= 0 { * Quarterly if "`tu'" == "q" { local smooth 1600 } * Annual else if "`tu'" == "y" { local smooth 6.25 } * Monthly else if "`tu'" == "m" { local smooth 129600 } * Other frequency or undefined else { local smooth 1600 di _n "Warning: default smooth = 1600 used" _n } } mata: hprescott("`varlist1'","`varlist3'","`varlist4'","`touse'",`smoot > h') return local rawvars "`varlist'" return local filtvars "`varlist3'" return local trendvars "`varlist4'" return local smooth "`smooth'" end mata: // from Pawel Kowal's HP function for MATLAB void hprescott(string scalar vname, /// string scalar vname3, /// string scalar vname4, /// string scalar touse, real scalar smooth) { real scalar i, T, lambda real matrix X, I, LT, Q, SIGMA_R, SIGMA_Q, g, A, b, Y, Z string rowvector vars, vars3, vars4 string scalar v, v3, v4 // access the Stata variables in varlist, varlist3, varlist4, honoring touse vars = tokens(vname) v = vars[|1,.|] st_view(X,.,v,touse) vars3 = tokens(vname3) v3 = vars3[|1,.|] // Y contains cyclical components to be extracted from X (residuals from smooth > ing) st_view(Y,.,v3,touse) vars4 = tokens(vname4) v4 = vars4[|1,.|] // Z contains the smoothed series st_view(Z,.,v4,touse) T = rows(X) I = I(T) LT = J(T,T,0) for (i=2; i<=T; i++){ LT[i,i-1] = 1.0 } LT = (I - LT)*(I - LT) Q = (LT[(3::T),.])' SIGMA_R = Q' * Q SIGMA_T = I(T-2) lambda = smooth g = Q' * X A = (SIGMA_T + lambda * SIGMA_R) b = cholsolve( A, g ) Y[.,.] = lambda * Q * b Z[.,.] = X - Y } end Nick n.j.cox@durham.ac.uk Thomas Jacobs Thanks for the reply. Please forgive my ignorance but I am unsure how to follow your advice. My Stata programming experience only recently extended to successfully calling a do file from another do with arguments, etc. Is creating a function simply creating an ado file? If not, is there anywhere in the manuals that I might find an example? On Tue, Feb 17, 2009 at 11:44 AM, Christopher Baum <BAUM@bc.edu> wrote: > > <> > Tom said > > I would appreciate any suggestions and comments on a workaround for the following problem. I am trying to constrain what appears in the results window to just the printf statements the mata portion of my stata program produces and have used the quietly command in a do file that is repeatedly called by another do file to suppress the remainder of the program. Yet I cannot figure out how to hide the actual mata code that writes the output I need to see. > > Put the Mata code in a function and call the function. E.g. when you run -hprescott-, you do not see any code, but it is calling Mata. > * * For searches and help try: * http://www.stata.com/help.cgi?search * http://www.stata.com/support/statalist/faq * http://www.ats.ucla.edu/stat/stata/

**References**:**st: re: Controlling Output in the Results Window***From:*Christopher Baum <BAUM@BC.EDU>

**Re: st: re: Controlling Output in the Results Window***From:*Thomas Jacobs <thomasjacobs@gmail.com>

- Prev by Date:
**Re: st: re: Controlling Output in the Results Window** - Next by Date:
**st: Generate Random Variable Given Percentile Values** - Previous by thread:
**Re: st: re: Controlling Output in the Results Window** - Next by thread:
**st: re: controlling output in the results window** - Index(es):

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