Часовий ряд для даних лічильників, підрахунок <20


23

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

[зображення, втрачене в туманах часу]

[зображення, з'їдене грушею]

Я знайшов кілька статей, які стосуються подібних моделей, але я дуже вдячний слухати пропозиції від вас - як щодо підходів, так і для 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 :

Тестування, моніторинг та датування структурних змін (лінійних) регресійних моделей. особливості структурних обмінів - тести / методи з узагальненої рамки тестування флуктуації, а також з рамки F тесту (тест Чоу). Сюди входять методи підгонки, графіки та тестування процесів коливання (наприклад, CUSUM, MOSUM, рекурсивні / рухомі оцінки) та F статистики відповідно. Можна відстежувати вхідні дані в Інтернеті, використовуючи процеси коливання. Нарешті, точки перериву в регресійних моделях зі структурними змінами можна оцінити разом з довірчими інтервалами. Наголос завжди приділяється методам візуалізації даних ".

PS. Приємна графіка;)


Пізніше мені доведеться прочитати це більш ретельно, але так, цей пакет, безумовно, вирішує проблеми, з якими я стикаюся тут. Спасибі! А також, дякую за добрі слова про сюжети; p
Метт Паркер

6

Чи справді потрібна якась просунута модель? Виходячи з того, що я знаю про туберкульоз, у випадку, якщо немає епідемії, інфекції є стохастичними діями, і тому число рахунків місяць N не повинно співвідноситись із числом з місяця N-1. (Ви можете перевірити це припущення за допомогою автокореляції). Якщо так, аналіз просто розподілу щомісячних підрахунків може бути достатнім для того, щоб визначити, чи є деяка кількість значно вищою за звичайну.
З іншого боку, ви можете шукати співвідношення з деякими іншими змінними, такими як сезон, туристичний трафік або будь-що, що ви можете собі уявити, що може бути співвідносно. Якщо ви знайшли щось подібне, це можна було б використати для деякої нормалізації даних.


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

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

5

Найчастіше подібні дані хвороб проводяться за допомогою узагальненої лінійної моделі, оскільки це не обов'язково чудове застосування аналізу часових рядів - місяці часто не все співвідносяться один з одним.

Якби мені дали ці дані, ось що я б робив (і справді робив з подібними даними):

Створіть змінну "час", яка точніше описується як "Місяць з 1.01.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 до даних.


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

Наступна проблема полягає в тому, що центр розподілу може змінюватися з часом - наприклад, не було б сенсу встановлювати ці межі, використовуючи дані з початку 1900-х років, коли Колорадо був притулком для хворих на туберкульоз. То який підходящий спосіб підтримувати рядки в курсі довгострокових змін у процесі, залишаючи при цьому можливість виявити відхилення?
Метт Паркер

4

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


Класно - я не знав про пакет KFAS. Тут також є dlm та dse для підходу до простору стану та загальний огляд для користувачів R тут: cran.r-project.org/web/views/TimeSeries.html
кон'югатprior

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

2

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

Що стосується пакетів R, то я знайшов бібліотеку TSA і супровідну книгу дуже корисною. armasubsetsКоманди, в зокрема, я думаю , це здорово економить час.


2

Втеча від традиційної чисельної статистики, як це запропонував Демінг, і зайнятися традиційною аналітичною статистикою - в цьому випадку контрольні діаграми. Перегляньте будь-які книги доктора Дональда Уілера, зокрема його «Розширені теми в КНР» для отримання додаткової інформації.


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

Насправді, чи є ця відповідь зайвою для @ babelproofreader's?
Вейн

2

У відповідь на ваш прямий запитання "Як я можу перевірити, чи є реальна зміна в процесі? І якщо я можу визначити спад, як я можу використовувати цю тенденцію та будь-яку сезонність, щоб оцінити кількість випадків, які ми могли б побачити майбутні місяці? " Розробіть модель функції передачі (ARMAX), яка легко пояснює залежність періоду від періоду, включаючи та сезонну структуру ARIMA. Включіть будь-які ідентифікуючі зміни рівня, сезонні імпульси, місцеві тенденції часу та PUlses, які можуть бути запропоновані емпіричними / аналітичними методами, такими як виявлення втручання. ЯКЩО ЦИЙ РОБУСТИЧНИЙ МОДЕЛЬ ВКЛЮЧАЄ ФАКТОР / СЕРІЮ, що відповідають «відхиляється». В якості альтернативи просто додайте гіпотезовану структуру, наприклад, для перевірки зміни тенденції часу в точці T1 побудуйте дві муляжі X1 = 1,1,2,3 ,,,,,, T і X2 = 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

@Irish Я цього не дотримуюся. Т1, схоже, не відстає: він визначає точку зміни. Чи не легко знайти "значущі" зміни, якщо вам спочатку дозволено перевірити дані, щоб вибрати, де знаходиться точка зміни?
whuber

@whuber Так, ви праві. Але подумайте про поступовий процес в регресії, де ви вивчаєте альтернативні (пропущені) змінні для "потенційної інкорпорації". Це не відрізняється в тому сенсі, що ви вирішуєте, який "пропущений тренд" слід додати до моделі, щоб зробити результат помилки результатом Гаусса.
IrishStat

@Irish Це освітлююча аналогія. Якщо я розумію, ви насправді плануєте мати одну потенційну змінну для кожного періоду (позначаючи можливу зміну в цей період) і використовуєте систематичний процес, щоб визначити, яку з них слід включити в модель. Це говорить про те, що деякі стандартні процедури коригування рівня p, такі як Bonferroni, можуть бути розумно застосовані. Чи було б це дійсно?
whuber
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.