Обнаружение сезонности без двух полных периодов данных

Каждая функция контекста выполнения в javascript имеет контекст контекста этот параметр , который задается:

  1. Как вызывается функция ( в том числе в качестве метода объекта, использование call и применяется , использование new )
  2. Использование связывания
  3. Лексически для функций стрелок (они принимают этот своего внешнего контекста выполнения)

Каким бы ни был этот контекст области видимости, ссылается на «this».

Вы можете изменить это значение для параметра этого контекста области , используя func.call, func.apply или func.bind.

По умолчанию и что сбивает с толку большинство новичков, когда вызывающий вызывающий вызов вызывается после того, как событие добавлено в элемент DOM, контекст области это значение функции является элементом DOM.

jQuery делает это тривиальным для изменения с помощью jQuery.proxy.

2
задан PMc 13 July 2018 в 16:43
поделиться

1 ответ

Невозможно использовать обычные методы декомпозиции, потому что они оценивают сезонность, используя, по крайней мере, столько же степеней свободы, сколько и сезонных периодов. Как указывал @useR, вам нужно, по крайней мере, два наблюдения за сезонный период, чтобы иметь возможность отличать сезонность от шума.

Однако, если вы хотите предположить, что сезонность относительно гладкая, вы можете оценить ее с использованием меньших степеней свободы. Например, вы можете аппроксимировать сезонный шаблон с использованием членов Фурье с несколькими параметрами.

df <- ts(c(
2735.869,2857.105,2725.971,2734.809,2761.314,2828.224,2830.284,2758.149,
2774.943,2782.801,2861.970,2878.688,3049.229,3029.340,3099.041,3071.151,
3075.576,3146.372,3005.671,3149.381), start=c(2016,8), frequency=12)

library(forecast)
library(ggplot2)
decompose_df <- tslm(df ~ trend + fourier(df, 2))
trend <- coef(decompose_df)[1] + coef(decompose_df)['trend']*seq_along(df)
components <- cbind(
  data = df,
  trend = trend,  
  season = df - trend - residuals(decompose_df),
  remainder = residuals(decompose_df)
)
autoplot(components, facet=TRUE)

Вы можете отрегулировать порядок членов Фурье как требуется. Я использовал 2 здесь. Для ежемесячных данных максимум, который вы можете использовать, равен 6, но это даст модель с 13 степенями свободы, которая слишком велика, только с 20 наблюдениями. Если вы не знаете о терминах Фурье для сезонности, см. https://otexts.org/fpp2/useful-predictors.html#fourier-series .

Теперь мы можем удалить сезонный компонент, чтобы получить данные с учетом сезонных колебаний.

adjust_df <- df - components[,'season']
autoplot(df, series="Data") + autolayer(adjust_df, series="Seasonally adjusted")

5
ответ дан Rob Hyndman 17 August 2018 в 12:23
поделиться
  • 1
    Благодарим вас за это. Только один вопрос. Я также использовал 2 условия Фурье, хотя я тестировал это до 6 включительно. Откуда вы знаете, какое наиболее подходящее количество терминов? Я использовал summary(decompose_jily_psqm) и посмотрел на значения p. И только S1-12 и S2-12 были значительными, поэтому я выбрал 2 термина. Однако C1-12 и C2-12 никогда не были значительными, хотя я не знаю, важно это или нет. – PMc 14 July 2018 в 09:25
  • 2
    Расширенная версия этого ответа находится в robjhyndman.com/hyndsight/tslm-decomposition . Вы минимизируете AICc или CV, как объясняется там. Здесь важна и значимость. – Rob Hyndman 17 July 2018 в 05:44
  • 3
    Ах, фантастика - спасибо! – PMc 17 July 2018 в 12:27
Другие вопросы по тегам:

Похожие вопросы: