NetCourse 152

Advanced Stata Programming


Content:

This course covers advanced issues of programming in the Stata language. We focus on writing commands for general use.

Course Leaders:

Shannon Driver, Programmer at Stata Corp.
Brian Poi, Statistician at StataCorp.

Course Length:

7 weeks (5 lectures)

Dates:

Oct 8th - Nov 26th 2004

Cost:

£ 90 + VAT

Prerequisites:

  • Stata 8, installed and working.
  • Course content of NetCourse 151 or equivalent knowledge.
  • Course is platform independent.

Agenda

Lecture 1: Parsing Stata syntax / The basics of Stata programming

  • Review of Stata programming features you learned in NC-151
  • Parsing Stata syntax
  • Parsing options
  • Parsing complicated syntax
  • Using subprograms

Lecture 2: Parsing Stata syntax / The basics of Stata programming

  • Compound quotes for handling strings that may themselves contain quotes
  • Temporary variables
  • Using returned results from other programs
  • Restricting a calculation to a subsample
  • Putting together a complete program

Lecture 3: Using scalars and macros & introduction to low-level parsing

  • Scalars
  • Binary accuracy
  • Accuracy of macros vs. scalars
  • Converting a program from macros to scalars
  • Handling by() options
  • Low-level parsing
  • Programming immediate commands
  • Parsing new variables

There is an additional week break between lectures 3 and 4 in order to allow more time for those that may fall behind and to allow for more discussion from the participants


Lecture 4: Returning results and writing estimation commands

  • Saved 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 post-estimation commands
  • Writing an estimation (e class) command
  • Writing estimation commands from first principles
  • Writing estimation commands via maximum likelihood

Lecture 5: List processing, controlling program output, & naming conventions

  • Restricting commands to the relevant subsample
  • 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