Comment caractériser un changement brusque?


13

Cette question est peut-être trop basique. Pour une tendance temporelle d'une donnée, je voudrais découvrir le point où se produit un changement "brutal". Par exemple, dans la première figure ci-dessous, je voudrais découvrir le point de changement en utilisant une méthode statistique. Et je voudrais appliquer une telle méthode dans certaines autres données dont le point de changement n'est pas évident (comme la 2ème figure) .Alors existe-t-il une méthode commune à cette fin?

entrez la description de l'image ici

entrez la description de l'image ici


3
le terme «tournant» a une signification particulière qui, je pense, ne s'applique pas à un changement soudain de niveau (qu'il soit vers le haut ou vers le bas). Vous utilisez également l'expression «changer de point», et je pense que c'est probablement un meilleur choix. S'il vous plaît, ne pensez pas que c'est «trop basique»; même les questions de base sont les bienvenues sans avoir besoin d'excuses, et cette question n'est pas très élémentaire
Glen_b -Reinstate Monica

Merci. J'ai changé le «tournant» en «changer de point» dans la question.
user2230101

Réponses:


11

Si les observations de vos données de séries chronologiques sont corrélées avec les observations immédiatement précédentes, l'article de Chen et Liu (1993) pourrait vous intéresser. Il décrit une méthode pour détecter les changements de niveau et les changements temporaires dans le cadre des modèles de séries chronologiques à moyenne mobile autorégressifs.[1]

[1]: Chen, C. et Liu, LM. (1993),
«Joint Estimation of Model Parameters and Outlier Effects in Time Series»,
Journal de l'American Statistical Association , 88 : 421, 284-297


+1 J'essayais (mais échouais) de me souvenir suffisamment de ce document pour le localiser. C'est une bonne référence.
Glen_b -Reinstate Monica

6

Ce problème dans les statistiques est appelé la détection d'événement temporel (univarié). L'idée la plus simple est d'utiliser une moyenne mobile et un écart-type. Toute lecture qui est «hors» de 3 écarts-types (règle générale) est considérée comme un «événement». Il existe bien sûr des modèles plus avancés qui utilisent des HMM, ou régression. Voici un aperçu introductif du domaine .


5
Il s'agit du seul message accessible au public sur l'ensemble du Web à inclure la phrase "Détection univariée d'événement temporel"! Quelle est votre source pour ce terme?
whuber

Désolé si c'était déroutant. La détection d'événements est un terme plus courant et temporel est parfois utilisé séparément. Univariée n'est pas couramment utilisée car les approches sont typiquement multivariées, mais c'est son cas particulier.
user1669710

1
modifié la réponse pour incorporer votre commentaire @whuber
user1669710

@ ser1669710 Merci. Voilà ce que je recherche. Semble que la moyenne mobile ne peut pas résoudre mon problème. Je dois regarder le modèle le plus compliqué.
user2230101

J'aimerais en savoir plus sur cette détection d'événement temporel. Les diapositives que vous avez publiées sont agréables, mais je me demandais si vous avez le lien vers un article de synthèse qui décrit le domaine un peu plus formellement?
aaragon

1

