Zeitreihen für Zähldaten mit Zählwerten <20

23

Ich habe vor kurzem angefangen, für eine Tuberkulose-Klinik zu arbeiten. Wir treffen uns regelmäßig, um die Anzahl der TB-Fälle, die wir derzeit behandeln, die Anzahl der durchgeführten Tests usw. zu besprechen. Ich möchte mit der Modellierung dieser Zählungen beginnen, um nicht nur zu erraten, ob etwas ungewöhnlich ist oder nicht. Leider habe ich nur sehr wenig Zeitreihen-Training absolviert und den größten Teil meiner Erfahrung mit Modellen für sehr fortlaufende Daten (Aktienkurse) oder sehr viele Fälle (Influenza). Wir beschäftigen uns jedoch mit 0-18 Fällen pro Monat (Mittelwert 6,68, Median 7, Var 12,3), die wie folgt verteilt sind:

[Bild verloren zu den Nebeln der Zeit]

[Bild von einem Gruen gefressen]

Ich habe ein paar Artikel gefunden, die sich mit Modellen wie diesen befassen, aber ich würde mich sehr über Vorschläge von Ihnen freuen - sowohl für Ansätze als auch für R-Pakete, mit denen ich diese Ansätze implementieren könnte.

BEARBEITEN: Die Antwort von mbq hat mich gezwungen, genauer darüber nachzudenken, was ich hier frage. Bei den monatlichen Zählungen hatte ich zu viel Hunger und verlor den eigentlichen Fokus der Frage. Was ich wissen möchte, ist: Spiegelt der (ziemlich sichtbare) Rückgang von beispielsweise 2008 an einen Abwärtstrend in der Gesamtzahl der Fälle wider? Mir scheint, dass die Anzahl der monatlichen Fälle von 2001 bis 2007 einen stabilen Prozess widerspiegelt. vielleicht etwas saisonabhängig, aber insgesamt stabil. Von 2008 bis heute scheint sich dieser Prozess zu ändern: Die Gesamtzahl der Fälle nimmt ab, auch wenn die monatlichen Zahlen aufgrund von Zufälligkeit und Saisonalität auf und ab schwanken könnten. Wie kann ich testen, ob sich der Prozess tatsächlich geändert hat? Und wenn ich einen Rückgang feststellen kann,

Matt Parker
quelle
2
Die Links sind gestorben. Wenn Sie in der Lage sind, die Bilder zu erhalten (oder neu zu generieren), verwenden Sie bitte das neue System, in dem sie bei imgur gespeichert werden.
Glen_b
Leider stammten diese Grundstücke von einigen Jobs vor. Entschuldigung!
Matt Parker
1
Angesichts der Tatsache, dass dieser Beitrag (# 173) aus einer früheren Beta-Phase stammt, ist das keine Überraschung - nur wenige Leute konnten einen Plot von Beiträgen wiederholen, die zu diesem Zeitpunkt bereits veröffentlicht wurden. Danke trotzdem.
Glen_b

Antworten:

15

Um den historischen Trend abzuschätzen, würde ich ein Spiel mit Trend- und Saisonkomponenten verwenden. Beispielsweise

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)

Dann erhalten summary(fit)Sie einen Test der Signifikanz der Trendänderung und die Darstellung gibt Ihnen einige Konfidenzintervalle. Hierbei wird davon ausgegangen, dass die Beobachtungen unabhängig sind und die bedingte Verteilung Poisson ist. Da sich der Mittelwert mit der Zeit reibungslos ändern kann, sind dies keine besonders starken Annahmen.

Prognosen sind schwieriger, da Sie den Trend in die Zukunft projizieren müssen. Wenn Sie bereit sind, eine lineare Extrapolation des Trends am Ende der Daten zu akzeptieren (was sicherlich zweifelhaft, aber wahrscheinlich für einige Monate in Ordnung ist), verwenden Sie

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

So zeigen Sie die Vorhersagen in demselben Diagramm an:

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)

Sie können die ungewöhnlichen Monate erkennen, indem Sie nach Ausreißern in den (Abweichungs-) Residuen der Anpassung suchen.

Rob Hyndman
quelle
8

Vielleicht möchten Sie einen Blick auf strucchange werfen :

