Come caratterizzare il cambiamento improvviso?


13

Questa domanda potrebbe essere troppo semplice. Per una tendenza temporale di un dato, vorrei scoprire il punto in cui si verifica un cambiamento "improvviso". Ad esempio, nella prima figura mostrata di seguito, vorrei scoprire il punto di cambiamento usando un metodo statistico. E vorrei applicare tale metodo in alcuni altri dati di cui il punto di cambiamento non è ovvio (come la seconda figura). Esiste quindi un metodo comune per tale scopo?

inserisci qui la descrizione dell'immagine

inserisci qui la descrizione dell'immagine


3
il termine "punto di svolta" ha un significato particolare che non credo si applichi a un improvviso spostamento di livello (sia su che giù). Usa anche la frase "punto di cambiamento" e penso che probabilmente sia una scelta migliore. Per favore, non pensare che sia "troppo semplice"; anche le domande di base sono benvenute senza bisogno di scuse, e questa domanda non è lontanamente di base.
Glen_b -Restate Monica

Grazie. Ho cambiato il "punto di svolta" in "punto di cambiamento" nella domanda.
user2230101

Risposte:


11

Se le osservazioni dei dati delle serie temporali sono correlate alle osservazioni immediatamente precedenti, l'articolo di Chen e Liu (1993) [ 1 ] potrebbe interessarti. Descrive un metodo per rilevare spostamenti di livello e cambiamenti temporanei nel quadro di modelli di serie storiche a media mobile autoregressiva.[1]

[1]: Chen, C. e Liu, LM. (1993),
"Stima congiunta di parametri modello ed effetti anomali in serie temporali",
Journal of American Statistical Association , 88 : 421, 284-297


+1 Stavo cercando (ma non ci riuscivo) di ricordare abbastanza su questo documento per individuarlo. È un buon riferimento.
Glen_b

6

Questo problema nelle statistiche è indicato come (univariato) Rilevamento di eventi temporali. L'idea più semplice è quella di utilizzare una media mobile e una deviazione standard. Qualsiasi lettura che è "fuori da" 3 deviazioni standard (regola empirica) è considerata un "evento". Ovviamente ci sono modelli più avanzati che utilizzano HMM o Regressione. Ecco una panoramica introduttiva del campo .


5
Questo è l' unico post accessibile pubblicamente su tutto il Web per includere la frase "Univariate Temporal Event Detection"! Qual è la tua fonte per questo termine?
whuber

Scusa se è stato confuso. Event Detection è un termine più comune e talvolta Temporal viene utilizzato separatamente. Univariato non è comunemente usato in quanto gli approcci sono in genere multivariati, ma è il suo caso speciale.
user1669710

1
modificato la risposta per incorporare il tuo commento @whuber
user1669710

@ ser1669710 Grazie. Questo è quello che sto cercando. Sembra che la media mobile non possa risolvere il mio problema. Devo guardare il modello più complicato.
user2230101

Vorrei saperne di più su questo rilevamento di eventi temporali. Le diapositive che hai pubblicato sono belle, ma mi chiedevo se hai il link a un documento di revisione che descrive il campo un po 'più formalmente?
Aaragón

1

