Produktivität oder Kosten im Laufe der Zeit verstehen, ohne stochastischen Unterbrechungen zum Opfer zu fallen


8

Helfen Sie mir bitte hier. Vielleicht müssen Sie mir helfen, die Frage zu stellen, bevor Sie mir überhaupt eine Antwort geben. Ich habe noch nie etwas über Zeitreihenanalyse gelernt und weiß nicht, ob ich das wirklich brauche. Ich habe noch nie etwas über zeitgeglättete Durchschnittswerte gelernt und weiß nicht, ob ich das wirklich brauche. Mein statistischer Hintergrund: Ich habe 12 Credits in Biostatistik (multiple lineare Regression, multiple logistische Regression, Überlebensanalyse, multifaktorielle Anova, aber nie wiederholte Anova-Messungen).

Schauen Sie sich also bitte meine Szenarien unten an. Nach welchen Schlagworten sollte ich suchen und können Sie eine Ressource vorschlagen, um zu lernen, was ich lernen muss?

Ich möchte verschiedene Datensätze für völlig unterschiedliche Zwecke betrachten, aber allen ist gemeinsam, dass es Datumsangaben als eine Variable gibt. Daher fallen einige Beispiele ein: klinische Produktivität im Laufe der Zeit (wie bei wie vielen Operationen oder wie vielen Bürobesuchen) oder Stromrechnung im Laufe der Zeit (wie bei Geld, das pro Monat an ein Elektrizitätsunternehmen gezahlt wird).

Für beide oben genannten Fälle besteht die nahezu universelle Möglichkeit darin, eine Tabelle mit Monaten oder Quartalen in einer Spalte zu erstellen. In der anderen Spalte wird beispielsweise die Stromzahlung oder die Anzahl der in der Klinik behandelten Patienten angegeben. Das Zählen pro Monat führt jedoch zu viel Lärm, der keine Bedeutung hat. Wenn ich zum Beispiel normalerweise die Stromrechnung am 28. eines jeden Monats bezahle, aber einmal vergesse und sie nur 5 Tage später am 3. des nächsten Monats bezahle, erscheint ein Monat so, als gäbe es keine Kosten und Der nächste Monat wird enorme Kosten verursachen. Da man die tatsächlichen Zahlungstermine hat, warum sollte man die sehr detaillierten Daten absichtlich wegwerfen, indem man sie nach Kalendermonaten in die Ausgaben packt.

Wenn ich 6 Tage auf einer Konferenz nicht in der Stadt bin, erscheint dieser Monat sehr unproduktiv. Wenn diese 6 Tage gegen Ende des Monats fallen, ist der nächste Monat ungewöhnlich beschäftigt, da es eine ganze Warteliste gibt von Leuten, die mich sehen wollten, aber warten mussten, bis ich zurückkam.

Dann gibt es natürlich die offensichtlichen saisonalen Schwankungen. Klimaanlagen verbrauchen viel Strom, daher muss man sich natürlich auf die Sommerhitze einstellen. Milliarden von Kindern werden wegen wiederkehrender akuter Mittelohrentzündung im Winter und kaum im Sommer und Frühherbst an mich überwiesen. In den ersten 6 Wochen, in denen die Schulen nach den langen Sommerferien zurückkehren, wird kein Kind im schulpflichtigen Alter für eine elektive Operation vorgesehen. Saisonalität ist nur eine unabhängige Variable, die sich auf die abhängige Variable auswirkt. Es muss andere unabhängige Variablen geben, von denen einige erraten werden können und andere nicht bekannt sind.

Bei der Aufnahme in eine langjährige klinische Studie tauchen eine ganze Reihe verschiedener Probleme auf.

Welcher Zweig der Statistik lässt uns dies im Laufe der Zeit betrachten, indem wir einfach Ereignisse und ihre tatsächlichen Daten betrachten, ohne jedoch künstliche Kästchen (Monate / Quartale / Jahre) zu erstellen, die nicht wirklich existieren.

