Ресурсы для Прерванного анализа временных рядов в R


12

Я довольно плохо знаком с R. Я попытался прочитать анализ временных рядов и уже закончил

  1. Анализ временных рядов Шамвея и Стоффера и его приложения, 3-е издание ,
  2. Отличное прогнозирование Хиндмана : принципы и практика
  3. Использование R Аврил Коглан для анализа временных рядов
  4. А. Ян Маклеод и др. Анализ временных рядов с помощью R
  5. Прикладной анализ временных рядов доктора Марселя Деттлинга

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

Сегментированный регрессионный анализ исследований прерывистых временных рядов в исследованиях использования лекарственных средств

У меня есть одномерный временной ряд количества потребляемых предметов (данные подсчета), измеряемых ежедневно в течение 7 лет. Вмешательство было применено к исследуемой популяции примерно в середине временного ряда. Ожидается, что это вмешательство не даст немедленного эффекта, а время наступления эффекта по существу неизвестно.

Используя forecastпакет Hyndman, я приспособил модель ARIMA к использованию данных перед вмешательством auto.arima(). Но я не уверен, как использовать это соответствие, чтобы ответить, имело ли место статистически значимое изменение тренда, и определить количество.

# for simplification I will aggregate to monthly counts
# I can later generalize any teachings the community supplies
count <- c(2464, 2683, 2426, 2258, 1950, 1548, 1108,  991, 1616, 1809, 1688, 2168, 2226, 2379, 2211, 1925, 1998, 1740, 1305,  924, 1487, 1792, 1485, 1701, 1962, 2896, 2862, 2051, 1776, 1358, 1110,  939, 1446, 1550, 1809, 2370, 2401, 2641, 2301, 1902, 2056, 1798, 1198,  994, 1507, 1604, 1761, 2080, 2069, 2279, 2290, 1758, 1850, 1598, 1032,  916, 1428, 1708, 2067, 2626, 2194, 2046, 1905, 1712, 1672, 1473, 1052,  874, 1358, 1694, 1875, 2220, 2141, 2129, 1920, 1595, 1445, 1308, 1039,  828, 1724, 2045, 1715, 1840)
# for explanatory purposes
# month <- rep(month.name, 7)
# year <- 1999:2005
ts <- ts(count, start(1999, 1))
train_month <- window(ts, start=c(1999,1), end = c(2001,1))
require(forecast)
arima_train <- auto.arima(train_month)
fit_month <- Arima(train_month, order = c(2,0,0), seasonal = c(1,1,0), lambda = 0)
plot(forecast(fit_month, 36)); lines(ts, col="red")

Существуют ли какие-либо ресурсы, специально посвященные анализу прерванных временных рядов в R? Я обнаружил, что это связано с ИТС в SPSS, но я не смог перевести это на R.


Вы хотите сделать вывод о том, оказало ли вмешательство статистически значимый эффект, или вы хотите смоделировать вмешательство для получения более точных прогнозов ? И не могли бы вы сделать данные доступными?
— Стефан Коласса

@StephanKolassa Конечно! Моя цель - сделать вывод. Я предоставлю фиктивные данные в редактировании, чтобы лучше проиллюстрировать мою точку зрения.
— dais.johns

@StephanKolassa Данные предоставлены в меру моих способностей.
— dais.johns

Предыдущее исследование показало, что влияние вмешательства должно быть в масштабе изменения +/- 5%.
— dais.johns

@StephanKolassa Предоставил фактические полезные данные
— dais.johns

Ответы:


4

Это называется анализом изменений. Пакет R changepointможет сделать это для вас: см. Документацию здесь (включая ссылки на литературу): http://www.lancs.ac.uk/~killick/Pub/KillickEckley2011.pdf


Спасибо. Я смотрю на это. Насколько я могу судить, это вычислит возможные точки изменения в серии, но не будет анализировать разницу тренда. Я прошу прощения, если это предположение неверно, я не смог рассмотреть пакет, кроме как поверхностно.
— dais.johns

После определения точки изменения вы можете разбить данные на два временных ряда (до и после точки изменения) и оценить параметры двух временных рядов отдельно. Еще пара предложений: поскольку ваши данные имеют сильную сезонную тенденцию, их следует удалить до анализа точки изменения; и если вы собираетесь использовать модель ARIMA, то различие также должно быть выполнено до анализа точки изменения (или, альтернативно, вам нужно будет использовать более специализированную процедуру).
— Брент Керби

Спасибо за ваши предложения, которые я попытаюсь реализовать, и помечу их как «ответ», если это решит проблему.
— dais.johns

2

Я бы предложил повторить меры иерархической модели. Этот метод должен обеспечить надежные результаты, так как каждый человек будет действовать как его / ее собственный контроль. Попробуйте проверить эту ссылку из UCLA.


0

Для байесовского подхода вы можете использовать mcpдля подгонки пуассоновской или биномиальной модели (поскольку у вас есть отсчеты по периодам с фиксированным интервалом) с авторегрессией, примененной к остаткам (в пространстве журнала). Затем сравните двухсегментную модель с односегментной моделью, используя перекрестную проверку.

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

# Fit the change point model
library(mcp)
model_full = list(
  count ~ 1 + ar(1),  # intercept and AR(1)
  ~ 1  # New intercept
)
fit_full = mcp(model_full, data = df, family = poisson(), par_x = "year")


# Fit the null model
model_null = list(
  count ~ 1 + ar(1)  # just a stable AR(1)
)
fit_null = mcp(model_null, data = df, family = poisson(), par_x = "year")

# Compare predictive performance using LOO cross-validation
fit_full$loo = loo(fit_full)
fit_null$loo = loo(fit_null)
loo::loo_compare(fit_full$loo, fit_null$loo)

Для данного набора данных это приводит к

       elpd_diff se_diff
model2    0.0       0.0 
model1 -459.1      64.3 

То есть elpd_diff/se_diffсоотношение около 7 в пользу нулевой модели (без изменений). Возможные улучшения включают в себя:

  • моделирование периодического тренда с помощью sin()или cos().
  • добавляя предварительную информацию о вероятном месте изменения, например, prior = list(cp_1 = dnorm(1999.8, 0.5).

Подробнее о моделировании авторегрессии, делая сравнение модели и установки Priors на mcpсайте . Раскрытие информации: я разработчик mcp.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.