Testen, Überwachen und Datieren von Strukturänderungen in (linearen) Regressionsmodellen. strucchange bietet Tests / Methoden aus dem allgemeinen Schwankungstest-Framework sowie aus dem F-Test-Framework (Chow-Test). Dies umfasst Methoden zum Anpassen, Zeichnen und Testen von Fluktuationsprozessen (z. B. CUSUM, MOSUM, rekursive / gleitende Schätzungen) bzw. F-Statistiken. Eingehende Daten können online über Fluktuationsprozesse überwacht werden. Schließlich können die Haltepunkte in Regressionsmodellen mit strukturellen Veränderungen zusammen mit Konfidenzintervallen geschätzt werden. Der Schwerpunkt liegt immer auf Methoden zur Visualisierung der Daten. "

PS. Schöne Grafik;)

Hadley
quelle
Ich muss es später gründlicher lesen, aber ja, dieses Paket befasst sich definitiv mit den Problemen, mit denen ich hier konfrontiert bin. Vielen Dank! Und auch, danke für die freundlichen Worte über die Handlungen; p
Matt Parker
6

Braucht es wirklich ein fortgeschrittenes Modell? Basierend auf dem, was ich über TB weiß, handelt es sich bei den Infektionen, falls keine Epidemie vorliegt, um stochastische Vorgänge. Daher sollte die Zählung von Monat N nicht mit der Zählung von Monat N-1 korreliert werden. (Diese Annahme können Sie mit Autokorrelation überprüfen). In diesem Fall kann es ausreichend sein, nur die Verteilung der monatlichen Zählungen zu analysieren, um zu entscheiden, ob einige Zählungen signifikant höher als normal sind.
Auf der anderen Seite können Sie nach Korrelationen mit anderen Variablen suchen, z. B. mit der Jahreszeit, dem Reiseverkehr oder allem, was Sie sich vorstellen können, was möglicherweise korreliert. Wenn Sie so etwas finden würden, könnte es für eine gewisse Datennormalisierung verwendet werden.


quelle
1
Ihr Punkt über die Anzahl der Monate N, die nicht unbedingt mit N-1 korreliert, ist zutreffend. Bei einer langsam wachsenden Krankheit wie TB muss ich mir das genau ansehen, aber ich bin mir ziemlich sicher, dass ich herausfinden kann, wie viel Zeitverzögerung zwischen der Meldung eines Ursprungsfalls und der Meldung eines Sekundärfalls liegt Fälle.
Matt Parker
1
Es ist jedoch Ihre Aufgabe, die Verteilung der monatlichen Zählungen zu analysieren, die im Mittelpunkt meiner Frage steht. Sowohl in den USA als auch in meinem Distrikt ist ein deutlicher Rückgang der Tuberkulose zu verzeichnen. Wenn ich zum Beispiel 2009 mit den Vorjahren vergleiche, gibt es entschieden weniger Fälle. 2010 ist auf dem Weg, noch weniger zu haben. Was ich zu identifizieren versuche (was ich in der Frage schlecht erklärt habe), ist, ob diese Rückgänge Teil eines anhaltenden Abwärtstrends oder nur eines Abwärtstrends sind. Danke - Sie haben mich dazu gebracht, viel genauer über das Problem nachzudenken.
Matt Parker
5

Oft werden solche Krankheitsdaten mit einem verallgemeinerten linearen Modell durchgeführt, da es sich nicht unbedingt um eine großartige Anwendung der Zeitreihenanalyse handelt - die Monate korrelieren oft nicht alle miteinander.

Wenn ich diese Daten erhalten hätte, wäre dies das, was ich tun würde (und tatsächlich mit ähnlichen Daten getan hätte):

Erstellen Sie eine "Zeit" -Variable, die genauer als "Monate seit dem 1.1.2000" beschrieben wird, wenn ich Ihre Daten korrekt ansehe. Dann würde ich ein allgemeines lineares Modell in R unter Verwendung der Poisson-Verteilung (oder des negativen Binomials) und einer Protokollverknüpfung mit ungefähr der folgenden Form ausführen:

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

Wobei t die oben beschriebene Zeit ist und w 1/365 für eine jährliche Krankheit wie die Grippe ist. Im Allgemeinen ist es 1 / n, wobei n die Länge des Krankheitszyklus ist. Ich weiß nicht sofort, was es für TB ist.

Die beiden Zeittrends zeigen Ihnen - außerhalb der normalen saisonalen Schwankungen -, ob Sie bedeutende zeitliche Schwankungen haben.

Fomite
quelle
4

