Как освоить анализ данных в SAS: от основ до визуализаций
Для кого эта статья:
- Новички в области анализа данных, желающие освоить SAS
- Студенты или специалисты, стремящиеся начать карьеру аналитика данных
Люди, интересующиеся практическими примерами и методами работы с данными в SAS
Погружение в мир анализа данных с SAS может казаться сложной задачей, особенно для новичка, столкнувшегося с интерфейсом программы впервые. Многие начинающие аналитики чувствуют себя потерянными среди множества процедур, синтаксиса и возможностей этой мощной платформы. Но не паникуйте! 🚀 Я проведу вас через весь процесс анализа данных в SAS — от базовых концепций до создания впечатляющих визуализаций, которые заставят ваших коллег и руководителей задуматься о повышении.
Хотите не просто освоить SAS, а стать востребованным аналитиком данных с зарплатой от 100 000 рублей? Профессия аналитик данных от Skypro — это 9 месяцев практического обучения под руководством экспертов-практиков. Вы изучите не только SAS, но и Python, SQL, Power BI, освоите статистику и математический анализ. 85% выпускников находят работу уже во время обучения. Начните карьеру аналитика без стресса и лишних затрат времени!
Основы SAS для начинающих аналитиков данных
SAS (Statistical Analysis System) — это не просто программа, а комплексная среда для статистического анализа, манипуляции данными и визуализации результатов. Прежде чем погрузиться в выполнение сложных аналитических процедур, необходимо понять фундаментальные концепции этой системы.
Работа с SAS строится вокруг двух основных компонентов: DATA шагов и PROC шагов. DATA шаги используются для создания, модификации и управления наборами данных, в то время как PROC шаги (процедуры) применяются для анализа и вывода результатов.
Базовая структура SAS-программы обычно выглядит так:
/* Это комментарий в SAS */
DATA имя_набора_данных;
/* Операторы создания или модификации данных */
INPUT переменная1 $ переменная2;
DATALINES;
значение1 значение2
значение3 значение4
;
RUN;
PROC ИМЯ_ПРОЦЕДУРЫ;
/* Операторы процедуры */
VAR переменная1 переменная2;
RUN;
Каждый оператор в SAS завершается точкой с запятой, а блоки кода завершаются оператором RUN. Это критически важно помнить для предотвращения синтаксических ошибок.
Давайте рассмотрим ключевые компоненты среды SAS, с которыми необходимо ознакомиться начинающему аналитику:
- SAS Studio — веб-интерфейс для написания и выполнения SAS-программ
- SAS Enterprise Guide — клиентское приложение с графическим интерфейсом для работы с SAS
- Библиотеки (Libraries) — логические контейнеры, где хранятся наборы данных
- Наборы данных (Datasets) — таблицы с наблюдениями (строками) и переменными (столбцами)
- Журнал (Log) — область, где отображается информация о выполнении программы, включая ошибки и предупреждения
- Результаты (Results) — область, где отображаются результаты выполненных процедур
Для эффективной работы с SAS важно понимать типы данных и форматы. В SAS существуют два основных типа переменных:
| Тип переменной | Описание | Пример |
|---|---|---|
| Числовые | Хранят числовые значения, включая даты и время (которые в SAS представлены числами) | 42, 3.14, 20220315 (дата) |
| Символьные | Хранят текст и обозначаются знаком доллара ($) в определении | "Аналитик", "Москва" |
Перед тем как приступить к серьезному анализу, рекомендую освоить базовые команды для исследования структуры данных:
/* Просмотр содержимого библиотеки */
PROC CONTENTS DATA=библиотека._ALL_;
RUN;
/* Просмотр первых 10 наблюдений набора данных */
PROC PRINT DATA=библиотека.набор_данных(OBS=10);
RUN;
Алексей Морозов, аналитик данных в фармацевтической индустрии
Когда я только начинал работать с SAS, меня поразило, насколько сложным может выглядеть синтаксис для новичка. Помню свой первый день, когда я пытался импортировать простой CSV-файл. То, что должно было занять минуту, растянулось на часы из-за ошибок в синтаксисе.
После нескольких дней борьбы я разработал свой метод — я создал файл с шаблонами наиболее часто используемых операций: импорт разных типов файлов, базовая очистка, простые аналитические процедуры. Каждый шаблон содержал комментарии, объясняющие что делает каждая строка. Это радикально ускорило мое обучение.
Через месяц я уже мог свободно анализировать клинические данные, строить регрессионные модели и создавать отчеты, которые действительно влияли на принятие решений в компании. Самое важное — не бояться ошибок в журнале SAS, они ваш лучший учитель.

