Eğri şekline göre zaman serileri kümelemesi yapılabilir mi?


47

Bir dizi satış noktası için satış verilerim var ve bunları zaman içindeki eğrilerinin şekline göre kategorize etmek istiyorum. Veriler kabaca bu gibi gözüküyor (ancak açıkça rastgele değil ve bazı eksik veriler var):

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'deki eğrilerin şekline göre nasıl kümelendirebileceğimi bilmek istiyorum. Aşağıdaki yaklaşımı düşündüm:

  1. Her mağazanın var0 değerini doğrusal bir şekilde tüm zaman serileri için 0.0 ile 1.0 arasında bir değere dönüştürerek yeni bir sütun oluşturun.
  2. Bu dönüştürülmüş eğrileri , R'deki kmlpaketi kullanarak kümeleyin.

İki sorum var:

  1. Bu makul bir keşif yaklaşımı mıdır?
  2. Verilerimi kml, anlayacağı boyuna veri biçimine nasıl dönüştürebilirim ? Herhangi bir R parçacığı çok takdir edilecektir!

2
bireysel uzunlamasına veri yörüngelerini kümelemeyle ilgili daha önceki bir sorudan birkaç fikir edinebilirsiniz. istatistik.stackexchange.com/questions/2777/…
Jeromy Anglim

1
@Jeromy Anglin Bağlantı için teşekkürler. Şansın oldu kmlmu?
fmark

Çabucak baktım, ancak şu an için bireysel zaman serilerinin seçilen özelliklerine dayanan özelleştirilmiş bir küme analizi kullanıyorum (örneğin, ortalama, ilk, son, değişkenlik, ani değişikliklerin varlığı vb.).
Jeromy Anglim,


@Rob Bu soru düzensiz zaman aralıkları varsayıyor gibi görünmüyor, ancak gerçekten birbirlerine yakınlar (yazılarım sırasında diğer soruyu hatırlatmadım).
chl

Yanıtlar:


26

Boylamsal verileri analiz etmek için çeşitli talimatlar @Jeromy'nin sağladığı linkte tartışılmıştır, bu yüzden onları, özellikle fonksiyonel veri analizindekileri dikkatlice okumanızı öneririm. Veya özellikle düzensiz örneklenmiş yörüngeleri (Peng ve Müller, bir model-bazlı kümeleme ile ilgilidir PACE MATLAB araç "Uzunlamasına Verilerin fonksiyonel Kümelenme" googling deneyin çevrimiçi arttırma uygulamalarla seyrek görülen stokastik süreçlerin Mesafe tabanlı kümeleme, , Uygulamalı İstatistik Annals 2008 2: 1056). Finansal zaman serileri için iyi bir istatistiksel çerçeve olabileceğini hayal edebiliyorum, ama bunu bilmiyordum.

kmltniyi=(yi1,yi2,,yit)d(yi,yj)=t1k=1t(yikyjk)2. Eksik veriler, en yakın komşu benzeri hesaplama planına (Calinski kriterini hesaplamak için) ilişkin önceki uzaklık ölçüsünde (Gower ayarlaması) yapılan hafif bir değişiklikle ele alınır. Gerçek verilerinizin nasıl görüneceğini kendim temsil etmediğim için çalışıp çalışmayacağını söyleyemem. En azından, "polinom" şeklinde boylamsal büyüme eğrileri ile çalışır, ancak çok özel kalıpları (kümeler arasında farklılık gösteren zaman noktalarına sahip belirli zaman noktalarında yerel minima / maxima gibi) bir çeviri ile tespit etmenize izin vereceğinden şüpheliyim. örnek). Muhtemelen yanlış hizalanmış eğrileri kümelemekle ilgileniyorsanız, kesin olarak diğer çözümlere bakmak zorundasınız; Sangalli ve diğerlerinden fonksiyonel kümeleme ve hizalama ve buradaki referanslar iyi bir başlangıç ​​noktası sağlayabilir.

kmlclusterizLongDataidt

library(lattice)
xyplot(var0 ~ date, data=test.data, groups=store, type=c("l","g"))

tw <- reshape(test.data, timevar="date", idvar="store", direction="wide")
parallel(tw[,-1], horizontal.axis=F, 
         scales=list(x=list(rot=45, 
                            at=seq(1,ncol(tw)-1,by=2), 
                            labels=substr(names(tw[,-1])[seq(1,ncol(tw)-1,by=2)],6,100), 
                            cex=.5)))

