Ich habe Verkaufsdaten für eine Reihe von Filialen und möchte sie anhand der Form ihrer Kurven im Zeitverlauf kategorisieren. Die Daten sehen ungefähr so aus (sind aber offensichtlich nicht zufällig und enthalten einige fehlende Daten):
n.quarters <- 100
n.stores <- 20
if (exists("test.data")){
rm(test.data)
}
for (i in 1:n.stores){
interval <- runif(1, 1, 200)
new.df <- data.frame(
var0 = interval + c(0, cumsum(runif(49, -5, 5))),
date = seq.Date(as.Date("1990-03-30"), by="3 month", length.out=n.quarters),
store = rep(paste("Store", i, sep=""), n.quarters))
if (exists("test.data")){
test.data <- rbind(test.data, new.df)
} else {
test.data <- new.df
}
}
test.data$store <- factor(test.data$store)
Ich würde gerne wissen, wie ich anhand der Form der Kurven in R Cluster bilden kann . Ich hatte den folgenden Ansatz in Betracht gezogen:
- Erstellen Sie eine neue Spalte, indem Sie die Variable "var0" jedes Geschäfts für die gesamte Zeitreihe linear auf einen Wert zwischen 0,0 und 1,0 transformieren.
- Bündeln Sie diese transformierten Kurven mit dem
kml
Paket in R.
Ich habe zwei Fragen:
- Ist das ein vernünftiger explorativer Ansatz?
- Wie kann ich meine Daten in das Längsschnittdatenformat umwandeln,
kml
das es versteht? Beliebige R-Schnipsel wären sehr dankbar!
r
time-series
clustering
fmark
quelle
quelle
kml
?Antworten:
In dem von @Jeromy bereitgestellten Link wurden verschiedene Anweisungen zur Analyse von Längsschnittdaten erörtert. Daher empfehle ich Ihnen, diese sorgfältig zu lesen, insbesondere die Anweisungen zur Analyse von Funktionsdaten. Versuchen Sie, nach "Functional Clustering of Longitudinal Data" oder der PACE Matlab-Toolbox zu suchen, die sich speziell mit dem modellbasierten Clustering unregelmäßig abgetasteter Trajektorien befasst (Peng und Müller, abstandsbasiertes Clustering spärlich beobachteter stochastischer Prozesse, mit Anwendungen für Online-Auktionen) . Annals of Applied Statistics 2008 2: 1056). Ich kann mir vorstellen, dass es einen guten statistischen Rahmen für finanzielle Zeitreihen gibt, aber das weiß ich nicht.
kml
kml
clusterizLongData
id
Die nächsten beiden Zahlen sind die simulierten Rohdaten und die Fünf-Cluster-Lösung (gemäß dem Calinski-Kriterium, das auch im fpc- Paket verwendet wird). Ich zeige die skalierte Version nicht .
quelle
kml
meine Daten in Betrieb genommen, aber wie Sie angedeutet haben, basiert die Clusterbildung hauptsächlich auf der Größe und nicht auf der Kurvenform. Daher versuche ich, einige Vorverarbeitungsschritte durchzuführen, um festzustellen, ob ich die Situation verbessern kann. Die Arbeit von Sangalli et al. sieht sehr vielversprechend aus für das, was ich tun möchte - ich kann jedoch keine Umsetzung ihres Ansatzes finden. Ich habe wahrscheinlich keine Zeit, meine eigene Implementierung ihrer Arbeit für dieses Projekt zu erstellen. Sind Ihnen FOSS-Implementierungen bekannt?Ein alternativer Ansatz wurde von einer Statistik-Redaktion in Wang, Xiaozhe, Kate Smith und Rob Hyndman veröffentlicht.
Sie schreiben:
Der R-Code ist auf Robs Blog verfügbar .
quelle
Sie können sich die Arbeit von Eamonn Keogh (UC Riverside) zum Thema Zeitreihenclustering ansehen. Seine Website hat viele Ressourcen. Ich denke, er stellt Matlab-Codebeispiele zur Verfügung, sodass Sie dies in R übersetzen müssen.
quelle