Ich habe eine monatliche Zeitreihe mit einer Intervention und möchte die Auswirkung dieser Intervention auf das Ergebnis quantifizieren. Mir ist klar, dass die Serie ziemlich kurz ist und der Effekt noch nicht abgeschlossen ist.
Die Daten
cds <- structure(c(2580L, 2263L, 3679L, 3461L, 3645L, 3716L, 3955L, 3362L,
2637L, 2524L, 2084L, 2031L, 2256L, 2401L, 3253L, 2881L,
2555L, 2585L, 3015L, 2608L, 3676L, 5763L, 4626L, 3848L,
4523L, 4186L, 4070L, 4000L, 3498L),
.Dim=c(29L, 1L),
.Dimnames=list(NULL, "CD"),
.Tsp=c(2012, 2014.33333333333, 12), class="ts")
Die Methodik
1) Die Vorinterventionsreihe (bis Oktober 2013) wurde mit der auto.arima
Funktion verwendet. Das vorgeschlagene Modell war ARIMA (1,0,0) mit einem Mittelwert ungleich Null. Die ACF-Handlung sah gut aus.
pre <- window(cds, start=c(2012, 01), end=c(2013, 09))
mod.pre <- auto.arima(log(pre))
# Coefficients:
# ar1 intercept
# 0.5821 7.9652
# s.e. 0.1763 0.0810
#
# sigma^2 estimated as 0.02709: log likelihood=7.89
# AIC=-9.77 AICc=-8.36 BIC=-6.64
2) In Anbetracht des Diagramms der vollständigen Reihe wurde die Impulsantwort unten mit T = Okt 2013 gewählt.
die laut cryer und chan mit der arimax-funktion wie folgt angepasst werden können:
mod.arimax <- arimax(log(cds), order=c(1, 0, 0),
seasonal=list(order=c(0, 0, 0), frequency=12),
include.mean=TRUE,
xtransf=data.frame(Oct13=1 * (seq(cds) == 22)),
transfer=list(c(1, 1)))
mod.arimax
# Series: log(cds)
# ARIMA(1,0,0) with non-zero mean
#
# Coefficients:
# ar1 intercept Oct13-AR1 Oct13-MA0 Oct13-MA1
# 0.7619 8.0345 -0.4429 0.4261 0.3567
# s.e. 0.1206 0.1090 0.3993 0.1340 0.1557
#
# sigma^2 estimated as 0.02289: log likelihood=12.71
# AIC=-15.42 AICc=-11.61 BIC=-7.22
Die Residuen davon schienen in Ordnung zu sein:
Die Handlung von angepassten und tatsächlichen:
plot(fitted(mod.arimax), col="red", type="b")
lines(window(log(cds), start=c(2012, 02)), type="b")
Die Fragen
1) Ist diese Methode für die Interventionsanalyse korrekt?
2) Kann ich die Schätzung / SE für die Komponenten der Übertragungsfunktion betrachten und sagen, dass der Effekt der Intervention signifikant war?
3) Wie kann man den Effekt der Übertragungsfunktion visualisieren (zeichnen?)
4) Gibt es eine Möglichkeit zu schätzen, um wie viel die Intervention die Leistung nach 'x' Monaten erhöht hat? Ich denke, dafür (und vielleicht # 3) frage ich mich, wie man mit einer Gleichung des Modells arbeitet - wenn dies eine einfache lineare Regression mit Dummy-Variablen wäre (zum Beispiel), könnte ich Szenarien mit und ohne Intervention ausführen und die Auswirkungen messen - aber ich bin mir nur nicht sicher, wie ich diese Art von Modell arbeiten soll.
HINZUFÜGEN
Auf Anfrage sind hier die Residuen der beiden Parametrisierungen aufgeführt.
Zuerst aus der Passform:
fit <- arimax(log(cds), order=c(1, 0, 0),
xtransf=
data.frame(Oct13a=1 * (seq_along(cds) == 22),
Oct13b=1 * (seq_along(cds) == 22)),
transfer=list(c(0, 0), c(1, 0)))
plot(resid(fit), type="b")
Dann aus dieser Passform
mod.arimax <- arimax(log(cds), order=c(1, 0, 0),
seasonal=list(order=c(0, 0, 0), frequency=12),
include.mean=TRUE,
xtransf=data.frame(Oct13=1 * (seq(cds) == 22)),
transfer=list(c(1, 1)))
mod.arimax
plot(resid(mod.arimax), type="b")
quelle
Antworten:
Ein AR (1) -Modell mit dem in der in der Frage angegebenen Gleichung definierten Eingriff kann wie unten gezeigt angepasst werden. Beachten Sie, wie das Argument
transfer
definiert ist. Sie benötigen außerdem eine Indikatorvariablextransf
für jede der Interventionen (den Puls und die vorübergehende Änderung):coeftest
Der Interventionseffekt kann wie folgt quantifiziert werden:
Sie können den Effekt der Intervention wie folgt darstellen:
Numerisch sind dies die geschätzten Zuwächse, die zu jedem Zeitpunkt quantifiziert wurden, der durch die Intervention im Oktober 2013 verursacht wurde:
stats::arima
xreg
Diese Eingriffe entsprechen einem im Paket definierten additiven Ausreißer (AO) und einer vorübergehenden Veränderung (TC)
tsoutliers
. Mit diesem Paket können Sie diese Effekte erkennen, wie in der Antwort von @forecaster gezeigt, oder die zuvor verwendeten Regressoren erstellen. Zum Beispiel in diesem Fall:Bearbeiten 1
Ich habe gesehen, dass die von Ihnen angegebene Gleichung wie folgt umgeschrieben werden kann:
und es kann so angegeben werden, wie Sie es verwendet haben
transfer=list(c(1, 1))
.Wie unten gezeigt, führt diese Parametrisierung in diesem Fall zu Parameterschätzungen, die einen anderen Effekt als die vorherige Parametrisierung beinhalten. Es erinnert mich eher an die Wirkung eines innovativen Ausreißers als an einen Puls und eine vorübergehende Veränderung.
Ich bin mit der Notation des Pakets nicht sehr vertraut,
TSA
aber ich denke, dass die Wirkung der Intervention jetzt wie folgt quantifiziert werden kann:Der Effekt kann nun als starker Anstieg im Oktober 2013 beschrieben werden, gefolgt von einem Rückgang in die entgegengesetzte Richtung; dann verschwindet die Wirkung des Eingriffs schnell und wechselt abwechselnd die positiven und negativen Auswirkungen des abnehmenden Gewichts.
Dieser Effekt ist etwas eigenartig, kann aber in realen Daten möglich sein. An dieser Stelle würde ich den Kontext Ihrer Daten und die Ereignisse betrachten, die die Daten beeinflusst haben könnten. Hat es beispielsweise eine Richtlinienänderung, eine Marketingkampagne, eine Entdeckung usw. gegeben, die die Intervention im Oktober 2013 erklären könnte? Wenn ja, ist es sinnvoller, dass sich dieses Ereignis auf die zuvor beschriebenen oder von uns gefundenen Daten auswirkt mit der anfänglichen Parametrierung?
Bearbeiten 2
Die Vorhersagen können wie folgt abgerufen und angezeigt werden:
Die ersten Vorhersagen stimmen relativ gut mit den beobachteten Werten überein (grau gepunktete Linie). Die verbleibenden Prognosen zeigen, wie die Serie den Weg zum ursprünglichen Mittelwert fortsetzen wird. Die Konfidenzintervalle sind dennoch groß und spiegeln die Unsicherheit wider. Wir sollten daher vorsichtig sein und das Modell überarbeiten, wenn neue Daten aufgezeichnet werden.
quelle
Manchmal ist weniger mehr. Mit 30 Beobachtungen übermittelte ich die Daten an AUTOBOX, eine Software, die ich mitentwickelt habe. Ich reiche die folgende Analyse in der Hoffnung ein, die +200 Belohnung zu erhalten (nur ein Scherz!). Ich habe die tatsächlichen und gereinigten Werte grafisch dargestellt, um die Auswirkungen der "jüngsten Aktivitäten" visuell darzustellen. . Hier wird das automatisch entwickelte Modell gezeigt. und hier . Die Residuen dieser eher einfachen pegelverschobenen Reihe werden hier vorgestellt . Die Modellstatistik finden Sie hier . Zusammenfassend gab es Interventionen, die empirisch identifiziert werden konnten, um einen ARIMA-Prozess zu erstellen. zwei Impulse und 1 Pegelverschiebung . Das Diagramm Ist / Anpassung und Prognose hebt die Analyse weiter hervor.
Ich jedenfalls möchte die Darstellung der Residuen aus den zuvor spezifizierten und meiner Meinung nach möglicherweise überspezifizierten Modellen sehen.
quelle
Basierend auf meinem ähnlichen Beitrag zu Ihrer früheren Frage habe ich die Funktion tso im Paket tsoutliers in verwendetR. und es wurde automatisch eine vorübergehende Änderung im Oktober 2013 erkannt. Bitte beachten Sie, dass sich die vorübergehende Änderung von der Rampenverschiebung in der Übertragungsfunktion unterscheidet, nach der Sie suchen. Ich glaube nicht, dass es ein Paket / eine Funktion gibt, von der ich weiß, dass sie die Übertragungsfunktion visualisieren kann. Hoffentlich würde dies einige Einblicke liefern. Ich habe keine Protokolltransformation verwendet, sondern sie direkt modelliert. Das Paket tsoutliers kann als automatische Interventionserkennung angesehen werden.
Unten ist der Code:
Nachstehend die Schätzung: Im Oktober 2013 gab es einen Anstieg um ~ 2356,3 Einheiten mit einem Standardfehler von ~ 481,8 und hat danach einen abnehmenden Effekt. Die Funktion identifizierte AR (1) automatisch. Ich musste einige Iterationen durchführen und sowohl saisonale als auch nicht saisonale Differenzierungen auf 0 vornehmen, was sich in der args.tsmethod in der tso-Funktion widerspiegelt.
Unten ist die Handlung, tsoutlier ist das einzige Paket, von dem ich weiß, dass es temporäre Änderungen so schön in einer Handlung drucken kann.
Diese Analyse lieferte hoffentlich eine Antwort auf Ihre 2, 3 und 4 Fragen, wenn auch mit einer anderen Methode. Insbesondere die Darstellung und die Koeffizienten lieferten den Effekt dieser Intervention und was wäre passiert, wenn Sie diese Intervention nicht gehabt hätten.
Ich hoffe auch, dass jemand anderes dieses Diagramm / diese Analyse mithilfe der Übertragungsfunktionsmodellierung in R replizieren kann. Ich bin mir nicht sicher, ob dies in R möglich ist. Vielleicht kann mich jemand anderes tatsächlich überprüfen.
quelle