Импорт и подготовка данных в SAS: первые шаги
Первое, с чем сталкивается аналитик — необходимость импортировать данные в SAS для дальнейшего анализа. SAS поддерживает множество форматов, включая CSV, Excel, текстовые файлы и даже данные из СУБД. Рассмотрим наиболее распространенные сценарии импорта. 📊
Для импорта CSV-файла используйте процедуру PROC IMPORT:
PROC IMPORT DATAFILE="/путь/к/файлу.csv"
OUT=библиотека.имя_набора
DBMS=CSV
REPLACE;
GETNAMES=YES; /* Первая строка содержит имена переменных */
DATAROW=2; /* Данные начинаются со второй строки */
RUN;
Для импорта данных из Excel:
PROC IMPORT DATAFILE="/путь/к/файлу.xlsx"
OUT=библиотека.имя_набора
DBMS=XLSX
REPLACE;
SHEET="Имя_листа"; /* Укажите нужный лист */
GETNAMES=YES;
RUN;
Для работы с текстовыми файлами фиксированной ширины DATA шаг предоставляет больше гибкости:
DATA библиотека.имя_набора;
INFILE "/путь/к/файлу.txt";
INPUT
имя_переменной1 $ 1-15
имя_переменной2 16-25
имя_переменной3 26-30;
RUN;
После импорта данных необходимо выполнить их подготовку. Это критический этап, который часто занимает до 80% времени всего аналитического процесса. Основные задачи этапа подготовки включают:
- Проверку структуры данных и типов переменных
- Очистку данных (обработку пропущенных значений, выбросов)
- Трансформацию переменных (создание новых переменных, изменение существующих)
- Фильтрацию наблюдений
Проверка структуры данных позволяет выявить потенциальные проблемы до начала анализа:
PROC CONTENTS DATA=библиотека.имя_набора;
RUN;
/* Для проверки уникальных значений */
PROC FREQ DATA=библиотека.имя_набора;
TABLES категориальная_переменная / NOCUM;
RUN;
/* Для проверки распределения числовых переменных */
PROC MEANS DATA=библиотека.имя_набора N NMISS MIN MAX MEAN MEDIAN STD;
VAR числовая_переменная;
RUN;
Обработка пропущенных значений — ключевой аспект подготовки данных. В SAS есть несколько стратегий:
| Стратегия | SAS-код | Применение |
|---|---|---|
| Исключение наблюдений | WHERE переменная IS NOT MISSING; | Когда пропущенных значений мало и они случайны |
| Замена средним | IF переменная=. THEN переменная=среднее_значение; | Для числовых переменных с нормальным распределением |
| Замена медианой | IF переменная=. THEN переменная=медиана; | Для числовых переменных с выбросами |
| Использование последнего наблюдения (LOCF) | RETAIN; IF переменная=. THEN переменная=предыдущее_значение; | Для временных рядов |
Пример обработки данных с созданием новых переменных и фильтрацией:
DATA библиотека.очищенные_данные;
SET библиотека.исходные_данные;
/* Обработка пропущенных значений */
IF возраст=. THEN возраст=35; /* Замена средним */
/* Создание новой переменной */
возрастная_группа = "";
IF возраст < 18 THEN возрастная_группа = "Подросток";
ELSE IF 18 <= возраст <= 65 THEN возрастная_группа = "Взрослый";
ELSE IF возраст > 65 THEN возрастная_группа = "Пожилой";
/* Фильтрация наблюдений */
IF доход > 0; /* Оставляем только записи с положительным доходом */
RUN;
Базовые процедуры анализа данных в SAS
После успешного импорта и подготовки данных наступает этап анализа. SAS предоставляет богатый набор процедур для статистического анализа от простейших описательных статистик до сложного машинного обучения. 📈
Начнем с базовых описательных статистик, которые позволяют получить первое представление о данных:
/* Описательная статистика для числовых переменных */
PROC MEANS DATA=библиотека.набор_данных MEAN MEDIAN MODE STD MIN MAX SKEW KURT;
VAR переменная1 переменная2 переменная3;
CLASS категориальная_переменная; /* Для группировки */
RUN;
/* Частотный анализ для категориальных переменных */
PROC FREQ DATA=библиотека.набор_данных;
TABLES переменная1 переменная2 / NOCUM PLOTS=FREQPLOT;
TABLES переменная1*переменная2 / NOROW NOCOL NOPERCENT CHISQ; /* Таблица сопряженности */
RUN;
Для более глубокого анализа взаимосвязей между переменными используем корреляционный анализ и t-тесты:
/* Корреляционный анализ */
PROC CORR DATA=библиотека.набор_данных PEARSON SPEARMAN PLOTS=MATRIX(HISTOGRAM);
VAR переменная1 переменная2 переменная3;
RUN;
/* T-тест для сравнения средних */
PROC TTEST DATA=библиотека.набор_данных;
CLASS группирующая_переменная; /* Например, пол: мужской/женский */
VAR целевая_переменная; /* Например, вес */
RUN;
Одним из наиболее мощных инструментов SAS является процедура PROC SQL, которая позволяет использовать SQL-запросы для манипуляции данными:
/* Пример SQL-запроса в SAS */
PROC SQL;
/* Создание представления */
CREATE VIEW библиотека.представление AS
SELECT
a.ID,
a.Имя,
a.Возраст,
b.Доход,
(b.Доход / a.Возраст) AS Доход_на_год_жизни
FROM
библиотека.таблица1 AS a
INNER JOIN библиотека.таблица2 AS b
ON a.ID = b.ID
WHERE
a.Возраст > 18
ORDER BY
b.Доход DESC;
/* Выполнение агрегатных функций */
SELECT
Пол,
AVG(Возраст) AS Средний_возраст,
COUNT(*) AS Количество
FROM
библиотека.набор_данных
GROUP BY
Пол;
QUIT;
Для регрессионного анализа, который является основой предсказательной аналитики, SAS предлагает процедуру PROC REG:
/* Линейная регрессия */
PROC REG DATA=библиотека.набор_данных;
MODEL зависимая_переменная = независимая1 независимая2 независимая3 / VIF COLLIN;
OUTPUT OUT=библиотека.результаты_регрессии
PREDICTED=предсказанные
RESIDUAL=остатки;
RUN;
Для более сложных случаев, когда необходимо учитывать нелинейные отношения или когда есть категориальные предикторы, используется обобщенная линейная модель:
/* Логистическая регрессия для бинарной зависимой переменной */
PROC LOGISTIC DATA=библиотека.набор_данных;
CLASS категориальный_предиктор; /* Указываем категориальные предикторы */
MODEL бинарная_зависимая_переменная(EVENT='1') =
числовой_предиктор1 категориальный_предиктор /
SELECTION=STEPWISE /* Пошаговый отбор предикторов */
LACKFIT; /* Тест соответствия Хосмера-Лемешева */
OUTPUT OUT=библиотека.результаты_логистики PREDICTED=вероятность;
RUN;
Для анализа выживаемости, который широко применяется в медицинских исследованиях и анализе клиентской базы, используется процедура PROC LIFETEST:
/* Анализ выживаемости */
PROC LIFETEST DATA=библиотека.набор_данных PLOTS=SURVIVAL;
TIME время_до_события*событие(0); /* 0 – цензурированные наблюдения */
STRATA группа; /* Для сравнения нескольких групп */
RUN;
Использование правильных аналитических процедур SAS позволяет не только выявить статистически значимые взаимосвязи, но и построить модели, которые можно использовать для принятия бизнес-решений и прогнозирования.
Визуализация результатов анализа в SAS
Визуализация — это ключевой компонент анализа данных, превращающий сложные числовые результаты в наглядные и понятные графики. SAS предлагает мощные инструменты для создания разнообразных визуализаций, от простых гистограмм до интерактивных дашбордов. 🎨
Базовые визуализации можно создавать с помощью процедуры PROC SGPLOT, которая является частью ODS Graphics:
/* Гистограмма распределения */
PROC SGPLOT DATA=библиотека.набор_данных;
HISTOGRAM числовая_переменная / BINWIDTH=10 FILLATTRS=(COLOR=steelblue);
DENSITY числовая_переменная / TYPE=NORMAL LINEATTRS=(COLOR=red THICKNESS=2);
DENSITY числовая_переменная / TYPE=KERNEL LINEATTRS=(COLOR=green THICKNESS=2);
XAXIS LABEL="Значение переменной";
YAXIS LABEL="Частота";
TITLE "Распределение значений переменной";
RUN;
/* Диаграмма рассеяния с линией регрессии */
PROC SGPLOT DATA=библиотека.набор_данных;
SCATTER X=переменная1 Y=переменная2 / MARKERATTRS=(SYMBOL=CIRCLEFILLED SIZE=10 COLOR=blue);
REG X=переменная1 Y=переменная2 / CLM LINEATTRS=(COLOR=red THICKNESS=2);
XAXIS LABEL="Переменная 1";
YAXIS LABEL="Переменная 2";
TITLE "Зависимость между переменными";
RUN;
Для более сложных визуализаций используется процедура PROC SGPANEL, позволяющая создавать множество графиков, сгруппированных по значениям категориальной переменной:
/* Панель гистограмм по группам */
PROC SGPANEL DATA=библиотека.набор_данных;
PANELBY категориальная_переменная / ROWS=2 COLUMNS=3;
HISTOGRAM числовая_переменная / FILLATTRS=(COLOR=steelblue);
ROWAXIS LABEL="Частота";
COLAXIS LABEL="Значение переменной";
RUN;
Для создания временных рядов и анализа тенденций используется специализированная процедура PROC SGPLOT с оператором SERIES:
/* Временной ряд с отметкой ключевых событий */
PROC SGPLOT DATA=библиотека.временной_ряд;
SERIES X=дата Y=значение / LINEATTRS=(COLOR=blue THICKNESS=2);
REFLINE '01JAN2020'd / AXIS=X LINEATTRS=(COLOR=red PATTERN=DASH);
XAXIS LABEL="Дата" TYPE=TIME;
YAXIS LABEL="Значение показателя";
TITLE "Динамика показателя за период";
RUN;
Для создания интерактивных отчетов SAS предлагает технологию ODS (Output Delivery System), которая позволяет экспортировать результаты анализа и визуализации в различные форматы, включая HTML, PDF, Excel:
/* Создание HTML-отчета с графиками */
ODS HTML PATH="/путь/к/папке" FILE="отчет.html" STYLE=HTMLBlue;
/* Здесь размещаются процедуры анализа и визуализации */
PROC MEANS DATA=библиотека.набор_данных;
VAR переменная1 переменная2;
RUN;
PROC SGPLOT DATA=библиотека.набор_данных;
VBAR категориальная_переменная / RESPONSE=числовая_переменная STAT=MEAN;
RUN;
ODS HTML CLOSE;
Для более продвинутых пользователей SAS предлагает создание дашбордов с помощью SAS Visual Analytics, которая позволяет создавать интерактивные отчеты с возможностью детализации данных (drill-down) и фильтрации в режиме реального времени.
Елена Смирнова, старший аналитик данных в ритейле
В начале моей карьеры я работала с данными о продажах крупной розничной сети. Моим первым серьезным проектом был анализ эффективности рекламных кампаний и их влияния на продажи.
Я импортировала данные о продажах, демографии клиентов и информацию о рекламных активностях в SAS. Начала с базового анализа и простых визуализаций в PROC SGPLOT. Результаты были информативными, но руководство не могло увидеть полной картины.
Тогда я перешла к созданию панельных визуализаций, показывающих эффективность рекламы по разным сегментам клиентов, регионам и категориям товаров. Использовала PROC SGPANEL для создания множества графиков, сгруппированных по этим параметрам.
Финальным штрихом стал интерактивный дашборд в SAS Visual Analytics, который позволял руководителям самостоятельно исследовать данные. Этот подход привел к перераспределению рекламного бюджета и росту продаж на 18% в следующем квартале.
Главный урок: визуализация — это не просто красивые картинки, а инструмент, трансформирующий данные в бизнес-решения. Начинайте с простого, но не останавливайтесь на достигнутом.
Эффективные визуализации должны следовать нескольким ключевым принципам:
- Четко определять цель визуализации (что именно вы хотите показать)
- Выбирать подходящий тип графика для конкретных данных
- Минимизировать визуальный шум, фокусируясь на ключевой информации
- Использовать цвета осознанно, для выделения важных элементов
- Обеспечивать правильное масштабирование осей для предотвращения визуальных искажений
- Добавлять четкие заголовки, подписи осей и легенды
SAS предлагает широкие возможности для настройки визуализаций, включая изменение цветов, шрифтов, размеров и стилей. Это позволяет создавать профессиональные графики, соответствующие корпоративным стандартам.
Практические кейсы анализа данных в SAS для новичков
Теория без практики мертва. Давайте рассмотрим несколько практических кейсов анализа данных в SAS, которые помогут вам закрепить полученные знания и перейти от теории к реальным задачам. 🔍
Кейс 1: Анализ продаж интернет-магазина
Предположим, у вас есть данные о продажах интернет-магазина за последний год, включающие информацию о товарах, клиентах и транзакциях. Ваша задача — проанализировать продажи и выявить факторы, влияющие на выручку.
/* Импорт данных о продажах */
PROC IMPORT DATAFILE="/путь/к/sales_data.csv"
OUT=WORK.sales
DBMS=CSV
REPLACE;
GETNAMES=YES;
RUN;
/* Предварительный анализ данных */
PROC CONTENTS DATA=WORK.sales;
RUN;
PROC MEANS DATA=WORK.sales N NMISS MIN MAX MEAN MEDIAN;
VAR order_amount customer_age;
RUN;
/* Анализ продаж по категориям товаров */
PROC SGPLOT DATA=WORK.sales;
VBAR product_category / RESPONSE=order_amount STAT=SUM;
YAXIS LABEL="Общая сумма продаж";
XAXIS LABEL="Категория товара";
TITLE "Продажи по категориям товаров";
RUN;
/* Анализ сезонности продаж */
DATA WORK.sales_with_month;
SET WORK.sales;
order_month = MONTH(order_date);
RUN;
PROC SGPLOT DATA=WORK.sales_with_month;
VBAR order_month / RESPONSE=order_amount STAT=SUM;
YAXIS LABEL="Общая сумма продаж";
XAXIS LABEL="Месяц" VALUES=(1 TO 12);
TITLE "Сезонность продаж";
RUN;
/* Сегментация клиентов по возрасту и анализ их покупок */
PROC SQL;
SELECT
CASE
WHEN customer_age < 25 THEN '18-24'
WHEN customer_age BETWEEN 25 AND 34 THEN '25-34'
WHEN customer_age BETWEEN 35 AND 44 THEN '35-44'
WHEN customer_age BETWEEN 45 AND 54 THEN '45-54'
ELSE '55+'
END AS age_group,
COUNT(DISTINCT customer_id) AS num_customers,
SUM(order_amount) AS total_sales,
AVG(order_amount) AS avg_order
FROM
WORK.sales
GROUP BY
age_group
ORDER BY
age_group;
QUIT;
Кейс 2: Прогнозирование оттока клиентов телеком-компании
В этом кейсе мы будем использовать логистическую регрессию для прогнозирования вероятности оттока клиентов на основе исторических данных.
/* Импорт данных об оттоке */
PROC IMPORT DATAFILE="/путь/к/churn_data.csv"
OUT=WORK.churn
DBMS=CSV
REPLACE;
GETNAMES=YES;
RUN;
/* Разделение данных на обучающую и тестовую выборки */
PROC SURVEYSELECT DATA=WORK.churn
OUT=WORK.churn_split
SAMPRATE=0.7
OUTALL
SEED=12345;
RUN;
DATA WORK.churn_train WORK.churn_test;
SET WORK.churn_split;
IF Selected=1 THEN OUTPUT WORK.churn_train;
ELSE OUTPUT WORK.churn_test;
DROP Selected;
RUN;
/* Построение логистической регрессии */
PROC LOGISTIC DATA=WORK.churn_train DESCENDING;
CLASS gender contract_type payment_method / PARAM=REF;
MODEL churn(EVENT='1') =
tenure monthly_charges total_charges
gender contract_type payment_method
/ SELECTION=STEPWISE
LACKFIT;
OUTPUT OUT=WORK.churn_pred PREDICTED=pred_prob;
STORE OUT=WORK.churn_model;
RUN;
/* Оценка модели на тестовой выборке */
PROC LOGISTIC INMODEL=WORK.churn_model;
SCORE DATA=WORK.churn_test OUT=WORK.churn_scored;
RUN;
/* Построение ROC-кривой */
PROC LOGISTIC DATA=WORK.churn_test DESCENDING;
MODEL churn(EVENT='1') =
tenure monthly_charges total_charges
gender contract_type payment_method;
ROC 'ROC для модели' P=WORK.churn_scored:P_1;
RUN;
/* Визуализация важности предикторов */
PROC SGPLOT DATA=WORK.churn_params;
HBAR Parameter / RESPONSE=Estimate;
XAXIS LABEL="Оценка параметра";
YAXIS LABEL="Переменная";
TITLE "Важность предикторов в модели оттока";
RUN;
Типичные задачи, с которыми часто сталкиваются начинающие аналитики данных, и SAS-процедуры для их решения:
| Аналитическая задача | SAS-процедуры | Применение |
|---|---|---|
| Описательный анализ | PROC MEANS, PROC UNIVARIATE, PROC FREQ | Понимание распределения данных, выявление аномалий |
| Анализ взаимосвязей | PROC CORR, PROC TTEST, PROC ANOVA | Выявление зависимостей между переменными |
| Предсказательное моделирование | PROC REG, PROC LOGISTIC, PROC GENMOD | Прогнозирование целевой переменной |
| Кластерный анализ | PROC CLUSTER, PROC FASTCLUS | Сегментация клиентов, группировка объектов |
| Анализ временных рядов | PROC ARIMA, PROC FORECAST, PROC EXPAND | Прогнозирование продаж, анализ тенденций |
| Анализ выживаемости | PROC LIFETEST, PROC PHREG | Анализ оттока клиентов, медицинские исследования |
Советы для эффективного выполнения практических кейсов в SAS:
- Начинайте с малого — сначала проанализируйте небольшую часть данных, чтобы понять их структуру
- Используйте пошаговый подход — сначала описательная статистика, затем визуализация, и только потом моделирование
- Документируйте свой код — подробные комментарии помогут вам и другим понять логику анализа
- Создавайте промежуточные наборы данных — сохраняйте результаты каждого этапа анализа
- Проверяйте предположения моделей — например, нормальность распределения для параметрических тестов
- Валидируйте результаты — используйте кросс-валидацию для оценки качества моделей
- Интерпретируйте результаты — переводите статистические выводы на язык бизнеса
Работая над практическими кейсами, вы не только закрепляете знания синтаксиса SAS, но и развиваете аналитическое мышление, учитесь формулировать гипотезы и проверять их с помощью данных.
Освоение SAS — это марафон, а не спринт. Начав с базовых процедур импорта и подготовки данных, последовательно переходя к аналитическим инструментам и визуализации, вы формируете мощный фундамент для карьеры в аналитике данных. Ключ к успеху — регулярная практика на реальных задачах, изучение документации и готовность экспериментировать с различными подходами. Помните: каждый эксперт когда-то был новичком, и наиболее ценные навыки приобретаются через преодоление ошибок и решение сложных задач.