Использование оператора BY в PROC ESM

Вопрос или проблема

Я использовал процедуру PROC ESM в SAS для прогнозирования временных рядов. Я хочу включить две переменные в оператор by. Мои данные содержат четыре столбца:

  1. Shop_id
  2. Item_id
  3. Item_price
  4. Date

Столбец item_price — это тот, который должен быть прогнозируемым. Дата указана в месяцах. Я хочу включить как shop_id, так и item_id в оператор by.

Это возможно?

Да, оператор BY можно использовать с PROC ESM для разделения групп наблюдений, определяемых переменными BY.

Согласно документации PROC ESM, когда используется оператор BY, процедура ожидает, что входной набор данных будет отсортирован по переменным BY. В этом случае я просто использую PROC SORT для сортировки данных перед PROC ESM с аналогичным оператором BY.

Это использует PROC ESM и набор данных SASHELP.PRICEDATA (включен) для построения прогнозов, сгруппированных по региону, линии продуктов и продукту.

ods noproctitle;
ods graphics / imagemap=on;

proc sort data=SASHELP.PRICEDATA out=Work.preProcessedData;
    by regionName productLine productName date;
run;

proc esm data=Work.preProcessedData plot=(modelforecasts);
    by regionName productLine productName;
    id date interval=Month;
    forecast sale;
run;

В вашем случае вам нужно соответственно изменить имена переменных. В конце концов, вы должны получить что-то вроде этого:

ods noproctitle;
ods graphics / imagemap=on;

proc sort data=mydata out=Work.preProcessedData;
    by regionName shop_id item_id date;
run;

proc esm data=Work.preProcessedData plot=(modelforecasts);
    by shop_id item_id;
    id date interval=Month;
    forecast item_price;
run;

Посмотрите больше информации в Центре справки SAS: Оператор BY.

Всего хорошего.

Ответ или решение

Да, вы можете использовать оператор BY в PROC ESM для разделения групп наблюдений, определяемых переменными BY. В вашем случае вы хотите включить как shop_id, так и item_id в оператор BY, что вполне допустимо.

Важно отметить, что при использовании оператора BY в PROC ESM ваши данные должны быть отсортированы в порядке переменных BY. В этом случае вам нужно сначала отсортировать данные с помощью PROC SORT, а затем применить PROC ESM.

Вот пример кода, в котором используются переменные из вашей задачи:

ods noproctitle;
ods graphics / imagemap=on;

/* Сортировка данных по переменным shop_id, item_id и date */
proc sort data=mydata out=Work.preProcessedData;
    by shop_id item_id date;
run;

/* Прогнозирование с использованием PROC ESM */
proc esm data=Work.preProcessedData plot=(modelforecasts);
    by shop_id item_id;
    id date interval=Month;
    forecast item_price;
run;

В этом коде сначала данные сортируются по shop_id, item_id и date, а затем при помощи PROC ESM создается прогноз для переменной item_price, сгруппированный по shop_id и item_id.

Убедитесь, что ваш столбец date имеет правильный формат (например, настоящий формат даты в месяцах), чтобы PROC ESM корректно интерпретировал временные ряды. После выполнения этого кода вы получите прогнозы для цен на товары в каждом магазине на основе их уникальных комбинаций shop_id и item_id.

Для получения дополнительной информации вы можете обратиться к официальной документации SAS: SAS Help Center: BY Statement.

Если у вас есть дополнительные вопросы или вам нужна помощь с другими аспектами вашего анализа, не стесняйтесь спрашивать.

Оцените материал
Добавить комментарий

Капча загружается...