Zaman serilerinde R kümelenmesi


38

Zaman serisi verilerim var. Her seri aynı dönemi kapsar, ancak her zaman serisindeki gerçek tarihler tam olarak 'sıralanmayabilir'.

Diğer bir deyişle, eğer Zaman dizisi bir 2D matriste okunacak olsaydı, şöyle görünürdü:

date     T1   T2   T3 .... TN
1/1/01   100  59   42      N/A
2/1/01   120  29   N/A     42.5
3/1/01   110  N/A  12      36.82
4/1/01   N/A  59   40      61.82
5/1/01    05  99   42      23.68
...
31/12/01  100  59   42     N/A

etc 

{T1, T2, ... TN} zaman serisini, bir ailenin birbiriyle "sempati içinde hareket etme eğiliminde" olan bir dizi dizisi olarak tanımlandığı 'ailelere' ayrılacak bir R betiği yazmak istiyorum.

'Kümelenme' kısmı için bir çeşit uzaklık ölçüsü seçmem / tanımlamam gerekecek. Nasıl devam edeceğimi tam olarak bilemiyorum, çünkü zaman serileriyle ilgileniyorum ve sempati içinde bir aralıkta hareket edebilen bir çift dizi bunu daha sonraki bir aralıkta yapamayabilir.

Burada benden çok daha deneyimli / zeki insanlar bulunduğundan eminim; bu nedenle önerileriniz için, mesafe ölçüsü için hangi algoritma / sezgisel bir yöntem kullanacağınıza ve zaman serisini kümelemede nasıl kullanacağınıza dair fikirler için minnettar olurum.

Benim tahminim, bunu yapmak için sağlam bir istatistik yöntemi OLMADIĞINI, bu yüzden insanların bu soruna nasıl yaklaştığını / çözdüğünü - bir istatistikçi gibi düşünerek - çok ilgileneceğim.


1
Ayrıca, bu soruya verilen cevaplarla da ilginizi çekebilir, istatistik.stackexchange.com/q/2777/1036
Andy W

1
Ve bu bir istatistik
Rob Hyndman

1
Zaman noktalarının tüm örnekler için aynı olmadığı veri kümeleri için çalışan Dirichlet işlemlerine dayanan istatistiksel bir yöntem var .
Dario,

Yanıtlar:


24

Veri dizileri ve zaman serileri veritabanlarının madenciliğinde ortak bir yaklaşım, diziyi sembolik bir gösterime dönüştürmek ve ardından diziyi kümelemek için Öklid mesafesi gibi bir benzerlik ölçümü kullanmaktır. En popüler temsiller SAX (Keogh ve Lin) veya daha yeni iSAX (Shieh ve Keogh):

Yukarıdaki sayfalarda ayrıca mesafe ölçütlerine ve kümelemeye referanslar bulunur. Keogh ve mürettebat yeniden üretilebilir bir araştırmaya girmiş ve kodlarını yayınlamaya oldukça açıktır. Böylece onlara e-posta gönderebilir ve sorabilirsiniz. Yine de MATLAB / C ++ 'da çalışma eğiliminde olduklarına inanıyorum.

Bir Java ve R uygulaması üretmek için yeni bir çaba oldu:

Ne kadar uzakta olduğunu bilmiyorum - motif bulmaya yöneliktir, ancak ne kadar kazandıklarına bağlı olarak, ihtiyaçlarınız için bir şeyler koymak için ihtiyaç duyduğunuz gerekli parçalara sahip olmalıdır (iSAX ve mesafe ölçümleri: çünkü bu kısım kümeleme ve motif bulmada ortaktır).


1
Bu iyi, izlenebilir bir başlangıç ​​noktasına benziyor. bağlantılar için teşekkürler.
Morfeous

4
Vay canına, sanırım SAX sayfası gördüğüm en çirkin web sayfası!
naught101

18

“Sempati içinde hareket etme” demenin bir başka yolu da “eşbütünleşmiştir”.

Eşbütünleşmeyi hesaplamanın iki standart yolu vardır : Engle-Granger metodu ve Johansen prosedürü. Bunlar, "R ile Bütünleşik ve Bütünleşik Zaman Serilerinin Analizi" (Pfaff 2008) ve ilgili Rca paketinde ele alınmıştır . Bu yöntemleri R'de uygulamak istiyorsanız kitabı şiddetle tavsiye ediyorum.

Ayrıca bu soruyu çok değişkenli zaman serilerinde ve özellikle Ruey Tsay'ın U. Chicago'daki dersinde gerekli tüm R kodlarını içeren bir biçimde incelemenizi tavsiye ederim .


