Writing Your Own Stata Commands

Learn how to create and debug your own commands that are indistinguishable from the commands in Stata. You will be able to parse both standard and nonstandard Stata syntax using the intuitive syntax command, to manage and process saved results, to post your own saved results, to process by-groups, to create data management commands, to program your own maximum-likelihood estimator, and more. In short, learn to create commands that act just like the commands that ship with Stata.

Next class:

Jan 16, 2020


Mar 5, 2020

Can't wait? Want work on your own schedule?  Register for the same course with NetCourseNow.

Lesson 1: Parsing Stata syntax/Stata programming basics

  • Review of Stata’s programming features

  • Parsing

  • Parsing options

  • Parsing complicated syntax

  • Aside on subprograms

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

  • Review of Stata’s programming features

  • Parsing

  • Parsing options

  • Parsing complicated syntax

  • Aside on subprograms

Lesson 3: 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

Lesson 5: List processing, controlling program output, and naming conventions

Lesson 4: 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

Course pre-requisites

  • Stata 15 installed and working

  • Course content of NetCourse 151 or equivalent knowledge

  • Internet web browser, installed and working
    (course is platform independent)

  • 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


+61 2 6247 0177

Survey Design and Analysis Services Pty Ltd

ABN 37 051 831 826

PO Box 5044



  • White Facebook Icon
  • White LinkedIn Icon
  • White Twitter Icon

New Zealand

+64 9 889 2231

Need help with your purchase? 

Email us and we will reply as soon as we are in the office.

Need advice on Stata - Call us on Skype now

© 2018 by Survey Design and Analysis Services Pty Ltd