Временные ряды для данных счета, с количеством <20


23

Недавно я начал работать в туберкулезной клинике. Мы периодически встречаемся, чтобы обсудить количество случаев туберкулеза, которые мы сейчас лечим, количество проведенных тестов и т. Д. Я хотел бы начать моделировать эти показатели, чтобы мы не просто угадали, является ли что-то необычным или нет. К сожалению, у меня было очень мало тренировок во временных рядах, и большая часть моего знакомства была с моделями для очень непрерывных данных (цены акций) или очень большого количества подсчетов (грипп). Но мы имеем дело с 0-18 случаями в месяц (в среднем 6,68, медиана 7, вар 12,3), которые распределяются следующим образом:

[изображение потеряно в глубине веков]

[изображение съедено grue]

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

РЕДАКТИРОВАТЬ: Ответ mbq заставил меня задуматься о том, что я здесь спрашиваю; Я слишком зациклился на ежемесячных счетах и ​​потерял фактическую направленность вопроса. Что я хотел бы знать: отражает ли (довольно заметное) снижение, скажем, начиная с 2008 года, тенденцию к снижению общего числа случаев? Мне кажется, что число случаев в месяц в период с 2001 по 2007 год отражает стабильный процесс; возможно, некоторая сезонность, но в целом стабильная. С 2008 года по настоящее время похоже, что этот процесс меняется: общее количество случаев уменьшается, хотя ежемесячные подсчеты могут колебаться вверх и вниз из-за случайности и сезонности. Как я могу проверить, есть ли реальные изменения в процессе? И если я могу определить снижение,


2
Ссылки умерли. Если вы можете получить изображения (или восстановить их), пожалуйста, используйте новую систему, которая хранит их в imgur.
— Glen_b

К сожалению, эти участки были от пары рабочих мест назад. Извиняюсь!
— Мэтт Паркер

1
Учитывая, что этот пост (# 173) относится ко времени, когда сайт был в бета-версии, это не удивительно - мало кто мог повторить сюжет из постов, которые были так далеко на этом этапе. Спасибо, в любом случае.
— Glen_b

Ответы:


15

Чтобы оценить историческую тенденцию, я бы использовал игру с трендовыми и сезонными компонентами. Например

require(mgcv)
require(forecast)
x <- ts(rpois(100,1+sin(seq(0,3*pi,l=100))),f=12)
tt <- 1:100
season <- seasonaldummy(x)
fit <- gam(x ~ s(tt,k=5) + season, family="poisson")
plot(fit)

Затем summary(fit)вам дадут тест значимости изменения тренда, а сюжет даст вам некоторые доверительные интервалы. Здесь предположения заключаются в том, что наблюдения независимы, а условное распределение является пуассоновским. Поскольку среднее значение может изменяться плавно с течением времени, это не особенно сильные предположения.

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

fcast <- predict(fit,se.fit=TRUE,
               newdata=list(tt=101:112,season=seasonaldummyf(x,h=12)))

Чтобы увидеть прогнозы на том же графике:

plot(x,xlim=c(0,10.5))
lines(ts(exp(fcast$fit),f=12,s=112/12),col=2)
lines(ts(exp(fcast$fit-2*fcast$se),f=12,s=112/12),col=2,lty=2)
lines(ts(exp(fcast$fit+2*fcast$se),f=12,s=112/12),col=2,lty=2)

Вы можете определить необычные месяцы, ища выбросы в (отклонениях) остатков подгонки.


8

Возможно, вы захотите взглянуть на Strucchange :

Тестирование, мониторинг и датирование структурных изменений в (линейных) регрессионных моделях. Strucchange содержит тесты / методы, основанные на обобщенной структуре теста на флуктуации, а также на основе F-теста (Чоу-теста). Это включает в себя методы подгонки, построения и тестирования процессов флуктуации (например, CUSUM, MOSUM, рекурсивные / скользящие оценки) и F-статистики соответственно. Можно отслеживать поступающие данные онлайн, используя процессы колебаний. Наконец, контрольные точки в регрессионных моделях со структурными изменениями могут быть оценены вместе с доверительными интервалами. Акцент всегда делается на методы визуализации данных ".

PS. Приятная графика;)


Я должен буду прочитать это более подробно позже, но да, этот пакет определенно решает проблемы, с которыми я сталкиваюсь здесь. Благодарность! А также, спасибо за добрые слова о заговорах; p
— Мэтт Паркер

6

