Как освоить анализ данных в SAS: от основ до визуализаций

Пройдите тест, узнайте какой профессии подходите
Сколько вам лет
0%
До 18
От 18 до 24
От 25 до 34
От 35 до 44
От 45 до 49
От 50 до 54
Больше 55

Для кого эта статья:

  • Новички в области анализа данных, желающие освоить 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 — это марафон, а не спринт. Начав с базовых процедур импорта и подготовки данных, последовательно переходя к аналитическим инструментам и визуализации, вы формируете мощный фундамент для карьеры в аналитике данных. Ключ к успеху — регулярная практика на реальных задачах, изучение документации и готовность экспериментировать с различными подходами. Помните: каждый эксперт когда-то был новичком, и наиболее ценные навыки приобретаются через преодоление ошибок и решение сложных задач.

Загрузка...