NetCourse 251: Writing Your Own Stata Commands

Course length:

7 weeks (5 lessons)


USD 175

Course leaders:

Kerry Kammire and Derek Wagner


Stata 16 installed and working.
NetCourse 151 or equivalent knowledge.
Internet web browser, installed and working.
(Course is platform independent.)

Parsing Stata syntax/Stata programming basics

  • Review of Stata’s programming features
  • Parsing
  • Parsing options
  • Parsing complicated syntax
  • Aside on subprograms

Parsing Stata syntax, continued: Quotes, returned results, and subsamples

  • Quotes
  • Development continues
  • Temporary variables
  • Development continues
  • An aside concerning r()
  • Programming the formulas
  • Putting it together

Using scalars and macros and introduction to low-level parsing

  • What you must learn
  • Scalars
  • Binary accuracy
  • Accuracy of macros versus scalars
  • Converting a program from macros to scalars
  • Handling by() options
  • Sorting
  • Low-level parsing
  • Programming immediate commands
  • Rewriting mytt in terms of mytti
  • Parsing new variables

Returning results and writing estimation commands

  • Where are we?
  • Stored results
  • What can be returned in r()?
  • Referring to returned results in other programs
  • Referring to returned results in the program that sets them
  • Other types of returned values: s() and e()
  • S-class returned values
  • E-class returned results
  • Writing postestimation commands
  • Writing an estimation (e-class) command
  • An alternative estimation command outline
  • Writing estimation commands from first principles
  • Writing estimation commands via maximum likelihood

List processing, controlling program output, and naming conventions

  • Restricting commands to the relevant subsample
  • Which is better: marksample or mark?
  • Programming by varlist:
  • Lists
  • Creating lists
  • Stepping through list elements one by one
  • Deleting elements from lists
  • Adding elements to lists
  • Macro vectors
  • Parsing revisited: gettoken
  • quietly blocks
  • The relation between capture and quietly
  • capture blocks
  • Naming conventions
  • Program-naming convention
  • Calling convention
  • Version control