Ich dachte daran, den gewichteten Durchschnitt für jedes Ereignis zählen zu lassen. Zum Beispiel ist die Anzahl der Patienten, die diese Woche gesehen wurden, gleich 0,5 * nr, die diese Woche gesehen wurden + 0,25 * nr, die letzte Woche gesehen wurden + 0,25 * nr, die nächste Woche gesehen wurden.

Ich möchte mehr darüber erfahren. Nach welchen Schlagworten sollte ich suchen?


1
Tipp: Wenn Sie prägnanter sind, erhalten Sie wahrscheinlich eine Antwort.

1
Ich stimme dir vollkommen zu. Meine Frage ist lang und weitläufig, aber das ist mein Problem. Ich weiß nicht wirklich, was meine Frage ist. Können Sie mir helfen?
Farrel

sehr gute Frage (irgendwie habe ich es gerade gesehen). +1.
user603

Antworten:


1

Ich würde mit robusten Zeitreihen beginnen Filter (dh zeitlich veränderliche Mediane) , da diese einfacher und intuitiver.

Grundsätzlich dient der robuste Zeitfilter dazu, Zeitreihen zu glätten, was der Median zum Mittelwert ist; eine zusammenfassende Messung (in diesem Fall eine zeitlich variierende), die nicht für "verkabelte" Beobachtungen empfindlich ist, solange sie nicht den Großteil der Daten darstellen. Eine Zusammenfassung finden Sie hier .

Wenn Sie anspruchsvollere Glätter (dh nicht lineare) benötigen, können Sie eine robuste Kalman- Filterung verwenden (obwohl dies ein etwas höheres Maß an mathematischer Raffinesse erfordert).

Dieses Dokument enthält das folgende Beispiel (einen Code, der unter R , der Open Source Stat-Software, ausgeführt werden soll):

library(robfilter)
data(Nile)
nile <- as.numeric(Nile)
obj <- wrm.filter(nile, width=11)
plot(obj)

Dabei ist die ursprüngliche Zeitreihe schwarz und die gefilterte Version (gefiltert nach wiederholtem Median) rot überzeichnet. Das letzte Dokument enthält eine Vielzahl von Verweisen auf Papiere und Bücher. Andere Arten von Filtern sind im Paket implementiert, aber der wiederholte Median ist sehr einfach.


Haben Sie eine URL, auf die Sie mich verweisen können? Ich habe noch nie in meinem Leben eine Zeitreihenanalyse durchgeführt. Aber es sieht so aus, als müsste ich mir das selbst beibringen. Gibt es ein Beispiel, das ich mir ansehen kann und das Zeitreihenfilter verwendet?
Farrel

@farel:> Wenn Sie auf die blauen Wörter klicken, werden Sie zu den tatsächlichen Websites weitergeleitet. Insbesondere das letzte Dokument enthält Ausarbeitungsbeispiele (wiederholt in der bearbeiteten Version meines Beitrags).
user603

1

Eine einfache Lösung, für die kein Fachwissen erworben werden muss, ist die Verwendung von Regelkarten . Sie sind lächerlich einfach zu erstellen und machen es einfach, Abweichungen von besonderen Ursachen (z. B. wenn Sie nicht in der Stadt sind) von Abweichungen von häufigen Ursachen (z. B. wenn Sie einen Monat mit geringer Produktivität haben) zu unterscheiden, was die Art zu sein scheint von Informationen, die Sie wollen.

Sie bewahren auch die Daten. Da Sie sagen, dass Sie die Diagramme für viele verschiedene Zwecke verwenden, rate ich davon ab, Transformationen in den Daten durchzuführen.

Hier ist eine sanfte Einführung . Wenn Sie sich für Kontrollkarten entscheiden, möchten Sie vielleicht tiefer in das Thema eintauchen . Die Vorteile für Ihr Unternehmen werden enorm sein. Kontrollkarten sollen maßgeblich zum japanischen Wirtschaftsboom der Nachkriegszeit beigetragen haben .

