Proceedings

Get Updates

Join our e-mail list:

MWSUG 2012 Training Classes

This year, MWSUG is offering several full- and half-day training courses. These training classes are learning opportunities which allow you to delve more deeply into a topic. Classes are offered on the Friday, Saturday, and Sunday prior to the conference and the Wednesday following the conference.

Course fees for conference attendees: $350 for full-day, $175 for half-day
Course fees for non-attendees: $530 for full-day, $265 for half-day

To register for a training class, please select the corresponding class during the registration process. Seating for the training classes are limited and registration will be accepted on a first-come, first-serve basis.

Friday, September 14

Time Course Title (click for description) Instructor
8:00am - 5:00pm SAS Report Writing Steve First
8:00am - 12:00pm PROC SQL Programming: The Basics and Beyond Kirk Lafler
1:00pm - 5:00pm JMP Basics You Can Use Charlie Shipp

Saturday, September 15

Time Course Title (click for description) Instructor
8:00am - 5:00pm Using SAS Enterprise Guide to Query Data and Generate Reports Ben Cochran
8:00am - 5:00pm Complex Survey Data Taylor Lewis
8:00am - 12:00pm Getting Started with SAS Macro Language Basics Art Carpenter
8:00am - 12:00pm Advanced SAS Programming Techniques Kirk Lafler
1:00pm - 5:00pm Building Dynamic Programs and Applications Using the SAS® Macro Language Art Carpenter
1:00pm - 5:00pm An Introduction to the Function Compiler (FCMP) Procedure Kirk Lafler

Sunday, September 16

Time Course Title (click for description) Instructor
8:00am - 5:00pm Manipulating Data with SAS Functions Ben Cochran
8:00am - 5:00pm JMP for Data Exploration Sandra Schlotzhauer
8:00am - 12:00pm Powerful, Yet Less Commonly Used: Procedures and Techniques That You Should Know Art Carpenter
8:00am - 12:00pm Missing Data Taylor Lewis
1:00pm - 5:00pm Exploring SAS Hash Programming Techniques Kirk Lafler
1:00pm - 5:00pm Analysis of a Binary Outcome Variable Using Logistic Regression Arthur Li

Wednesday, September 19

Time Course Title (click for description) Instructor
8:00am - 12:00pm Getting Started with PROC REPORT CANCELLED Art Carpenter
8:00am - 12:00pm Building Reusable Tools with the SAS Macro Language Kirk Lafler
1:00pm - 5:00pm Advanced Proc REPORT: Understanding the Compute Block and the Report Process Art Carpenter
1:00pm - 5:00pm Using Macros to Create Customized Tables Arthur Li




Course Descriptions




SAS Report Writing
Steve First
Friday, September 14, 2012, 8:00am - 5:00pm


SAS software can be used to solve a broad range of data processing problems including generating reports. The SAS Report Writing class is designed to give students the background they need to create reports from many sources of data in a variety of formats. We will offer this course as a one-day lecture only class for MWSUG.




PROC SQL Programming: The Basics and Beyond
Kirk Lafler
Friday, September 14, 2012, 8:00am - 12:00pm


This course teaches SAS users core concepts and features about accessing data stored in relational database tables. Attendees learn how to use PROC SQL to access data stored in relational tables; accomplish tasks including retrieving, subsetting, ordering, and grouping data; construct tables and “virtual” tables known as views; define, access and manipulate data; produce “quality” looking output with PROC SQL options and Output Delivery System (ODS); use summary (statistical) functions to aggregate data; understand the difference between DATA step merges and joins; create complex queries using inner and outer joins; construct logic scenarios with case expressions; interface PROC SQL with the macro facility; understand index rules and strategies; and apply query performance techniques.

Intended Audience: All SAS users

Prerequisites: SAS Essentials course or 6-months SAS software experience




JMP Basics You Can Use
Charlie Shipp
Friday, September 14, 2012, 1:00pm - 5:00pm


The hallmark of Macintosh/Windows/JMP is that they are intuitive and self-instructive. Still, some basics will facilitate getting started. We teach how to navigate and use the interface, use the platforms; see your data; and analyze with statistical graphics. We take a cruise through all the advanced platforms, and conclude with case studies to reinforce learning and usage. We will go “live” through the JMP steps for each and show reports. The advanced topics which we tour give insights in specialty areas. As with SAS Procs, once you know the standards, customs and methodologies, you can jump right in with any of them. Furthermore, the JMP Tutorials and contextual Help are very, very instructive. You will even be increasing your statistical knowledge and prowess as you learn to use JMP software.