Это действительно нуждается в некоторой продвинутой модели? Исходя из того, что я знаю о туберкулезе, в случае отсутствия эпидемии инфекции представляют собой стохастические акты, и поэтому счетная форма по месяцу N не должна коррелировать со счетом по месяцу N-1. (Вы можете проверить это предположение с автокорреляцией). Если это так, анализ только распределения ежемесячных подсчетов может быть достаточным, чтобы решить, является ли некоторое подсчет значительно выше, чем обычно.
С другой стороны, вы можете искать корреляции с некоторыми другими переменными, такими как сезон, дорожное движение или что-либо, что вы можете себе представить, что может быть коррелировано. Если вы нашли что-то подобное, это можно было бы использовать для нормализации данных.


1
Ваше мнение о количестве N в месяце, которое не обязательно соотносится с N-1, принимается правильно. С медленно растущей болезнью, такой как туберкулез, это то, на что я должен внимательно смотреть, но я уверен, что смогу определить, насколько велика задержка между моментом, когда мы сообщаем об исходном случае, и временем, когда мы сообщаем о любых вторичных случаев.
— Мэтт Паркер

1
Однако в основе моего вопроса лежит ваша точка зрения на анализ распределения ежемесячных подсчетов. Определенное снижение заболеваемости туберкулезом наблюдается как в США, так и в моем округе. Например, когда я сравниваю 2009 год с предыдущими годами, таких случаев явно меньше. 2010 год на пути к тому, чтобы иметь еще меньше. То, что я пытаюсь определить (что я плохо объяснил в вопросе), является ли это снижение частью продолжающейся тенденции к снижению или просто колебанием вниз. Спасибо - вы заставили меня задуматься о проблеме более тщательно.
— Мэтт Паркер

5

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

Если бы мне дали эти данные, вот что я сделал бы (и действительно, сделал бы с данными, подобными этому):

Создайте переменную «время», которая более точно описывается как «Месяцы с 1 января 2000 года», если я правильно проверяю ваши данные. Затем я запустил бы общую линейную модель в R, используя распределение Пуассона (или отрицательный бином) и лог-ссылку примерно следующего вида:

log(Counts) = b0 + b1*t + b2*(t^2) + b3*cos(2pi*w*t) + b4*sin(2pi*w*t)

Где t - время, описанное выше, и w - 1/365 для ежегодного заболевания, такого как грипп. Обычно его 1 / n, где n - длина цикла вашей болезни. Я не знаю, что это за туберкулез.

Две временные тенденции покажут вам - за пределами нормальных сезонных колебаний - если у вас есть значимые изменения во времени.


4

Возможно, вы захотите применить диаграмму Tukey Control к данным.


Хех - на самом деле это был один из тех заговоров, которые я не сделал в пост. Проблема, с которой я столкнулся, заключалась в том, чтобы решить, как рассчитать границы - моя первоначальная попытка была с границами Пуассона, когда лямбда была равна среднему значению моих данных, но дисперсия слишком высока, чтобы быть подходящим Пуассоном (достаточно высоким, чтобы иметь значение на практике? не знаю).
— Мэтт Паркер

Еще одна проблема заключается в том, что центр распределения может со временем меняться - например, не имеет смысла устанавливать эти границы, используя данные начала 1900-х годов, когда Колорадо был пристанищем для больных туберкулезом. Итак, что является подходящим способом, чтобы держать линии в актуальном состоянии с долгосрочными изменениями в процессе, сохраняя при этом возможность выявлять отклонения?
— Мэтт Паркер

4

Вы можете попытаться смоделировать ваши данные с использованием динамической обобщенной линейной модели (DGLM). В R вы можете приспособить этот тип моделей, используя пакеты sspir и KFAS. В некотором смысле это похоже на гам-подход, предложенный Робом, за исключением того, что вместо того, чтобы предполагать, что логарифм пуассоновских наблюдений является гладкой функцией времени, он предполагает, что он следует стохастической динамике.


Круто - я не знал о пакете KFAS. Там также DLM и DSE для государственных космических иш подходов, а также общий обзор для пользователей R здесь: cran.r-project.org/web/views/TimeSeries.html
— conjugateprior

2
Я очень рекомендую dlmпакет. DLM не так просты в использовании, как другие решения, но dlmделают его как можно более легким и с приятной виньеткой, которая проведет вас через весь процесс.
— Уэйн

2

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

Что касается пакетов R, я обнаружил, что библиотека TSA и ее книга очень полезны. Команда armasubsets, в частности, я думаю, отлично экономит время.


2

