#python #r #time-series
#python #r #временные ряды
Вопрос:
Кто-нибудь знает процедуру для сезонной корректировки в Python или, что еще лучше, в R? Вот пример набора данных (южноафриканский индекс потребительских цен), который, как правило, имеет всплески в первые несколько месяцев года:
Я хотел бы найти основные факторы давления, исключающие сезонные факторы, но в идеале я хотел бы использовать что-то довольно простое, встроенное в любой язык, вместо того, чтобы напрямую взаимодействовать или использовать внешний пакет, такой как 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 и, похоже, нет.