Using SAS Enterprise Guide to Query Data and Generate Reports
Ben Cochran
Saturday, September 15, 2012, 8:00am - 5:00pm


Enterprise Guide gives the student query tools to access the data needed, analyze the data, and then generate all kinds of reports and graphs from the data… all in a very easy to use interface.




Complex Survey Data
Taylor Lewis
Saturday, September 15, 2012, 8:00am - 5:00pm


This course introduces the statistical and syntactical modifications necessary when analyzing complex survey data. “Complex” implies data containing one or more of the following features: stratification, clustering, unequal respondent weights, or finite population correction factors. Each of these features is presented, in turn, with illustrative examples demonstrating why in practice it is necessary or even beneficial to deviate from the more familiar simple random sample design.

Attendees will gain an understanding of when and how to employ the SURVEY family of SAS procedures (for instance, using PROC SURVEYMEANS as opposed to PROC MEANS or PROC SURVEYREG in lieu of PROC REG). Nuances of analyzing survey data are highlighted using real, publicly-available survey data sets spanning multiple disciplines. For example, a thorough discussion of replication techniques and how replicate weights can be used to approximate survey estimate variability is included. Issues of domain estimation are explored, applicable to when one restricts analysis to a subset of the data. Also, idiosyncrasies introduced by fitting linear models with survey data are noted.




Getting Started with SAS Macro Language Basics
Art Carpenter
Saturday, September 15, 2012, 8:00am - 12:00pm


This half-day seminar is designed for the SAS programmer who is new to the Macro Language. We will start at the basics and cover the fundamentals necessary to start applying SAS macros in your programs. By the end of the day you will understand how the Macro Language works, what the Macro Symbol Table is and how to values stored in it, how the SAS System uses Macro Variables, key Macro Language concepts, important SAS Macro Language statements, and how to invoke Macros in your programs. The examples shown in the course materials demonstrate the power and flexibility of this part of the SAS System and will enable you to apply its functionalities to your own programs right away.

Intended Audience Level: Beginner to early intermediate




Advanced SAS Programming Techniques
Kirk Lafler
Saturday, September 15, 2012, 8:00am - 12:00pm


SAS users who have acquired basic skills presented in a SAS Software Basics course and want to expand their knowledge in the DATA step as a programming language will want to attend this Advanced SAS Programming Techniques course. Attendees learn complex programming topics and techniques in the areas of data access, data manipulation, data management, data presentation, and more. Topics include DATA step programming techniques including reading and writing from and to MS-Excel spreadsheets; creating and using user-defined formats; coding and using arrays, loops, and ranges; performing lookup operations with DATA step hash objects; using operators and modifiers to search data; reshaping columns and rows of data with the TRANSPOSE procedure and DATA step approaches; techniques on controlling and improving I/O, CPU and memory operations; specialized ODS techniques for improved output, and testing and debugging techniques.

Intended Audience: All SAS users

Prerequisites: Minimum 1-year Base-SAS programming experience




Building Dynamic Programs and Applications Using the SAS® Macro Language
Art Carpenter
Saturday, September 15, 2012, 1:00pm - 5:00pm


This seminar shows you how to take advantage of SAS Macro Language capabilities that enable you to write dynamic programs and applications. By mastering the concepts and techniques presented in this class your programs will become free of hard-coded data dependencies, thus eliminating the need to re-write the code every time a data set name, variable name, or other data attribute, changes. Let “them” change the project's specifications as often as “they” want…your code is ready!

The dynamic programming techniques that you will learn about during this seminar: Are flexible and are easily adaptable to changing data structures, data table names, and variable (field) attributes Reduce maintenance requirements by removing data dependencies from within the programs Provide significant resource savings during program/application development cycles Gives the end-user extensive control over program execution by using tables such as SAS data dictionaries, SAS data sets, and Excel tables Reduce program validation efforts by providing reusable and generalized code that can be applied to many different applications Establish controlled data environments, thus insuring data integrity throughout your organization

This course makes extensive use of example macros that have been gathered from real world applications, and it concentrates on the techniques necessary to make effective use of these tools.

Intended Audience Level: Strong understanding of the macro language




An Introduction to the Function Compiler (FCMP) Procedure
Kirk Lafler
Saturday, September 15, 2012, 1:00pm - 5:00pm