Es gibt sogar ein R-Paket .


1

ΔtttΔtt

bearbeiten:

tixixif(t)xitf(t)t

t

yiy

w(t)w(t)0tw(0)=1w(t)0hti,xi

f(t)=i=1nxiw(|tti|/h).
w(t)
  • w(t)=1t10
  • w(t)=max(0,1t)
  • w(t)=max(0,1t2)
  • w(t)=max(0,(1t2)3)
  • w(t)=exp(t2/2)

Ich nenne diese Kernel, aber sie sind hier und da um einen konstanten Faktor versetzt; Siehe auch eine umfassende Liste der Kernel .

Einige Beispielcodes in Matlab:

%%kernels
ker0 = @(t)(max(0,ceil(1-t))); %uniform
ker1 = @(t)(max(0,1-t)); %triangular
ker2 = @(t)(max(0,1-t.^2)); %quadratic
ker3 = @(t)(max(0,(1-t.^2).^3)); %tricube
ker4 = @(t)(exp(-0.5 * t.^2)); %Gaussian

%%compute f(t) given x_i,t_i,kernel,h
ff = @(x_i,t_i,t,kerf,h)(sum(x_i .* kerf(abs(t - t_i) / h)));

%%some sample data: irregular electric bills
sdata = [
datenum(2009,12,30),141.73;...
datenum(2010,01,25),100.45;...
datenum(2010,02,23),98.34;...
datenum(2010,03,30),83.92;...
datenum(2010,05,01),56.21;...       %late this month;
datenum(2010,05,22),47.33;...       
datenum(2010,06,14),62.84;...       
datenum(2010,07,30),83.34;...       
datenum(2010,09,10),93.34;...       %really late this month
datenum(2010,09,22),78.34;...
datenum(2010,10,22),93.25;...
datenum(2010,11,14),83.39;...       %early this month;
datenum(2010,12,30),133.82];

%%some irregular observation times at which to sample the filtered version;
t_obs  = sort(datenum(2009,12,01) + 400 * rand(1,400));

t_i = sdata(:,1);x_i = sdata(:,2);

%%compute f(t) for each of the kernel functions;
h   = 60;    %bandwidth of 60 days;

fx0 = arrayfun(@(t)(ff(x_i,t_i,t,ker0,h)),t_obs);
fx1 = arrayfun(@(t)(ff(x_i,t_i,t,ker1,h)),t_obs);
fx2 = arrayfun(@(t)(ff(x_i,t_i,t,ker2,h)),t_obs);
fx3 = arrayfun(@(t)(ff(x_i,t_i,t,ker3,h)),t_obs);
fx4 = arrayfun(@(t)(ff(x_i,t_i,t,ker4,0.5*h)),t_obs);   %!!use smaller bandwidth

%%plot them;
lhand = plot(t_i,x_i,'--rs',t_obs,fx0,'m-+',t_obs,fx1,'b-+',t_obs,fx2,'k-+',...
t_obs,fx3,'g-+',t_obs,fx4,'c-+');
set(lhand(1),'MarkerSize',12);
set(lhand(2:end),'MarkerSize',4);
datetick(gca());
legend(lhand,{'data','uniform','triangular','quadratic','tricube','gaussian'});

Das Diagramm zeigt die Verwendung einiger Kernel für einige Beispieldaten zur Stromrechnung. Alt-Text

Beachten Sie, dass der einheitliche Kernel den „stochastischen Schocks“ ausgesetzt ist, die das OP zu vermeiden versucht. Der Tricube- und der Gaußsche Kern geben viel glattere Annäherungen. Wenn dieser Ansatz akzeptabel ist, muss man nur den Kernel und die Bandbreite auswählen (im Allgemeinen ist dies ein schwieriges Problem, aber angesichts einiger Domänenkenntnisse und einiger Codetest-Rekodierungsschleifen sollte es nicht zu schwierig sein.)