library(kml)
names(tw) <- c("id", paste("t", 1:(ncol(tw)-1)))
tw.cld <- as.cld(tw)
cld.res <- kml(tw.cld,nbRedrawing=5)
plot(tw.cld)

Sonraki iki rakam ham simüle edilmiş veriler ve beş küme özümüdür (Calinski kriterine göre, fpc paketinde de kullanılır ). Ben görünmüyor ölçekli versiyonu .

alt metin

alt metin


1
Çok ayrıntılı cevap chi için teşekkürler. Bende kmlverilerim üzerinde çalışan, ancak önerdiği gibi ben meseleleri artırabilir olmadığını görmek için birkaç ön işleme adımları çalışıyorum bu yüzden çoğunlukla, büyüklük ziyade eğri şekline göre kümeleme almaktadır. Sangalli ve ark. yapmak istediğim şey için çok umut verici görünüyor - ancak yaklaşımlarının bir uygulamasını bulamıyorum. Muhtemelen bu proje için kendi çalışmalarını kendi uygulamamı oluşturmak için zamanım yok. FOSS uygulamalarından haberdar mısınız?
fmark

@fmark Bilgime OSS uygulaması yok (iş yine de oldukça yeni); Her ikisi de R'de mevcut k-araçlarını ve k-medidlerini kullanıyorlar. Bence en kritik kısımlar şablon eğrileri oluşturmak ve çözgü fonksiyonunu uygulamak. Bunun için, morfometri / prokruste analizine bakarak veya Matlab PACE araç kutusunun koduna bakarak ek bilgiler bulabilirsiniz (ancak bu EM veya bununla dolu olmalıdır). En iyi tavsiyem şudur: Yazardan, algoritmalarını ücretsiz olarak uygulayabilmelerini isteyin.
chl

2
Olumlu bir sonuç alırsam tekrar rapor edeceğim :) Eğri kümelemesi için k-ortalama hizalama kağıdında , kendileri yapmak isteyen biri için de yararlı olabilecek bazı uygulama detayları bulunmaktadır.
fmark

1
Neden sadece ortalamayı kaldırmıyoruz (ve belki de standart sapma ile bölüp) ve sonra bunu yapıyor? O zaman sonuçlar şekil hakkında çok daha fazla ve büyüklüğü hakkında daha az olurdu ...
naught101

9

Wang, Xiaozhe, Kate Smith ve Rob Hyndman'da düzenli bir istatistik.

'Zaman Serisi Verileri için Karakteristik Tabanlı Kümeleme'. Veri Madenciliği ve Bilgi Keşfi 13, no. 3 (2006): 335-364 .

Onlar yazar:

Bu makale, yapısal özelliklerine göre zaman serilerinin kümelenmesi için bir yöntem önermektedir. Diğer alternatiflerin aksine, bu yöntem bir mesafe metriği kullanarak nokta değerlerini kümelemez, zaman serisinden çıkarılan global özelliklere dayalı kümeleri kullanır. Özellik ölçüleri, her bir seriden elde edilir ve denetlenmeyen bir sinir ağı algoritması, kendi kendini düzenleyen harita veya hiyerarşik kümeleme algoritması dahil, keyfi kümeleme algoritmalarına beslenebilir. Zaman serisini tanımlayan küresel ölçütler, temel özellikleri en iyi yakalayan istatistiksel işlemleri uygulayarak elde edilir: trend, mevsimsellik, periyodiklik, seri korelasyon, çarpıklık, kurtoz, kaos, doğrusallık ve kendi kendine benzerlik. Yöntem, çıkarılan global önlemleri kullanarak kümelendiğinden zaman serisinin boyutsallığını azaltır ve eksik veya gürültülü verilere karşı daha az hassastır. Ayrıca, kümeleme girişleri olarak kullanılması gereken özellik kümesinden en iyi seçimi bulmak için bir arama mekanizması sağlıyoruz.

Robog blogunda R kodu bulunmaktadır .


6

Zaman serileri kümelenmesi üzerine Eamonn Keogh (UC Riverside) eserine bakabilirsiniz . Web sitesinde çok fazla kaynak var. Sanırım Matlab kod örnekleri veriyor, bu yüzden bunu R'ye çevirmelisin.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.