Sie können ein Tukey Control-Diagramm auf die Daten anwenden .

babelproofreader
quelle
Heh - das war tatsächlich einer der Pläne, die ich gemacht habe und die es nicht in die Post geschafft haben. Das Problem, das ich hatte, ist die Entscheidung, wie die Grenzen berechnet werden sollen. Mein erster Versuch war Poisson - Grenzen, wobei Lambda auf den Mittelwert meiner Daten gesetzt war, aber die Varianz ist zu hoch, um ein richtiges Poisson zu sein (hoch genug, um in der Praxis eine Rolle zu spielen? Ich ziehe an weiß nicht).
Matt Parker
Ein weiteres Problem besteht darin, dass sich das Verteilungszentrum im Laufe der Zeit ändern kann. Beispielsweise wäre es nicht sinnvoll, diese Grenzen mit Daten aus dem frühen 20. Jahrhundert festzulegen, als Colorado ein Zufluchtsort für TB-Patienten war. Was ist also ein geeigneter Weg, um die Linien über langfristige Änderungen im Prozess auf dem Laufenden zu halten und dennoch Abweichungen erkennen zu können?
Matt Parker
4

Sie können versuchen, Ihre Daten mit einem Dynamic Generalized Linear Model (DGLM) zu modellieren. In R können Sie diese Art von Modellen mit den Paketen sspir und KFAS anpassen. In gewissem Sinne ähnelt dies dem von Rob vorgeschlagenen Gam-Ansatz, mit der Ausnahme, dass anstelle der Annahme, dass der logarithmische Mittelwert der Poisson-Beobachtungen eine glatte Funktion der Zeit ist, davon ausgegangen wird, dass er einer stochastischen Dynamik folgt.


quelle
Cool - ich wusste nichts über das KFAS-Paket. Es gibt auch das dlm und dse für Zustandsraum-ische Ansätze und eine allgemeine Übersicht für R-Benutzer hier: cran.r-project.org/web/views/TimeSeries.html
conjugateprior
2
Ich würde das dlmPaket wärmstens empfehlen . DLMs sind nicht so einfach zu bedienen wie andere Lösungen, dlmmachen es jedoch so einfach wie möglich und verfügen über eine schöne Vignette, die Sie durch den Prozess führt.
Wayne
2

Ich werde die Hauptfrage in Ruhe lassen, weil ich denke, dass ich etwas falsch machen werde (obwohl ich auch Daten für einen Gesundheitsdienstleister analysiere, und um ehrlich zu sein, wenn ich diese Daten hätte, würde ich sie einfach mit Standardtechniken analysieren und Ich hoffe auf das Beste, sie sehen für mich ganz okay aus.

Wie für R - Pakete habe ich die TSA - Bibliothek gefunden und es begleitendes Buch in der Tat sehr nützlich. Der armasubsetsBefehl, vor allem, ich denke , ist eine große Zeitersparnis.

Chris Beeley
quelle
2

Entfliehen Sie der traditionellen Aufzählungsstatistik, wie es Deming nahe legen würde, und wagen Sie sich in die traditionelle analytische Statistik - in diesem Fall in Kontrolldiagramme. Weitere Informationen finden Sie in Büchern von Donald Wheeler PhD, insbesondere in seinen "Advanced Topics in SPC".

AGB
quelle
Jemand hat gerade eine Frage zu SPC-Diagrammen (aka QC-Diagrammen) in R in stats.stackexchange.com/questions/15809/… gestellt, in der ich einige Hinweise zu Paketen gebe . Ich bin mir selbst nicht sicher, ob SPC / QC von Nutzen ist. Ich frage mich, ob es in der Vor-Computer-Ära und für Arbeiter in der Werkstatt nützlicher war, aber es lohnt sich, darüber nachzudenken.
Wayne
Ist diese Antwort mit der Antwort von @ babelproofreader überflüssig?
Wayne
2

Als Antwort auf Ihre direkte Frage: "Wie kann ich testen, ob sich der Prozess tatsächlich verändert? Und wenn ich einen Rückgang feststellen kann, wie kann ich diesen Trend und welche Saisonalität auch immer verwenden, um die Anzahl der Fälle zu schätzen, in denen wir möglicherweise zu sehen sind die nächsten Monate? " Entwickeln Sie ein Übertragungsfunktionsmodell (ARMAX), das die Abhängigkeit von Periode zu Periode einschließlich und die saisonale ARIMA-Struktur leicht erklärt. Berücksichtigen Sie alle identifizierbaren Pegelverschiebungen, saisonalen Impulse, lokalen Zeittrends und PUlses, die möglicherweise durch empirische / analytische Methoden wie Interventionserkennung vorgeschlagen wurden. WENN DIESES ROBUSTE MODELL EINEN FAKTOR / EINE SERIE ENTHÄLT, die mit "Ablehnungen" übereinstimmt, dann wurden Ihre Gebete beantwortet. Alternativ fügen Sie einfach eine hypothetische Struktur hinzu, um z. B. eine Zeittrendänderung am Punkt T1 zu testen. Konstruieren Sie zwei Dummies X1 = 1,1,2,3 ,,,,,, T und X2 = 0,0,0,0,0,0,0,1,2,3,4,5, .... WO DIE NULLEN IM ZEITRAUM T1-1 ENDEN. Der Test der Hypothese einer signifikanten Trendänderung im Zeitraum T1 wird mit dem "t-Wert" für X2 bewertet.

Bearbeitet 22.09.11

Häufig haben solche Krankheitsdaten monatliche Auswirkungen, da Wetter / Temperatur häufig ein nicht näher bezeichneter Kausalzusammenhang ist. In der Auslassung der wahren Caudsal-Reihe verwenden ARIMA-Modelle Gedächtnis- oder Saisonattrappen als Ersatz. Außerdem können Serien wie diese Pegelverschiebungen und / oder lokale Zeittrends aufweisen, die den strukturellen Wandel im Zeitverlauf widerspiegeln. Die Nutzung der autoregressiven Struktur in den Daten, anstatt verschiedene Artefakte wie Zeit und Zeitquadrat und Zeitkubik usw. aufzuerlegen, hat sich als recht nützlich und weniger mutmaßlich und ad hoc herausgestellt. Es sollte auch darauf geachtet werden, "ungewöhnliche Werte" zu identifizieren, da diese oft nützlich sein können, um zusätzliche Ursachenvariablen vorzuschlagen und zumindest zu robusten Schätzungen der anderen Modellparameter zu führen. Schließlich haben wir festgestellt, dass die Variabilität / Parameter über die Zeit variieren können, so dass diese Modellverfeinerungen in Ordnung sein können.

IrishStat
quelle
Wie passt man den p-Wert an, um T1 post hoc zu identifizieren ( dh nach Überprüfung der Daten zu bemerken)?
whuber
Alle Verfeinerungen, dh diagnostische Überprüfungen, die zur Vergrößerung führen, werden genauso behandelt wie die vorgeschlagene Struktur, während sich die Daten in der Schublade befanden. Durch Hinzufügen einer Verzögerung zu einer Prädiktorvariablen basierend auf der Diagnoseprüfung wird der Liste einfach eine weitere Nullhypothese hinzugefügt. Dies unterscheidet sich nicht vom Löschen eines nicht signifikanten Koeffizienten.
IrishStat
Ich folge dem nicht. T1 scheint keine Verzögerung zu sein: Es legt einen Änderungspunkt fest. Ist es nicht einfach, "signifikante" Änderungen zu finden, wenn Sie zuerst die Daten überprüfen und auswählen können, wo sich der Änderungspunkt befindet?
whuber
@whuber Ja du hast recht. Stellen Sie sich jedoch einen schrittweisen Vorwärtsprozess in der Regression vor, in dem Sie die alternativen (ausgelassenen) Variablen auf "potenzielle Einbeziehung" untersuchen. Dies ist insofern nicht anders, als Sie entscheiden, welcher "ausgelassene Trend" zum Modell hinzugefügt werden soll, um den resultierenden Fehlerprozess Gaußsch zu rendern.
IrishStat
@Irish Das ist eine aufschlussreiche Analogie. Wenn ich das richtig verstehe, erwägen Sie tatsächlich, für jeden Zeitraum eine potenzielle Variable zu haben (die eine mögliche Änderung in diesem Zeitraum angibt), und rufen einen systematischen Prozess auf, um zu bestimmen, welche dieser Variablen in das Modell aufgenommen werden sollen. Dies lässt darauf schließen, dass einige Standardverfahren zur Einstellung des p-Pegels, wie z. B. der Bonferroni, sinnvoll angewendet werden könnten. Wäre das gültig?
whuber