Сезонная корректировка в R или Python

#python #r #time-series

#python #r #временные ряды

Вопрос:

Кто-нибудь знает процедуру для сезонной корректировки в Python или, что еще лучше, в R? Вот пример набора данных (южноафриканский индекс потребительских цен), который, как правило, имеет всплески в первые несколько месяцев года:

Индекс потребительских цен SA m / m

Я хотел бы найти основные факторы давления, исключающие сезонные факторы, но в идеале я хотел бы использовать что-то довольно простое, встроенное в любой язык, вместо того, чтобы напрямую взаимодействовать или использовать внешний пакет, такой как Demetra.

Ответ №1:

Шаг 1. Определите данные.

(Получено из http://www.statssa.gov.za/publications/P0141/P0141February2011.pdf )

 CPI <- c(102.3, 103.1, 104.3, 105.7, 106.2, 106.6, 107, 108.2, 108.5, 108.9, 
        108.9, 108.9, 109.2, 109.5, 110.2, 111.1, 111.3, 111.5, 111.5, 
        112.2, 112.3, 112.4, 112.6, 112.8, 113, 113.5, 114.3)
  

Шаг 2. Вычислите ежемесячное изменение индекса и преобразуйте в объект time series.

 dCPI <- ts(CPI[-1] - CPI[-length(CPI)], start=2008, frequency=12)
  

Шаг 3. Используйте функцию stl() для вычисления сезонности, тренда и остатков:

 plot(stl(dCPI, "periodic"))
  

введите описание изображения здесь

Комментарии:

1. Шаг 4. Затем вычтите сезонный компонент из данных, чтобы получить данные с учетом сезонных колебаний.

2. Что означает параметр «периодический», объясните, пожалуйста? Также, пожалуйста, обратите внимание, что расчет для dCPI должен быть следующим: dCPI <- ts((CPI[-1] / CPI[-длина (CPI)] — 1), …..

3. Параметру передается «периодический» s.window . Подробнее см. ?stl .

4. @ Andrie, еще один вопрос: выполняет ли функция stl какое-либо экспоненциальное или иное взвешивание, чтобы увеличить влияние более свежих данных? Я проверил?stl и, похоже, нет.

Ответ №2: