## Programming Tips

Strengthen your programming skills with tips and techniques from the experts

Programming Tips
0
Getting Started with Python Integration to SAS® Viya® - Part 19 - Load Multiple CSV Files

Welcome to the continuation of my series Getting Started with Python Integration to SAS Viya. In this post I'll discuss how to load multiple CSV files into memory as a single table using the loadTable action. Load and prepare data on the CAS server To start, we need to create multiple

0
Rank character variables in SAS

SAS supports many ways to compute the rank of a numeric variable and to handle tied values. However, sometimes I need to rank the values in a character categorical variable. For example, the values {"Male", "Female", "Male"} have ranks {2, 1, 2} because, in alphabetical order, "Female" is the first-ranked

0
Compute the silhouette statistic in SAS

A previous article defines the silhouette statistic (Rousseeuw, 1987) and shows how to use it to identify observations in a cluster analysis that are potentially misclassified. The article provides many graphs, including the silhouette plot, which is a bar chart or histogram that displays the distribution of the silhouette statistic

0
An interview question for SAS programmers

Recently, I learned about an elementary programming assignment called the FizzBuzz program. Some companies use this assignment for the first round of interviews with potential programmers. A competent programmer can write FizzBuzz in 5-10 minutes, which leaves plenty of time to discuss other topics. If an applicant can't complete the

Programming Tips
0
Debunking the myth that SAS code doesn't work in Viya: One billion lines later and the results are...

The SAS 9 Content Assessment is a collection of applications that are designed to help users understand the various characteristics of their deployment. SAS Content Assessment delivers information that is critical to helping you to upgrade to the latest version of SAS (Viya).

0
The exponential of a matrix

In SAS, you can approximate the exponential of a matrix by using the EXPMATRIX function in SAS IML software. This article discusses the exponential of a matrix: what it is, how to compute it, why it is useful, and why you should think of it as a linear map that

0
Venn diagrams that illustrate relationships between sets

A previous article discusses how to compute the union, intersection, and other subsets of a pair of sets. In that article, I displayed a simple Venn diagram (reproduced to the right) that illustrates the intersection and difference between two sets. The diagram uses a red disk for one set, a

Programming Tips
0
Getting Started with Python Integration to SAS® Viya® - Part 18 - Update rows in a table

Welcome to the continuation of my series Getting Started with Python Integration to SAS Viya. In this post I'll discuss how to update rows in a distributed CAS table. Load and prepare data in the CAS server I created a script to load and prepare data in the CAS server. This

0
The joy of sets

The fundamental operations on sets are union, intersection, and set difference, all of which are supported directly in the SAS IML language. While studying another programming language, I noticed that the language supports an additional operation, namely the symmetric difference between two sets. The language also supports query functions to

0
Should you use the Wald confidence interval for a binomial proportion?

The "Teacher’s Corner" of The American Statistician enables statisticians to discuss topics that are relevant to teaching and learning statistics. Sometimes, the articles have practical relevance, too. Andersson (2023) "The Wald Confidence Interval for a Binomial p as an Illuminating 'Bad' Example," is intended for professors and masters-level students in

Programming Tips
0
Getting Started with Python Integration to SAS® Viya® - Part 17 - Saving CAS tables

Welcome to the continuation of my series Getting Started with Python Integration to SAS Viya. In this post I'll discuss saving CAS tables to a caslib's data source as a file. This is similar to saving pandas DataFrames using to_ methods. Load and preview the CAS table First, I imported the

0
Getting Started with Python Integration to SAS Viya for Predictive Modeling - Working with Dates

In part 1 of this series, we examined our data before building any models. Among the discoveries was a column that seemed to contain a SAS date value. Here, we will discuss what exactly is meant by a 'SAS date', how to format it correctly, and how to create a

Programming Tips
0
Getting Started with Python Integration to SAS® Viya® - Part 16 - Execute SQL

Welcome to the continuation of my series Getting Started with Python Integration to SAS Viya. In this post I'll discuss how to execute SQL with the Python SWAT package in the distributed CAS server. Prepare and load data to the CAS server I created a Python function named createDemoData to prepare

0
Using SAS to solve an introductory programming assignment

