我具有一系列网点的销售数据,并希望根据其随时间变化的曲线形状对其进行分类。数据大致如下所示(但显然不是随机的,并且有一些丢失的数据):
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)
我想知道如何根据R中的曲线形状进行聚类。我考虑过以下方法:
- 通过在整个时间序列中将每个商店的var0线性变换为0.0到1.0之间的值来创建新列。
- 使用R中的
kml
包对这些变换后的曲线进行聚类。
我有两个问题:
- 这是一种合理的探索方法吗?
- 如何将数据转换为
kml
可以理解的纵向数据格式?任何R代码片段将不胜感激!
kml
吗?