Избавьтесь от традиционной перечислительной статистики, как предложил бы Деминг, и углубитесь в традиционную аналитическую статистику - в данном случае, контрольные диаграммы. См. Любые книги доктора Дональда Уилера, особенно его "Расширенные темы в SPC" для получения дополнительной информации.


Кто-то только что задал вопрос о диаграммах SPC (он же QC) в R в stats.stackexchange.com/questions/15809/… где я предоставляю некоторые подсказки по пакетам . Я сам не уверен в SPC / QC: мне интересно, было ли это более полезным в докомпьютерную эпоху и для рабочих в цехах, но стоит задуматься.
— Уэйн

На самом деле, является ли этот ответ избыточным с @ babelproofreader's?
— Уэйн

2

В ответ на ваш прямой вопрос: «Как я могу проверить, есть ли реальные изменения в процессе? И если я могу определить снижение, как я мог бы использовать эту тенденцию и какую бы то ни было сезонность, чтобы оценить количество случаев, которые мы можем видеть в ближайшие месяцы? Разработайте модель передаточной функции (ARMAX), которая легко объясняет зависимость от периода к периоду, включая сезонную структуру ARIMA. Включите любые идентифицируемые сдвиги уровней, сезонные импульсы, тренды местного времени и PUlses, которые могли быть предложены эмпирическими / аналитическими методами, такими как обнаружение вмешательства. ЕСЛИ В ЭТОЙ НАДЕЖНОЙ МОДЕЛИ ВКЛЮЧАЕТСЯ ФАКТОР / СЕРИЯ, совпадающая с «отклонениями», то ваши молитвы получили ответ В альтернативе просто добавьте гипотетическую структуру, например, чтобы проверить изменение временного тренда в точке T1, построить два манекена X1 = 1,1,2,3 ,,,,,, Т и Х2 = 0,0,0,0,0,0,0,1,2,3,4,5, .... ГДЕ НУЛИ ЗАКОНЧИВАЮТСЯ В ПЕРИОД Т1-1. Проверка гипотезы о значительном изменении тренда в период времени T1 будет оцениваться с использованием «значения t» для X2.

Отредактировано 22.09.11

Зачастую такие данные о заболевании имеют ежемесячные последствия, поскольку погода / температура часто являются неопределенной причиной. В опущении истинных каудальных рядов модели ARIMA используют память или сезонные манекены в качестве суррогата. Кроме того, подобные серии могут иметь сдвиги уровней и / или тенденции местного времени, отражающие структурные изменения во времени. Было обнаружено, что использование авторегрессионной структуры в данных, а не навязывание различных артефактов, таких как время и квадрат времени, кубическое время и т. Д., Является весьма полезным и менее предполагаемым и специальным. Следует также позаботиться о том, чтобы выявить «необычные значения», поскольку они часто могут быть полезны при предложении дополнительных переменных причин и, как минимум, приводят к надежным оценкам других параметров модели. Наконец, мы обнаружили, что изменчивость / параметры могут меняться со временем, поэтому эти уточнения модели могут быть в порядке.


Как отрегулировать значение p, чтобы учесть идентификацию T1 post hoc ( то есть , заметив это после просмотра данных)?
— whuber

все уточнения, т.е. диагностическая проверка, приводящая к увеличению, обрабатываются так же, как предложенная структура, пока данные были в ящике. Добавление задержки в переменную предиктора на основе диагностической проверки просто добавляет еще одну нулевую гипотезу в список. Это не отличается от удаления незначимого коэффициента.
— IrishStat

@ Ириш, я не слежу за этим. T1, похоже, не является лагом: он предусматривает точку изменения. Разве не легко найти «существенные» изменения, если вам разрешено сначала проверить данные, чтобы выбрать, где находится точка изменения?
— whuber

@whuber Да, вы правы. Но подумайте о пошаговом процессе вперед в регрессии, где вы исследуете альтернативные (опущенные) переменные для «потенциального включения». Это ничем не отличается в том смысле, что вы решаете, какой «пропущенный тренд» должен быть добавлен в модель, чтобы обработать результирующую ошибку по Гауссу.
— IrishStat

@Irish Это яркая аналогия. Если я понимаю, в действительности вы рассматриваете наличие одной потенциальной переменной для каждого периода (обозначение возможного изменения в этот период) и запускаете систематический процесс, чтобы определить, какой из них должен быть включен в модель. Это говорит о том, что некоторые стандартные процедуры настройки уровня p, такие как Bonferroni, могут быть разумно применены. Это будет действительным?
— whuber
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.