This course teaches the basics of the Function Compiler (FCMP) procedure and how it can be used to create, store, and access custom user-defined functions. Attendees learn how PROC FCMP functions are stored in a data set and can be used in a DATA step, a WHERE statement, with Output Delivery System (ODS), and numerous SAS procedures; construct reliable and reusable code; and process and maintain code as independent and reusable functions and subroutines, just like other functions found in the SAS System.

Intended Audience: All SAS users

Prerequisites: Minimum 1-year SAS programming experience




Manipulating Data with SAS Functions
Ben Cochran
Sunday, September 16, 2012, 8:00am - 5:00pm


This course is a one day subset of the SAS II course. It focuses solely on the DATA step and sheds much light on the power and functionality of the many Functions in the SAS System. An in-depth look is given to the Arrays, how to create them, how they work, and how to manipulate data with them. Includes many new SAS9 functions.




JMP for Data Exploration
Sandra Schlotzhauer
Sunday, September 16, 2012, 8:00am - 5:00pm


Since this course assumes no prior JMP knowledge, the course begins by introducing the basics of JMP data tables. The course then looks at exploring individual variables, pairs of variables, and many variables. In addition, the course discusses using JMP features to enhance graphs and reports, and importing or exporting to other software packages (SAS®, Excel®, and Word®, for example).

The intent of the course is to help participants understand that their data has a message, and that in addition to formal statistical methods, exploring the data using JMP can help them discover that message. Performing statistical analyses without first exploring the data can lead to inaccurate conclusions—perhaps because of a data entry error or perhaps because of an outlier or data point representing a special cause. Data exploration includes tasks that are typically performed to check data for errors. However, data exploration expands on those tasks, and focuses on using graphs and tables to gain insight into data.




Powerful, Yet Less Commonly Used: Procedures and Techniques That You Should Know
Art Carpenter
Sunday, September 16, 2012, 8:00am - 12:00pm


The SAS® System includes a vast array of tools that provide the programmer with a vast amount of power to do all sorts of things. Just in the Base system alone there are over 50 procedures and more are being added with each new release of the software. Some of these procedures and techniques you will probably never use, and some although very useful are very underutilized.

A few of these underutilized procedures are new, some of the techniques are perceived to be difficult to learn. All offer huge benefits to the programmers that can make use of them.

This Seminar will cover a number of these underutilized, but often extremely powerful and useful procedures and techniques. Although of potential value to programmers of any ability level this Seminar is designed for newer and intermediate level programmers.




Missing Data
Taylor Lewis
Sunday, September 16, 2012, 8:00am - 12:00pm


Missing data present a dilemma to applied researchers, especially those analyzing data from surveys. Although a common approach is case- or list-wise deletion, in which the missing data are essentially ignored, alternatives are available and may be preferable in many circumstances. Two classes of compensation techniques are explored in detail: 1) reweighting the observed data and 2) imputing, or filling in, the missing data. The course is a blend of theory and real-life examples, with a focus on the SAS syntax necessary to apply the methods in practice. Specific topics to be discussed include the following:

  • Adjustment cell reweighting
  • Propensity score reweighting
  • Poststratification
  • Raking
  • Cell-based (hot-deck) imputation
  • Model-based imputation
  • Single vs. multiple imputation



Exploring SAS Hash Programming Techniques
Kirk Lafler
Sunday, September 16, 2012, 1:00pm - 5:00pm


Beginning in Version 9.1, SAS® software supports a DATA step programming technique known as hash that can help improve the way table lookup, search, sort, and join operations are performed. This course explores what a hash object is, how it works, and the syntax required. Topics include how the hash object can be used to perform in-memory data sorts, search memory-resident data using a simple key to find a single value, use a hash object to reduce the number of steps in a program, allocate memory on demand, as well as more complex programming techniques that use a composite key to search for multiple values.

Intended Audience: All SAS users

Prerequisites: Minimum 1-year Base-SAS programming experience




Analysis of a Binary Outcome Variable Using Logistic Regression
Arthur Li
Sunday, September 16, 2012, 1:00pm - 5:00pm


The data with dichotomous outcomes is widely encountered across different scientific fields and industries. This type of data can be analyzed by building a logistic regression model, which allows you to estimate the probability of success in a certain outcome.