Shabbychef:> Ich denke, Farrel hat in seiner Frage ausdrücklich ein Argument gegen diesen Ansatz erwähnt.
user603

Die Frage ist etwas mehrdeutig; Meine Erkenntnis war, dass das OP nach „Schlagworten“ suchte.
Shabbychef

Ich habe bei Google nach zeitbasiertem Güterwagen gesucht und mir sehr wenig ausgedacht. Können Sie uns auf ein Beispiel verweisen?
Farrel

1

Schlagworte: Interpolation, Resampling, Glättung.

Ihr Problem ähnelt dem, das in der Demografie häufig auftritt: Bei Menschen kann die Anzahl der Volkszählungen beispielsweise in Altersintervalle unterteilt sein, und solche Intervalle sind nicht immer von konstanter Breite. Sie möchten die Verteilung nach Alter interpolieren. Abgesehen von der variablen Breite (= variablen Zeitintervallen) hat dies mit Ihrem Problem zu tun, dass die Daten in der Regel nicht negativ sind. Darüber hinaus können viele solcher Datensätze Rauschen aufweisen, weisen jedoch eine bestimmte Form der negativen Korrelation auf: Eine Anzahl, die in einem Bin angezeigt wird, wird nicht in benachbarten Bins angezeigt, sondern wurde möglicherweise dem falschen Bin zugewiesen. Zum Beispiel können ältere Menschen dazu neigen, ihr Alter auf die nächsten fünf Jahre zu runden. Sie werden nicht übersehen, können aber zur falschen Altersgruppe beitragen. Im Großen und Ganzen sind die Daten jedoch vollständig und zuverlässig. In Bezug auf diese Analogie haben wir ' Ich spreche von einer vollständigen Volkszählung. In Ihren Datensätzen befinden sich tatsächliche Stromrechnungen, tatsächliche Einschreibungen usw. Es geht also nur darum, die Daten angemessen auf eine Reihe von Intervallen aufzuteilen, die für die weitere Analyse nützlich sind (z. B. Zeiten mit gleichem Abstand für die Zeitreihenanalyse): Hier geht es um Interpolation und Resampling.

Es gibt viele Interpolationstechniken. Die in der Demografie am häufigsten verwendeten wurden für einfache Berechnungen entwickelt und basieren auf Polynom-Splines. Viele teilen einen wissenswerten Trick, unabhängig davon, wie Sie Ihre Daten verarbeiten möchten: Versuchen Sie nicht, die Rohdaten zu interpolieren. Interpolieren Sie stattdessen ihre kumulative Summe. Letzteres nimmt aufgrund der Nicht-Negativität der ursprünglichen Werte monoton zu und ist daher tendenziell relativ glatt. Aus diesem Grund können Polynom-Splines überhaupt funktionieren. Ein weiterer Vorteil dieses Ansatzes besteht darin, dass die Anpassung zwar von den Datenpunkten abweichen kann (etwas, hofft man), die Gesamtsummen jedoch insgesamt korrekt wiedergibt, so dass nichts netto verloren oder gewonnen wird. Natürlich nehmen Sie nach dem Anpassen der kumulativen Werte (als Funktion von Zeit oder Alter) erste Differenzen, um die Gesamtsummen innerhalb eines beliebigen Fachs zu schätzen.

xt[t0,t1]x0x1t0t1x1x0. Bessere Splines (in einigen Bereichen kubisch; in vielen demografischen Apps quintisch) verbessern manchmal die Schätzungen. Dies entspricht Ihrer Intuition, die Daten zu gewichten, und gibt ihr eine schöne grafische Interpretation.


Scheint interessant. Kennen Sie eine einfache R-Implementierung?
Farrel

Lieber @whuber, ich möchte dies wirklich in R implementieren, also habe ich eine Frage in stackoverflow gepostet . Sie könnten interessiert sein. Wenn Sie RI verwenden, würden Sie es lieben, es zu beantworten, sonst möchten Sie sich vielleicht nur zurücklehnen und was
Farrel
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.