Birkaç yıl önce eşbütünleşme karşısında gelmiştim - ama bu bana çok karmaşık geldi (anlamadım!). Daha az teorik (yani daha pratik) bir çözüm olacağını umuyordum ...
Morfeous

3
Engle-Granger yöntemi özellikle karmaşık değildir: sadece iki seri arasındaki bir gerileme artıklarını alır ve bir birim kökü olup olmadığını belirlersiniz. Bu kesinlikle pratiktir: Çok çeşitli problemler için düzenli olarak kullanılır. Bununla birlikte, sorunuza vereceğiniz herhangi bir cevabın bazı istatistiksel bilgiler gerektireceğini hayal ediyorum (örneğin, durağanlık, bağımsızlık, vb. Gibi şeyleri anlamanız gerekir) ...
Shane 15

Bunu birlikte yapmak için tüm çiftler arası serileri eşbütünleşme için test etmekten daha iyi bir yol var mı (birlikte kümelenme serisini düşünmek için aynı idealde mi?) başlangıçta?
Andy W

@Andy: Daha iyi bir yol olduğuna eminim ve bunu duymayı dört gözle bekliyorum. Bu oldukça basit bir yaklaşım.
Shane,

1
> başka bir şey öneremem, ancak eşbütünleşme hem pratikte çok kırılgan ('parametrik varsayımlar' vahşi seri hale geldi) hem de eldeki görev için uygun değil: her adımda, hiyerarşik kümelenme, en fazla iki birleştirme bire bir seri (bütünleşik ortalama).
user603

4

Kümelenme zaman serileri, özellikle de salgın ve çöküş eğilimlerini anlamak için böcekleri inceleyen popülasyon dinamistleri tarafından oldukça yaygın olarak yapılmaktadır. Çingene güvesi, Spruce budoworm, dağ çamı böceği ve karaçam tomurcukları üzerinde iş arayın.

Gerçek kümelenme için, istediğiniz mesafeyi ne olursa olsun ölçebilirsiniz, her birinin kümelenmiş veri türüne, Kaufmann ve Rousseeuw 1990'a göre kendi güçlü yanları ve haftalıkları vardır. Verilerdeki grupları bulma. Küme analizine giriş , başlamak için iyi bir yerdir. Unutmayın, kümeleme yöntemi bir zaman serisi kullandığınızı 'umursamaz', aynı zamanda ölçülen değerlere bakar. İki zaman seriniz yaşam süresi boyunca yeterince senkronize değilse, kümelenmez (ve belki de etmemeli).

Sorun yaşayacağınız yer, zaman serilerini kümelendikten sonra kullanılacak kümelerin (ailelerin) sayısını belirlemektir. Bilgilendirici kümelerin bir kesimini seçmenin çeşitli yolları vardır, ancak burada literatür o kadar iyi değil.


1
Chris, düzenli kümeleme kesmeyecek. Her bir 'yi kendi boyutu olarak koyarak (yani N * T boyutlarıyla sonuçlanır) ya da tüm boyutları bir araya getirerek, bir dizinin geçmişiyle son derece ilişkili olduğunu kabul etmeniz gerekir. Bir dizi içinde yüksek korelasyon göz önüne alındığında) her zaman tek bir küme ile sona erecek. Ayrıca, kümelenme yöntemlerinin çoğu, yüksek derecede korelasyonlu değişkenler için uygun değildir / önerilmektedir (küresel kümelenmelerin aşağı yukarı bükülme varsayımı vardır). y1,t
user603

1
@ user603 "Her bir y1, t'yi bir boyut olarak (yani N * T boyutlarıyla sonuçlandırarak) bir dizinin kendi geçmişiyle son derece ilişkili olduğunu kabul etmeniz gerekebilir mi lütfen?
B_Miner

2

Burada benzer bir soruya cevabımı görün . Uzun lafın kısası, veride hızlı bir Fourier dönüşümü yapın, girdi verileriniz gerçekten değerliyse gereksiz frekansları atın, hızlı Fourier dönüşümünün her elemanı için gerçek ve hayali bölümleri ayırın ve modeli yapmak için Rl'deki Mclust paketini kullanın. her zaman serisinin her bir elemanının gerçek ve hayali kısımlarına dayalı kümeleme. Paket, kümelerin sayısı ve yoğunlukları üzerinde optimizasyonu otomatik hale getirir.


0

Ayrıca liderler yöntemini ve hiyerarşik kümeleme yöntemini gerçekleştiren clustDDist paketini farklı hata ölçütleriyle de kullanabilirsiniz:

http://r-forge.r-project.org/projects/clustddist/

Kare kare Öklid mesafesi, dik bir zirveye sahip olan ve dolayısıyla ölçüsündeki tercih eder.

d4(x,y)=(xy)2y
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.