The starting point of building a logistic regression model is to perform exploratory data analysis (creating logit plots and conducting frequency data analysis) to identify relevant variables to be included in the model. Confounders and effect modifiers also need to be identified during the model-building process. Once the model is built, it is critical to exam how well the model fits the data, such as performing the goodness-of-fit test and how to interpret model coefficients and results.

In this seminar, students will learn how to build a logistic regression model by using the LOGISTIC procedure. Some statements in PROC LOGISTIC that are new to SAS 9.2 and ODS statistical graphics relating to logistic regression will also be introduced in this course.

PRE-REQUISITE: Basic knowledge of SAS programming (such as creating SAS data sets and variables by using the DATA step) and basic knowledge of simple linear regression.




Getting Started with PROC REPORT CANCELLED
Art Carpenter
Wednesday, September 19, 2012, 8:00am - 12:00pm


Although PROC REPORT has been available since Version 6.07, the procedure is generally underutilized. One reason is that the syntax of the procedure is unique with the SAS System. Learning the basic structure in an organized way allows the programmer to easily transition from simple to increasingly more complex tables.

This Seminar will show how PROC REPORT works and thinks through a series of increasingly more complex examples. Examples will include:

  • An introduction to the basic syntax of the PROC step
  • Introduction to the COLMN, DEFINE, COMPUTE, BREAK, and RBREAK statements
  • The demonstration of addition of text to headers and value descriptions
  • The use of the DEFINE statement to form groups and columns
  • The generation of breaks before and after groups
  • The generation of breaks before and after the report
  • The use of ODS with PROC REPORT, including STYLES and traffic lighting

Intended Audience Level: Beginner to PROC REPORT




Building Reusable Tools with the SAS Macro Language
Kirk Lafler
Wednesday, September 19, 2012, 8:00am - 12:00pm


The SAS® Macro Language is a powerful feature for extending the capabilities of the SAS System. This course presents a collection of techniques for constructing reusable and effective macros tools. Attendees learn how to build functional macros that process statements containing SAS code; learn basic design principles in the development of reusable macro tools; create macros containing keyword and positional parameters; utilize defensive programming techniques; build a library of macro utilities; interface the macro language with the SQL procedure; and develop efficient and portable macro language code.

Intended Audience: All SAS users

Prerequisites: Introduction to SAS Macro course or 1-year SAS software experience




Advanced Proc REPORT: Understanding the Compute Block and the Report Process
Art Carpenter
Wednesday, September 19, 2012, 1:00pm - 5:00pm


One of the unique features of the REPORT procedure is the Compute Block. This PROC step tool allows the use of most DATA step statements, logic, and functions. Through the use of the compute block you can modify existing columns, create new columns, write text, and more!

As is so often the case, this power and flexibility comes at a price. The compute block can be complicated. There are a number of column identification and timing issues that can confound the PROC REPORT user. Of course to make matters even more interesting, there can be multiple compute blocks that can interact with each other and that can execute for different portions of the report table.

What is one to do?

This Seminar will discuss the essential elements of the compute block, its relationship to the Computed Summary Information, and how it interacts with temporary variables and report items. We will discuss timing issues and naming conventions through a series of example tables.

The Seminar participant should have a working knowledge of the REPORT procedure and should have at least attempted the occasional compute block.

Intended Audience Level: Familiar with basic PROC REPORT




Using Macros to Create Customized Tables
Arthur Li
Wednesday, September 19, 2012, 1:00pm - 5:00pm


A common task for a SAS® programmer is to create a customized table that contains the results from different procedures. For example, a standard table for a logistic regression model should include a 2-by-N table of frequencies and percentages for cases and controls from the FREQ procedure, an odds ratio along its confidence interval, and p-values from the LOGISTIC procedure. This type of table can be automatically generated from a macro program.

When one first learns the SAS macro language, one often realizes that the results created from the macro programs are not what he intended. The problem is mostly due to a lack of understanding how macro processing works, including how SAS statements are transferred from the input stack to the macro processor and the DATA step compiler, what role the macro processor plays during this process, and when best to utilize the interface to interact with the macro facility during the DATA step execution. These issues are addressed in this workshop via creating simple macro applications step-by-step.

Specifically, the following topics will be covered in this workshop: creating macro variables using the %LET statement versus the SYMPUT(X) routine, combining macro variable references with text or other macro references, understanding the difference between the global and local symbol tables, conditionally processing a portion of a macro, and iteratively processing a portion of a macro.

PRE-REQUISITE: Basic knowledge of SAS programming (such as creating SAS data sets and variables by using the DATA step)