Tengo datos de ventas para una serie de puntos de venta, y quiero clasificarlos según la forma de sus curvas a lo largo del tiempo. Los datos se ven más o menos así (pero obviamente no son aleatorios y faltan algunos datos):
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)
Me gustaría saber cómo puedo agrupar en función de la forma de las curvas en R. He considerado el siguiente enfoque:
- Cree una nueva columna transformando linealmente var0 de cada tienda a un valor entre 0.0 y 1.0 para toda la serie de tiempo.
- Agrupe estas curvas transformadas usando el
kml
paquete en R.
Tengo dos preguntas:
- ¿Es este un enfoque exploratorio razonable?
- ¿Cómo puedo transformar mis datos en el formato de datos longitudinal que
kml
comprenda? ¡Cualquier fragmento R sería muy apreciado!
r
time-series
clustering
fmark
fuente
fuente
kml
?Respuestas:
Se discutieron varias instrucciones para analizar los datos longitudinales en el enlace proporcionado por @Jeromy, por lo que te sugiero que las leas cuidadosamente, especialmente las relacionadas con el análisis de datos funcionales. Intente buscar en Google "Agrupación funcional de datos longitudinales", o la caja de herramientas PACE Matlab que se ocupa específicamente de la agrupación basada en modelos de trayectorias muestreadas irregularmente (Peng y Müller, agrupación basada en distancia de procesos estocásticos escasamente observados, con aplicaciones para subastas en línea , Anales de Estadística Aplicada 2008 2: 1056). Me imagino que puede haber un buen marco estadístico para las series de tiempo financieras, pero no sé sobre eso.
kml
kml
clusterizLongData
id
Las siguientes dos cifras son los datos simulados sin procesar y la solución de cinco grupos (según el criterio de Calinski, también utilizado en el paquete fpc ). No muestro la versión escalada .
fuente
kml
ejecutando mis datos, pero como usted sugirió, se agrupa principalmente en función de la magnitud en lugar de la forma de la curva, por lo que estoy intentando algunos pasos de preprocesamiento para ver si puedo mejorar las cosas. El trabajo de Sangalli et al. parece muy prometedor para lo que quiero hacer; sin embargo, no puedo encontrar una implementación de su enfoque. Probablemente no tengo tiempo para crear mi propia implementación de su trabajo para este proyecto, sin embargo. ¿Conoces alguna implementación de FOSS?Un enfoque alternativo fue publicado por stats.se regular en Wang, Xiaozhe, Kate Smith y Rob Hyndman.
Escriben:
El código R está disponible en el blog de Rob .
fuente
Podrías mirar el trabajo de Eamonn Keogh (UC Riverside) sobre la agrupación de series de tiempo. Su sitio web tiene muchos recursos. Creo que proporciona ejemplos de código de Matlab, por lo que tendrías que traducir esto a R.
fuente