J'ai une série chronologique mensuelle avec une intervention et je voudrais quantifier l'effet de cette intervention sur le résultat. Je me rends compte que la série est plutôt courte et l'effet n'est pas encore conclu.
Les données
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")
La méthodologie
1) La série pré-intervention (jusqu'en octobre 2013) a été utilisée avec la auto.arima
fonction. Le modèle proposé était ARIMA (1,0,0) avec une moyenne non nulle. L'intrigue ACF avait l'air bien.
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) Étant donné le tracé de la série complète, la réponse impulsionnelle a été choisie ci-dessous, avec T = oct 2013,
qui selon cryer et chan peuvent être ajustés comme suit avec la fonction arimax:
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
Les résidus de cela sont apparus OK:
L'intrigue des aménagés et réels:
plot(fitted(mod.arimax), col="red", type="b")
lines(window(log(cds), start=c(2012, 02)), type="b")
Questions
1) Cette méthodologie est-elle correcte pour l'analyse d'intervention?
2) Puis-je regarder l'estimation / SE pour les composantes de la fonction de transfert et dire que l'effet de l'intervention était significatif?
3) Comment visualiser l'effet de la fonction de transfert (le représenter?)
4) Existe-t-il un moyen d'estimer dans quelle mesure l'intervention a augmenté la production après «x» mois? Je suppose que pour cela (et peut-être # 3), je demande comment travailler avec une équation du modèle - s'il s'agissait d'une simple régression linéaire avec des variables muettes (par exemple), je pourrais exécuter des scénarios avec et sans l'intervention et mesurer l'impact - mais je ne sais pas comment travailler ce type de modèle.
AJOUTER
Par requête, voici les résidus des deux paramétrisations.
D'abord de l'ajustement:
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")
Ensuite, à partir de cet ajustement
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")
la source
Réponses:
Un modèle AR (1) avec l'intervention définie dans l'équation donnée dans la question peut être ajusté comme indiqué ci-dessous. Remarquez comment l'argument
transfer
est défini; vous avez également besoin d'une variable indicatricextransf
pour chacune des interventions (le pouls et le changement transitoire):Vous pouvez tester la signification de chaque intervention en examinant la statistique t des coefficients et . Pour plus de commodité, vous pouvez utiliser la fonction .ω 1ω0 ω1
coeftest
Dans ce cas, l'impulsion n'est pas significative au niveau de signification de . Son effet peut déjà être capté par le changement transitoire.5 %
L'effet d'intervention peut être quantifié comme suit:
Vous pouvez tracer l'effet de l'intervention comme suit:
L'effet est relativement persistant car est proche de (si était égal à on observerait un décalage de niveau permanent). 1 ω 2 1ω2 1 ω2 1
Numériquement, ce sont les augmentations estimées quantifiées à chaque instant provoquées par l'intervention en octobre 2013:
L'intervention augmente la valeur de la variable observée en octobre 2013 d'environ . Dans les périodes suivantes, l'effet persiste mais avec un poids décroissant.75 %
Nous pourrions également créer les interventions à la main et les transmettre à0,9231
stats::arima
des régresseurs externes. Les interventions sont une impulsion plus un changement transitoire avec le paramètre et peuvent être construites comme suit.Les mêmes estimations des coefficients que ci-dessus sont obtenues. Ici, nous avons fixé à . La matrice est le type de variable fictive dont vous pourriez avoir besoin pour essayer différents scénarios. Vous pouvez également définir différentes valeurs pour et comparer son effet. 0,9231 ω 2ω2 0,9231 ω2
xreg
Ces interventions équivalent à une valeur aberrante additive (AO) et à un changement transitoire (TC) définies dans le package
tsoutliers
. Vous pouvez utiliser ce package pour détecter ces effets comme indiqué dans la réponse de @forecaster ou pour construire les régresseurs utilisés auparavant. Par exemple, dans ce cas:Modifier 1
J'ai vu que l'équation que vous avez donnée peut être réécrite comme suit:
et il peut être spécifié comme vous l'avez fait en utilisant
transfer=list(c(1, 1))
.Comme indiqué ci-dessous, cette paramétrisation conduit, dans ce cas, à des estimations de paramètres qui impliquent un effet différent par rapport à la paramétrisation précédente. Cela me rappelle l'effet d'une valeur aberrante innovante plutôt qu'une impulsion plus un changement transitoire.
Je ne connais pas très bien la notation du package
TSA
mais je pense que l'effet de l'intervention peut désormais être quantifié comme suit:L'effet peut être décrit maintenant comme une forte augmentation en octobre 2013 suivie d'une diminution dans la direction opposée; puis l'effet de l'intervention disparaît rapidement en alternant les effets positifs et négatifs du poids en décomposition.
Cet effet est quelque peu particulier mais peut être possible dans les données réelles. À ce stade, je voudrais examiner le contexte de vos données et les événements qui peuvent avoir affecté les données. Par exemple, y a-t-il eu un changement de politique, une campagne marketing, une découverte, ... qui peut expliquer l'intervention en octobre 2013. Si oui, est-il plus judicieux que cet événement ait un effet sur les données comme décrit précédemment ou comme nous l'avons constaté avec le paramétrage initial?
Selon l'AIC, le modèle initial serait préféré car il est plus bas ( contre ). L'intrigue de la série originale ne suggère pas une correspondance claire avec les changements brusques impliqués dans la mesure de la deuxième variable d'intervention.- 15,42- 18,94 - 15,42
Sans connaître le contexte des données, je dirais qu'un modèle AR (1) avec un changement transitoire avec le paramètre serait approprié pour modéliser les données et mesurer l'intervention.0,9
Modifier 2
La valeur de détermine la vitesse à laquelle l'effet de l'intervention diminue jusqu'à zéro, c'est donc le paramètre clé du modèle. Nous pouvons l'inspecter en ajustant le modèle pour une plage de valeurs de . Ci-dessous, l'AIC est stocké pour chacun de ces modèles.ω 2ω2 ω2
L'AIC le plus bas est trouvé pour (en accord avec la valeur estimée précédemment). Ce paramètre implique un effet relativement persistant mais transitoire. Nous pouvons conclure que l'effet est temporaire car avec des valeurs supérieures à l'AIC augmente (rappelez-vous que dans la limite, , l'intervention devient un décalage de niveau permanent).0,9 ω 2 = 1ω2= 0,88 0,9 ω2= 1
L'intervention doit être incluse dans les prévisions. L'obtention de prévisions pour des périodes déjà observées est un exercice utile pour évaluer la performance des prévisions. Le code ci-dessous suppose que la série se termine en octobre 2013. Les prévisions sont alors obtenues en incluant l'intervention avec le paramètre .ω2= 0,9
On abord le modèle AR (1) avec l'intervention comme régresseur (avec paramètre ):ω2= 0,9
Les prévisions peuvent être obtenues et affichées comme suit:
Les premières prévisions correspondent relativement bien aux valeurs observées (ligne pointillée grise). Les prévisions restantes montrent comment la série poursuivra son chemin vers la moyenne d'origine. Les intervalles de confiance sont néanmoins importants, reflétant l'incertitude. Nous devons donc être prudents et réviser le modèle à mesure que de nouvelles données sont enregistrées.
la source
Parfois, moins c'est plus. Avec 30 observations en main, j'ai soumis les données à AUTOBOX, un logiciel que j'ai aidé à développer. Je soumets l'analyse suivante dans l'espoir d'obtenir la récompense +200 (je plaisante!). J'ai tracé les valeurs réelles et nettoyées en suggérant visuellement l'impact de "l'activité récente". . Le modèle développé automatiquement est présenté ici. et ici . Les résidus de cette série assez simple à décalage de niveau sont présentés ici . Les statistiques du modèle sont ici . En résumé, il y avait une intervention qui pourrait être identifiée empiriquement rendant un processus ARIMA; deux impulsions et 1 décalage de niveau . Le graphique Réel / Ajustement et Prévisions met davantage en évidence l'analyse.
Pour ma part, je voudrais voir le tracé des résidus des modèles précédemment spécifiés et à mon avis potentiellement trop spécifiés.
la source
Voici le code:
Ci-dessous l'estimation, il y a eu une augmentation de ~ 2356,3 unités en octobre 2013 avec une erreur standard de ~ 481,8 et a un effet de décomposition par la suite. La fonction a identifié automatiquement AR (1). J'ai dû faire quelques itérations et faire la différence saisonnière et non saisonnière à 0, ce qui se reflète dans la méthode args.ts dans la fonction tso.
Ci-dessous est l'intrigue, tsoutlier est le seul package que je connaisse qui puisse imprimer ces modifications temporaires dans un graphique.
Nous espérons que cette analyse a répondu à vos 2, 3 et 4 questions, mais en utilisant une méthdéologie différente. Surtout le graphique et les coefficients ont fourni l'effet de cette intervention et ce qui se serait passé si vous n'aviez pas eu cette intervention.
En espérant également que quelqu'un d'autre puisse reproduire cette intrigue / analyse en utilisant la modélisation de la fonction de transfert dans R. Je ne sais pas si cela pourrait être fait dans R, peut-être que quelqu'un d'autre peut me vérifier à ce sujet.
la source