Jje={0X<Xje1XXje
X1<X2<<XmJjeJuneprjelJecemberXje

J1J2X1X2


1
PS - @ user1669710 et moi avons publié des réponses simultanément. J'ai voté pour celui-là parce qu'il est évidemment mieux étudié. Mais je laisse cela ici car c'est une alternative qui fonctionne et est facile à mettre en œuvre.
Russ Lenth

1
Parce qu'elle utilise une régression pas à pas et utilise de nombreuses variables candidates, cette procédure semble suspecte. Où a-t-il été étudié et quelles sont ses propriétés? Comment cela se compare-t-il aux autres méthodes de changement de point ?
whuber

@whuber, mon point exactement. C'est pourquoi j'ai voté pour l'autre réponse. Il ne se comparera pas trop favorablement si vous avez un ensemble très granulaire de valeurs de point de changement. Et cela pourrait même ne pas comparer cela favorablement autrement. Je ne fais que le présenter comme une méthode ad hoc , et je pense que je l'ai présenté comme tel. Mais je pense qu'une méthode comme celle-ci promet d'être un bon moyen d'obtenir des valeurs de départ pour la méthode non linéaire.
Russ Lenth

L' idée sous-tend certaines des méthodes de changement les plus efficaces que j'ai trouvées, mais l'utilisation de la régression pas à pas en particulier me fait soupçonner (bien que je ne sois pas sûr) que cette méthode puisse échouer même à produire des points de départ raisonnables pour d'autres méthodes à améliorer. C'est pourquoi je suis curieux de savoir s'il a même été étudié.
whuber

Je pense qu'il y aurait peu de problèmes avec la sélection de tous les sous-ensembles, tant qu'il y a vraiment un nombre spécifié de sauts (disons deux), car nous trouverions les deux sauts qui expliquent le mieux les données. D'autres méthodes de sélection pourraient être problématiques, tout comme elles le sont dans d'autres situations. Je pense que cela dépend de l'importance de trouver la meilleure réponse, une bonne réponse ou une réponse rapide. Tous les problèmes ne sont pas identiques, pas plus que tous les clients. La meilleure réponse au monde est un échec total si vous ne pouvez pas l'expliquer.
Russ Lenth

1

Il existe un problème connexe de division d'une série ou d'une séquence en sorts avec des valeurs idéalement constantes. Voir Comment puis-je regrouper des données numériques en "crochets" formant naturellement? (par exemple revenu)

Ce n'est pas tout à fait le même problème car la question n'exclut pas les sorts avec une dérive lente dans une ou toutes les directions, mais sans changements brusques.

Une réponse plus directe est de dire que nous recherchons de gros sauts, donc le seul vrai problème est de définir le saut. La première idée est alors juste de regarder les premières différences entre les valeurs voisines. Il n'est même pas clair que vous devez affiner qu'en supprimant d'abord le bruit, comme si les sauts ne peuvent pas être distingués des différences de bruit, ils ne peuvent certainement pas être brusques. D'un autre côté, le questionneur souhaite évidemment que le changement brusque inclue le changement en rampe et le changement en escalier, donc un critère tel que la variance ou la plage dans les fenêtres de longueur fixe semble nécessaire.


1

Le domaine des statistiques que vous recherchez est l'analyse des points de changement. Il y a un site Web ici qui vous donnera un aperçu de la région et aussi une page pour le logiciel.

Si vous êtes un Rutilisateur, je recommanderais le changepointpackage pour les changements de moyenne et le strucchangepackage pour les changements de régression. Si vous voulez être bayésien, le bcppackage est également bon.

En général, vous devez choisir un seuil qui indique la force des changements que vous recherchez. Il y a, bien sûr, des choix de seuil que les gens préconisent dans certaines situations et vous pouvez également utiliser des niveaux de confiance asymptotiques ou des bootstrap pour obtenir de la confiance.


1
Le PO a identifié deux exemples, dont un que j'appellerais une marche et l'autre une rampe, bien qu'il y ait toujours place pour se disputer sur les mots. Voir aussi ma réponse ici. Comment ces méthodes gèrent-elles les rampes? Ont-ils un modèle tacite ou explicite de changement progressif?
Nick Cox

Merci pour la question Nick. Cela dépend généralement de la longueur de la rampe. S'il s'agit d'une rampe courte, elle est traitée comme 1 changement, si la rampe est plus longue, alors souvent les méthodes de changement de point identifieront 2 changements, 1 au début de la rampe et 1 à la fin. Évidemment, cela dépend du modèle sous-jacent que vous supposez.
adunaic

1

Ce problème d'inférence a de nombreux noms, notamment des points de changement, des points de commutation, des points de rupture, une régression en ligne brisée, une régression en bâton cassé, une régression bilinéaire, une régression linéaire par morceaux, une régression linéaire locale, une régression segmentée et des modèles de discontinuité.

Voici un aperçu des packages de points de changement avec des avantages / inconvénients et des exemples pratiques. Si vous connaissez le nombre de points de changement a priori, consultez le mcppackage. Tout d'abord, simulons les données:

df = data.frame(x = seq(1, 12, by = 0.1))
df$y = c(rnorm(21, 0, 5), rnorm(80, 180, 5), rnorm(10, 20, 5))

Pour votre premier problème, il s'agit de trois segments d'interception uniquement:

model = list(
  y ~ 1,  # Intercept
  ~ 1,  # etc...
  ~ 1
)
library(mcp)
fit = mcp(model, df, par_x = "x")

Nous pouvons tracer l'ajustement résultant:

plot(fit)

entrez la description de l'image ici

Ici, les points de changement sont très bien définis (étroits). Résumons l'ajustement pour voir leurs emplacements inférés ( cp_1et cp_2):

summary(fit)

Family: gaussian(link = 'identity')
Iterations: 9000 from 3 chains.
Segments:
  1: y ~ 1
  2: y ~ 1 ~ 1
  3: y ~ 1 ~ 1

Population-level parameters:
    name   mean lower upper Rhat n.eff
    cp_1   3.05   3.0   3.1    1  6445
    cp_2  11.05  11.0  11.1    1  6401
   int_1   0.14  -1.9   2.1    1  5979
   int_2 179.86 178.8 180.9    1  6659
   int_3  22.76  19.8  25.5    1  5906
 sigma_1   4.68   4.1   5.3    1  5282

Vous pouvez faire des modèles beaucoup plus compliqués avec mcp, y compris la modélisation de l'autorégression de Nième ordre (utile pour les séries chronologiques), etc. Avertissement: Je suis le développeur de mcp.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.