Check out this select sampling of some of the phenomenal SAS and open source presentations, demos, and workshops that will be offered at WUSS 2024 by technical experts and industry leaders! More to come as the conference nears, with the complete list of more than 100 presentations showcased on the WUSS website in August.
Hands-on Python PDFs: Using the pypdf Library To Programmatically Design, Complete, Read, and Extract Data from PDF Forms Having Digital Signatures
Troy Martin Hughes
The pypdf Python library (https://pypdf.readthedocs.io/en/stable/index.html) facilitates the programmatic creation, completion, cropping, and merging of PDF forms. Form data—including both dynamic text and field values—can be programmatically written to a PDF using pypdf, and data manually entered into PDF form fields by end users can be programmatically extracted and evaluated. With this combination of functionality, pypdf is a powerful tool that can build dynamically generated PDF forms that simplify user completion of forms, as well as subsequent form validation. This text introduces users to the pypdf library, and demonstrates a single use case in which the copyright grant forms (CGFs) (aka, copyright-release or permission-to-publish forms) were automatically generated for the Western Users of SAS Software (WUSS) 2024 conference proceedings. This automation eliminated confusing language and components of the CGF—for example, by removing language specific only to US government employees unless the author was a US government employee. Thus, in 2023, an author submitting a paper to WUSS had to navigate around more than 50 unutilized fields in the CGF!! Moreover, an author completing the WUSS 2023 CGF had to enter his name, paper number, and paper title—information that the conference already had collected and which it should have been using to prepopulate forms for authors. This hands-on workshop (HOW) will demonstrate how the pypdf library was utilized to automate the CGF for WUSS 2024, and showcases reusable techniques that allow users to design their own dynamic PDF forms using Python.
Incorporating Macro with PROC REPORT Code
Jane Eslinger
PROC REPORT is used across many industries to generate reports that often need to be generated on a weekly, monthly, or quarterly basis. The PROC REPORT code for these reports must be robust enough to handle things like new data, different dates, and changes to titles and headers. Busy programmers don’t have time to update the program for every new run, but smart programmers know that SAS Macro must be utilized. This paper explores how to incorporate SAS Macro into PROC REPORT code, going beyond simple macro variable references. Through examples, you will learn how to write code that both iterates over a series of macro variables and parses a singular macro variable. Both use cases can be utilized by either placing PROC REPORT inside a macro program and employing macro DO group logic to generate multiple statements like DEFINE statements or COMPUTE blocks, or by calling a separate macro program from within the PROC REPORT code, which allows the macro program to be shared across programs for report standardization.
SAS® Macro Programming Tips and Techniques
Kirk Paul Lafler
The SAS® Macro Language is a powerful feature for extending the capabilities of the SAS System. This paper highlights a collection of techniques for constructing reusable and effective macros tools. Attendees are introduced to the techniques associated with building functional macros that process statements containing SAS code; design reusable macro techniques; create macros containing keyword and positional parameters; utilize defensive programming tactics and techniques; build a library of macro utilities; interface the macro language with the SQL procedure; and develop efficient and portable macro language code.
Introduction to developing Neural Nets
David Horvath
Neural nets have been discussed in in SAS regional and international conferences since last century. This session will be a bit different in that it starts with the obligatory basic background and then goes into actual code. We will discuss what Machine Learning can and cannot solve. There will be more discussion of the how results are produced and less about the overall concepts.
From Muggles to Macros: Transfiguring Your SAS® Programs With Dynamic, Data-Driven Wizardry
Josh Horstman, Richann Jean Watson
The SAS macro facility is an amazing tool for creating dynamic, flexible, reusable programs that automatically adapt to change. This presentation uses examples to demonstrate how to transform static “muggle” code full of hardcodes and data dependencies by adding macro language magic to create data-driven programming logic. Cast a vanishing spell on data dependencies and let the macro facility write your SAS code for you!
Charting Your Organization’s Machine Learning Roadmap
Ryan Paul Lafler
Machine Learning is experiencing a golden age of investment, democratization, and accessibility across all sectors and industries encompassing the life sciences, healthcare, financial technology (fintech), consumer marketing, e-commerce, manufacturing, and more. But what exactly is “Machine Learning”? How is it connected to Artificial Intelligence (AI)? And most importantly, how can data scientists, programmers, software engineers, and/or researchers start their endeavors into Machine Learning? This presentation answers these questions, and more, by giving attendees a roadmap to help them navigate the complexities of Machine Learning in an application-oriented guide. This presentation covers the main aspects of Machine Learning including supervised, unsupervised, and semi-supervised approaches as well as Deep Learning. Attendees are given a roadmap that starts with linear regression and progressively builds towards more complex and flexible algorithms with discussions about the advantages and disadvantages of using certain algorithms over others. In doing so, attendees will learn about Python libraries for Machine Learning; real-world applications of both labeled and unlabeled data; overfitting and underfitting; cross-validation; and the importance of hyperparameter tuning to better fit algorithms to their data.
Can You Teach An Old Dog New Tricks?
Scott Burroughs
It’s a fact of life that things change, and that also applies to our jobs, regardless of industry. With our jobs being technical, things will likely change even faster. It may or may not seem surprising that SAS is still the main software used in this industry, but when a ‘free’ alternative comes out, companies are going to consider it. Additionally, our jobs may change (to a new company or within our companies) and so software platforms are likely to change. As a self-professed old-timer, can I learn these new ways of doing things after having done them other ways (maybe even one way) for so long?
Limit of Detection Calculation Methods Comparison for PCR-based Quantitative Studies using the SAS® System
Jesse Albert Canchola
In assay performance evaluation for quantitative assay studies based on polymerase chain reaction (PCR), the Limit of Detection (LoD) is defined as the lowest concentration or amount of analyte that is consistently detectable (in our case, in at least 95% of the samples tested; CLSI EP17-A2). In practice, the estimation of the LoD uses a parametric curve fit to a set of panel member (PM1, PM2, PM3, etc.) data where the responses are binary (i.e., percent detected at a certain level). Typically, the parametric curve fit to the percent detection levels takes on the form of a logistic or probit distribution. Additional methods for estimation of the LoD in PCR-based studies include using the “based on hit rate” and maximum likelihood estimation (MLE) methods (Singh & Nocerino, 2001). Amongst all methods, the MLE method is preferred since the MLE is taken to be sufficient (Rice, 1988) given the selected parent probability distribution assumed to model the data. Moreover, it can be shown that the MLE for a Poisson-distributed random variable has the minimum variance unbiased estimator (MVUE) property (Cassella and Berger, 2002), thus allowing it to be used as a reference in comparison with other methods. We performed a comparison of the LoD calculation methods using various realizations of a real seven-member panel for HIV-1 PCR assay results.
Macro Variable Arrays Made Easy with macroArray SAS package
Bart Jablonski
A macro variable array is a jargon term for a list of macro variables with a common prefix and numerical suffixes. Macro arrays are valued by advanced SAS programmers and often used as “driving” lists, allowing sequential metadata for complex or iterative programs. Use of macro arrays requires advanced macro programming techniques based on indirect reference (aka, using multiple ampersands &&), which may intimidate less experienced programmers. The aim of the paper is to introduce the macroArray SAS package. The package facilitates a solution that makes creation and work with macro arrays much easier. It also provides a “DATA-step-arrays-like” interface that allows use of macro arrays without complications that arise from indirect referencing. Also, the concept of a macro dictionary is presented, and all concepts are demonstrated through use cases and examples.
Beyond Macro – Data-Driven Programming with CAS in SAS Viya
Mark Jordan
With the adoption of SAS Viya accelerating processing in CAS is becoming more common, and CAS speaks CASL. Seasoned SAS coders often use SAS macro to produce data-driven programs, automating tedious programming tasks. When working with CAS from the SAS Compute Server, it’s important to know where, when, and how the CASL that executes is generated. Whatever your experience level, the interactions between SAS code, CASL, and Macro can be intimidating. This presentation aims to demystify that process.
Ten Tips for Effective Statistical Graphics
Rick Wicklin
This presentation offers tips for creating effective statistical graphics. Sometimes, a small change to a graph can make a big difference. Other times, it is better to replace the graph entirely. Always, it is vital to design graphs that convey a clear statistical message to your target audience.
A Survey of Some of the Most Useful SAS Functions
Ron Cody
SAS Functions provide amazing power to your DATA step programming. Some of these functions are essential—some of them save you writing volumes of unnecessary code. This talk covers some of the most useful SAS functions. Some of these functions may be new to you and they will change the way you program and approach common programming tasks. The majority of the functions described in this talk work with character data. There are functions that search for strings, others that can find and replace strings or join strings together. Still others that can measure the spelling distance between two strings (useful for “fuzzy” matching). Some of the newest and most amazing functions are not functions at all, but call routines. Did you know that you can sort values within an observation? Did you know that not only can you identify the largest or smallest value in a list of variables, but you can identify the second or third or nth largest of smallest value? A knowledge of the functions described here will make you a much better SAS programmer.
Handling Missing Values in SAS 9 and SAS Viya
Melodie Rush
What do you do when you have missing values in your data? In SAS we have many ways to manage missing values. In this session, we cover what missing values are, why and when missing values occur, and how to manage missing values. We discuss functions, procedures, and how different products deal with missing values.
The Essentials of SAS® Dates and Times
Derek Morgan
The first thing you need to know is that SAS® software stores dates and times as numbers. However, this is not the only thing that you need to know. This presentation gives you a solid base for working with dates and times in SAS. It introduces you to functions and features that enable you to manipulate your dates and times with surprising flexibility. This paper shows you some of the possible pitfalls with dates (and times and datetimes) in your SAS code and how to avoid them. We show you how SAS handles dates and times through examples, including the ISO 8601 formats and informats and how to use dates and times in TITLE and FOOTNOTE statements. The presentation closes with a brief discussion of Excel conversions.
The Missing(ness) Piece: Building Comprehensive, Data Driven Missingness Reports and Codebooks Dynamically
Louise S Hadden
Reporting on missing and/or non-response data is of paramount importance when working with longitudinal surveillance, laboratory, serological, and medical record data. Reshaping the data over time to produce “missingness” statistics is a tried and true technique, but through using metadata and little known variations of familiar SAS procedures, combined with clever ODS reporting techniques, there’s an easier way. This paper and presentation will speed up your data cleaning reconnaissance and reporting, and help you find your missing(ness) piece. Additionally, the same techniques will be used to demonstrate how to create robust and utile data dictionaries..
The Everytown Research database: Using SAS® analytic procedures to analyze mass shootings
Jayanth Iyengar
With mass shootings occurring every week, it can accurately be stated that mass shootings in the U.S. have reached the level of an epidemic. Everytown Research and Policy conducts independent methodically rigorous research and supports evidence-based policies to reduce the incidence of gun violence. In 2009, Everytown Research started assembling a Mass Shooting database which records key data on every mass shooting in the U.S. In this paper, I examine and explore the database using SAS® procedures to produce a series of tables, reports, graphics, and visualizations. The goal of this project is to generate insights from the SAS analytics that guide the building of effective programs and policies to reduce the epidemic of mass shootings.
Exploration and Revelation for COVID-19 Data: An Atlas and Other Visual Data Insights
LeRoy Bessler
A Tableau dashboard posted in the Data Visualization Group at LinkedIn was so underinforming and visually disappointing that I decided to see what could be done better with the superpower tools of ODS Graphics and SAS® software. I applied my (software-independent) principles of communication-effective use of graphics tools and color to real data, not my usual data workspace of SASHELP sample data sets. Let me show you the results for COVID-19 data for 2020 to 2023. All code and input data is available post-conference upon request.
Array Hashing: Simple, Fast, and Efficient
Paul Michael Dorfman
In SAS programming, using hashing for memory-resident storage and lookup began in 1998 with array implementations of hash algorithms in the SAS language. They vastly outperformed other same-purpose SAS methods available at the time, and so SAS programmers began to include them in their repertoires. However, with the advent of the SAS hash object in 2003, array hashing started falling into obscurity. One, valid, reason is the true power of the hash object. The other is the proliferation of the baseless notion that array-based hash code is too complex to comprehend and maintain. This is quite unfortunate: Under many scenarios, array-based hash search is simpler, much faster and more efficient than the hash object. This paper presents the simplest (and yet most practical) hash search algorithm and its array-based SAS implementation as plain modifications of the sequential search. We will also see examples of how array-based hashing can be used to perform basic table operations (such as Search, Retrieve, Insert, Update, etc.) and how it performs vis-à-vis the hash object in terms of speed and efficiency.
Streamlining Your Workflow: Creating Portable and Automated SAS Project Folders Using Your SAS Enterprise Guide Project Name
Chary Akmyradov
In this presentation, I will demonstrate how to leverage the SAS Enterprise Guide (EG) project name and directory location to automate the definition of libraries and the creation of project-related folders. The session will cover the application of Autoexec, DLCreateDir option, the automatic macro variable &_ClientProjectPath, and essential SAS functions such as dequote, find, and substr. A key feature of this approach is that when the SAS EG project is executed from a new directory, the library location is updated automatically, ensuring the project’s portability. This session will provide practical insights and step-by-step instructions to enhance your SAS project management and workflow efficiency. This demonstration is suitable for all levels of SAS programmers.
A hands-on introduction to end-to-end data projects in Python for SAS Programmers
Matthew T Slaughter, Isaiah Lankham
Are you interested in learning the world’s most popular programming language, but aren’t sure where to get started? In this hands-on workshop, we’ll work through a self-contained, end-to-end data project together, comparing how each component might be handled in Python and SAS. Steps will include downloading data files from URLs, munging datasets together, summarizing data values, performing light data cleaning, building a basic statistical model, and saving results to external files. Along the way, we’ll also give a beginner-friendly overview of Python syntax and data structures, as well as important “gotchas” for SAS programmers. This workshop is aimed at SAS programmers of all skill levels, including those with no prior experience using Python. A Google account will be needed to interact with code examples through Colab (https://colab.research.google.com/). All class materials, including complete setup instructions, will be made available through https://github.com/saspy-bffs/wuss-2024-python-how
How to Modify SAS 9 Programs to Run in SAS Viya
Danny R Modlin
How can existing SAS 9 programs can be modified to execute in SAS Viya. Code can either run as is on the SAS Compute Server, or it can be modernized to process data in memory and in parallel on the SAS Cloud Analytic Services (CAS) server. This presentation is perfect for programmers who are new to SAS Viya and want to continue performing their statistical analyses there. We will address questions that are typically asked. 1. Will existing SAS 9 code work in Viya? 2. How must my programs change to take advantage of the new features in Viya?
SAS Slip-Ups and Debugging Delights: Identifying, Troubleshooting, and Resolving Common Errors in SAS Programming
Trina Williams, Anna T. K. Wade
In the realm of data analysis, SAS stands out as a powerful tool, yet even seasoned users can encounter frequent pitfalls that impede their workflow. This paper delves into the most common mistakes made when using SAS and provides comprehensive strategies for debugging these issues. From syntax errors and data step missteps to problematic datasets, we will explore a range of typical errors that users often face. By examining examples and practical solutions, this paper aims to equip SAS users with the knowledge to identify, troubleshoot, and resolve these common issues efficiently. Additionally, we will discuss best practices for writing clean and error-resistant code to minimize the occurrence of such mistakes. Whether you are a novice or an experienced SAS programmer, this guide offers valuable insights to enhance your debugging skills and improve your overall proficiency with SAS.
Simulating Optimal Sample Sizes for Joyful Canine Jaws Using SAS
Chary Akmyradov, Lida Gharibvand
In the realm of veterinary clinical research, ensuring animal welfare while achieving statistically significant results is paramount. This study presents an advanced approach to sample size calculation for a clinical study involving canine subjects, with a focus on dental health. The unique design of this study employs dogs as both cases and controls by longitudinally comparing treated and untreated teeth within the same animal, thus minimizing the number of subjects required and reducing animal suffering. A pivotal aspect of this research is the optimization of the number of dogs and the number of teeth extracted per dog. The goal is to minimize both, ensuring minimal discomfort to participating animals. The teeth growth in dogs is monitored at three distinct time points to assess the development of treated versus untreated teeth. To achieve a robust and reliable study design, a simulation-based approach was adopted. This involved simulating canine teeth growth trajectories based on pilot studies and existing literature using a Data Step. Power analysis was conducted using the simulated data, utilizing the PROC GLIMMIX and PROC FREQ procedures. Additionally, the entire simulation process was streamlined and automated using a custom SAS macro. Lastly, the results are visualized as a heat map using PROC SGPANEL. This paper highlights the delicate balance between ethical considerations and the need for scientific rigor in veterinary research. The methodology outlined here serves as a blueprint for future studies requiring minimal animal subjects while ensuring reliable and ethically sound outcomes.
The Business Value of Diversity Combined with Data Science
Stephen Sloan
Having strong diversity programs, being sensitive to diversity issues, and being able to apply rigorous data science techniques can provide significant value to an organization. Many business problems and challenges begin with the statement of a problem, and the problem sometimes seems to relate to issues with diversity. Organizations are very aware of the importance of diversity and problems sometimes manifest themselves as diversity issues, even when they have other causes. At other times there are issues where awareness of the value of diversity can help an organization achieve its goals. In addition, there are areas where diversity can have a direct impact on the organization in terms of compliance and scientific value. In this paper I cite examples where diversity has proven to have business value for an organization.
How RANK are your deciles? Using PROC RANK and PROC MEANS to create deciles based on observations and numeric values
Lisa A Mendez
For many cases using PROC RANK to create deciles works sufficiently, but occasionally, you find that it does not work for your needs. PROC RANK uses number of observations to produce a rank; however, if you need weighted percentiles then PROC RANK will not work. Instead, you can use Proc Means to successfully create weighted percent groups. This paper will illustrate the basic usage of PROC RANK and how to use PROC MEANS for the alternative. The paper will utilize BASE SAS® 9.4 code and will use a fictional dataset that provides the total number of prescriptions written by providers for two years. All levels of SAS users may benefit from the information provided in this paper.
Taking the Mystery Out of and Debugging PROC HTTP
Kim Wilson
Several great papers have been written about how to get started with PROC HTTP, which includes accessing Microsoft 365 applications, modifying various options for desired results, and more. As a SAS Technical Support Engineer, I often assist SAS customers who are not receiving the expected resource, or they are seeing a return code that is not a 200 OK. This paper describes common errors that you might encounter regarding certificates, authentication, and general errors, as well as overall debugging techniques and suggestions. This paper also helps you gather pertinent information that SAS Technical Support will need when helping to solve the problems occurring with or around PROC HTTP.
Mastering Clinical Trial Reporting with SAS
Matt Becker
This hands-on workshop offers an immersive experience in using SAS software to generate essential components of clinical trial reporting, including data sets, tables, listings, and figures (TLFs). Participants will learn how to leverage SAS for data manipulation to CDISC standards, statistical analysis, and reporting, crucial for clinical trial documentation and regulatory submissions. The workshop will cover key topics such as data transformation, coding and validation of clinical trial data, and the creation of standard TLFs following industry guidelines. Attendees will gain practical skills in using SAS procedures and macros to automate and streamline the production process, ensuring accuracy and compliance with regulatory requirements. Through interactive sessions and real-world examples, participants will develop a deep understanding of how to effectively utilize SAS to support the entire lifecycle of clinical trials, from data preparation to the final presentation of results. This workshop is designed for clinical data managers, statisticians, and programmers seeking to enhance their proficiency in SAS and improve the efficiency and quality of their clinical trial reporting.
Multiple Imputation in Interim Analyses
Bill Coar
In adaptive designs, formal interim analyses may be performed in order to alter the study based on an interim review of data. This includes calculation of conditional power, futility analysis, and early efficacy analysis. In most cases, the statistical approaches using the interim data will be consistent with those planned on the final data. Sometimes the approaches are straightforward while others such as the use of mixed models repeated measure and multiple imputation are more complicated. Missing data can be imputed using multiple imputation (MI) techniques. MI techniques are typically pre-specified but missing data patterns will be a function of the data. Additionally, different programming approaches (such as the use of single or multiple calls to Proc MI) will result in different imputation values due to the random nature of the imputations. The imputation dataset will contain replicates of the original dataset but with the missing values populated. Each replicate is analyzed, and final results averaged together for a single final estimate for decision making using Proc MIANALYZE. This presentation will introduce MI and associated assumptions, provide an example, and discuss various challenges that can occur when analysis is performed in interim data.
SAS Studio, SAS Enterprise Guide, SAS Extension for Visual Studio Code: Which should I use?
Casey Smith
SAS offers several client applications (namely, SAS Studio, SAS Enterprise Guide, SAS Extension for Visual Studio Code, and SAS Display Management System) for SAS programming and other features, such as flow building, data preparation, analysis, and ad-hoc querying and reporting. It can be a little overwhelming to know which SAS client to use! In this demo, I will show, compare, and contrast the features of each of these client applications, highlight the pros and cons of each, and give you a better idea of which one would fit your needs best.