Ji={0x<xi1xxi
x1<x2<<xmJiJaprilJdecemberxi

J1J2x1x2


1
PS - @ user1669710 e ho pubblicato le risposte contemporaneamente. Ho votato per quello perché è ovviamente meglio studiato. Ma lo lascio qui perché è un'alternativa che funziona ed è facile da implementare.
Russ Lenth,

1
Poiché utilizza la regressione graduale e impiega molte variabili candidate, questa procedura sembra sospetta. Dove è stato studiato e quali proprietà ha? Come si confronta con altri metodi di cambiamento ?
whuber

@whuber, il mio punto esattamente. Ecco perché ho votato per l'altra risposta. Non comparerà in modo troppo favorevole se si dispone di un set molto granulare di valori di changepoint. E potrebbe anche non confrontarlo favorevolmente altrimenti. Lo sto solo proponendo come metodo ad hoc e penso di averlo presentato come tale. Ma penso che un metodo come questo prometta di essere un buon modo per ottenere valori iniziali per il metodo non lineare.
Russ Lenth,

L' idea è alla base di alcuni dei metodi di cambio più efficaci che ho trovato, ma l'uso della regressione graduale, in particolare, mi fa sospettare (anche se non sono sicuro) che questo metodo potrebbe non riuscire anche a produrre ragionevoli punti di partenza per altri metodi su cui migliorare. Ecco perché sono curioso di sapere se è stato studiato.
whuber

Penso che ci sarebbero pochi problemi con la selezione di tutti i sottoinsiemi, purché ci sia davvero un numero specificato di salti (diciamo due), poiché troveremmo i due salti che spiegano meglio i dati. Altri metodi di selezione potrebbero essere problematici, così come lo sono in altre situazioni. Penso che dipenda da quanto sia importante ottenere la risposta migliore, rispetto a una buona risposta, rispetto a una risposta rapida. Non tutti i problemi sono uguali, né tutti i client. La migliore risposta al mondo è un totale fallimento se non puoi spiegarlo.
Russ Lenth,

1

Esiste un problema correlato alla divisione di una serie o sequenza in incantesimi con valori idealmente costanti. Vedi Come posso raggruppare i dati numerici in "parentesi" che formano naturalmente? (es. reddito)

Non è lo stesso problema in quanto la domanda non esclude gli incantesimi con una deriva lenta in una o tutte le direzioni, ma senza bruschi cambiamenti.

Una risposta più diretta è dire che stiamo cercando grandi salti, quindi l'unico vero problema è definire il salto. La prima idea è quindi solo guardare le prime differenze tra i valori vicini. Non è nemmeno chiaro che è necessario perfezionarlo rimuovendo prima il rumore, come se i salti non possano essere distinti dalle differenze di rumore, sicuramente non possono essere bruschi. D'altra parte, l'interrogante evidentemente vuole che un cambiamento improvviso includa un cambiamento sia graduale che graduale, quindi sembra richiesto qualche criterio come varianza o intervallo all'interno di finestre a lunghezza fissa.


1

L'area delle statistiche che stai cercando è l'analisi del punto di cambio. C'è un sito qui che ti darà una panoramica dell'area e anche una pagina per il software.

Se sei un Rutente, consiglierei il changepointpacchetto per le modifiche nella media e il strucchangepacchetto per le modifiche nella regressione. Se vuoi essere bayesiano, allora anche il bcppacchetto è buono.

In generale devi scegliere una soglia che indica la forza delle modifiche che stai cercando. Ci sono, naturalmente, scelte di soglia che le persone sostengono in determinate situazioni e puoi anche usare livelli di confidenza asintotici o bootstrap per ottenere confidenza.


1
L'OP ha identificato due esempi, uno dei quali definirei un passo e l'altro una rampa, anche se c'è sempre spazio per litigare sulle parole. Vedi anche la mia risposta qui. In che modo questi metodi affrontano le rampe? Hanno un modello tacito o esplicito di cambiamento graduale?
Nick Cox,

Grazie per la domanda Nick. Generalmente dipende da quanto tempo dura la rampa. Se si tratta di una rampa breve, viene trattata come 1 modifica, se la rampa è più lunga, spesso i metodi del punto di cambio identificheranno 2 modifiche, 1 all'inizio della rampa e 1 alla fine. Ovviamente questo dipende dal modello sottostante che si assume.
Adunaic,

1

Questo problema di inferenza ha molti nomi, inclusi punti di cambiamento, punti di commutazione, punti di interruzione, regressione della linea spezzata, regressione del bastone rotto, regressione bilineare, regressione lineare a tratti, regressione lineare locale, regressione segmentata e discontinuità.

Ecco una panoramica dei pacchetti di punti di cambiamento con pro / contro ed esempi funzionanti. Se conosci il numero di punti di cambio a priori, controlla il mcppacchetto. Innanzitutto, simuliamo i dati:

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))

Per il tuo primo problema, sono tre segmenti di sola intercettazione:

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

Possiamo tracciare la misura risultante:

plot(fit)

inserisci qui la descrizione dell'immagine

Qui, i punti di cambio sono molto ben definiti (stretto). Riassumiamo l'adattamento per vedere le loro posizioni dedotte ( cp_1e 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

Puoi realizzare modelli molto più complicati mcp, inclusa la modellazione dell'autoregressione di ordine n. (Utile per le serie storiche), ecc. Disclaimer: sono lo sviluppatore di mcp.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.