sfondo
Sto lavorando su una serie di dati di serie temporali di letture dei contatori di energia. La lunghezza della serie varia in base al metro - per alcuni ho diversi anni, altri solo pochi mesi, ecc. Molti mostrano una stagionalità significativa, e spesso più strati - entro il giorno, la settimana o l'anno.
Una delle cose su cui ho lavorato è il raggruppamento di queste serie storiche. Il mio lavoro è accademico per il momento, e mentre sto facendo anche altre analisi dei dati, ho un obiettivo specifico per realizzare alcuni cluster.
Ho svolto alcuni lavori iniziali in cui ho calcolato varie funzioni (percentuale utilizzata nei fine settimana rispetto al giorno della settimana, percentuale utilizzata in diversi intervalli di tempo, ecc.). Quindi sono passato a utilizzare Dynamic Time Warping (DTW) per ottenere la distanza tra le diverse serie e il clustering in base ai valori delle differenze e ho trovato diversi articoli correlati a questo.
Domanda
La stagionalità in una serie specifica cambiando causerà il mio clustering non corretto? E se è così, come posso gestirlo?
La mia preoccupazione è che le distanze ottenute da DTW possano essere fuorvianti nei casi in cui lo schema di una serie temporale è cambiato. Ciò potrebbe comportare un clustering errato.
Nel caso in cui quanto sopra non è chiaro, considerare questi esempi:
Esempio 1
Un contatore ha letture basse da mezzanotte alle 8:00, quindi le letture aumentano bruscamente per l'ora successiva e rimangono alte dalle 9:00 alle 17:00, quindi diminuiscono bruscamente nell'ora successiva e quindi rimangono basse dalle 18:00 fino a mezzanotte. Il misuratore continua questo schema in modo coerente ogni giorno per diversi mesi, ma poi passa a uno schema in cui le letture rimangono semplicemente a un livello costante durante il giorno.
Esempio 2
Un metro mostra approssimativamente la stessa quantità di energia consumata ogni mese. Dopo diversi anni, passa a un modello in cui il consumo di energia è più elevato durante i mesi estivi prima di tornare alla consueta quantità.
Indicazioni possibili
- Mi chiedevo se posso continuare a confrontare intere serie storiche, ma dividerle e considerarle come serie separate se il modello cambia considerevolmente. Tuttavia, per fare ciò avrei bisogno di essere in grado di rilevare tali cambiamenti. Inoltre, non so se questo è un modo adatto o lavorare con i dati.
- Ho anche considerato di dividere i dati e considerarli come molte serie temporali separate. Ad esempio, potrei considerare ogni combinazione giorno / metro come una serie separata. Tuttavia, avrei bisogno di fare lo stesso se volessi considerare i modelli settimanali / mensili / annuali. Io credo che questo dovrebbe funzionare, ma è potenzialmente molto oneroso e mi dispiacerebbe andare su questa strada se c'è un modo migliore che mi manca.
Ulteriori note
Queste sono cose che sono emerse nei commenti o cose che ho pensato a causa dei commenti, che potrebbero essere rilevanti. Li sto mettendo qui in modo che le persone non debbano leggere tutto per ottenere informazioni pertinenti.
- Sto lavorando in Python, ma ho rpy per quei posti in cui R è più adatto. Tuttavia, non sto necessariamente cercando una risposta Python: se qualcuno ha una risposta pratica a ciò che dovrebbe essere fatto, sono felice di capire da solo i dettagli di implementazione.
- Ho un sacco di codice "bozza" funzionante - ho fatto alcune esecuzioni DTW, ho fatto un paio di diversi tipi di clustering, ecc. Penso di aver capito in gran parte la direzione che sto prendendo e cosa Sto davvero cercando è correlato al modo in cui elaboro i miei dati prima di trovare distanze, eseguire clustering, ecc. Detto questo, sospetto che la risposta sarebbe la stessa se le distanze tra le serie sono calcolate tramite DTW o una distanza euclidea più semplice (DE).
- Ho trovato questi articoli particolarmente istruttivi su serie temporali e DTW e possono essere utili se sono necessari alcuni retroscena sull'argomento: http://www.cs.ucr.edu/~eamonn/selected_publications.htm