I recently discussed introductory programming with a colleague who teaches Python at a university. He told me about the following introductory programming assignment: Let N be an integer parameter in the range [1, 9]. For each value of N, find all pairs of one-digit positive integers d1 and d2 that

0
Partial correlation: controlling for confounding variables

A data analyst wanted to estimate the correlation between two variables, but he was concerned about the influence of a confounding variable that is correlated with them. The correlation might affect the apparent relationship between main two variables in the study. A common confounding variable is age because young people

Programming Tips
0
Getting Started with Python Integration to SAS® Viya® - Part 15 - Count Missing Values in a CAS Table

Welcome to the continuation of my series Getting Started with Python Integration to SAS Viya. In this post I'll discuss how to count missing values in a CAS table using the Python SWAT package. Load and prepare data First, I connect my Python client to the distributed CAS server and named

0
Getting Started with Python Integration to SAS Viya for Predictive Modeling - Index

Welcome to my series on getting started with Python integration to SAS Viya for predictive modeling. Exploring Data - Learn how to explore the data before fitting a model Working with Dates - Learn how to format a SAS Date and calculate a new column Imputing Missing Values - Learn

0
Getting Started with Python Integration to SAS Viya for Predictive Modeling - Exploring Data

Welcome to the first post in my series Getting Started with Python Integration to SAS Viya for Predictive Modeling. I'm going to dive right into the content assuming you have minimal knowledge on SAS Cloud Analytic Services (CAS), CAS Actions and Python. For some background on these subjects, refer to

0
Estimate a Markov transition matrix from historical data

In a previous article about Markov transition matrices, I mentioned that you can estimate a Markov transition matrix by using historical data that are collected over a certain length of time. A SAS programmer asked how you can estimate a transition matrix in SAS. The answer is that you can

0
Fitting a distribution to an expert's opinion: An application of the metalog distribution

Most homeowners know that large home improvement projects can take longer than you expect. Whether it's remodeling a kitchen, adding a deck, or landscaping a yard, big projects are expensive and subject to a lot of uncertainty. Factors such as weather, the availability of labor, and the supply of materials,

0
Use the metalog distribution in SAS

A previous article describes the metalog distribution (Keelin, 2016). The metalog distribution is a flexible family of distributions that can model a wide range of shapes for data distributions. The metalog system can model bounded, semibounded, and unbounded continuous distributions. This article shows how to use the metalog distribution in

0
How Newton calculated pi to 16 decimal places

Happy Pi Day! Every year on March 14th (written 3/14 in the US), people in the mathematical sciences celebrate "all things pi-related" because 3.14 is the three-decimal approximation to π ≈ 3.14159265358979.... Modern computer methods and algorithms enable us to calculate 100 trillion digits of π. However, I think it

0
The variance of the sums of variables

Undergraduate textbooks on probability and statistics typically prove theorems that show how the variance of a sum of random variables is related to the variance of the original variables and the covariance between them. For example, the Wikipedia article on Variance contains an equation for the sum of two random

0
The distribution of the difference between two beta random variables

A SAS programmer wanted to compute the distribution of X-Y, where X and Y are two beta-distributed random variables. Pham-Gia and Turkkan (1993) derive a formula for the PDF of this distribution. Unfortunately, the PDF involves evaluating a two-dimensional generalized hypergeometric function, which is not available in all programming languages.

0
Compute hypergeometric functions in SAS

In applied mathematics, there is a large collection of "special functions." These function appera in certain applications, often as the solution to a differential equation, but also in the definition of probability distributions. For example, I have written about Bessel functions, the complete and incomplete gamma function, and the complete

0
Simulate from a bounded distribution that has a specified mean

A SAS programmer asked for help to simulate data from a distribution that has certain properties. The distribution must be supported on the interval [a, b] and have a specified mean, μ, where a < μ < b. It turns out that there are infinitely many distributions that satisfy these

Programming Tips
0
Getting Started with Python Integration to SAS® Viya® - Part 14 - CAS Table to DataFrame

Welcome to the continuation of my series Getting Started with Python Integration to SAS Viya. In this post I'll discuss how to bring a distributed CAS table back to your Python client as a DataFrame. In this example, I'm using Python on my laptop (Python client) to connect to the